6 _(e.objectMaxDepth) && (Rr.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, Rr.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.8/" + (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 (ei(e) || E(e) || Ur && e instanceof Ur) 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 (ei(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) Hr.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] = ei(h) ? [] : {}), u(e[f], [h], !0)) : e[f] = h
88 return u(e, Br.call(arguments, 1), !1)
92 return u(e, Br.call(arguments, 1), !0)
96 return parseInt(e, 10)
100 return d(Object.create(e), t)
116 return T(e.toString) && e.toString !== Gr
128 return null !== e && "object" == typeof e
132 return null !== e && "object" == typeof e && !Kr(e)
136 return "string" == typeof e
140 return "number" == typeof e
144 return "[object Date]" === Gr.call(e)
148 switch (Gr.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]" === Gr.call(e)
167 return e && e.window === e
171 return e && e.$evalAsync && e.$watch
175 return "[object File]" === Gr.call(e)
179 return "[object FormData]" === Gr.call(e)
183 return "[object Blob]" === Gr.call(e)
187 return "boolean" == typeof e
191 return e && T(e.then)
195 return e && k(e.length) && ti.test(Gr.call(e))
199 return "[object ArrayBuffer]" === Gr.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 Lr(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) Hr.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 Zr("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
248 return void 0 === o && (o = ei(e) ? [] : Object.create(Kr(e)), r = !0), c.push(e), u.push(o), r ? i(e, o, t) : o
252 switch (Gr.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 Zr("cpta", "Can't copy! TypedArray destination cannot be mutated.");
288 if (e === t) throw Zr("cpi", "Can't copy! Source and destination are identical.");
289 return ei(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) || ei(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 (!ei(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(Br.call(t, n))
335 return Br.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(ai, "");
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 = Ur(e).clone().empty();
378 var t = Ur("<div>").append(e).html();
380 return e[0].nodeType === fi ? Lr(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), Hr.call(t, r) ? ei(t[r]) ? t[r].push(i) : t[r] = [t[r], i] : t[r] = i))
404 return o(e, function(e, n) {
405 ei(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 = si.length;
421 for (r = 0; r < i; ++r)
422 if (n = si[r] + t, E(n = e.getAttribute(n))) return n;
428 if (o(si, function(e) {
430 !r && t.hasAttribute && t.hasAttribute(n) && (r = t, i = t.getAttribute(n))
431 }), o(si, function(e) {
432 var n, o = e + "app";
433 !r && (n = t.querySelector("[" + o.replace(":", "\\:") + "]")) && (r = n, i = n.getAttribute(o))
435 if (!ci) 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 = Ur(t)).injector()) {
446 var i = t[0] === e.document ? "document" : te(t);
447 throw Zr("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, ""), Xr.resumeBootstrap = function(e) {
464 return o(e, function(e) {
467 }, T(Xr.resumeDeferredBootstrap) && Xr.resumeDeferredBootstrap()
471 e.name = "NG_ENABLE_DEBUG_INFO!" + e.name, e.location.reload()
475 var t = Xr.element(e).injector();
476 if (!t) throw Zr("test", "no injector found for element argument to getTestability");
477 return t.get("$$testability")
481 return t = t || "_", e.replace(li, function(e, n) {
482 return (n ? t : "") + e.toLowerCase()
486 function he(e, t, n) {
487 if (!e) throw Zr("areq", "Argument '{0}' is {1}", t || "?", n || "required");
491 function pe(e, t, n) {
492 return n && ei(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 Zr("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 = Ur(Br.call(e, 0, i))), t.push(n));
511 return Object.create(null)
515 if (null == e) return "";
523 e = !b(e) || ei(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 = Xr.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(_i, "ms-"))
630 return t.toUpperCase()
634 return e.replace(yi, xe)
643 return t === di || !t || t === pi
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 = (Ci.exec(e) || ["", ""])[1].toLowerCase(), i = Ti[r] || Ti._default, n.innerHTML = i[1] + e.replace(xi, "<$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 = Ei.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 = ni(e), t = !0), !(this instanceof Ne)) {
674 if (t && "<" !== e.charAt(0)) throw wi("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) && Ur.cleanData([e]), e.querySelectorAll && Ur.cleanData(e.querySelectorAll("*"))
688 function Pe(e, t, n, r) {
689 if (_(r)) throw wi("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 vi[n], e.ng339 = void 0
718 return t && !r && (e.ng339 = n = ke(), r = vi[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 if (t && e.setAttribute) {
747 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "),
749 o(t.split(" "), function(e) {
750 e = ni(e), r = r.replace(" " + e + " ", " ")
751 }), r !== n && e.setAttribute("class", ni(r))
756 if (t && e.setAttribute) {
757 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "),
759 o(t.split(" "), function(e) {
760 e = ni(e), -1 === r.indexOf(" " + e + " ") && (r += e + " ")
761 }), r !== n && e.setAttribute("class", ni(r))
767 if (t.nodeType) e[e.length++] = t;
770 if ("number" == typeof n && t.window !== t) {
772 for (var r = 0; r < n; r++) e[e.length++] = t[r]
773 } else e[e.length++] = t
778 return Be(e, "$" + (t || "ngController") + "Controller")
781 function Be(e, t, n) {
782 e.nodeType === pi && (e = e.documentElement);
783 for (var r = ei(t) ? t : [t]; e;) {
784 for (var i = 0, o = r.length; i < o; i++)
785 if (_(n = Ur.data(e, r[i]))) return n;
786 e = e.parentNode || e.nodeType === mi && e.host
791 for (Re(e, !0); e.firstChild;) e.removeChild(e.firstChild)
796 var n = e.parentNode;
797 n && n.removeChild(e)
801 "complete" === (n = n || e).document.readyState ? n.setTimeout(t) : Ur(n).on("load", t)
806 e.document.removeEventListener("DOMContentLoaded", n), e.removeEventListener("load", n), t()
808 "complete" === e.document.readyState ? e.setTimeout(t) : (e.document.addEventListener("DOMContentLoaded", n), e.addEventListener("load", n))
812 var n = Si[t.toLowerCase()];
813 return n && Oi[F(e)] && n
821 var n = function(n, r) {
822 n.isDefaultPrevented = function() {
823 return n.defaultPrevented
825 var i = t[r || n.type],
826 o = i ? i.length : 0;
828 if (y(n.immediatePropagationStopped)) {
829 var a = n.stopImmediatePropagation;
830 n.stopImmediatePropagation = function() {
831 n.immediatePropagationStopped = !0, n.stopPropagation && n.stopPropagation(), a && a.call(n)
834 n.isImmediatePropagationStopped = function() {
835 return !0 === n.immediatePropagationStopped
837 var s = i.specialHandlerWrapper || Je;
838 o > 1 && (i = $e(i));
839 for (var c = 0; c < o; c++) n.isImmediatePropagationStopped() || s(e, n, i[c])
845 function Je(e, t, n) {
849 function et(e, t, n) {
850 var r = t.relatedTarget;
851 r && (r === e || Mi.call(e, r)) || n.call(e, t)
855 this.$get = function() {
857 hasClass: function(e, t) {
858 return e.attr && (e = e[0]), Fe(e, t)
860 addClass: function(e, t) {
861 return e.attr && (e = e[0]), Ue(e, t)
863 removeClass: function(e, t) {
864 return e.attr && (e = e[0]), qe(e, t)
871 var n = e && e.$$hashKey;
872 if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
874 return n = "function" === r || "object" === r && null !== e ? e.$$hashKey = r + ":" + (t || c)() : r + ":" + e
878 this._keys = [], this._values = [], this._lastKey = NaN, this._lastIndex = -1
882 return Function.prototype.toString.call(e)
886 var t = it(e).replace(Fi, "");
887 return t.match(Pi) || t.match(ji)
892 return t ? "function(" + (t[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
897 return function(t, n) {
898 if (!$(t)) return e(t, n);
904 if (me(e, "service"), (T(t) || ei(t)) && (t = m.instantiate(t)), !t.$get) throw qi("pget", "Provider '{0}' must define $get factory method.", e);
910 var n = _.invoke(t, this);
911 if (y(n)) throw qi("undef", "Provider '{0}' must return a value from $get factory method.", e);
916 function a(e, t, n) {
918 $get: !1 !== n ? i(e, t) : t
923 he(y(e) || ei(e), "modulesToLoad", "not an array");
925 return o(e, function(e) {
928 for (t = 0, n = e.length; t < n; t++) {
931 i[r[1]].apply(i, r[2])
937 E(e) ? (t = zr(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)) : ei(e) ? n.push(m.invoke(e)) : pe(e, "module")
939 throw ei(e) && (e = e[e.length - 1]), t.message && t.stack && -1 === t.stack.indexOf(t.message) && (t = t.message + "\n" + t.stack), qi("modulerr", "Failed to instantiate module {0} due to:\n{1}", e, t.stack || t.message || t)
947 if (e.hasOwnProperty(t)) {
948 if (e[t] === u) throw qi("cdep", "Circular dependency found: {0}", t + " <- " + f.join(" <- "));
952 return f.unshift(t), e[t] = u, e[t] = n(t, r), e[t]
954 throw e[t] === u && delete e[t], n
960 function i(e, n, i) {
961 for (var o = [], a = st.$$annotate(e, t, i), s = 0, c = a.length; s < c; s++) {
963 if ("string" != typeof l) throw qi("itkn", "Incorrect injection token! Expected service name as string, got {0}", l);
964 o.push(n && n.hasOwnProperty(l) ? n[l] : r(l, i))
970 if (qr || "function" != typeof e) return !1;
971 var t = e.$$ngIsClass;
972 return I(t) || (t = e.$$ngIsClass = /^(?:class\b|constructor\()/.test(it(e))), t
975 invoke: function(e, t, n, r) {
976 "string" == typeof n && (r = n, n = null);
978 return ei(e) && (e = e[e.length - 1]), o(e) ? (a.unshift(null), new(Function.prototype.bind.apply(e, a))) : e.apply(t, a)
980 instantiate: function(e, t, n) {
981 var r = ei(e) ? e[e.length - 1] : e,
983 return o.unshift(null), new(Function.prototype.bind.apply(r, o))
986 annotate: st.$$annotate,
988 return p.hasOwnProperty(t + d) || e.hasOwnProperty(t)
1001 service: n(function(e, t) {
1002 return a(e, ["$injector", function(e) {
1003 return e.instantiate(t)
1006 value: n(function(e, t) {
1007 return a(e, v(t), !1)
1009 constant: n(function(e, t) {
1010 me(e, "constant"), p[e] = t, g[e] = t
1012 decorator: function(e, t) {
1013 var n = m.get(e + d),
1015 n.$get = function() {
1016 var e = _.invoke(r, n);
1017 return _.invoke(t, null, {
1024 m = p.$injector = l(p, function(e, t) {
1025 throw Xr.isString(t) && f.push(t), qi("unpr", "Unknown provider: {0}", f.join(" <- "))
1028 b = l(g, function(e, t) {
1029 var n = m.get(e + d, t);
1030 return _.invoke(n.$get, n, void 0, e)
1033 p["$injector" + d] = {
1035 }, _.modules = m.modules = be();
1037 return _ = b.get("$injector"), _.strictDi = t, o(w, function(e) {
1039 }), _.loadNewModules = function(e) {
1040 o(c(e), function(e) {
1048 this.disableAutoScrolling = function() {
1050 }, this.$get = ["$window", "$location", "$rootScope", function(t, n, r) {
1053 return Array.prototype.some.call(e, function(e) {
1054 if ("a" === F(e)) return t = e, !0
1063 e = "fixed" !== t.getComputedStyle(n).position ? 0 : n.getBoundingClientRect().bottom
1064 } else k(e) || (e = 0);
1073 var r = e.getBoundingClientRect().top;
1074 t.scrollBy(0, r - n)
1076 } else t.scrollTo(0, 0)
1081 (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)
1084 return e && r.$watch(function() {
1087 e === t && "" === e || Ge(function() {
1095 return e || t ? e ? t ? (ei(e) && (e = e.join(" ")), ei(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
1099 for (var t = 0; t < e.length; t++) {
1101 if (n.nodeType === Vi) return n
1106 E(e) && (e = e.split(" "));
1108 return o(e, function(e) {
1109 e.length && (t[e] = !0)
1114 return $(e) ? e : {}
1117 function ht(e, t, n, r) {
1120 e.apply(null, Y(arguments, 1))
1123 for (; b.length;) try {
1132 var t = e.indexOf("#");
1133 return -1 === t ? "" : e.substr(t)
1141 _ = C(), B(_ = y(_) ? null : _, M) && (_ = M), M = _, $ = _
1146 c(), w === u.url() && e === _ || (w = u.url(), $ = _, o(x, function(e) {
1159 u.$$completeOutstandingRequest = i, u.$$incOutstandingRequestCount = function() {
1161 }, u.notifyWhenNoOutstandingRequests = function(e) {
1162 0 === v ? e() : b.push(e)
1164 var _, $, w = d.href,
1167 C = r.history ? function() {
1172 c(), u.url = function(t, n, i) {
1173 if (y(i) && (i = null), d !== e.location && (d = e.location), f !== e.history && (f = e.history), t) {
1175 if (w === t && (!r.history || o)) return u;
1176 var s = w && Gt(w) === Gt(t);
1177 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
1179 return k || d.href.replace(/%27/g, "'")
1180 }, u.state = function() {
1186 u.onUrlChange = function(t) {
1187 return T || (r.history && Ur(e).on("popstate", s), Ur(e).on("hashchange", s), T = !0), x.push(t), t
1188 }, u.$$applicationDestroyed = function() {
1189 Ur(e).off("hashchange popstate", s)
1190 }, u.$$checkUrlChange = l, u.baseHref = function() {
1191 var e = E.attr("href");
1192 return e ? e.replace(/^(https?:)?\/\/[^/]*/, "") : ""
1193 }, u.defer = function(e, t) {
1195 return v++, n = h(function() {
1197 }, t || 0), g[n] = !0, n
1198 }, u.defer.cancel = function(e) {
1199 return !!g[e] && (delete g[e], p(e), i(m), !0)
1204 this.$get = ["$window", "$log", "$sniffer", "$document", function(e, t, n, r) {
1205 return new ht(e, r, t, n)
1210 this.$get = function() {
1213 e !== f && (h ? h === e && (h = e.n) : h = e, o(e.n, e.p), o(e, f), (f = e).n = null)
1217 e !== t && (e && (e.p = t), t && (t.n = e))
1219 if (e in t) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
1225 l = n && n.capacity || Number.MAX_VALUE,
1230 put: function(e, t) {
1231 if (!y(t)) return l < Number.MAX_VALUE && i(u[e] || (u[e] = {
1233 })), e in c || a++, c[e] = t, a > l && this.remove(h.key), t
1236 if (l < Number.MAX_VALUE) {
1243 remove: function(e) {
1244 if (l < Number.MAX_VALUE) {
1247 t === f && (f = t.p), t === h && (h = t.n), o(t.n, t.p), delete u[e]
1249 e in c && (delete c[e], a--)
1251 removeAll: function() {
1252 c = be(), a = 0, u = be(), f = h = null
1254 destroy: function() {
1255 c = null, s = null, u = null, delete t[e]
1265 return e.info = function() {
1267 return o(t, function(t, n) {
1270 }, e.get = function(e) {
1277 this.$get = ["$cacheFactory", function(e) {
1278 return e("templates")
1283 function r(e, t, n) {
1284 var r = /^\s*([@&<]|=(\*?))(\??)\s*([\w$]*)\s*$/,
1286 return o(e, function(e, o) {
1287 if (e in M) i[o] = M[e];
1290 if (!a) throw Zi("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", t, o, e, n ? "controller bindings definition" : "isolate scope definition");
1293 collection: "*" === a[2],
1294 optional: "?" === a[3],
1296 }, a[4] && (M[e] = i[o])
1304 bindToController: null
1306 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 Zi("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
1311 var t = e.charAt(0);
1312 if (!t || t !== Lr(t)) throw Zi("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", e);
1313 if (e !== e.trim()) throw Zi("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
1317 var t = e.require || e.controller && e.name;
1318 return !ei(t) && $(t) && o(t, function(e, n) {
1320 e.substring(r[0].length) || (t[n] = r[0] + n)
1325 if (e && (!E(e) || !/[EACM]/.test(e))) throw Zi("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", e, t);
1330 h = /^\s*directive:\s*([\w-]+)\s+(.*)$/,
1331 b = /(([\w-]+)(?::([^;]+))?;?)/,
1332 w = L("ngSrc,ngSrcset,src,srcset"),
1333 k = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
1334 C = /^(on[a-z]+|formaction)$/,
1336 this.directive = function e(n, r) {
1337 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) {
1339 return o(u[n], function(i, o) {
1341 var a = e.invoke(i);
1344 } : !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)
1349 }])), u[n].push(r)) : o(n, s(e)), this
1350 }, this.component = function e(t, n) {
1353 return T(t) || ei(t) ? function(n, r) {
1354 return e.invoke(t, this, {
1360 var r = n.template || n.templateUrl ? n.template : "",
1363 controllerAs: wt(n.controller) || n.controllerAs || "$ctrl",
1365 templateUrl: t(n.templateUrl),
1366 transclude: n.transclude,
1368 bindToController: n.bindings || {},
1372 return o(n, function(e, t) {
1373 "$" === t.charAt(0) && (a[t] = e)
1376 if (!E(t)) return o(t, s(G(this, e))), this;
1377 var i = n.controller || function() {};
1378 return o(n, function(e, t) {
1379 "$" === t.charAt(0) && (r[t] = e, T(i) && (i[t] = e))
1380 }), r.$inject = ["$injector"], this.directive(t, r)
1381 }, this.aHrefSanitizationWhitelist = function(e) {
1382 return _(e) ? (n.aHrefSanitizationWhitelist(e), this) : n.aHrefSanitizationWhitelist()
1383 }, this.imgSrcSanitizationWhitelist = function(e) {
1384 return _(e) ? (n.imgSrcSanitizationWhitelist(e), this) : n.imgSrcSanitizationWhitelist()
1387 this.debugInfoEnabled = function(e) {
1388 return _(e) ? (A = e, this) : A
1391 this.preAssignBindingsEnabled = function(e) {
1392 return _(e) ? (O = e, this) : O
1395 this.strictComponentBindingsEnabled = function(e) {
1396 return _(e) ? (D = e, this) : D
1399 this.onChangesTtl = function(e) {
1400 return arguments.length ? (N = e, this) : N
1403 this.commentDirectivesEnabled = function(e) {
1404 return arguments.length ? (R = e, this) : R
1407 this.cssClassDirectivesEnabled = function(e) {
1408 return arguments.length ? (P = e, this) : P
1409 }, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", "$$sanitizeUri", function(t, n, r, a, s, c, l, v, M, j) {
1412 if (!--Ne) throw Te = void 0, Zi("infchng", "{0} $onChanges() iterations reached. Aborting!\n", N);
1413 l.$apply(function() {
1414 for (var e = [], t = 0, n = Te.length; t < n; ++t) try {
1419 if (Te = void 0, e.length) throw e
1428 var n, r, i, o = Object.keys(t);
1429 for (n = 0, r = o.length; n < r; n++) this[i = o[n]] = t[i]
1430 } else this.$attr = {};
1434 function q(e, t, n) {
1435 Se.innerHTML = "<span " + t + ">";
1436 var r = Se.firstChild.attributes,
1438 r.removeNamedItem(i.name), i.value = n, e.attributes.setNamedItem(i)
1447 function W(e, t, n, r, i) {
1448 e instanceof Ur || (e = Ur(e));
1449 var o = Z(e, t, e, n, r, i);
1450 W.$$addScopeClass(e);
1452 return function(t, n, r) {
1453 if (!e) throw Zi("multilink", "This element has already been linked.");
1454 he(t, "scope"), i && i.needsNewScope && (t = t.$parent.$new());
1455 var s = (r = r || {}).parentBoundTranscludeFn,
1456 c = r.transcludeControllers,
1457 l = r.futureParentElement;
1458 s && s.$$boundTransclude && (s = s.$$boundTransclude), a || (a = K(l));
1460 if (u = "html" !== a ? Ur(ye(a, Ur("<div>").append(e).html())) : n ? Ai.clone.call(e) : e, c)
1461 for (var d in c) u.data("$" + d + "Controller", c[d].instance);
1462 return W.$$addScopeInfo(u, t), n && n(u, t), o && o(t, u, u, s), n || (e = o = null), u
1468 return t && "foreignobject" !== F(t) && Gr.call(t).match(/SVG/) ? "svg" : "html"
1471 function Z(e, t, n, r, i, o) {
1472 for (var a, s, c, l, u, d, f, h = [], p = ei(e) || e instanceof Ur, m = 0; m < e.length; m++) a = new L, 11 === qr && 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;
1473 return d ? function(e, n, r, i) {
1474 var o, a, s, c, l, u, d, p;
1477 for (p = new Array(m), l = 0; l < h.length; l += 3) p[d = h[l]] = n[d]
1479 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(Ur(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)
1483 function X(e, t, n) {
1486 if (i.nodeType === fi)
1488 if (!(r = o ? i.nextSibling : e[t + 1]) || r.nodeType !== fi) break;
1489 i.nodeValue = i.nodeValue + r.nodeValue, r.parentNode && r.parentNode.removeChild(r), n && r === e[t + 1] && e.splice(t + 1, 1)
1493 function Q(e, t, n) {
1494 function r(r, i, o, a, s) {
1495 return r || ((r = e.$new(!1, s)).$$transcluded = !0), t(r, i, {
1496 parentBoundTranscludeFn: n,
1497 transcludeControllers: o,
1498 futureParentElement: a
1501 var i = r.$$slots = be();
1502 for (var o in t.$$slots) t.$$slots[o] ? i[o] = Q(e, t.$$slots[o], n) : i[o] = null;
1506 function J(e, t, n, r, i) {
1507 var o, a, s, c = e.nodeType,
1511 le(t, yt(a = F(e)), "E", r, i);
1512 for (var u, d, f, h, p, m, g = e.attributes, v = 0, y = g && g.length; v < y; v++) {
1515 d = (u = g[v]).name, p = u.value, h = yt(d), (m = He.test(h)) && (d = d.replace(Qi, "").substr(8).replace(/_(.)/g, function(e, t) {
1516 return t.toUpperCase()
1518 var k = h.match(Le);
1519 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)
1521 if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), !De) break;
1522 if (s = e.className, $(s) && (s = s.animVal), E(s) && "" !== s)
1523 for (; o = b.exec(s);) le(t, f = yt(o[2]), "C", r, i) && (n[f] = ni(o[3])), s = s.substr(o.index + o[0].length);
1532 return t.sort(me), t
1535 function ee(e, t, n, r, i) {
1537 var o = h.exec(e.nodeValue);
1540 le(t, a, "M", r, i) && (n[a] = ni(o[2]))
1545 function ne(e, t, n) {
1548 if (t && e.hasAttribute && e.hasAttribute(t))
1550 if (!e) throw Zi("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
1551 e.nodeType === di && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
1557 function re(e, t, n) {
1558 return function(r, i, o, a, s) {
1559 return i = ne(i[0], t, n), e(r, i, o, a, s)
1563 function ie(e, t, n, r, i, o) {
1565 return e ? W(t, n, r, i, o) : function() {
1566 return a || (a = W(t, n, r, i, o), t = n = o = null), a.apply(this, arguments)
1570 function oe(e, t, n, i, a, s, c, l, u) {
1571 function f(e, t, n, r) {
1572 e && (n && (e = re(e, n, r)), e.require = p.require, e.directiveName = m, (k === p || p.$$isolateScope) && (e = Ee(e, {
1574 })), c.push(e)), t && (n && (t = re(t, n, r)), t.require = p.require, t.directiveName = m, (k === p || p.$$isolateScope) && (t = Ee(t, {
1579 function h(e, i, a, s, u) {
1580 var f, h, p, m, g, v, b, _, x, M;
1581 t === a ? (x = n, _ = n.$$element) : x = new L(_ = Ur(a), n), g = i, k ? m = i.$new(!0) : w && (g = i.$parent), u && ((b = function(e, t, n, r) {
1583 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);
1584 var o = u.$$slots[r];
1585 if (o) return o(e, t, i, n, j);
1586 if (y(o)) throw Zi("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', r, te(_))
1587 }).$$boundTransclude = u, b.isSlotFilled = function(e) {
1588 return !!u.$$slots[e]
1589 }), 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));
1593 R = N.$$bindings.bindToController;
1595 I.bindingInfo = R ? xe(g, x, I.instance, R, N) : {};
1597 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))
1598 } else I.instance = I(), _.data("$" + N.name + "Controller", I.instance), I.bindingInfo = xe(g, x, I.instance, R, N)
1600 for (o(E, function(e, t) {
1602 e.bindToController && !ei(n) && $(n) && d(v[t].instance, ae(t, n, _, v))
1603 }), o(v, function(e) {
1605 if (T(t.$onChanges)) try {
1606 t.$onChanges(e.bindingInfo.initialChanges)
1610 if (T(t.$onInit)) try {
1615 T(t.$doCheck) && (g.$watch(function() {
1617 }), t.$doCheck()), T(t.$onDestroy) && g.$on("$destroy", function() {
1620 }), 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);
1622 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);
1625 T(t.$postLink) && t.$postLink()
1629 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 = Ur(t), I = s, R = i, P = !1, j = !1, H = 0, q = e.length; H < q; H++) {
1630 var U = (p = e[H]).$$start,
1632 if (U && (N = ne(t, U, V)), g = void 0, _ > p.priority) break;
1633 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)) {
1634 for (var z, B = H + 1; z = e[B++];)
1635 if (z.transclude && !z.$$tlb || z.replace && (z.templateUrl || z.template)) {
1641 if (!p.templateUrl && p.controller && (E = E || be(), ge("'" + m + "' controller", E[m], p, N), E[m] = p), b = p.transclude)
1642 if (M = !0, p.$$tlb || (ge("transclusion", x, p, N), x = p), "element" === b) D = !0, _ = p.priority, g = N, N = n.$$element = Ur(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, {
1643 nonTlbTranscludeDirective: x
1651 o(b, function(e, t) {
1652 var n = "?" === e.charAt(0);
1653 e = n ? e.substring(1) : e, Z[e] = t, K[t] = null, X[t] = n
1654 }), o(N.contents(), function(e) {
1655 var t = Z[yt(F(e))];
1656 t ? (X[t] = !0, K[t] = K[t] || [], K[t].push(e)) : g.push(e)
1657 }), o(X, function(e, t) {
1658 if (!e) throw Zi("reqslot", "Required transclusion slot `{0}` was not filled.", t)
1660 for (var Q in K) K[Q] && (K[Q] = ie(j, K[Q], i))
1661 } else g = Ur(Ie(t)).contents();
1662 N.empty(), (R = ie(j, g, i, void 0, void 0, {
1663 needsNewScope: p.$$isolateScope || p.$$newScope
1667 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) {
1668 if (I = p, g = Me(b) ? [] : $t(ye(p.templateNamespace, ni(b))), t = g[0], 1 !== g.length || t.nodeType !== di) throw Zi("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", m, "");
1674 le = e.splice(H + 1, e.length - (H + 1));
1675 (k || w) && ce(oe, k, w), e = e.concat(oe).concat(le), de(n, ee), q = e.length
1677 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, {
1678 controllerDirectives: E,
1679 newScopeDirective: w !== p && w,
1680 newIsolateScopeDirective: k,
1681 templateDirective: C,
1682 nonTlbTranscludeDirective: x
1684 else if (p.compile) try {
1685 v = p.compile(N, n, R);
1686 var ue = p.$$originalDirective || p;
1687 T(v) ? f(null, G(ue, v), U, V) : v && f(G(ue, v.pre), G(ue, v.post), U, V)
1691 p.terminal && (h.terminal = !0, _ = Math.max(_, p.priority))
1693 return h.scope = w && !0 === w.scope, h.transcludeOnThisElement = M, h.templateOnThisElement = A, h.transclude = R, u.hasElementTranscludeDirective = D, h
1696 function ae(e, t, n, r) {
1700 s = t.substring(a[0].length),
1703 if ("^^" === c ? n = n.parent() : (i = r && r[s], i = i && i.instance), !i) {
1704 var u = "$" + s + "Controller";
1705 i = c ? n.inheritedData(u) : n.data(u)
1707 if (!i && !l) throw Zi("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", s, e)
1710 for (var d = 0, f = t.length; d < f; d++) i[d] = ae(e, t[d], n, r)
1711 } else $(t) && (i = {}, o(t, function(t, o) {
1712 i[o] = ae(e, t, n, r)
1717 function se(e, t, n, r, i, o, a) {
1722 $scope: u === a || u.$$isolateScope ? i : o,
1728 "@" === f && (f = t[u.name]);
1729 var h = c(f, d, !0, u.controllerAs);
1730 s[u.name] = h, e.data("$" + u.name + "Controller", h.instance)
1735 function ce(e, t, n) {
1736 for (var r = 0, i = e.length; r < i; r++) e[r] = p(e[r], {
1742 function le(e, n, r, o, a, s, c) {
1743 if (n === a) return null;
1745 if (u.hasOwnProperty(n))
1746 for (var d, h = t.get(n + f), m = 0, g = h.length; m < g; m++)
1747 if (d = h[m], (y(o) || o > d.priority) && -1 !== d.restrict.indexOf(r)) {
1748 if (s && (d = p(d, {
1751 })), !d.$$bindings) {
1752 var v = d.$$bindings = i(d, d.name);
1753 $(v.isolateScope) && (d.$$isolateBindings = v.isolateScope)
1761 if (u.hasOwnProperty(e))
1762 for (var n = t.get(e + f), r = 0, i = n.length; r < i; r++)
1763 if (n[r].multiElement) return !0;
1770 o(e, function(r, i) {
1771 "$" !== 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]))
1772 }), o(t, function(t, i) {
1773 e.hasOwnProperty(i) || "$" === i.charAt(0) || (e[i] = t, "class" !== i && "style" !== i && (r[i] = n[i]))
1777 function pe(e, t, n, i, s, c, l, u) {
1785 $$originalDirective: g
1787 b = T(g.templateUrl) ? g.templateUrl(t, n) : g.templateUrl,
1788 y = g.templateNamespace;
1789 return t.empty(), a(b).then(function(r) {
1791 if (r = je(r), g.replace) {
1792 if (_ = Me(r) ? [] : $t(ye(y, ni(r))), a = _[0], 1 !== _.length || a.nodeType !== di) throw Zi("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", g.name, b);
1796 var E = J(a, [], p);
1797 $(g.scope) && ce(E, !0), e = E.concat(e), de(n, p)
1798 } else a = m, t.html(r);
1799 for (e.unshift(v), d = oe(e, a, n, s, t, g, c, l, u), o(i, function(e, n) {
1800 e === a && (i[n] = t[0])
1801 }), f = Z(t[0].childNodes, s); h.length;) {
1807 if (!k.$$destroyed) {
1809 var A = C.className;
1810 u.hasElementTranscludeDirective && g.replace || (M = Ie(a)), we(x, Ur(C), M), V(Ur(M), A)
1812 w = d.transcludeOnThisElement ? Q(k, d.transclude, T) : T, d(f, k, M, i, w)
1816 }).catch(function(e) {
1819 function(e, t, n, r, i) {
1821 t.$$destroyed || (h ? h.push(t, n, r, o) : (d.transcludeOnThisElement && (o = Q(t, d.transclude, i)), d(f, t, n, r, o)))
1826 var n = t.priority - e.priority;
1827 return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
1830 function ge(e, t, n, r) {
1832 return e ? " (module: " + e + ")" : ""
1834 if (t) throw Zi("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))
1841 compile: function(e) {
1844 return n && W.$$addBindingClass(t),
1847 n || W.$$addBindingClass(i), W.$$addBindingInfo(i, r.expressions), e.$watch(r, function(e) {
1856 switch (t = Lr(t || "html")) {
1859 var r = e.document.createElement("div");
1860 return r.innerHTML = "<" + t + ">" + n + "</" + t + ">", r.childNodes[0].childNodes;
1867 if ("srcdoc" === t) return v.HTML;
1869 if ("src" === t || "ngSrc" === t) {
1870 if (-1 === ["img", "video", "audio", "source", "track"].indexOf(n)) return v.RESOURCE_URL
1871 } else if ("xlinkHref" === t || "form" === n && "action" === t || "link" === n && "href" === t) return v.RESOURCE_URL
1874 function $e(e, t, r, i, o) {
1880 if ("multiple" === i && "select" === F(e)) throw Zi("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", te(e));
1881 if (C.test(i)) throw Zi("nodomevents", "Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");
1884 compile: function() {
1886 pre: function(e, t, o) {
1887 var s = o.$$observers || (o.$$observers = be()),
1889 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) {
1890 "class" === i && e !== t ? o.$updateClass(e, t) : o.$set(i, e)
1899 function we(t, n, r) {
1904 for (i = 0, o = t.length; i < o; i++)
1907 for (var l = i, u = l + s - 1, d = t.length; l < d; l++, u++) u < d ? t[l] = t[u] : delete t[l];
1908 t.length -= s - 1, t.context === a && (t.context = r);
1911 c && c.replaceChild(r, a);
1912 var f = e.document.createDocumentFragment();
1913 for (i = 0; i < s; i++) f.appendChild(n[i]);
1914 for (Ur.hasData(a) && (Ur.data(r, Ur.data(a)), Ur(a).off("$destroy")), Ur.cleanData(f.querySelectorAll("*")), i = 1; i < s; i++) delete n[i];
1915 n[0] = r, n.length = 1
1919 return d(function() {
1920 return e.apply(null, arguments)
1924 function ke(e, t, n, i, o, a) {
1933 if (D) throw Zi("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", e, t)
1936 function xe(e, t, r, i, a) {
1937 function c(t, n, i) {
1938 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))
1942 r.$onChanges(u), u = void 0
1946 return o(i, function(i, o) {
1947 var l, u, h, p, g, v = i.attrName,
1951 b || Hr.call(t, v) || (Ce(v, a.name), r[o] = t[v] = void 0), g = t.$observe(v, function(e) {
1954 c(o, e, t), r[o] = e
1956 }), t.$$observers[v].$$scope = e, E(l = t[v]) ? r[o] = n(l)(e) : I(l) && (r[o] = l), f[o] = new bt(Xi, r[o]), d.push(g);
1959 if (!Hr.call(t, v)) {
1961 Ce(v, a.name), t[v] = void 0
1963 if (b && !t[v]) break;
1964 u = s(t[v]), p = u.literal ? B : z, h = u.assign || function() {
1965 throw l = r[o] = u(e), Zi("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", t[v], v, a.name)
1967 var y = function(t) {
1968 return p(t, r[o]) || (p(t, l) ? h(e, t = r[o]) : r[o] = t), l = t
1970 y.$stateful = !0, g = i.collection ? e.$watchCollection(t[v], y) : e.$watch(s(t[v], y), null, u.literal), d.push(g);
1973 if (!Hr.call(t, v)) {
1975 Ce(v, a.name), t[v] = void 0
1977 if (b && !t[v]) break;
1978 var _ = (u = s(t[v])).literal,
1980 f[o] = new bt(Xi, r[o]), g = e.$watch(u, function(e, t) {
1982 if (t === $ || _ && B(t, $)) return;
1985 c(o, e, t), r[o] = e
1989 if (b || Hr.call(t, v) || Ce(v, a.name), (u = t.hasOwnProperty(v) ? s(t[v]) : m) === m && b) break;
1990 r[o] = function(t) {
1996 removeWatches: d.length && function() {
1997 for (var e = 0, t = d.length; e < t; ++e) d[e]()
2002 Se = e.document.createElement("div"),
2008 $addClass: function(e) {
2009 e && e.length > 0 && M.addClass(this.$$element, e)
2011 $removeClass: function(e) {
2012 e && e.length > 0 && M.removeClass(this.$$element, e)
2014 $updateClass: function(e, t) {
2016 n && n.length && M.addClass(this.$$element, n);
2018 r && r.length && M.removeClass(this.$$element, r)
2020 $set: function(e, t, n, i) {
2021 var a, s = Ze(this.$$element[0], e),
2024 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);
2025 else if ("img" === a && "srcset" === e && _(t)) {
2026 for (var u = "", d = ni(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++) {
2028 u += j(ni(p[v]), !0), u += " " + ni(p[v + 1])
2030 var b = ni(p[2 * g]).split(/\s/);
2031 u += j(ni(b[0]), !0), 2 === b.length && (u += " " + ni(b[1])), this[e] = t = u
2032 }!1 !== n && (null === t || y(t) ? this.$$element.removeAttr(i) : Ae.test(i) ? this.$$element.attr(i, t) : q(this.$$element[0], i, t));
2033 var $ = this.$$observers;
2034 $ && o($[l], function(e) {
2042 $observe: function(e, t) {
2044 r = n.$$observers || (n.$$observers = be()),
2045 i = r[e] || (r[e] = []);
2046 return i.push(t), l.$evalAsync(function() {
2047 i.$$inter || !n.hasOwnProperty(e) || y(n[e]) || t(n[e])
2054 var Re = n.startSymbol(),
2056 je = "{{" === Re && "}}" === Pe ? g : function(e) {
2057 return e.replace(/\{\{/g, Re).replace(/}}/g, Pe)
2059 He = /^ngAttr[A-Z]/,
2061 return W.$$addBindingInfo = A ? function(e, t) {
2062 var n = e.data("$binding") || [];
2063 ei(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
2064 } : m, W.$$addBindingClass = A ? function(e) {
2066 } : m, W.$$addScopeInfo = A ? function(e, t, n, r) {
2067 var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
2069 } : m, W.$$addScopeClass = A ? function(e, t) {
2070 V(e, t ? "ng-isolate-scope" : "ng-scope")
2071 } : m, W.$$createComment = function(t, n) {
2073 return A && (r = " " + (t || "") + ": ", n && (r += n + " ")), e.document.createComment(r)
2079 this.previousValue = e, this.currentValue = t
2083 return e.replace(Qi, "").replace(Ji, function(e, t, n) {
2084 return n ? t.toUpperCase() : t
2092 e: for (var o = 0; o < r.length; o++) {
2093 for (var a = r[o], s = 0; s < i.length; s++)
2094 if (a === i[s]) continue e;
2095 n += (n.length > 0 ? " " : "") + a
2101 var t = (e = Ur(e)).length;
2102 if (t <= 1) return e;
2105 (n.nodeType === hi || n.nodeType === fi && "" === n.nodeValue.trim()) && Wr.call(e, t, 1)
2111 if (t && E(t)) return t;
2121 this.has = function(t) {
2122 return e.hasOwnProperty(t)
2123 }, this.register = function(t, n) {
2124 me(t, "controller"), $(t) ? d(e, t) : e[t] = n
2125 }, this.allowGlobals = function() {
2127 }, this.$get = ["$injector", "$window", function(n, i) {
2128 function o(e, t, n, i) {
2129 if (!e || !$(e.$scope)) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, t);
2132 return function(r, a, s, c) {
2134 if (s = !0 === s, c && E(c) && (h = c), E(r)) {
2135 if (!(u = r.match(to))) throw eo("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", r);
2136 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 eo("ctrlreg", "The controller with the name '{0}' is not registered.", f);
2140 var p = (ei(r) ? r[r.length - 1] : r).prototype;
2141 return l = Object.create(p || null), h && o(a, h, l, f || r.name), d(function() {
2142 var e = n.invoke(r, l, a, f);
2143 return e !== l && ($(e) || T(e)) && (l = e, h && o(a, h, l, f || r.name)), l
2149 return l = n.instantiate(r, a, f), h && o(a, h, l, f || r.name), l
2155 this.$get = ["$window", function(e) {
2156 return Ur(e.document)
2161 this.$get = ["$document", "$rootScope", function(e, t) {
2167 return e.on("visibilitychange", n), t.$on("$destroy", function() {
2168 e.off("visibilitychange", n)
2177 this.$get = ["$log", function(e) {
2178 return function(t, n) {
2179 e.error.apply(e, arguments)
2185 return $(e) ? C(e) ? e.toISOString() : Z(e) : e
2189 this.$get = function() {
2190 return function(e) {
2193 return a(e, function(e, n) {
2194 null === e || y(e) || T(e) || (ei(e) ? o(e, function(e) {
2195 t.push(ae(n) + "=" + ae(Tt(e)))
2196 }) : t.push(ae(n) + "=" + ae(Tt(e))))
2203 this.$get = function() {
2204 return function(e) {
2205 function t(e, r, i) {
2206 null === e || y(e) || (ei(e) ? o(e, function(e, n) {
2207 t(e, r + "[" + ($(e) ? n : "") + "]")
2208 }) : $(e) && !C(e) ? a(e, function(e, n) {
2209 t(e, r + (i ? "" : "[") + n + (i ? "" : "]"))
2210 }) : n.push(ae(r) + "=" + ae(Tt(e))))
2214 return t(e, "", !0), n.join("&")
2221 var n = e.replace(so, "").trim();
2223 var r = t("Content-Type"),
2224 i = r && 0 === r.indexOf(ro);
2225 if (i || Ot(n)) try {
2229 throw co("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', e, t)
2237 var t = e.match(oo);
2238 return t && ao[t[0]].test(e)
2243 e && (r[e] = r[e] ? r[e] + ", " + t : t)
2246 return E(e) ? o(e.split("\n"), function(e) {
2247 n = e.indexOf(":"), t(Lr(ni(e.substr(0, n))), ni(e.substr(n + 1)))
2248 }) : $(e) && o(e, function(e, n) {
2255 return function(n) {
2256 if (t || (t = Dt(e)), n) {
2258 return void 0 === r && (r = null), r
2264 function It(e, t, n, r) {
2265 return T(r) ? r(e, t, n) : (o(r, function(r) {
2271 return 200 <= e && e < 300
2275 var e = this.defaults = {
2276 transformResponse: [St],
2277 transformRequest: [function(e) {
2278 return !$(e) || O(e) || N(e) || D(e) ? e : Z(e)
2282 Accept: "application/json, text/plain, */*"
2288 xsrfCookieName: "XSRF-TOKEN",
2289 xsrfHeaderName: "X-XSRF-TOKEN",
2290 paramSerializer: "$httpParamSerializer",
2291 jsonpCallbackParam: "callback"
2294 this.useApplyAsync = function(e) {
2295 return _(e) ? (t = !!e, this) : t
2297 var n = this.interceptors = [];
2298 this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(i, a, s, c, l, u, f, h) {
2301 for (var n = 0, r = t.length; n < r;) {
2306 return t.length = 0, e
2311 return o(e, function(e, i) {
2312 T(e) ? null != (n = e(t)) && (r[i] = n) : r[i] = e
2318 return t.data = It(e.data, e.headers, e.status, c.transformResponse), Rt(e.status) ? t : u.reject(t)
2320 if (!$(t)) throw r("$http")("badreq", "Http request configuration must be an object. Received: {0}", t);
2321 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);
2324 transformRequest: e.transformRequest,
2325 transformResponse: e.transformResponse,
2326 paramSerializer: e.paramSerializer,
2327 jsonpCallbackParam: e.jsonpCallbackParam
2329 c.headers = function(t) {
2330 var n, r, i, o = e.headers,
2331 s = d({}, t.headers);
2332 o = d({}, o.common, o[Lr(t.method)]);
2336 if (Lr(i) === r) continue e;
2340 }(t), c.method = Fr(c.method), c.paramSerializer = E(c.paramSerializer) ? f.get(c.paramSerializer) : c.paramSerializer, i.$$incOutstandingRequestCount();
2344 return o(k, function(e) {
2345 (e.request || e.requestError) && l.unshift(e.request, e.requestError), (e.response || e.responseError) && p.push(e.response, e.responseError)
2346 }), v = n(v, l), v = v.then(function(t) {
2348 r = It(t.data, Nt(n), void 0, t.transformRequest);
2349 return y(r) && o(n, function(e, t) {
2350 "content-type" === Lr(t) && delete n[t]
2351 }), y(t.withCredentials) && !y(e.withCredentials) && (t.withCredentials = e.withCredentials), g(t, r).then(s, s)
2352 }), v = n(v, p), v = v.finally(function() {
2353 i.$$completeOutstandingRequest(m)
2361 return o(e, function(e, r) {
2362 n[r] = function(n) {
2366 t ? l.$applyAsync(r) : l.$$phase ? r() : l.$apply(r)
2372 function c(e, t, r, i, o) {
2373 (Rt(t = t >= -1 ? t : 0) ? k.resolve : k.reject)({
2384 c(e.data, e.status, $e(e.headers()), e.statusText, e.xhrStatus)
2388 var e = p.pendingRequests.indexOf(n); - 1 !== e && p.pendingRequests.splice(e, 1)
2390 var m, g, k = u.defer(),
2393 T = "jsonp" === Lr(n.method),
2395 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) : ei(g) ? c(g[1], g[0], $e(g[2]), g[3], g[4]) : c(g, 200, {}, "OK", "complete") : m.put(M, C)), y(g)) {
2396 var A = qn(n.url) ? s()[n.xsrfCookieName || e.xsrfCookieName] : void 0;
2397 A && (x[n.xsrfHeaderName || e.xsrfHeaderName] = A), a(n.method, M, r, function(e, n, r, i, o) {
2401 m && (Rt(e) ? m.put(M, [e, n, Dt(r), i, o]) : m.remove(M)), t ? l.$applyAsync(a) : (a(), l.$$phase || l.$apply())
2402 }, x, n.timeout, n.withCredentials, n.responseType, i(n.eventHandlers), i(n.uploadEventHandlers))
2408 return t.length > 0 && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
2412 var n = e.split("?");
2413 if (n.length > 2) throw co("badjsonp", 'Illegal use more than one "?", in url, "{1}"', e);
2414 return o(re(n[1]), function(n, r) {
2415 if ("JSON_CALLBACK" === n) throw co("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', e);
2416 if (r === t) throw co("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', t, e)
2417 }), e += (-1 === e.indexOf("?") ? "?" : "&") + t + "=JSON_CALLBACK"
2420 e.paramSerializer = E(e.paramSerializer) ? f.get(e.paramSerializer) : e.paramSerializer;
2422 return o(n, function(e) {
2423 k.unshift(E(e) ? f.get(e) : f.invoke(e))
2424 }), p.pendingRequests = [],
2426 o(arguments, function(e) {
2427 p[e] = function(t, n) {
2428 return p(d({}, n || {}, {
2434 }("get", "delete", "head", "jsonp"),
2436 o(arguments, function(e) {
2437 p[e] = function(t, n, r) {
2438 return p(d({}, r || {}, {
2445 }("post", "put", "patch"), p.defaults = e, p
2450 this.$get = function() {
2452 return new e.XMLHttpRequest
2458 this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(e, t, n, r) {
2459 return Lt(e, r, e.defer, t, n[0])
2463 function Lt(e, t, n, r, i) {
2464 function a(e, t, n) {
2465 e = e.replace("JSON_CALLBACK", t);
2466 var o = i.createElement("script"),
2468 return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
2469 o.removeEventListener("load", a), o.removeEventListener("error", a), i.body.removeChild(o), o = null;
2472 e && ("load" !== e.type || r.wasCalled(t) || (e = {
2474 }), c = e.type, s = "error" === e.type ? 404 : 200), n && n(s, c)
2475 }, o.addEventListener("load", a), o.addEventListener("error", a), i.body.appendChild(o), a
2477 return function(i, s, c, l, u, d, f, h, p, m) {
2479 $ && $(), w && w.abort()
2482 function v(e, t, r, i, o, a) {
2483 _(E) && n.cancel(E), $ = w = null, e(t, r, i, o, a)
2485 if (s = s || e.url(), "jsonp" === Lr(i)) var b = r.createCallback(s),
2486 $ = a(s, b, function(e, t) {
2487 var n = 200 === e && r.getResponse(b);
2488 v(l, e, n, "", t, "complete"), r.removeCallback(b)
2492 w.open(i, s, !0), o(u, function(e, t) {
2493 _(e) && w.setRequestHeader(t, e)
2494 }), w.onload = function() {
2495 var e = w.statusText || "",
2496 t = "response" in w ? w.response : w.responseText,
2497 n = 1223 === w.status ? 204 : w.status;
2498 0 === n && (n = t ? 200 : "file" === Fn(s).protocol ? 404 : 0), v(l, n, t, w.getAllResponseHeaders(), e, "complete")
2500 if (w.onerror = function() {
2501 v(l, -1, null, null, "", "error")
2502 }, w.onabort = function() {
2503 v(l, -1, null, null, "", "abort")
2504 }, w.ontimeout = function() {
2505 v(l, -1, null, null, "", "timeout")
2506 }, o(p, function(e, t) {
2507 w.addEventListener(t, e)
2508 }), o(m, function(e, t) {
2509 w.upload.addEventListener(t, e)
2510 }), f && (w.withCredentials = !0), h) try {
2513 if ("json" !== h) throw e
2515 w.send(y(c) ? null : c)
2517 if (d > 0) var E = n(g, d);
2518 else R(d) && d.then(g)
2525 this.startSymbol = function(t) {
2526 return t ? (e = t, this) : e
2527 }, this.endSymbol = function(e) {
2528 return e ? (t = e, this) : t
2529 }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
2535 return n.replace(f, e).replace(h, t)
2538 function s(e, t, n, r) {
2539 var i = e.$watch(function(e) {
2545 function c(o, c, f, h) {
2546 if (!o.length || -1 === o.indexOf(e)) {
2548 return c || ((p = v(a(o))).exp = o, p.expressions = [], p.$$watchDelegate = s), p
2551 for (var m, g, b, $ = 0, w = [], E = [], k = o.length, C = [], x = []; $ < k;) {
2552 if (-1 === (m = o.indexOf(e, $)) || -1 === (g = o.indexOf(t, m + l))) {
2553 $ !== k && C.push(a(o.substring($)));
2556 $ !== m && C.push(a(o.substring($, m))), b = o.substring(m + l, g), w.push(b), E.push(n(b, function(e) {
2558 return e = M(e), h && !_(e) ? e : ye(e)
2562 })), $ = g + u, x.push(C.length), C.push("")
2564 if (f && C.length > 1 && lo.throwNoconcat(o), !c || w.length) {
2565 var T = function(e) {
2566 for (var t = 0, n = w.length; t < n; t++) {
2567 if (h && y(e[t])) return;
2573 return f ? i.getTrusted(f, e) : i.valueOf(e)
2575 return d(function(e) {
2580 for (; t < n; t++) i[t] = E[t](e);
2588 $$watchDelegate: function(e, t) {
2590 return e.$watchGroup(E, function(r, i) {
2592 t.call(this, o, r !== i ? n : o, e), n = o
2600 f = new RegExp(e.replace(/./g, o), "g"),
2601 h = new RegExp(t.replace(/./g, o), "g");
2602 return c.startSymbol = function() {
2604 }, c.endSymbol = function() {
2611 this.$get = ["$rootScope", "$window", "$q", "$$q", "$browser", function(e, t, n, r, i) {
2612 function o(o, s, c, l) {
2614 d ? o.apply(null, f) : o(m)
2616 var d = arguments.length > 4,
2617 f = d ? Y(arguments, 4) : [],
2619 p = t.clearInterval,
2622 v = (g ? r : n).defer(),
2624 return c = _(c) ? c : 0, b.$$intervalId = h(function() {
2625 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()
2626 }, s), a[b.$$intervalId] = v, b
2629 return o.cancel = function(e) {
2630 return !!(e && e.$$intervalId in a) && (Tn(a[e.$$intervalId].promise), a[e.$$intervalId].reject("canceled"), t.clearInterval(e.$$intervalId), delete a[e.$$intervalId], !0)
2636 for (var t = e.split("/"), n = t.length; n--;) t[n] = oe(t[n].replace(/%2F/g, "/"));
2641 for (var n = e.split("/"), r = n.length; r--;) n[r] = decodeURIComponent(n[r]), t && (n[r] = n[r].replace(/\//g, "%2F"));
2647 t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = h(n.port) || ho[n.protocol] || null
2650 function Bt(e, t, n) {
2651 if (mo.test(e)) throw po("badpath", 'Invalid url "{0}".', e);
2652 var r = "/" !== e.charAt(0);
2655 o = r && "/" === i.pathname.charAt(0) ? i.pathname.substring(1) : i.pathname;
2656 t.$$path = Vt(o, n), t.$$search = re(i.search), t.$$hash = decodeURIComponent(i.hash), t.$$path && "/" !== t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
2660 return e.slice(0, t.length) === t
2664 if (Wt(t, e)) return t.substr(e.length)
2668 var t = e.indexOf("#");
2669 return -1 === t ? e : e.substr(0, t)
2673 return e.replace(/(#.+)|#$/, "$1")
2677 return e.substr(0, Gt(e).lastIndexOf("/") + 1)
2681 return e.substring(0, e.indexOf("/", e.indexOf("//") + 2))
2684 function Qt(e, t, n) {
2685 this.$$html5 = !0, n = n || "", zt(e, this), this.$$parse = function(e) {
2687 if (!E(n)) throw po("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, t);
2688 Bt(n, this, !0), this.$$path || (this.$$path = "/"), this.$$compose()
2689 }, this.$$compose = function() {
2690 var e = ie(this.$$search),
2691 n = this.$$hash ? "#" + oe(this.$$hash) : "";
2692 this.$$url = Ut(this.$$path) + (e ? "?" + e : "") + n, this.$$absUrl = t + this.$$url.substr(1), this.$$urlUpdatedByLocation = !0
2693 }, this.$$parseLinkUrl = function(r, i) {
2694 if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2696 return _(o = Yt(e, r)) ? (a = o, s = n && _(o = Yt(n, o)) ? t + (Yt("/", o) || o) : e + a) : _(o = Yt(t, r)) ? s = t + o : t === r + "/" && (s = t), s && this.$$parse(s), !!s
2700 function Jt(e, t, n) {
2701 zt(e, this), this.$$parse = function(r) {
2702 var i, o = Yt(e, r) || Yt(t, r);
2703 y(o) || "#" !== o.charAt(0) ? this.$$html5 ? i = o : (i = "", y(o) && (e = r, this.replace())) : y(i = Yt(n, o)) && (i = o), Bt(i, this, !1), this.$$path = function(e, t, n) {
2704 var r, i = /^\/[A-Z]:(\/.*)/;
2705 return Wt(t, n) && (t = t.replace(n, "")), i.exec(t) ? e : (r = i.exec(e)) ? r[1] : e
2706 }(this.$$path, i, e), this.$$compose()
2707 }, this.$$compose = function() {
2708 var t = ie(this.$$search),
2709 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2710 this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + (this.$$url ? n + this.$$url : ""), this.$$urlUpdatedByLocation = !0
2711 }, this.$$parseLinkUrl = function(t, n) {
2712 return Gt(e) === Gt(t) && (this.$$parse(t), !0)
2716 function en(e, t, n) {
2717 this.$$html5 = !0, Jt.apply(this, arguments), this.$$parseLinkUrl = function(r, i) {
2718 if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2720 return e === Gt(r) ? o = r : (a = Yt(t, r)) ? o = e + n + a : t === r + "/" && (o = t), o && this.$$parse(o), !!o
2721 }, this.$$compose = function() {
2722 var t = ie(this.$$search),
2723 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2724 this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + n + this.$$url, this.$$urlUpdatedByLocation = !0
2735 return function(n) {
2736 return y(n) ? this[e] : (this[e] = t(n), this.$$compose(), this)
2747 this.hashPrefix = function(t) {
2748 return _(t) ? (e = t, this) : e
2749 }, this.html5Mode = function(e) {
2750 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
2751 }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, r, i, o, a) {
2752 function s(e, t, n) {
2756 r.url(e, t, n), l.$$state = r.state()
2758 throw l.url(i), l.$$state = o, e
2763 n.$broadcast("$locationChangeSuccess", l.absUrl(), e, l.$$state, t)
2765 var l, u, d, f = r.baseHref(),
2768 if (!f && t.requireBase) throw po("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
2769 d = Xt(h) + (f || "/"), u = i.history ? Qt : en
2770 } else d = Gt(h), u = Jt;
2772 (l = new u(d, p, "#" + e)).$$parseLinkUrl(h, h), l.$$state = r.state();
2773 var m = /^\s*(javascript|mailto):/i;
2774 o.on("click", function(e) {
2775 var i = t.rewriteLinks;
2776 if (i && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 !== e.which && 2 !== e.button) {
2777 for (var s = Ur(e.target);
2779 if (s[0] === o[0] || !(s = s.parent())[0]) return;
2780 if (!E(i) || !y(s.attr(i))) {
2781 var c = s.prop("href"),
2782 u = s.attr("href") || s.attr("xlink:href");
2783 $(c) && "[object SVGAnimatedString]" === c.toString() && (c = Fn(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))
2786 }), Kt(l.absUrl()) !== Kt(h) && r.url(l.absUrl(), !0);
2788 return r.onUrlChange(function(e, t) {
2789 Wt(e, p) ? (n.$evalAsync(function() {
2790 var r, i = l.absUrl(),
2792 e = Kt(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)))
2793 }), n.$$phase || n.$digest()) : a.location.href = e
2794 }), n.$watch(function() {
2795 if (g || l.$$urlUpdatedByLocation) {
2796 l.$$urlUpdatedByLocation = !1;
2797 var e = Kt(r.url()),
2801 u = e !== t || l.$$html5 && i.history && o !== l.$$state;
2802 (g || u) && (g = !1, n.$evalAsync(function() {
2804 r = n.$broadcast("$locationChangeStart", t, e, l.$$state, o).defaultPrevented;
2805 l.absUrl() === t && (r ? (l.$$parse(e), l.$$state = o) : (u && s(t, a, o === l.$$state ? null : l.$$state), c(e, o)))
2816 this.debugEnabled = function(t) {
2817 return _(t) ? (e = t, this) : e
2818 }, this.$get = ["$window", function(n) {
2820 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
2824 var t = n.console || {},
2825 i = t[e] || t.log || m;
2828 return o(arguments, function(t) {
2830 }), Function.prototype.apply.call(i, t, e)
2833 var a = qr || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
2842 e && n.apply(t, arguments)
2854 return void 0 !== e ? e : t
2858 return void 0 === e ? t : void 0 === t ? e : e + t
2862 return !e(t).$stateful
2867 case wo.MemberExpression:
2868 if (e.computed) return !1;
2870 case wo.UnaryExpression:
2872 case wo.BinaryExpression:
2873 return "+" !== e.operator && Eo;
2874 case wo.CallExpression:
2877 return void 0 === t ? ko : t
2880 function dn(e, t, n) {
2881 var r, i, a, s = e.isPure = un(e, n);
2884 r = !0, o(e.body, function(e) {
2885 dn(e.expression, t, s), r = r && e.expression.constant
2889 e.constant = !0, e.toWatch = [];
2891 case wo.UnaryExpression:
2892 dn(e.argument, t, s), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
2894 case wo.BinaryExpression:
2895 dn(e.left, t, s), dn(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
2897 case wo.LogicalExpression:
2898 dn(e.left, t, s), dn(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
2900 case wo.ConditionalExpression:
2901 dn(e.test, t, s), dn(e.alternate, t, s), dn(e.consequent, t, s), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
2904 e.constant = !1, e.toWatch = [e];
2906 case wo.MemberExpression:
2907 dn(e.object, t, s), e.computed && dn(e.property, t, s), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = e.constant ? [] : [e];
2909 case wo.CallExpression:
2910 a = !!e.filter && ln(t, e.callee.name), r = a, i = [], o(e.arguments, function(e) {
2911 dn(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2912 }), e.constant = r, e.toWatch = a ? i : [e];
2914 case wo.AssignmentExpression:
2915 dn(e.left, t, s), dn(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
2917 case wo.ArrayExpression:
2918 r = !0, i = [], o(e.elements, function(e) {
2919 dn(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2920 }), e.constant = r, e.toWatch = i;
2922 case wo.ObjectExpression:
2923 r = !0, i = [], o(e.properties, function(e) {
2924 dn(e.value, t, s), r = r && e.value.constant, i.push.apply(i, e.value.toWatch), e.computed && (dn(e.key, t, !1), r = r && e.key.constant, i.push.apply(i, e.key.toWatch))
2925 }), e.constant = r, e.toWatch = i;
2927 case wo.ThisExpression:
2928 case wo.LocalsExpression:
2929 e.constant = !1, e.toWatch = []
2934 if (1 === e.length) {
2935 var t = e[0].expression,
2937 return 1 !== n.length ? n : n[0] !== t ? n : void 0
2942 return e.type === wo.Identifier || e.type === wo.MemberExpression
2946 if (1 === e.body.length && hn(e.body[0].expression)) return {
2947 type: wo.AssignmentExpression,
2948 left: e.body[0].expression,
2950 type: wo.NGValueParameter
2957 return 0 === e.body.length || 1 === e.body.length && (e.body[0].expression.type === wo.Literal || e.body[0].expression.type === wo.ArrayExpression || e.body[0].expression.type === wo.ObjectExpression)
2972 function yn(e, t, n) {
2973 this.ast = new wo(e, n), this.astCompiler = n.csp ? new bn(t) : new vn(t)
2977 return T(e.valueOf) ? e.valueOf() : bo.call(e)
2988 this.addLiteral = function(e, t) {
2990 }, this.setIdentifierFns = function(n, r) {
2991 return e = n, t = r, this
2992 }, this.$get = ["$filter", function(i) {
2997 return e = e.trim(), o = e, (r = n[o]) || ((r = new yn(new $o(h), i, h).parse(e)).constant ? r.$$watchDelegate = d : r.oneTime ? r.$$watchDelegate = r.literal ? u : l : r.inputs && (r.$$watchDelegate = c), n[o] = r), f(r, t);
3005 function s(e, t, n) {
3006 return null == e || null == t ? e === t : !("object" == typeof e && "object" == typeof(e = _n(e)) && !n) && (e === t || e !== e && t !== t)
3009 function c(e, t, n, r, i) {
3010 var o, a = r.inputs;
3011 if (1 === a.length) {
3013 return a = a[0], e.$watch(function(e) {
3015 return s(t, c, a.isPure) || (o = r(e, void 0, void 0, [t]), c = t && _n(t)), o
3018 for (var l = [], u = [], d = 0, f = a.length; d < f; d++) l[d] = s, u[d] = null;
3019 return e.$watch(function(e) {
3020 for (var t = !1, n = 0, i = a.length; n < i; n++) {
3022 (t || (t = !s(c, l[n], a[n].isPure))) && (u[n] = c, l[n] = c && _n(c))
3024 return t && (o = r(e, void 0, void 0, u)), o
3028 function l(e, t, n, r, i) {
3029 function o(e, n, r) {
3030 s = e, T(t) && t(e, n, r), _(e) && r.$$postDigest(function() {
3035 return a = r.inputs ? c(e, o, n, r, i) : e.$watch(function(e) {
3040 function u(e, t, n, r) {
3043 return o(e, function(e) {
3048 return a = e.$watch(function(e) {
3050 }, function(e, n, r) {
3051 s = e, T(t) && t(e, n, r), i(e) && r.$$postDigest(function() {
3057 function d(e, t, n, r) {
3058 var i = e.$watch(function(e) {
3066 var n = e.$$watchDelegate,
3068 i = n !== u && n !== l ? function(n, i, o, a) {
3069 var s = r && a ? a[0] : e(n, i, o, a);
3071 } : function(n, r, i, o) {
3072 var a = e(n, r, i, o),
3076 return r = !e.inputs, n && n !== c ? (i.$$watchDelegate = n, i.inputs = e.inputs) : t.$stateful || (i.$$watchDelegate = c, i.inputs = e.inputs ? e.inputs : [e]), i.inputs && (i.inputs = i.inputs.map(function(e) {
3077 return e.isPure === ko ? function(t) {
3083 csp: ii().noUnsafeEval,
3085 isIdentifierStart: T(e) && e,
3086 isIdentifierContinue: T(t) && t
3088 return a.$$getAst = function(e) {
3089 return new yn(new $o(h), i, h).getAst(e).ast
3096 this.$get = ["$rootScope", "$exceptionHandler", function(t, n) {
3097 return kn(function(e) {
3100 }], this.errorOnUnhandledRejections = function(t) {
3101 return _(t) ? (e = t, this) : e
3107 this.$get = ["$browser", "$exceptionHandler", function(t, n) {
3108 return kn(function(e) {
3111 }], this.errorOnUnhandledRejections = function(t) {
3112 return _(t) ? (e = t, this) : e
3116 function kn(e, t, n) {
3122 var e = this.promise = new s;
3123 this.resolve = function(t) {
3125 }, this.reject = function(t) {
3127 }, this.notify = function(t) {
3140 a = r.pending, r.processScheduled = !1, r.pending = void 0;
3142 for (var s = 0, c = a.length; s < c; ++s) {
3143 xn(r), o = a[s][0], i = a[s][r.status];
3145 T(i) ? f(o, i(r.value)) : 1 === r.status ? f(o, r.value) : p(o, r.value)
3147 p(o, e), e && !0 === e.$$passToExceptionHandler && t(e)
3151 --k, n && 0 === k && e(l)
3156 for (; !k && C.length;) {
3160 var n = "Possibly unhandled rejection: " + Ee(e.value);
3161 x(e.value) ? t(e.value, n) : t(n)
3167 !n || t.pending || 2 !== t.status || Cn(t) || (0 === k && 0 === C.length && e(l), C.push(t)), !t.processScheduled && t.pending && (t.processScheduled = !0, ++k, e(function() {
3173 e.$$state.status || (t === e ? m(e, E("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : h(e, t))
3178 i || (i = !0, m(e, t))
3182 ($(t) || T(t)) && (r = t.then), T(r) ? (e.$$state.status = -1, r.call(t, function(t) {
3183 i || (i = !0, h(e, t))
3186 })) : (e.$$state.value = t, e.$$state.status = 1, u(e.$$state))
3193 e.$$state.status || m(e, t)
3197 e.$$state.value = t, e.$$state.status = 2, u(e.$$state)
3201 var i = n.$$state.pending;
3202 n.$$state.status <= 0 && i && i.length && e(function() {
3203 for (var e, n, o = 0, a = i.length; o < a; o++) {
3204 n = i[o][0], e = i[o][3];
3206 g(n, T(e) ? e(r) : r)
3219 function b(e, t, n) {
3226 return R(r) ? r.then(function() {
3231 function _(e, t, n, r) {
3233 return f(i, e), i.then(t, n, r)
3237 if (!T(e)) throw E("norslvr", "Expected resolverFn, got '{0}'", e);
3239 return e(function(e) {
3245 var E = r("$q", TypeError),
3249 then: function(e, t, n) {
3250 if (y(e) && y(t) && y(n)) return this;
3252 return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), this.$$state.status > 0 && u(this.$$state), r
3254 catch: function(e) {
3255 return this.then(null, e)
3257 finally: function(e, t) {
3258 return this.then(function(t) {
3266 return w.prototype = s.prototype, w.defer = i, w.reject = v, w.when = _, w.resolve = M, w.all = function(e) {
3269 r = ei(e) ? [] : {};
3270 return o(e, function(e, i) {
3271 n++, _(e).then(function(e) {
3272 r[i] = e, --n || f(t, r)
3276 }), 0 === n && f(t, r), t
3277 }, w.race = function(e) {
3279 return o(e, function(e) {
3280 _(e).then(t.resolve, t.reject)
3298 this.$get = ["$window", "$timeout", function(e, t) {
3299 var n = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
3300 r = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
3302 o = i ? function(e) {
3308 var n = t(e, 16.66, !1);
3313 return o.supported = i, o
3320 this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = c(), this.$$ChildScope = null
3322 return t.prototype = e, t
3325 n = r("$rootScope"),
3328 this.digestTtl = function(e) {
3329 return arguments.length && (t = e), t
3330 }, this.$get = ["$exceptionHandler", "$parse", "$browser", function(r, l, u) {
3332 e.currentScope.$$destroyed = !0
3336 9 === qr && (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
3340 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
3344 if (k.$$phase) throw n("inprog", "{0} already in progress", k.$$phase);
3354 e.$$watchersCount += t
3355 } while (e = e.$parent)
3358 function b(e, t, n) {
3360 e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n]
3361 } while (e = e.$parent)
3367 for (; M.length;) try {
3376 null === s && (s = u.defer(function() {
3382 $new: function(t, n) {
3384 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
3386 $watch: function(e, t, n, r) {
3389 if (i.$$watchDelegate) return i.$$watchDelegate(this, o, n, i, e);
3399 return a = null, c || ((c = s.$$watchers = []).$$digestWatchIndex = -1), c.unshift(u), c.$$digestWatchIndex++, v(this, 1),
3402 e >= 0 && (v(s, -1), e < c.$$digestWatchIndex && c.$$digestWatchIndex--), a = null
3405 $watchGroup: function(e, t) {
3407 c = !1, l ? (l = !1, t(i, i, s)) : t(i, r, s)
3409 var r = new Array(e.length),
3410 i = new Array(e.length),
3417 return s.$evalAsync(function() {
3424 return 1 === e.length ? this.$watch(e[0], function(e, n, o) {
3425 i[0] = e, r[0] = n, t(i, e === n ? i : r, o)
3426 }) : (o(e, function(e, t) {
3427 var o = s.$watch(e, function(e, o) {
3428 i[t] = e, r[t] = o, c || (c = !0, s.$evalAsync(n))
3432 for (; a.length;) a.shift()()
3435 $watchCollection: function(e, t) {
3441 o !== f && (m = (o = f).length = 0, u++), t = r.length, m !== t && (u++, o.length = m = t);
3442 for (var c = 0; c < t; c++) s = o[c], a = r[c], s !== s && a !== a || s === a || (u++, o[c] = a)
3444 o !== h && (o = h = {}, m = 0, u++), t = 0;
3445 for (n in r) Hr.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++));
3448 for (n in o) Hr.call(r, n) || (m--, delete o[n])
3451 else o !== r && (o = r, u++);
3456 var r, o, a, s = this,
3464 return this.$watch(d, function() {
3465 if (p ? (p = !1, t(r, r, s)) : t(r, a, s), c)
3468 a = new Array(r.length);
3469 for (var e = 0; e < r.length; e++) a[e] = r[e]
3472 for (var n in r) Hr.call(r, n) && (a[n] = r[n])
3477 $digest: function() {
3478 var e, i, o, c, l, d, f, h, m, v, b = t,
3481 p("$digest"), u.$$checkUrlChange(), this === k && null !== s && (u.defer.cancel(s), w()), a = null;
3484 for (var E = 0; E < C.length; E++) {
3486 (0, (v = C[E]).fn)(v.scope, v.locals)
3494 if (l = h.$$watchers)
3495 for (l.$$digestWatchIndex = l.length; l.$$digestWatchIndex--;) try {
3496 if (e = l[l.$$digestWatchIndex])
3497 if (c = e.get, (i = c(h)) === (o = e.last) || (e.eq ? B(i, o) : Jr(i) && Jr(o))) {
3502 } 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({
3503 msg: T(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
3510 if (!(f = h.$$watchersCount && h.$$childHead || h !== y && h.$$nextSibling))
3511 for (; h !== y && !(f = h.$$nextSibling);) h = h.$parent
3513 if ((d || C.length) && !b--) throw g(), n("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, $)
3514 } while (d || C.length);
3515 for (g(); A < x.length;) try {
3520 x.length = A = 0, u.$$checkUrlChange()
3522 $destroy: function() {
3523 if (!this.$$destroyed) {
3524 var e = this.$parent;
3525 this.$broadcast("$destroy"), this.$$destroyed = !0, this === k && u.$$applicationDestroyed(), v(this, -this.$$watchersCount);
3526 for (var t in this.$$listenerCount) b(this, this.$$listenerCount[t], t);
3527 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() {
3529 }, this.$$listeners = {}, this.$$nextSibling = null, f(this)
3532 $eval: function(e, t) {
3533 return l(e)(this, t)
3535 $evalAsync: function(e, t) {
3536 k.$$phase || C.length || u.defer(function() {
3537 C.length && k.$digest()
3544 $$postDigest: function(e) {
3547 $apply: function(e) {
3551 return this.$eval(e)
3565 $applyAsync: function(e) {
3567 e && M.push(function() {
3571 $on: function(e, t) {
3572 var n = this.$$listeners[e];
3573 n || (this.$$listeners[e] = n = []), n.push(t);
3576 r.$$listenerCount[e] || (r.$$listenerCount[e] = 0), r.$$listenerCount[e]++
3577 } while (r = r.$parent);
3580 var r = n.indexOf(t); - 1 !== r && (delete n[r], b(i, 1, e))
3583 $emit: function(e, t) {
3584 var n, i, o, a = [],
3590 stopPropagation: function() {
3593 preventDefault: function() {
3594 l.defaultPrevented = !0
3596 defaultPrevented: !1
3598 u = W([l], arguments, 1);
3600 for (n = s.$$listeners[e] || a, l.currentScope = s, i = 0, o = n.length; i < o; i++)
3605 } else n.splice(i, 1), i--, o--;
3609 return l.currentScope = null, l
3611 $broadcast: function(e, t) {
3618 preventDefault: function() {
3619 a.defaultPrevented = !0
3621 defaultPrevented: !1
3623 if (!n.$$listenerCount[e]) return a;
3624 for (var s, c, l, u = W([a], arguments, 1); i = o;) {
3625 for (a.currentScope = i, c = 0, l = (s = i.$$listeners[e] || []).length; c < l; c++)
3630 } else s.splice(c, 1), c--, l--;
3631 if (!(o = i.$$listenerCount[e] && i.$$childHead || i !== n && i.$$nextSibling))
3632 for (; i !== n && !(o = i.$$nextSibling);) i = i.$parent
3634 return a.currentScope = null, a
3638 C = k.$$asyncQueue = [],
3639 x = k.$$postDigestQueue = [],
3640 M = k.$$applyAsyncQueue = [],
3647 var e = /^\s*(https?|s?ftp|mailto|tel|file):/,
3648 t = /^\s*((https?|ftp|file|blob):|data:image\/)/;
3649 this.aHrefSanitizationWhitelist = function(t) {
3650 return _(t) ? (e = t, this) : e
3651 }, this.imgSrcSanitizationWhitelist = function(e) {
3652 return _(e) ? (t = e, this) : t
3653 }, this.$get = function() {
3654 return function(n, r) {
3655 var i, o = r ? t : e;
3656 return "" === (i = Fn(n && n.trim()).href) || i.match(o) ? n : "unsafe:" + i
3662 return e.replace(To, xe)
3666 if ("self" === e) return e;
3668 if (e.indexOf("***") > -1) throw Co("iwcard", "Illegal sequence *** in string matcher. String: {0}", e);
3669 return e = ri(e).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"), new RegExp("^" + e + "$")
3671 if (M(e)) return new RegExp("^" + e.source + "$");
3672 throw Co("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
3677 return _(e) && o(e, function(e) {
3683 this.SCE_CONTEXTS = xo;
3686 this.resourceUrlWhitelist = function(t) {
3687 return arguments.length && (e = Nn(t)), e
3688 }, this.resourceUrlBlacklist = function(e) {
3689 return arguments.length && (t = Nn(e)), t
3690 }, this.$get = ["$injector", function(n) {
3692 return "self" === e ? qn(t) : !!e.exec(t.href)
3696 var i, o, a = Fn(n.toString()),
3698 for (i = 0, o = e.length; i < o; i++)
3704 for (i = 0, o = t.length; i < o; i++)
3713 var t = function(e) {
3714 this.$$unwrapTrustedValue = function() {
3718 return e && (t.prototype = new e), t.prototype.valueOf = function() {
3719 return this.$$unwrapTrustedValue()
3720 }, t.prototype.toString = function() {
3721 return this.$$unwrapTrustedValue().toString()
3724 var a = function(e) {
3725 throw Co("unsafe", "Attempting to use an unsafe value in a safe context.")
3727 n.has("$sanitize") && (a = n.get("$sanitize"));
3730 return c[xo.HTML] = o(s), c[xo.CSS] = o(s), c[xo.URL] = o(s), c[xo.JS] = o(s), c[xo.RESOURCE_URL] = o(c[xo.URL]), {
3731 trustAs: function(e, t) {
3732 var n = c.hasOwnProperty(e) ? c[e] : null;
3733 if (!n) throw Co("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
3734 if (null === t || y(t) || "" === t) return t;
3735 if ("string" != typeof t) throw Co("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
3738 getTrusted: function(e, t) {
3739 if (null === t || y(t) || "" === t) return t;
3740 var n = c.hasOwnProperty(e) ? c[e] : null;
3741 if (n && t instanceof n) return t.$$unwrapTrustedValue();
3742 if (e === xo.RESOURCE_URL) {
3744 throw Co("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}", t.toString())
3746 if (e === xo.HTML) return a(t);
3747 throw Co("unsafe", "Attempting to use an unsafe value in a safe context.")
3749 valueOf: function(e) {
3750 return e instanceof s ? e.$$unwrapTrustedValue() : e
3758 this.enabled = function(t) {
3759 return arguments.length && (e = !!t), e
3760 }, this.$get = ["$parse", "$sceDelegate", function(t, n) {
3761 if (e && qr < 8) throw Co("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.");
3763 r.isEnabled = function() {
3765 }, r.trustAs = n.trustAs, r.getTrusted = n.getTrusted, r.valueOf = n.valueOf, e || (r.trustAs = r.getTrusted = function(e, t) {
3767 }, r.valueOf = g), r.parseAs = function(e, n) {
3769 return i.literal && i.constant ? i : t(n, function(t) {
3770 return r.getTrusted(e, t)
3776 return o(xo, function(e, t) {
3778 r[On("parse_as_" + n)] = function(t) {
3780 }, r[On("get_trusted_" + n)] = function(t) {
3782 }, r[On("trust_as_" + n)] = function(t) {
3790 this.$get = ["$window", "$document", function(e, t) {
3792 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,
3793 i = h((/android (\d+)/.exec(Lr((e.navigator || {}).userAgent)) || [])[1]),
3794 o = /Boxee/i.test((e.navigator || {}).userAgent),
3796 s = a.body && a.body.style,
3799 return s && (c = !!("transition" in s || "webkitTransition" in s), l = !!("animation" in s || "webkitAnimation" in s)), {
3800 history: !(!r || i < 4 || o),
3801 hasEvent: function(e) {
3802 if ("input" === e && qr) return !1;
3804 var t = a.createElement("div");
3805 n[e] = "on" + e in t
3819 this.httpOptions = function(t) {
3820 return t ? (e = t, this) : e
3821 }, this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(t, n, r, i, o) {
3823 a.totalPendingRequests++, E(s) && !y(n.get(s)) || (s = o.getTrustedResourceUrl(s));
3824 var l = r.defaults && r.defaults.transformResponse;
3825 return ei(l) ? l = l.filter(function(e) {
3827 }) : l === St && (l = null), r.get(s, d({
3829 transformResponse: l
3830 }, e)).finally(function() {
3831 a.totalPendingRequests--
3832 }).then(function(e) {
3833 return n.put(s, e.data), e.data
3835 return c || (e = Mo("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", s, e.status, e.statusText), t(e)), i.reject(e)
3838 return a.totalPendingRequests = 0, a
3843 this.$get = ["$rootScope", "$browser", "$location", function(e, t, n) {
3845 return r.findBindings = function(e, t, n) {
3847 return o(e.getElementsByClassName("ng-binding"), function(e) {
3848 var i = Xr.element(e).data("$binding");
3849 i && o(i, function(i) {
3850 n ? new RegExp("(^|\\s)" + ri(t) + "(\\s|\\||$)").test(i) && r.push(e) : -1 !== i.indexOf(t) && r.push(e)
3853 }, r.findModels = function(e, t, n) {
3854 for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
3855 var o = n ? "=" : "*=",
3856 a = "[" + r[i] + "model" + o + '"' + t + '"]',
3857 s = e.querySelectorAll(a);
3858 if (s.length) return s
3860 }, r.getLocation = function() {
3862 }, r.setLocation = function(t) {
3863 t !== n.url() && (n.url(t), e.$digest())
3864 }, r.whenStable = function(e) {
3865 t.notifyWhenNoOutstandingRequests(e)
3871 this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(e, t, n, r, i) {
3872 function o(o, s, c) {
3873 T(o) || (c = s, s = o, o = m);
3874 var l, u = Y(arguments, 3),
3876 f = (d ? r : n).defer(),
3878 return l = t.defer(function() {
3880 f.resolve(o.apply(null, u))
3884 delete a[h.$$timeoutId]
3887 }, s), h.$$timeoutId = l, a[l] = f, h
3890 return o.cancel = function(e) {
3891 return !!(e && e.$$timeoutId in a) && (Tn(a[e.$$timeoutId].promise), a[e.$$timeoutId].reject("canceled"), delete a[e.$$timeoutId], t.defer.cancel(e.$$timeoutId))
3898 return qr && (Ao.setAttribute("href", t), t = Ao.href), Ao.setAttribute("href", t), {
3900 protocol: Ao.protocol ? Ao.protocol.replace(/:$/, "") : "",
3902 search: Ao.search ? Ao.search.replace(/^\?/, "") : "",
3903 hash: Ao.hash ? Ao.hash.replace(/^#/, "") : "",
3904 hostname: Ao.hostname,
3906 pathname: "/" === Ao.pathname.charAt(0) ? Ao.pathname : "/" + Ao.pathname
3911 var t = E(e) ? Fn(e) : e;
3912 return t.protocol === So.protocol && t.host === So.host
3922 return e.cookie || ""
3930 return decodeURIComponent(e)
3939 var e, a, s, c, l, u = t(r);
3941 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))));
3954 return o(r, function(e, n) {
3958 return e.factory(r + n, i)
3961 this.register = t, this.$get = ["$injector", function(e) {
3962 return function(t) {
3965 }], t("currency", Zn), t("date", cr), t("filter", Wn), t("json", lr), t("limitTo", ur), t("lowercase", jo), t("number", Xn), t("orderBy", fr), t("uppercase", Ho)
3969 return function(e, t, n, o) {
3971 if (null == e) return e;
3972 throw r("filter")("notarray", "Expected array but received: {0}", e)
3991 return Array.prototype.filter.call(e, a)
3995 function Yn(e, t, n, r) {
3996 var i = $(e) && n in e;
3997 return !0 === t ? t = B : T(t) || (t = function(e, t) {
3998 return !y(e) && (null === e || null === t ? e === t : !($(t) || $(e) && !b(e)) && (e = Lr("" + e), t = Lr("" + t), -1 !== e.indexOf(t)))
4001 return i && !$(o) ? Gn(o, e[n], t, n, !1) : Gn(o, e, t, n, r)
4005 function Gn(e, t, n, r, i, o) {
4008 if ("string" === s && "!" === t.charAt(0)) return !Gn(e, t.substring(1), n, r, i);
4009 if (ei(e)) return e.some(function(e) {
4010 return Gn(e, t, n, r, i)
4017 if (c.charAt && "$" !== c.charAt(0) && Gn(e[c], t, n, r, !0)) return !0;
4018 return !o && Gn(e, t, n, r, !1)
4020 if ("object" === s) {
4023 if (!T(l) && !y(l)) {
4025 if (!Gn(u ? e : e[c], l, n, r, u, u)) return !1
4039 return null === e ? "null" : typeof e
4043 var t = e.NUMBER_FORMATS;
4044 return function(e, n, r) {
4045 return y(n) && (n = t.CURRENCY_SYM), y(r) && (r = t.PATTERNS[1].maxFrac), null == e ? e : er(e, t.PATTERNS[1], t.GROUP_SEP, t.DECIMAL_SEP, r).replace(/\u00A4/g, n)
4050 var t = e.NUMBER_FORMATS;
4051 return function(e, n) {
4052 return null == e ? e : er(e, t.PATTERNS[0], t.GROUP_SEP, t.DECIMAL_SEP, n)
4057 var t, n, r, i, o, a = 0;
4058 for ((n = e.indexOf(Do)) > -1 && (e = e.replace(Do, "")), (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) === No; r++);
4059 if (r === (o = e.length)) t = [0], n = 1;
4061 for (o--; e.charAt(o) === No;) o--;
4062 for (n -= r, t = [], i = 0; r <= o; r++, i++) t[i] = +e.charAt(r)
4064 return n > Oo && (t = t.splice(0, Oo - 1), a = n - 1, n = 1), {
4071 function Jn(e, t, n, r) {
4074 a = (t = y(t) ? Math.min(Math.max(n, o), r) : +t) + e.i,
4077 i.splice(Math.max(e.i, a));
4078 for (var c = a; c < i.length; c++) i[c] = 0
4080 o = Math.max(0, o), e.i = 1, i.length = Math.max(1, a = t + 1), i[0] = 0;
4081 for (var l = 1; l < a; l++) i[l] = 0
4085 for (var u = 0; u > a; u--) i.unshift(0), e.i++;
4088 for (; o < Math.max(0, t); o++) i.push(0);
4089 var d = i.reduceRight(function(e, t, n, r) {
4090 return t += e, r[n] = t % 10, Math.floor(t / 10)
4092 d && (i.unshift(d), e.i++)
4095 function er(e, t, n, r, i) {
4096 if (!E(e) && !k(e) || isNaN(e)) return "";
4097 var o, a = !isFinite(e),
4099 c = Math.abs(e) + "",
4103 Jn(o = Qn(c), i, t.minFrac, t.maxFrac);
4108 for (s = u.reduce(function(e, t) {
4110 }, !0); d < 0;) u.unshift(0), d++;
4111 d > 0 ? h = u.splice(d, u.length) : (h = u, u = [0]);
4113 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(""));
4114 u.length && p.unshift(u.join("")), l = p.join(n), h.length && (l += r + h.join("")), f && (l += "e+" + f)
4116 return e < 0 && !s ? t.negPre + l + t.negSuf : t.posPre + l + t.posSuf
4119 function tr(e, t, n, r) {
4121 for ((e < 0 || r && e <= 0) && (r ? e = 1 - e : (e = -e, i = "-")), e = "" + e; e.length < t;) e = No + e;
4122 return n && (e = e.substr(e.length - t)), i + e
4125 function nr(e, t, n, r, i) {
4128 var a = o["get" + e]();
4129 return (n > 0 || a > -n) && (a += n), 0 === a && -12 === n && (a = 12), tr(a, t, r, i)
4133 function rr(e, t, n) {
4134 return function(r, i) {
4135 var o = r["get" + e]();
4136 return i[Fr((n ? "STANDALONE" : "") + (t ? "SHORT" : "") + e)][o]
4141 var t = new Date(e, 0, 1).getDay();
4142 return new Date(e, 0, (t <= 4 ? 5 : 12) - t)
4146 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + (4 - e.getDay()))
4150 return function(t) {
4151 var n = ir(t.getFullYear()),
4153 return tr(1 + Math.round(r / 6048e5), e)
4158 return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
4164 if (t = e.match(n)) {
4165 var r = new Date(0),
4168 a = t[8] ? r.setUTCFullYear : r.setFullYear,
4169 s = t[8] ? r.setUTCHours : r.setHours;
4170 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]));
4171 var c = h(t[4] || 0) - i,
4172 l = h(t[5] || 0) - o,
4174 d = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
4175 return s.call(r, c, l, u, d), r
4179 var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
4180 return function(n, r, i) {
4183 if (r = r || "mediumDate", r = e.DATETIME_FORMATS[r] || r, E(n) && (n = Po.test(n) ? h(n) : t(n)), k(n) && (n = new Date(n)), !C(n) || !isFinite(n.getTime())) return n;
4184 for (; r;)(s = Ro.exec(r)) ? r = (l = W(l, s, 1)).pop() : (l.push(r), r = null);
4185 var u = n.getTimezoneOffset();
4186 return i && (u = Q(i, u), n = ee(n, i, !0)), o(l, function(t) {
4187 a = Io[t], c += a ? a(n, e.DATETIME_FORMATS, u) : "''" === t ? "'" : t.replace(/(^'|'$)/g, "").replace(/''/g, "'")
4193 return function(e, t) {
4194 return y(t) && (t = 2), Z(e, t)
4199 return function(e, t, n) {
4200 return t = Math.abs(Number(t)) === 1 / 0 ? Number(t) : h(t), Jr(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 ? dr(e, n, n + t) : 0 === n ? dr(e, t, e.length) : dr(e, Math.max(0, n + t), n)) : e)
4204 function dr(e, t, n) {
4205 return E(e) ? e.slice(t, n) : Br.call(e, t, n)
4210 return t.map(function(t) {
4214 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)) {
4239 return T(e.valueOf) && (e = e.valueOf(), n(e)) ? e : (b(e) && (e = e.toString(), n(e)), e)
4244 return null === e ? (n = "string", e = "null") : "object" === n && (e = o(e)), {
4258 "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)
4259 } else n = r < i ? -1 : 1;
4262 return function(e, n, o, c) {
4263 if (null == e) return e;
4264 if (!i(e)) throw r("orderBy")("notarray", "Expected array but received: {0}", e);
4265 ei(n) || (n = [n]), 0 === n.length && (n = ["+"]);
4269 f = Array.prototype.map.call(e, function(e, t) {
4277 predicateValues: l.map(function(n) {
4278 return a(n.get(e), t)
4282 return f.sort(function(e, t) {
4283 for (var n = 0, r = l.length; n < r; n++) {
4284 var i = d(e.predicateValues[n], t.predicateValues[n]);
4285 if (i) return i * l[n].descending * u
4287 return (d(e.tieBreaker, t.tieBreaker) || s(e.tieBreaker, t.tieBreaker)) * u
4288 }), e = f.map(function(e) {
4295 return T(e) && (e = {
4297 }), e.restrict = e.restrict || "AC", v(e)
4300 function pr(e, t, n, r, i) {
4301 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 = qo, this.$$element = e, this.$$animate = r, mr(this)
4305 e.$$classCache = {}, e.$$classCache[ka] = !(e.$$classCache[Ea] = e.$$element.hasClass(Ea))
4309 function t(e, t, n, r) {
4310 e[t] || (e[t] = {}), a(e[t], n, r)
4313 function n(e, t, n, r) {
4314 e[t] && s(e[t], n, r), vr(e[t]) && (e[t] = void 0)
4317 function r(e, t, n) {
4318 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)
4321 function i(e, t, n) {
4322 t = t ? "-" + fe(t, "-") : "", r(e, Ea + t, !0 === n), r(e, ka + t, !1 === n)
4327 o.prototype.$setValidity = function(e, o, c) {
4328 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, Uo, !0), this.$valid = this.$invalid = void 0, i(this, "", null)) : (r(this, Uo, !1), this.$valid = vr(this.$error), this.$invalid = !this.$valid, i(this, "", this.$valid));
4330 i(this, e, l = this.$pending && this.$pending[e] ? void 0 : !this.$error[e] && (!!this.$$success[e] || null)), this.$$parentForm.$setValidity(e, l, this)
4337 if (e.hasOwnProperty(t)) return !1;
4342 e.$formatters.push(function(t) {
4343 return e.$isEmpty(t) ? t : t.toString()
4347 function yr(e, t, n, r, i, o) {
4348 var a = Lr(t[0].type);
4351 t.on("compositionstart", function() {
4353 }), t.on("compositionend", function() {
4357 var c, l = function(e) {
4358 if (c && (o.defer.cancel(c), c = null), !s) {
4361 "password" === a || n.ngTrim && "false" === n.ngTrim || (i = ni(i)), (r.$viewValue !== i || "" === i && r.$$hasNativeValidators) && r.$setViewValue(i, l)
4364 if (i.hasEvent("input")) t.on("input", l);
4366 var u = function(e, t, n) {
4367 c || (c = o.defer(function() {
4368 c = null, t && t.value === n || l(e)
4371 t.on("keydown", function(e) {
4373 91 === t || 15 < t && t < 19 || 37 <= t && t <= 40 || u(e, this, this.value)
4374 }), i.hasEvent("paste") && t.on("paste cut", u)
4376 t.on("change", l), na[a] && r.$$hasNativeValidators && a === n.type && t.on(ta, function(e) {
4381 c = o.defer(function() {
4382 c = null, t.badInput === n && t.typeMismatch === r || l(e)
4385 }), r.$render = function() {
4386 var e = r.$isEmpty(r.$viewValue) ? "" : r.$viewValue;
4387 t.val() !== e && t.val(e)
4392 return function(n, r) {
4396 if ('"' === n.charAt(0) && '"' === n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)), Wo.test(n)) return new Date(n);
4397 if (e.lastIndex = 0, i = e.exec(n)) return i.shift(), a = r ? {
4398 yyyy: r.getFullYear(),
4399 MM: r.getMonth() + 1,
4404 sss: r.getMilliseconds() / 1e3
4413 }, o(i, function(e, n) {
4414 n < t.length && (a[t[n]] = +e)
4415 }), new Date(a.yyyy, a.MM - 1, a.dd, a.HH, a.mm, a.ss || 0, 1e3 * a.sss || 0)
4421 function $r(e, t, n, r) {
4422 return function(i, o, a, s, c, l, u) {
4424 return e && !(e.getTime && e.getTime() !== e.getTime())
4428 return _(e) && !C(e) ? n(e) || void 0 : e
4430 wr(i, o, a, s), yr(i, o, a, s, c, l);
4431 var h, p = s && s.$options.getOption("timezone");
4432 if (s.$$parserName = e, s.$parsers.push(function(e) {
4433 if (s.$isEmpty(e)) return null;
4436 return p && (r = ee(r, p)), r
4438 }), s.$formatters.push(function(e) {
4439 if (e && !C(e)) throw Ta("datefmt", "Expected `{0}` to be a date", e);
4440 return d(e) ? ((h = e) && p && (h = ee(h, p, !0)), u("date")(e, r, p)) : (h = null, "")
4441 }), _(a.min) || a.ngMin) {
4443 s.$validators.min = function(e) {
4444 return !d(e) || y(m) || n(e) >= m
4445 }, a.$observe("min", function(e) {
4446 m = f(e), s.$validate()
4449 if (_(a.max) || a.ngMax) {
4451 s.$validators.max = function(e) {
4452 return !d(e) || y(g) || n(e) <= g
4453 }, a.$observe("max", function(e) {
4454 g = f(e), s.$validate()
4460 function wr(e, t, n, r) {
4462 (r.$$hasNativeValidators = $(i.validity)) && r.$parsers.push(function(e) {
4463 var n = t.prop(jr) || {};
4464 return n.badInput || n.typeMismatch ? void 0 : e
4469 e.$$parserName = "number", e.$parsers.push(function(t) {
4470 return e.$isEmpty(t) ? null : Ko.test(t) ? parseFloat(t) : void 0
4471 }), e.$formatters.push(function(t) {
4472 if (!e.$isEmpty(t)) {
4473 if (!k(t)) throw Ta("numfmt", "Expected `{0}` to be a number", t);
4481 return _(e) && !k(e) && (e = parseFloat(e)), Jr(e) ? void 0 : e
4485 return (0 | e) === e
4489 var t = e.toString(),
4492 if (-1 < e && e < 1) {
4493 var r = /e-(\d+)$/.exec(t);
4494 if (r) return Number(r[1])
4498 return t.length - n - 1
4501 function Tr(e, t, n) {
4507 var s = i ? xr(r) : 0,
4510 u = Math.max(s, c, l),
4511 d = Math.pow(10, u);
4512 r *= d, t *= d, n *= d, i && (r = Math.round(r)), o && (t = Math.round(t)), a && (n = Math.round(n))
4514 return (r - t) % n == 0
4517 function Mr(e, t, n, r, i) {
4520 if (!(o = e(r)).constant) throw Ta("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
4528 if (!e || !e.length) return [];
4529 if (!t || !t.length) return e;
4531 e: for (var r = 0; r < e.length; r++) {
4532 for (var i = e[r], o = 0; o < t.length; o++)
4533 if (i === t[o]) continue e;
4540 return e && e.split(" ")
4545 return ei(e) ? t = e.map(i).join(" ") : $(e) && (t = Object.keys(e).filter(function(t) {
4552 if (ei(e)) t = e.map(a);
4555 t = Object.keys(e).filter(function(t) {
4557 return !n && y(r) && (n = !0), r
4558 }), n && t.push(void 0)
4564 return ["$parse", function(c) {
4567 link: function(l, u, d) {
4569 e = m(r(e), 1), d.$addClass(e)
4573 e = m(r(e), -1), d.$removeClass(e)
4583 d.$addClass(l), d.$removeClass(c)
4588 return o(e, function(e) {
4589 (t > 0 || w[e]) && (w[e] = (w[e] || 0) + t, w[e] === +(t > 0) && n.push(e))
4594 E === t && p(v, e), v = e
4596 var v, b = d[e].trim(),
4597 y = ":" === b.charAt(0) && ":" === b.charAt(1),
4598 _ = c(b, y ? a : i),
4599 $ = y ? function(e) {
4603 w = u.data("$classCounts"),
4605 w || (w = be(), u.data("$classCounts", w)), "ngClass" !== e && (s || (s = c("$index", function(e) {
4607 })), l.$watch(s, function(e) {
4608 e === t ? f(v) : h(v), E = e
4609 })), l.$watch(_, $, y)
4615 function Sr(e, t, n, r, i, o, a, s, c) {
4616 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 = qo, this.$options = Ma, this.$$updateEvents = "", this.$$updateEventHandler = this.$$updateEventHandler.bind(this), 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", {
4618 }), this.$$attr = n, this.$$element = r, this.$$animate = o, this.$$timeout = a, this.$$parse = i, this.$$q = s, this.$$exceptionHandler = t, mr(this), Or(this)
4622 e.$$scope.$watch(function(t) {
4623 var n = e.$$ngModelGet(t);
4624 return n === e.$modelValue || e.$modelValue !== e.$modelValue && n !== n || e.$$setModelValue(n), n
4633 o(t, function(t, n) {
4634 _(e[n]) || (e[n] = t)
4639 e.prop("selected", t), e.attr("selected", t)
4644 Pr = /^\/(.+)\/([a-z]*)$/,
4646 Hr = Object.prototype.hasOwnProperty,
4648 return E(e) ? e.toLowerCase() : e
4651 return E(e) ? e.toUpperCase() : e
4653 "i" !== "I".toLowerCase() && (Lr = function(e) {
4654 return E(e) ? e.replace(/[A-Z]/g, function(e) {
4655 return String.fromCharCode(32 | e.charCodeAt(0))
4657 }, Fr = function(e) {
4658 return E(e) ? e.replace(/[a-z]/g, function(e) {
4659 return String.fromCharCode(-33 & e.charCodeAt(0))
4662 var qr, Ur, Vr, zr, Br = [].slice,
4665 Gr = Object.prototype.toString,
4666 Kr = Object.getPrototypeOf,
4668 Xr = e.angular || (e.angular = {}),
4670 qr = e.document.documentMode;
4671 var Jr = Number.isNaN || function(e) {
4674 m.$inject = [], g.$inject = [];
4675 var ei = Array.isArray,
4676 ti = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/,
4678 return E(e) ? e.trim() : e
4681 return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
4685 var t = e.document.querySelector("[ng-csp]") || e.document.querySelector("[data-ng-csp]");
4687 var n = t.getAttribute("ng-csp") || t.getAttribute("data-ng-csp");
4689 noUnsafeEval: !n || -1 !== n.indexOf("no-unsafe-eval"),
4690 noInlineStyle: !n || -1 !== n.indexOf("no-inline-style")
4693 noUnsafeEval: function() {
4695 return new Function(""), !1
4706 if (_(oi.name_)) return oi.name_;
4707 var t, n, r, i, o = si.length;
4708 for (n = 0; n < o; ++n)
4709 if (r = si[n], t = e.document.querySelector("[" + r.replace(":", "\\:") + "jq]")) {
4710 i = t.getAttribute(r + "jq");
4716 si = ["ng-", "data-ng-", "ng:", "x-ng-"],
4718 var n = t.currentScript;
4720 if (!(n instanceof e.HTMLScriptElement || n instanceof e.SVGScriptElement)) return !1;
4721 var r = n.attributes;
4722 return [r.getNamedItem("src"), r.getNamedItem("href"), r.getNamedItem("xlink:href")].every(function(e) {
4724 if (!e.value) return !1;
4725 var n = t.createElement("a");
4726 if (n.href = e.value, t.location.origin === n.origin) return !0;
4727 switch (n.protocol) {
4752 codeName: "beneficial-tincture"
4754 Ne.expando = "ng339";
4755 var vi = Ne.cache = {},
4757 Ne._data = function(e) {
4758 return this.cache[e[this.expando]] || {}
4760 var yi = /-([a-z])/g,
4763 mouseleave: "mouseout",
4764 mouseenter: "mouseover"
4767 Ei = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
4770 xi = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
4772 option: [1, '<select multiple="multiple">', "</select>"],
4773 thead: [1, "<table>", "</table>"],
4774 col: [2, "<table><colgroup>", "</colgroup></table>"],
4775 tr: [2, "<table><tbody>", "</tbody></table>"],
4776 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
4777 _default: [0, "", ""]
4779 Ti.optgroup = Ti.option, Ti.tbody = Ti.tfoot = Ti.colgroup = Ti.caption = Ti.thead, Ti.th = Ti.td;
4780 var Mi = e.Node.prototype.contains || function(e) {
4781 return !!(16 & this.compareDocumentPosition(e))
4783 Ai = Ne.prototype = {
4785 toString: function() {
4787 return o(this, function(t) {
4789 }), "[" + e.join(", ") + "]"
4792 return Ur(e >= 0 ? this[e] : this[this.length + e])
4800 o("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
4804 o("input,select,option,textarea,button,form,details".split(","), function(e) {
4808 ngMinlength: "minlength",
4809 ngMaxlength: "maxlength",
4812 ngPattern: "pattern",
4818 hasData: function(e) {
4819 for (var t in vi[e.ng339]) return !0;
4822 cleanData: function(e) {
4823 for (var t = 0, n = e.length; t < n; t++) je(e[t])
4830 scope: function(e) {
4831 return Ur.data(e, "$scope") || Be(e.parentNode || e, ["$isolateScope", "$scope"])
4833 isolateScope: function(e) {
4834 return Ur.data(e, "$isolateScope") || Ur.data(e, "$isolateScopeNoTemplate")
4837 injector: function(e) {
4838 return Be(e, "$injector")
4840 removeAttr: function(e, t) {
4841 e.removeAttribute(t)
4844 css: function(e, t, n) {
4845 if (t = Ce(t), !_(n)) return e.style[t];
4848 attr: function(e, t, n) {
4849 var r, i = e.nodeType;
4850 if (i !== fi && 2 !== i && i !== hi && e.getAttribute) {
4853 if (!_(n)) return r = e.getAttribute(t), a && null !== r && (r = o), null === r ? void 0 : r;
4854 null === n || !1 === n && a ? e.removeAttribute(t) : e.setAttribute(t, a ? o : n)
4857 prop: function(e, t, n) {
4858 if (!_(n)) return e[t];
4865 return n === di || n === fi ? e.textContent : ""
4869 return e.$dv = "", e
4871 val: function(e, t) {
4873 if (e.multiple && "select" === F(e)) {
4875 return o(e.options, function(e) {
4876 e.selected && n.push(e.value || e.text)
4883 html: function(e, t) {
4884 if (y(t)) return e.innerHTML;
4885 Re(e, !0), e.innerHTML = t
4889 Ne.prototype[t] = function(t, n) {
4890 var r, i, o = this.length;
4891 if (e !== We && y(2 === e.length && e !== Fe && e !== ze ? t : n)) {
4893 for (r = 0; r < o; r++)
4894 if (e === Le) e(this[r], t);
4896 for (i in t) e(this[r], i, t[i]);
4899 for (var a = e.$dv, s = y(a) ? Math.min(o, 1) : o, c = 0; c < s; c++) {
4900 var l = e(this[c], t, n);
4905 for (r = 0; r < o; r++) e(this[r], t, n);
4910 on: function(e, t, n, r) {
4911 if (_(r)) throw wi("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
4916 a || (a = i.handle = Qe(e, o));
4917 for (var s = t.indexOf(" ") >= 0 ? t.split(" ") : [t], c = s.length, l = function(t, r, i) {
4919 s || ((s = o[t] = []).specialHandlerWrapper = r, "$destroy" === t || i || e.addEventListener(t, a)), s.push(n)
4920 }; c--;) t = s[c], $i[t] ? (l($i[t], et), l(t, void 0, !0)) : l(t)
4924 one: function(e, t, n) {
4925 (e = Ur(e)).on(t, function r() {
4926 e.off(t, n), e.off(t, r)
4929 replaceWith: function(e, t) {
4930 var n, r = e.parentNode;
4931 Re(e), o(new Ne(t), function(t) {
4932 n ? r.insertBefore(t, n.nextSibling) : r.replaceChild(t, e), n = t
4935 children: function(e) {
4937 return o(e.childNodes, function(e) {
4938 e.nodeType === di && t.push(e)
4941 contents: function(e) {
4942 return e.contentDocument || e.childNodes || []
4944 append: function(e, t) {
4946 if (n === di || n === mi)
4947 for (var r = 0, i = (t = new Ne(t)).length; r < i; r++) {
4952 prepend: function(e, t) {
4953 if (e.nodeType === di) {
4954 var n = e.firstChild;
4955 o(new Ne(t), function(t) {
4956 e.insertBefore(t, n)
4960 wrap: function(e, t) {
4961 De(e, Ur(t).eq(0).clone()[0])
4964 detach: function(e) {
4967 after: function(e, t) {
4971 for (var i = 0, o = (t = new Ne(t)).length; i < o; i++) {
4973 r.insertBefore(a, n.nextSibling), n = a
4978 toggleClass: function(e, t, n) {
4979 t && o(t.split(" "), function(t) {
4981 y(r) && (r = !Fe(e, t)), (r ? Ue : qe)(e, t)
4984 parent: function(e) {
4985 var t = e.parentNode;
4986 return t && t.nodeType !== mi ? t : null
4989 return e.nextElementSibling
4991 find: function(e, t) {
4992 return e.getElementsByTagName ? e.getElementsByTagName(t) : []
4995 triggerHandler: function(e, t, n) {
4996 var r, i, a, s = t.type || t,
5001 preventDefault: function() {
5002 this.defaultPrevented = !0
5004 isDefaultPrevented: function() {
5005 return !0 === this.defaultPrevented
5007 stopImmediatePropagation: function() {
5008 this.immediatePropagationStopped = !0
5010 isImmediatePropagationStopped: function() {
5011 return !0 === this.immediatePropagationStopped
5016 }, t.type && (r = d(r, t)), i = $e(u), a = n ? [r].concat(n) : [r], o(i, function(t) {
5017 r.isImmediatePropagationStopped() || t.apply(e, a)
5021 Ne.prototype[t] = function(t, n, r) {
5022 for (var i, o = 0, a = this.length; o < a; o++) y(i) ? _(i = e(this[o], t, n, r)) && (i = Ur(i)) : Ve(i, e(this[o], t, n, r));
5023 return _(i) ? i : this
5025 }), Ne.prototype.bind = Ne.prototype.on, Ne.prototype.unbind = Ne.prototype.off;
5026 var Ni = Object.create(null);
5029 return e === this._lastKey ? this._lastIndex : (this._lastKey = e, this._lastIndex = this._keys.indexOf(e), this._lastIndex)
5031 _transformKey: function(e) {
5032 return Jr(e) ? Ni : e
5035 e = this._transformKey(e);
5036 var t = this._idx(e);
5037 if (-1 !== t) return this._values[t]
5039 set: function(e, t) {
5040 e = this._transformKey(e);
5041 var n = this._idx(e); - 1 === n && (n = this._lastIndex = this._keys.length), this._keys[n] = e, this._values[n] = t
5043 delete: function(e) {
5044 e = this._transformKey(e);
5045 var t = this._idx(e);
5046 return -1 !== t && (this._keys.splice(t, 1), this._values.splice(t, 1), this._lastKey = NaN, this._lastIndex = -1, !0)
5051 this.$get = [function() {
5056 ji = /^[^(]*\(\s*([^)]*)\)/m,
5058 Li = /^\s*(_?)(\S+?)\1\s*$/,
5059 Fi = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
5060 qi = r("$injector");
5061 st.$$annotate = function(e, t, n) {
5063 if ("function" == typeof e) {
5064 if (!(r = e.$inject)) {
5065 if (r = [], e.length) {
5066 if (t) throw E(n) && n || (n = e.name || at(e)), qi("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
5067 o(ot(e)[1].split(Hi), function(e) {
5068 e.replace(Li, function(e, t, n) {
5075 } else ei(e) ? (pe(e[i = e.length - 1], "fn"), r = e.slice(0, i)) : pe(e, "fn", !0);
5078 var Ui = r("$animate"),
5086 this.$get = ["$$AnimateRunner", "$rootScope", function(n, r) {
5087 function i(e, t, n) {
5089 return t && o(t = E(t) ? t.split(" ") : ei(t) ? t : [], function(t) {
5090 t && (r = !0, e[t] = n)
5098 var r = dt(t.attr("class")),
5101 o(n, function(e, t) {
5102 e !== !!r[t] && (e ? i += (i.length ? " " : "") + t : a += (a.length ? " " : "") + t)
5103 }), o(t, function(e) {
5104 i && Ue(e, i), a && qe(e, a)
5110 function s(n, o, s) {
5111 var c = e.get(n) || {},
5114 (l || u) && (e.set(n, c), t.push(n), 1 === t.length && r.$$postDigest(a))
5121 push: function(e, t, r, i) {
5122 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);
5124 return o.complete(), o
5129 Wi = ["$provide", function(e) {
5133 this.$$registeredAnimations = Object.create(null), this.register = function(n, r) {
5134 if (n && "." !== n.charAt(0)) throw Ui("notcsel", "Expecting class selector starting with '.' got '{0}'.", n);
5135 var i = n + "-animation";
5136 t.$$registeredAnimations[n.substr(1)] = i, e.factory(i, r)
5137 }, this.customFilter = function(e) {
5138 return 1 === arguments.length && (r = T(e) ? e : null), r
5139 }, this.classNameFilter = function(e) {
5140 if (1 === arguments.length && (n = e instanceof RegExp ? e : null) && new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]").test(n.toString())) throw n = null, Ui("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', "ng-animate");
5142 }, this.$get = ["$$animateQueue", function(e) {
5143 function t(e, t, n) {
5146 !r || r.parentNode || r.previousElementSibling || (n = null)
5148 n ? n.after(e) : t.prepend(e)
5155 cancel: function(e) {
5158 enter: function(n, r, i, o) {
5159 return r = r && Ur(r), i = i && Ur(i), r = r || i.parent(), t(n, r, i), e.push(n, "enter", ft(o))
5161 move: function(n, r, i, o) {
5162 return r = r && Ur(r), i = i && Ur(i), r = r || i.parent(), t(n, r, i), e.push(n, "move", ft(o))
5164 leave: function(t, n) {
5165 return e.push(t, "leave", ft(n), function() {
5169 addClass: function(t, n, r) {
5170 return r = ft(r), r.addClass = lt(r.addclass, n), e.push(t, "addClass", r)
5172 removeClass: function(t, n, r) {
5173 return r = ft(r), r.removeClass = lt(r.removeClass, n), e.push(t, "removeClass", r)
5175 setClass: function(t, n, r, i) {
5176 return i = ft(i), i.addClass = lt(i.addClass, n), i.removeClass = lt(i.removeClass, r), e.push(t, "setClass", i)
5178 animate: function(t, n, r, i, o) {
5179 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)
5185 this.$get = ["$$rAF", function(e) {
5187 n.push(t), n.length > 1 || e(function() {
5188 for (var e = 0; e < n.length; e++) n[e]();
5195 return t(function() {
5205 this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(e, t, n, r, i) {
5212 this._doneCallbacks = [], this._tick = function(e) {
5216 return a.chain = function(e, t) {
5218 r !== e.length ? e[r](function(e) {
5219 !1 !== e ? (r++, n()) : t(!1)
5224 }, a.all = function(e, t) {
5226 i = i && n, ++r === e.length && t(i)
5234 setHost: function(e) {
5238 2 === this._state ? e() : this._doneCallbacks.push(e)
5241 getPromise: function() {
5242 if (!this.promise) {
5244 this.promise = e(function(e, n) {
5245 t.done(function(t) {
5246 !1 === t ? n() : e()
5252 then: function(e, t) {
5253 return this.getPromise().then(e, t)
5255 catch: function(e) {
5256 return this.getPromise().catch(e)
5258 finally: function(e) {
5259 return this.getPromise().finally(e)
5262 this.host.pause && this.host.pause()
5264 resume: function() {
5265 this.host.resume && this.host.resume()
5268 this.host.end && this.host.end(), this._resolve(!0)
5270 cancel: function() {
5271 this.host.cancel && this.host.cancel(), this._resolve(!1)
5273 complete: function(e) {
5275 0 === t._state && (t._state = 1, t._tick(function() {
5279 _resolve: function(e) {
5280 2 !== this._state && (o(this._doneCallbacks, function(t) {
5282 }), this._doneCallbacks.length = 0, this._state = 2)
5288 this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(e, t, n) {
5289 return function(t, r) {
5291 return e(function() {
5292 o(), s || c.complete(), s = !0
5297 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)
5300 a.$$prepared || (a = V(a)), a.cleanupStyles && (a.from = a.to = null), a.from && (t.css(a.from), a.from = null);
5310 Xi = new function() {};
5311 vt.$inject = ["$provide", "$$sanitizeUriProvider"], bt.prototype.isFirstChange = function() {
5312 return this.previousValue === Xi
5314 var Qi = /^((?:x|data)[:\-_])/i,
5316 eo = r("$controller"),
5317 to = /^(\S+)(\s+as\s+([\w$]+))?$/,
5319 this.$get = ["$document", function(e) {
5320 return function(t) {
5321 return t ? !t.nodeType && t instanceof Ur && (t = t[0]) : t = e[0].body, t.offsetWidth + 1
5325 ro = "application/json",
5327 "Content-Type": ro + ";charset=utf-8"
5329 oo = /^\[|^\{(?!\{)/,
5336 lo = Xr.$interpolateMinErr = r("$interpolate");
5337 lo.throwNoconcat = function(e) {
5338 throw lo("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)
5339 }, lo.interr = function(e, t) {
5340 return lo("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
5342 var uo = function() {
5343 this.$get = function() {
5345 var t = function(e) {
5346 t.data = e, t.called = !0
5350 var t = Xr.callbacks,
5353 createCallback: function(r) {
5354 var i = "_" + (t.$$counter++).toString(36),
5355 o = "angular.callbacks." + i,
5357 return n[o] = t[i] = a, o
5359 wasCalled: function(e) {
5362 getResponse: function(e) {
5365 removeCallback: function(e) {
5367 delete t[r.id], delete n[e]
5372 fo = /^([^?#]*)(\?([^#]*))?(#(.*))?$/,
5378 po = r("$location"),
5379 mo = /^\s*[\\/]{2,}/,
5384 absUrl: tn("$$absUrl"),
5386 if (y(e)) return this.$$url;
5388 return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
5390 protocol: tn("$$protocol"),
5393 path: nn("$$path", function(e) {
5394 return "/" === (e = null !== e ? e.toString() : "").charAt(0) ? e : "/" + e
5396 search: function(e, t) {
5397 switch (arguments.length) {
5399 return this.$$search;
5401 if (E(e) || k(e)) e = e.toString(), this.$$search = re(e);
5403 if (!$(e)) throw po("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
5404 o(e = V(e, {}), function(t, n) {
5405 null == t && delete e[n]
5406 }), this.$$search = e
5410 y(t) || null === t ? delete this.$$search[e] : this.$$search[e] = t
5412 return this.$$compose(), this
5414 hash: nn("$$hash", function(e) {
5415 return null !== e ? e.toString() : ""
5417 replace: function() {
5418 return this.$$replace = !0, this
5421 o([en, Jt, Qt], function(e) {
5422 e.prototype = Object.create(go), e.prototype.state = function(t) {
5423 if (!arguments.length) return this.$$state;
5424 if (e !== Qt || !this.$$html5) throw po("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
5425 return this.$$state = y(t) ? null : t, this.$$urlUpdatedByLocation = !0, this
5428 var vo = r("$parse"),
5429 bo = {}.constructor.prototype.valueOf,
5431 o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
5449 for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
5450 var t = this.text.charAt(this.index);
5451 if ('"' === t || "'" === t) this.readString(t);
5452 else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
5453 else if (this.isIdentifierStart(this.peekMultichar())) this.readIdent();
5454 else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
5458 else if (this.isWhitespace(t)) this.index++;
5460 var n = t + this.peek(),
5461 r = n + this.peek(2),
5466 var s = a ? r : o ? n : t;
5471 }), this.index += s.length
5472 } else this.throwError("Unexpected next character ", this.index, this.index + 1)
5477 is: function(e, t) {
5478 return -1 !== t.indexOf(e)
5482 return this.index + t < this.text.length && this.text.charAt(this.index + t)
5484 isNumber: function(e) {
5485 return "0" <= e && e <= "9" && "string" == typeof e
5487 isWhitespace: function(e) {
5488 return " " === e || "\r" === e || "\t" === e || "\n" === e || "\v" === e || " " === e
5490 isIdentifierStart: function(e) {
5491 return this.options.isIdentifierStart ? this.options.isIdentifierStart(e, this.codePointAt(e)) : this.isValidIdentifierStart(e)
5493 isValidIdentifierStart: function(e) {
5494 return "a" <= e && e <= "z" || "A" <= e && e <= "Z" || "_" === e || "$" === e
5496 isIdentifierContinue: function(e) {
5497 return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(e, this.codePointAt(e)) : this.isValidIdentifierContinue(e)
5499 isValidIdentifierContinue: function(e, t) {
5500 return this.isValidIdentifierStart(e, t) || this.isNumber(e)
5502 codePointAt: function(e) {
5503 return 1 === e.length ? e.charCodeAt(0) : (e.charCodeAt(0) << 10) + e.charCodeAt(1) - 56613888
5505 peekMultichar: function() {
5506 var e = this.text.charAt(this.index),
5509 var n = e.charCodeAt(0),
5510 r = t.charCodeAt(0);
5511 return n >= 55296 && n <= 56319 && r >= 56320 && r <= 57343 ? e + t : e
5513 isExpOperator: function(e) {
5514 return "-" === e || "+" === e || this.isNumber(e)
5516 throwError: function(e, t, n) {
5517 n = n || this.index;
5518 var r = _(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
5519 throw vo("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
5521 readNumber: function() {
5522 for (var e = "", t = this.index; this.index < this.text.length;) {
5523 var n = Lr(this.text.charAt(this.index));
5524 if ("." === n || this.isNumber(n)) e += n;
5526 var r = this.peek();
5527 if ("e" === n && this.isExpOperator(r)) e += n;
5528 else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" === e.charAt(e.length - 1)) e += n;
5530 if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" !== e.charAt(e.length - 1)) break;
5531 this.throwError("Invalid exponent")
5543 readIdent: function() {
5545 for (this.index += this.peekMultichar().length; this.index < this.text.length;) {
5546 var t = this.peekMultichar();
5547 if (!this.isIdentifierContinue(t)) break;
5548 this.index += t.length
5552 text: this.text.slice(e, this.index),
5556 readString: function(e) {
5559 for (var n = "", r = e, i = !1; this.index < this.text.length;) {
5560 var o = this.text.charAt(this.index);
5563 var a = this.text.substring(this.index + 1, this.index + 5);
5564 a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
5565 } else n += _o[o] || o;
5567 } else if ("\\" === o) i = !0;
5569 if (o === e) return this.index++, void this.tokens.push({
5579 this.throwError("Unterminated quote", t)
5582 var wo = function(e, t) {
5583 this.lexer = e, this.options = t
5585 wo.Program = "Program", wo.ExpressionStatement = "ExpressionStatement", wo.AssignmentExpression = "AssignmentExpression", wo.ConditionalExpression = "ConditionalExpression", wo.LogicalExpression = "LogicalExpression", wo.BinaryExpression = "BinaryExpression", wo.UnaryExpression = "UnaryExpression", wo.CallExpression = "CallExpression", wo.MemberExpression = "MemberExpression", wo.Identifier = "Identifier", wo.Literal = "Literal", wo.ArrayExpression = "ArrayExpression", wo.Property = "Property", wo.ObjectExpression = "ObjectExpression", wo.ThisExpression = "ThisExpression", wo.LocalsExpression = "LocalsExpression", wo.NGValueParameter = "NGValueParameter", wo.prototype = {
5587 this.text = e, this.tokens = this.lexer.lex(e);
5588 var t = this.program();
5589 return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
5591 program: function() {
5593 if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
5598 expressionStatement: function() {
5600 type: wo.ExpressionStatement,
5601 expression: this.filterChain()
5604 filterChain: function() {
5605 for (var e = this.expression(); this.expect("|");) e = this.filter(e);
5608 expression: function() {
5609 return this.assignment()
5611 assignment: function() {
5612 var e = this.ternary();
5613 if (this.expect("=")) {
5614 if (!hn(e)) throw vo("lval", "Trying to assign a value to a non l-value");
5616 type: wo.AssignmentExpression,
5618 right: this.assignment(),
5624 ternary: function() {
5625 var e, t, n = this.logicalOR();
5626 return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
5627 type: wo.ConditionalExpression,
5633 logicalOR: function() {
5634 for (var e = this.logicalAND(); this.expect("||");) e = {
5635 type: wo.LogicalExpression,
5638 right: this.logicalAND()
5642 logicalAND: function() {
5643 for (var e = this.equality(); this.expect("&&");) e = {
5644 type: wo.LogicalExpression,
5647 right: this.equality()
5651 equality: function() {
5652 for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
5653 type: wo.BinaryExpression,
5656 right: this.relational()
5660 relational: function() {
5661 for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
5662 type: wo.BinaryExpression,
5665 right: this.additive()
5669 additive: function() {
5670 for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
5671 type: wo.BinaryExpression,
5674 right: this.multiplicative()
5678 multiplicative: function() {
5679 for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
5680 type: wo.BinaryExpression,
5689 return (e = this.expect("+", "-", "!")) ? {
5690 type: wo.UnaryExpression,
5693 argument: this.unary()
5696 primary: function() {
5698 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 = {
5700 value: this.options.literals[this.consume().text]
5701 } : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek());
5702 for (var t; t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
5703 type: wo.CallExpression,
5705 arguments: this.parseArguments()
5706 }, this.consume(")")) : "[" === t.text ? (e = {
5707 type: wo.MemberExpression,
5709 property: this.expression(),
5711 }, this.consume("]")) : "." === t.text ? e = {
5712 type: wo.MemberExpression,
5714 property: this.identifier(),
5716 } : this.throwError("IMPOSSIBLE");
5719 filter: function(e) {
5720 for (var t = [e], n = {
5721 type: wo.CallExpression,
5722 callee: this.identifier(),
5725 }; this.expect(":");) t.push(this.expression());
5728 parseArguments: function() {
5730 if (")" !== this.peekToken().text)
5732 e.push(this.filterChain())
5733 } while (this.expect(","));
5736 identifier: function() {
5737 var e = this.consume();
5738 return e.identifier || this.throwError("is not a valid identifier", e), {
5739 type: wo.Identifier,
5743 constant: function() {
5746 value: this.consume().value
5749 arrayDeclaration: function() {
5751 if ("]" !== this.peekToken().text)
5753 if (this.peek("]")) break;
5754 e.push(this.expression())
5755 } while (this.expect(","));
5756 return this.consume("]"), {
5757 type: wo.ArrayExpression,
5761 object: function() {
5763 if ("}" !== this.peekToken().text)
5765 if (this.peek("}")) break;
5769 }, 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)
5770 } while (this.expect(","));
5771 return this.consume("}"), {
5772 type: wo.ObjectExpression,
5776 throwError: function(e, t) {
5777 throw vo("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))
5779 consume: function(e) {
5780 if (0 === this.tokens.length) throw vo("ueoe", "Unexpected end of expression: {0}", this.text);
5781 var t = this.expect(e);
5782 return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
5784 peekToken: function() {
5785 if (0 === this.tokens.length) throw vo("ueoe", "Unexpected end of expression: {0}", this.text);
5786 return this.tokens[0]
5788 peek: function(e, t, n, r) {
5789 return this.peekAhead(0, e, t, n, r)
5791 peekAhead: function(e, t, n, r, i) {
5792 if (this.tokens.length > e) {
5793 var o = this.tokens[e],
5795 if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
5799 expect: function(e, t, n, r) {
5800 var i = this.peek(e, t, n, r);
5801 return !!i && (this.tokens.shift(), i)
5805 type: wo.ThisExpression
5808 type: wo.LocalsExpression
5815 compile: function(e) {
5831 }, dn(e, t.$filter);
5833 if (this.stage = "assign", n = pn(e)) {
5834 this.state.computing = "assign";
5835 var i = this.nextId();
5836 this.recurse(n, i), this.return_(i), r = "fn.assign=" + this.generateFunction("assign", "s,v,l")
5839 t.stage = "inputs", o(a, function(e, n) {
5845 }, t.state.computing = r;
5847 t.recurse(e, i), t.return_(i), t.state.inputs.push({
5851 }), this.state.computing = "fn", this.stage = "main", this.recurse(e);
5852 var s = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + r + this.watchFns() + "return fn;",
5853 c = new Function("$filter", "getStringValue", "ifDefined", "plus", s)(this.$filter, an, sn, cn);
5854 return this.state = this.stage = void 0, c
5858 watchFns: function() {
5860 t = this.state.inputs,
5862 return o(t, function(t) {
5863 e.push("var " + t.name + "=" + n.generateFunction(t.name, "s")), t.isPure && e.push(t.name, ".isPure=" + JSON.stringify(t.isPure) + ";")
5864 }), t.length && e.push("fn.inputs=[" + t.map(function(e) {
5866 }).join(",") + "];"), e.join("")
5868 generateFunction: function(e, t) {
5869 return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
5871 filterPrefix: function() {
5874 return o(this.state.filters, function(n, r) {
5875 e.push(n + "=$filter(" + t.escape(r) + ")")
5876 }), e.length ? "var " + e.join(",") + ";" : ""
5878 varsPrefix: function(e) {
5879 return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
5882 return this.state[e].body.join("")
5884 recurse: function(e, t, n, r, i, a) {
5885 var s, c, l, u, d, f = this;
5886 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));
5889 o(e.body, function(t, n) {
5890 f.recurse(t.expression, void 0, void 0, function(e) {
5892 }), n !== e.body.length - 1 ? f.current().body.push(c, ";") : f.return_(c)
5896 u = this.escape(e.value), this.assign(t, u), r(t || u);
5898 case wo.UnaryExpression:
5899 this.recurse(e.argument, void 0, void 0, function(e) {
5901 }), u = e.operator + "(" + this.ifDefined(c, 0) + ")", this.assign(t, u), r(u);
5903 case wo.BinaryExpression:
5904 this.recurse(e.left, void 0, void 0, function(e) {
5906 }), this.recurse(e.right, void 0, void 0, function(e) {
5908 }), 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);
5910 case wo.LogicalExpression:
5911 t = t || this.nextId(), f.recurse(e.left, t), f.if_("&&" === e.operator ? t : f.not(t), f.lazyRecurse(e.right, t)), r(t);
5913 case wo.ConditionalExpression:
5914 t = t || this.nextId(), f.recurse(e.test, t), f.if_(t, f.lazyRecurse(e.alternate, t), f.lazyRecurse(e.consequent, t)), r(t);
5917 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() {
5918 f.if_("inputs" === f.stage || "s", function() {
5919 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))
5921 }, t && f.lazyAssign(t, f.nonComputedMember("l", e.name))), r(t);
5923 case wo.MemberExpression:
5924 s = n && (n.context = this.nextId()) || this.nextId(), t = t || this.nextId(), f.recurse(e.object, s, void 0, function() {
5925 f.if_(f.notNull(s), function() {
5926 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))
5928 f.assign(t, "undefined")
5932 case wo.CallExpression:
5933 t = t || this.nextId(), e.filter ? (c = f.filter(e.callee.name), l = [], o(e.arguments, function(e) {
5935 f.recurse(e, t), l.push(t)
5936 }), u = c + "(" + l.join(",") + ")", f.assign(t, u), r(t)) : (c = f.nextId(), s = {}, l = [], f.recurse(e.callee, c, s, function() {
5937 f.if_(f.notNull(c), function() {
5938 o(e.arguments, function(t) {
5939 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5942 }), u = s.name ? f.member(s.context, s.name, s.computed) + "(" + l.join(",") + ")" : c + "(" + l.join(",") + ")", f.assign(t, u)
5944 f.assign(t, "undefined")
5948 case wo.AssignmentExpression:
5949 c = this.nextId(), s = {}, this.recurse(e.left, void 0, s, function() {
5950 f.if_(f.notNull(s.context), function() {
5951 f.recurse(e.right, c), u = f.member(s.context, s.name, s.computed) + e.operator + c, f.assign(t, u), r(t || u)
5955 case wo.ArrayExpression:
5956 l = [], o(e.elements, function(t) {
5957 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5960 }), u = "[" + l.join(",") + "]", this.assign(t, u), r(t || u);
5962 case wo.ObjectExpression:
5963 l = [], d = !1, o(e.properties, function(e) {
5964 e.computed && (d = !0)
5965 }), d ? (t = t || this.nextId(), this.assign(t, "{}"), o(e.properties, function(e) {
5966 e.computed ? (s = f.nextId(), f.recurse(e.key, s)) : s = e.key.type === wo.Identifier ? e.key.name : "" + e.key.value, c = f.nextId(), f.recurse(e.value, c), f.assign(f.member(t, s, e.computed), c)
5967 })) : (o(e.properties, function(t) {
5968 f.recurse(t.value, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5969 l.push(f.escape(t.key.type === wo.Identifier ? t.key.name : "" + t.key.value) + ":" + e)
5971 }), u = "{" + l.join(",") + "}", this.assign(t, u)), r(t || u);
5973 case wo.ThisExpression:
5974 this.assign(t, "s"), r(t || "s");
5976 case wo.LocalsExpression:
5977 this.assign(t, "l"), r(t || "l");
5979 case wo.NGValueParameter:
5980 this.assign(t, "v"), r(t || "v")
5983 getHasOwnProperty: function(e, t) {
5984 var n = e + "." + t,
5985 r = this.current().own;
5986 return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
5988 assign: function(e, t) {
5989 if (e) return this.current().body.push(e, "=", t, ";"), e
5991 filter: function(e) {
5992 return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
5994 ifDefined: function(e, t) {
5995 return "ifDefined(" + e + "," + this.escape(t) + ")"
5997 plus: function(e, t) {
5998 return "plus(" + e + "," + t + ")"
6000 return_: function(e) {
6001 this.current().body.push("return ", e, ";")
6003 if_: function(e, t, n) {
6006 var r = this.current().body;
6007 r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
6011 return "!(" + e + ")"
6013 isNull: function(e) {
6016 notNull: function(e) {
6019 nonComputedMember: function(e, t) {
6020 var n = /[^$_a-zA-Z0-9]/g;
6021 return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t) ? e + "." + t : e + '["' + t.replace(n, this.stringEscapeFn) + '"]'
6023 computedMember: function(e, t) {
6024 return e + "[" + t + "]"
6026 member: function(e, t, n) {
6027 return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
6029 getStringValue: function(e) {
6030 this.assign(e, "getStringValue(" + e + ")")
6032 lazyRecurse: function(e, t, n, r, i, o) {
6035 a.recurse(e, t, n, r, i, o)
6038 lazyAssign: function(e, t) {
6044 stringEscapeRegex: /[^ a-zA-Z0-9]/g,
6045 stringEscapeFn: function(e) {
6046 return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
6048 escape: function(e) {
6049 if (E(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
6050 if (k(e)) return e.toString();
6051 if (!0 === e) return "true";
6052 if (!1 === e) return "false";
6053 if (null === e) return "null";
6054 if (void 0 === e) return "undefined";
6055 throw vo("esc", "IMPOSSIBLE")
6057 nextId: function(e, t) {
6058 var n = "v" + this.state.nextId++;
6059 return e || this.current().vars.push(n + (t ? "=" + t : "")), n
6061 current: function() {
6062 return this.state[this.state.computing]
6065 compile: function(e) {
6069 (n = pn(e)) && (r = this.recurse(n));
6070 var i, a = fn(e.body);
6071 a && (i = [], o(a, function(e, n) {
6072 var r = t.recurse(e);
6073 r.isPure = e.isPure, e.input = r, i.push(r), e.watchId = n
6076 o(e.body, function(e) {
6077 s.push(t.recurse(e.expression))
6079 var c = 0 === e.body.length ? m : 1 === e.body.length ? s[0] : function(e, t) {
6081 return o(s, function(r) {
6085 return r && (c.assign = function(e, t, n) {
6087 }), i && (c.inputs = i), c
6089 recurse: function(e, t, n) {
6090 var r, i, a, s = this;
6091 if (e.input) return this.inputs(e.input, e.watchId);
6094 return this.value(e.value, t);
6095 case wo.UnaryExpression:
6096 return i = this.recurse(e.argument), this["unary" + e.operator](i, t);
6097 case wo.BinaryExpression:
6098 case wo.LogicalExpression:
6099 return r = this.recurse(e.left), i = this.recurse(e.right), this["binary" + e.operator](r, i, t);
6100 case wo.ConditionalExpression:
6101 return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), t);
6103 return s.identifier(e.name, t, n);
6104 case wo.MemberExpression:
6105 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);
6106 case wo.CallExpression:
6107 return a = [], o(e.arguments, function(e) {
6108 a.push(s.recurse(e))
6109 }), e.filter && (i = this.$filter(e.callee.name)), e.filter || (i = this.recurse(e.callee, !0)), e.filter ? function(e, n, r, o) {
6110 for (var s = [], c = 0; c < a.length; ++c) s.push(a[c](e, n, r, o));
6111 var l = i.apply(void 0, s, o);
6117 } : function(e, n, r, o) {
6118 var s, c = i(e, n, r, o);
6119 if (null != c.value) {
6120 for (var l = [], u = 0; u < a.length; ++u) l.push(a[u](e, n, r, o));
6121 s = c.value.apply(c.context, l)
6127 case wo.AssignmentExpression:
6128 return r = this.recurse(e.left, !0, 1), i = this.recurse(e.right),
6129 function(e, n, o, a) {
6130 var s = r(e, n, o, a),
6132 return s.context[s.name] = c, t ? {
6136 case wo.ArrayExpression:
6137 return a = [], o(e.elements, function(e) {
6138 a.push(s.recurse(e))
6140 function(e, n, r, i) {
6141 for (var o = [], s = 0; s < a.length; ++s) o.push(a[s](e, n, r, i));
6146 case wo.ObjectExpression:
6147 return a = [], o(e.properties, function(e) {
6148 e.computed ? a.push({
6149 key: s.recurse(e.key),
6151 value: s.recurse(e.value)
6153 key: e.key.type === wo.Identifier ? e.key.name : "" + e.key.value,
6155 value: s.recurse(e.value)
6158 function(e, n, r, i) {
6159 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);
6164 case wo.ThisExpression:
6165 return function(e) {
6170 case wo.LocalsExpression:
6171 return function(e, n) {
6176 case wo.NGValueParameter:
6177 return function(e, n, r) {
6184 "unary+": function(e, t) {
6185 return function(n, r, i, o) {
6186 var a = e(n, r, i, o);
6187 return a = _(a) ? +a : 0, t ? {
6192 "unary-": function(e, t) {
6193 return function(n, r, i, o) {
6194 var a = e(n, r, i, o);
6195 return a = _(a) ? -a : -0, t ? {
6200 "unary!": function(e, t) {
6201 return function(n, r, i, o) {
6202 var a = !e(n, r, i, o);
6208 "binary+": function(e, t, n) {
6209 return function(r, i, o, a) {
6210 var s = cn(e(r, i, o, a), t(r, i, o, a));
6216 "binary-": function(e, t, n) {
6217 return function(r, i, o, a) {
6218 var s = e(r, i, o, a),
6220 l = (_(s) ? s : 0) - (_(c) ? c : 0);
6226 "binary*": function(e, t, n) {
6227 return function(r, i, o, a) {
6228 var s = e(r, i, o, a) * t(r, i, o, a);
6234 "binary/": function(e, t, n) {
6235 return function(r, i, o, a) {
6236 var s = e(r, i, o, a) / t(r, i, o, a);
6242 "binary%": function(e, t, n) {
6243 return function(r, i, o, a) {
6244 var s = e(r, i, o, a) % t(r, i, o, a);
6250 "binary===": function(e, t, n) {
6251 return function(r, i, o, a) {
6252 var s = e(r, i, o, a) === t(r, i, o, a);
6258 "binary!==": function(e, t, n) {
6259 return function(r, i, o, a) {
6260 var s = e(r, i, o, a) !== t(r, i, o, a);
6266 "binary==": function(e, t, n) {
6267 return function(r, i, o, a) {
6268 var s = e(r, i, o, a) == t(r, i, o, a);
6274 "binary!=": function(e, t, n) {
6275 return function(r, i, o, a) {
6276 var s = e(r, i, o, a) != t(r, i, o, a);
6282 "binary<": function(e, t, n) {
6283 return function(r, i, o, a) {
6284 var s = e(r, i, o, a) < t(r, i, o, a);
6290 "binary>": function(e, t, n) {
6291 return function(r, i, o, a) {
6292 var s = e(r, i, o, a) > t(r, i, o, a);
6298 "binary<=": function(e, t, n) {
6299 return function(r, i, o, a) {
6300 var s = e(r, i, o, a) <= t(r, i, o, a);
6306 "binary>=": function(e, t, n) {
6307 return function(r, i, o, a) {
6308 var s = e(r, i, o, a) >= t(r, i, o, a);
6314 "binary&&": function(e, t, n) {
6315 return function(r, i, o, a) {
6316 var s = e(r, i, o, a) && t(r, i, o, a);
6322 "binary||": function(e, t, n) {
6323 return function(r, i, o, a) {
6324 var s = e(r, i, o, a) || t(r, i, o, a);
6330 "ternary?:": function(e, t, n, r) {
6331 return function(i, o, a, s) {
6332 var c = e(i, o, a, s) ? t(i, o, a, s) : n(i, o, a, s);
6338 value: function(e, t) {
6347 identifier: function(e, t, n) {
6348 return function(r, i, o, a) {
6349 var s = i && e in i ? i : r;
6350 n && 1 !== n && s && null == s[e] && (s[e] = {});
6351 var c = s ? s[e] : void 0;
6359 computedMember: function(e, t, n, r) {
6360 return function(i, o, a, s) {
6361 var c, l, u = e(i, o, a, s);
6362 return null != u && (c = an(c = t(i, o, a, s)), r && 1 !== r && u && !u[c] && (u[c] = {}), l = u[c]), n ? {
6369 nonComputedMember: function(e, t, n, r) {
6370 return function(i, o, a, s) {
6371 var c = e(i, o, a, s);
6372 r && 1 !== r && c && null == c[t] && (c[t] = {});
6373 var l = null != c ? c[t] : void 0;
6381 inputs: function(e, t) {
6382 return function(n, r, i, o) {
6383 return o ? o[t] : e(n, r, i)
6388 parse: function(e) {
6389 var t = this.getAst(e),
6390 n = this.astCompiler.compile(t.ast);
6391 return n.literal = mn(t.ast), n.constant = gn(t.ast), n.oneTime = t.oneTime, n
6393 getAst: function(e) {
6395 return ":" === (e = e.trim()).charAt(0) && ":" === e.charAt(1) && (t = !0, e = e.substring(2)), {
6396 ast: this.ast.ast(e),
6406 RESOURCE_URL: "resourceUrl",
6411 Ao = e.document.createElement("a"),
6412 So = Fn(e.location.href);
6413 Vn.$inject = ["$document"], Bn.$inject = ["$provide"];
6417 Zn.$inject = ["$locale"], Xn.$inject = ["$locale"];
6419 yyyy: nr("FullYear", 4, 0, !1, !0),
6420 yy: nr("FullYear", 2, 0, !0, !0),
6421 y: nr("FullYear", 1, 0, !1, !0),
6423 MMM: rr("Month", !0),
6424 MM: nr("Month", 2, 1),
6425 M: nr("Month", 1, 1),
6426 LLLL: rr("Month", !1, !0),
6431 hh: nr("Hours", 2, -12),
6432 h: nr("Hours", 1, -12),
6433 mm: nr("Minutes", 2),
6434 m: nr("Minutes", 1),
6435 ss: nr("Seconds", 2),
6436 s: nr("Seconds", 1),
6437 sss: nr("Milliseconds", 3),
6441 return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
6443 Z: function(e, t, n) {
6445 i = r >= 0 ? "+" : "";
6446 return i += tr(Math[r > 0 ? "floor" : "ceil"](r / 60), 2) + tr(Math.abs(r % 60), 2)
6453 GGGG: function(e, t) {
6454 return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
6457 Ro = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,
6459 cr.$inject = ["$locale"];
6462 fr.$inject = ["$parse"];
6465 compile: function(e, t) {
6466 if (!t.href && !t.xlinkHref) return function(e, t) {
6467 if ("a" === t[0].nodeName.toLowerCase()) {
6468 var n = "[object SVGAnimatedString]" === Gr.call(t.prop("href")) ? "xlink:href" : "href";
6469 t.on("click", function(e) {
6470 t.attr(n) || e.preventDefault()
6477 o(Si, function(e, t) {
6478 function n(e, n, i) {
6479 e.$watch(i[r], function(e) {
6483 if ("multiple" !== e) {
6484 var r = yt("ng-" + t),
6486 "checked" === e && (i = function(e, t, i) {
6487 i.ngModel !== i[r] && n(e, 0, i)
6488 }), Fo[r] = function() {
6496 }), o(Di, function(e, t) {
6497 Fo[t] = function() {
6500 link: function(e, n, r) {
6501 if ("ngPattern" === t && "/" === r.ngPattern.charAt(0)) {
6502 var i = r.ngPattern.match(Pr);
6503 if (i) return void r.$set("ngPattern", new RegExp(i[1], i[2]))
6505 e.$watch(r[t], function(e) {
6511 }), o(["src", "srcset", "href"], function(e) {
6512 var t = yt("ng-" + e);
6513 Fo[t] = function() {
6516 link: function(n, r, i) {
6519 "href" === e && "[object SVGAnimatedString]" === Gr.call(r.prop("href")) && (a = "xlinkHref", i.$attr[a] = "xlink:href", o = null), i.$observe(t, function(t) {
6520 t ? (i.$set(a, t), qr && o && r.prop(o, i[a])) : "href" === e && i.$set(a, null)
6528 $$renameControl: function(e, t) {
6538 pr.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"], pr.prototype = {
6539 $rollbackViewValue: function() {
6540 o(this.$$controls, function(e) {
6541 e.$rollbackViewValue()
6544 $commitViewValue: function() {
6545 o(this.$$controls, function(e) {
6546 e.$commitViewValue()
6549 $addControl: function(e) {
6550 me(e.$name, "input"), this.$$controls.push(e), e.$name && (this[e.$name] = e), e.$$parentForm = this
6552 $$renameControl: function(e, t) {
6554 this[n] === e && delete this[n], this[t] = e, e.$name = t
6556 $removeControl: function(e) {
6557 e.$name && this[e.$name] === e && delete this[e.$name], o(this.$pending, function(t, n) {
6558 this.$setValidity(n, null, e)
6559 }, this), o(this.$error, function(t, n) {
6560 this.$setValidity(n, null, e)
6561 }, this), o(this.$$success, function(t, n) {
6562 this.$setValidity(n, null, e)
6563 }, this), U(this.$$controls, e), e.$$parentForm = qo
6565 $setDirty: function() {
6566 this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, xa), this.$dirty = !0, this.$pristine = !1, this.$$parentForm.$setDirty()
6568 $setPristine: function() {
6569 this.$$animate.setClass(this.$$element, Ca, xa + " ng-submitted"), this.$dirty = !1, this.$pristine = !0, this.$submitted = !1, o(this.$$controls, function(e) {
6573 $setUntouched: function() {
6574 o(this.$$controls, function(e) {
6578 $setSubmitted: function() {
6579 this.$$animate.addClass(this.$$element, "ng-submitted"), this.$submitted = !0, this.$$parentForm.$setSubmitted()
6583 set: function(e, t, n) {
6585 r ? -1 === r.indexOf(n) && r.push(n) : e[t] = [n]
6587 unset: function(e, t, n) {
6589 r && (U(r, n), 0 === r.length && delete e[t])
6592 var Vo = function(e) {
6593 return ["$timeout", "$parse", function(t, n) {
6595 return "" === e ? n('this[""]').assign : n(e).assign || m
6599 restrict: e ? "EAC" : "E",
6600 require: ["form", "^^?form"],
6602 compile: function(n, i) {
6603 n.addClass(Ca).addClass(Ea);
6604 var o = i.name ? "name" : !(!e || !i.ngForm) && "ngForm";
6606 pre: function(e, n, i, a) {
6608 if (!("action" in i)) {
6609 var c = function(t) {
6610 e.$apply(function() {
6611 s.$commitViewValue(), s.$setSubmitted()
6612 }), t.preventDefault()
6614 n[0].addEventListener("submit", c), n.on("$destroy", function() {
6616 n[0].removeEventListener("submit", c)
6619 }(a[1] || s.$$parentForm).$addControl(s);
6620 var l = o ? r(s.$name) : m;
6621 o && (l(e, s), i.$observe(o, function(t) {
6622 s.$name !== t && (l(e, void 0), s.$$parentForm.$$renameControl(s, t), (l = r(s.$name))(e, s))
6623 })), n.on("$destroy", function() {
6624 s.$$parentForm.$removeControl(s), l(e, void 0), d(s, qo)
6634 Wo = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,
6635 Yo = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
6636 Go = /^(?=.{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])?)*$/,
6637 Ko = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
6638 Zo = /^(\d{4,})-(\d{2})-(\d{2})$/,
6639 Xo = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6640 Qo = /^(\d{4,})-W(\d\d)$/,
6641 Jo = /^(\d{4,})-(\d\d)$/,
6642 ea = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6643 ta = "keydown wheel mousedown",
6645 o("date,datetime-local,month,time,week".split(","), function(e) {
6649 text: function(e, t, n, r, i, o) {
6650 yr(e, t, n, r, i, o), br(r)
6652 date: $r("date", Zo, _r(Zo, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
6653 "datetime-local": $r("datetimelocal", Xo, _r(Xo, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
6654 time: $r("time", ea, _r(ea, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
6655 week: $r("week", Qo, function(e, t) {
6669 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)
6674 month: $r("month", Jo, _r(Jo, ["yyyy", "MM"]), "yyyy-MM"),
6675 number: function(e, t, n, r, i, o) {
6676 wr(e, t, n, r), Er(r), yr(e, t, n, r, i, o);
6678 if ((_(n.min) || n.ngMin) && (r.$validators.min = function(e) {
6679 return r.$isEmpty(e) || y(a) || e >= a
6680 }, n.$observe("min", function(e) {
6681 a = kr(e), r.$validate()
6682 })), (_(n.max) || n.ngMax) && (r.$validators.max = function(e) {
6683 return r.$isEmpty(e) || y(s) || e <= s
6684 }, n.$observe("max", function(e) {
6685 s = kr(e), r.$validate()
6686 })), _(n.step) || n.ngStep) {
6688 r.$validators.step = function(e, t) {
6689 return r.$isEmpty(t) || y(c) || Tr(t, a || 0, c)
6690 }, n.$observe("step", function(e) {
6691 c = kr(e), r.$validate()
6695 url: function(e, t, n, r, i, o) {
6696 yr(e, t, n, r, i, o), br(r), r.$$parserName = "url", r.$validators.url = function(e, t) {
6698 return r.$isEmpty(n) || Yo.test(n)
6701 email: function(e, t, n, r, i, o) {
6702 yr(e, t, n, r, i, o), br(r), r.$$parserName = "email", r.$validators.email = function(e, t) {
6704 return r.$isEmpty(n) || Go.test(n)
6707 radio: function(e, t, n, r) {
6708 var i = !n.ngTrim || "false" !== ni(n.ngTrim);
6709 y(n.name) && t.attr("name", c());
6710 t.on("click", function(e) {
6712 t[0].checked && (o = n.value, i && (o = ni(o)), r.$setViewValue(o, e && e.type))
6713 }), r.$render = function() {
6715 i && (e = ni(e)), t[0].checked = e === r.$viewValue
6716 }, n.$observe("value", r.$render)
6718 range: function(e, t, n, r, i, o) {
6720 t.attr(e, n[e]), n.$observe(e, r)
6722 wr(e, t, n, r), Er(r), yr(e, t, n, r, i, o);
6723 var s = r.$$hasNativeValidators && "range" === t[0].type,
6725 l = s ? 100 : void 0,
6732 r.$render = s && _(d.rangeUnderflow) && _(d.rangeOverflow) ? function() {
6733 m(), r.$setViewValue(t.val())
6734 } : m, f && (r.$validators.min = s ? function() {
6736 } : function(e, t) {
6737 return r.$isEmpty(t) || y(c) || t >= c
6738 }, a("min", function(e) {
6739 if (c = kr(e), !Jr(r.$modelValue))
6742 c > n && (n = c, t.val(n)), r.$setViewValue(n)
6743 } else r.$validate()
6744 })), h && (r.$validators.max = s ? function() {
6746 } : function(e, t) {
6747 return r.$isEmpty(t) || y(l) || t <= l
6748 }, a("max", function(e) {
6749 if (l = kr(e), !Jr(r.$modelValue))
6752 l < n && (t.val(l), n = l < c ? c : l), r.$setViewValue(n)
6753 } else r.$validate()
6754 })), p && (r.$validators.step = s ? function() {
6755 return !d.stepMismatch
6756 } : function(e, t) {
6757 return r.$isEmpty(t) || y(u) || Tr(t, c || 0, u)
6758 }, a("step", function(e) {
6759 u = kr(e), Jr(r.$modelValue) || (s && r.$viewValue !== t.val() ? r.$setViewValue(t.val()) : r.$validate())
6762 checkbox: function(e, t, n, r, i, o, a, s) {
6763 var c = Mr(s, e, "ngTrueValue", n.ngTrueValue, !0),
6764 l = Mr(s, e, "ngFalseValue", n.ngFalseValue, !1);
6765 t.on("click", function(e) {
6766 r.$setViewValue(t[0].checked, e && e.type)
6767 }), r.$render = function() {
6768 t[0].checked = r.$viewValue
6769 }, r.$isEmpty = function(e) {
6771 }, r.$formatters.push(function(e) {
6773 }), r.$parsers.push(function(e) {
6783 ia = ["$browser", "$sniffer", "$filter", "$parse", function(e, t, n, r) {
6786 require: ["?ngModel"],
6788 pre: function(i, o, a, s) {
6789 s[0] && (ra[Lr(a.type)] || ra.text)(i, o, a, s[0], t, e, n, r)
6794 oa = /^(true|false|\d+)$/,
6796 function e(e, t, n) {
6797 var r = _(n) ? n : 9 === qr ? "" : null;
6798 e.prop("value", r), t.$set("value", n)
6803 compile: function(t, n) {
6804 return oa.test(n.ngValue) ? function(t, n, r) {
6805 e(n, r, t.$eval(r.ngValue))
6806 } : function(t, n, r) {
6807 t.$watch(r.ngValue, function(t) {
6814 sa = ["$compile", function(e) {
6817 compile: function(t) {
6818 return e.$$addBindingClass(t),
6820 e.$$addBindingInfo(n, r.ngBind), n = n[0], t.$watch(r.ngBind, function(e) {
6821 n.textContent = ye(e)
6827 ca = ["$interpolate", "$compile", function(e, t) {
6829 compile: function(n) {
6830 return t.$$addBindingClass(n),
6832 var o = e(r.attr(i.$attr.ngBindTemplate));
6833 t.$$addBindingInfo(r, o.expressions), r = r[0], i.$observe("ngBindTemplate", function(e) {
6834 r.textContent = y(e) ? "" : e
6840 la = ["$sce", "$parse", "$compile", function(e, t, n) {
6843 compile: function(r, i) {
6844 var o = t(i.ngBindHtml),
6845 a = t(i.ngBindHtml, function(t) {
6848 return n.$$addBindingClass(r),
6850 n.$$addBindingInfo(r, i.ngBindHtml), t.$watch(a, function() {
6852 r.html(e.getTrustedHtml(n) || "")
6861 link: function(e, t, n, r) {
6862 r.$viewChangeListeners.push(function() {
6871 compile: function(e, t) {
6872 t.$set("ngCloak", void 0), e.removeClass("ng-cloak")
6888 o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(e) {
6889 var t = yt("ng-" + e);
6890 ga[t] = ["$parse", "$rootScope", function(n, r) {
6893 compile: function(i, o) {
6895 return function(t, n) {
6896 n.on(e, function(n) {
6897 var i = function() {
6902 va[e] && r.$$phase ? t.$evalAsync(i) : t.$apply(i)
6909 var ba = ["$animate", "$compile", function(e, t) {
6912 transclude: "element",
6917 link: function(n, r, i, o, a) {
6919 n.$watch(i.ngIf, function(n) {
6920 n ? c || a(function(n, o) {
6921 c = o, n[n.length++] = t.$$createComment("end ngIf", i.ngIf), s = {
6923 }, e.enter(n, r.parent(), r)
6924 }) : (l && (l.remove(), l = null), c && (c.$destroy(), c = null), s && (l = ve(s.clone), e.leave(l).done(function(e) {
6925 !1 !== e && (l = null)
6931 ya = ["$templateRequest", "$anchorScroll", "$animate", function(e, t, n) {
6936 transclude: "element",
6937 controller: Xr.noop,
6938 compile: function(r, i) {
6939 var o = i.ngInclude || i.src,
6942 return function(r, i, c, l, u) {
6945 f && (f.remove(), f = null), d && (d.$destroy(), d = null), h && (n.leave(h).done(function(e) {
6946 !1 !== e && (f = null)
6947 }), f = h, h = null)
6949 r.$watch(o, function(o) {
6950 var c = function(e) {
6951 !1 === e || !_(s) || s && !r.$eval(s) || t()
6954 o ? (e(o, !0).then(function(e) {
6955 if (!r.$$destroyed && f === p) {
6958 var s = u(t, function(e) {
6959 m(), n.enter(e, null, i).done(c)
6961 h = s, (d = t).$emit("$includeContentLoaded", o), r.$eval(a)
6964 r.$$destroyed || f === p && (m(), r.$emit("$includeContentError", o))
6965 }), r.$emit("$includeContentRequested", o)) : (m(), l.template = null)
6971 _a = ["$compile", function(t) {
6975 require: "ngInclude",
6976 link: function(n, r, i, o) {
6977 if (Gr.call(r[0]).match(/SVG/)) return r.empty(), void t(Se(o.template, e.document).childNodes)(n, function(e) {
6980 futureParentElement: r
6982 r.html(o.template), t(r.contents())(n)
6988 compile: function() {
6990 pre: function(e, t, n) {
7001 link: function(e, t, n, r) {
7002 var i = n.ngList || ", ",
7003 a = "false" !== n.ngTrim,
7005 r.$parsers.push(function(e) {
7008 return e && o(e.split(s), function(e) {
7009 e && t.push(a ? ni(e) : e)
7012 }), r.$formatters.push(function(e) {
7013 if (ei(e)) return e.join(i)
7014 }), r.$isEmpty = function(e) {
7015 return !e || !e.length
7025 Sr.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"], Sr.prototype = {
7026 $$initGetterSetters: function() {
7027 if (this.$options.getOption("getterSetter")) {
7028 var e = this.$$parse(this.$$attr.ngModel + "()"),
7029 t = this.$$parse(this.$$attr.ngModel + "($$$p)");
7030 this.$$ngModelGet = function(t) {
7031 var n = this.$$parsedNgModel(t);
7032 return T(n) && (n = e(t)), n
7033 }, this.$$ngModelSet = function(e, n) {
7034 T(this.$$parsedNgModel(e)) ? t(e, {
7036 }) : this.$$parsedNgModelAssign(e, n)
7038 } else if (!this.$$parsedNgModel.assign) throw Ta("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, te(this.$$element))
7041 $isEmpty: function(e) {
7042 return y(e) || "" === e || null === e || e !== e
7044 $$updateEmptyClasses: function(e) {
7045 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"))
7047 $setPristine: function() {
7048 this.$dirty = !1, this.$pristine = !0, this.$$animate.removeClass(this.$$element, xa), this.$$animate.addClass(this.$$element, Ca)
7050 $setDirty: function() {
7051 this.$dirty = !0, this.$pristine = !1, this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, xa), this.$$parentForm.$setDirty()
7053 $setUntouched: function() {
7054 this.$touched = !1, this.$untouched = !0, this.$$animate.setClass(this.$$element, "ng-untouched", "ng-touched")
7056 $setTouched: function() {
7057 this.$touched = !0, this.$untouched = !1, this.$$animate.setClass(this.$$element, "ng-touched", "ng-untouched")
7059 $rollbackViewValue: function() {
7060 this.$$timeout.cancel(this.$$pendingDebounce), this.$viewValue = this.$$lastCommittedViewValue, this.$render()
7062 $validate: function() {
7063 if (!Jr(this.$modelValue)) {
7064 var e = this.$$lastCommittedViewValue,
7065 t = this.$$rawModelValue,
7067 r = this.$modelValue,
7068 i = this.$options.getOption("allowInvalid"),
7070 this.$$runValidators(t, e, function(e) {
7071 i || n === e || (o.$modelValue = e ? t : void 0, o.$modelValue !== r && o.$$writeModelToScope())
7075 $$runValidators: function(e, t, n) {
7077 a === s.$$currentValidationRunId && s.$setValidity(e, t)
7081 a === s.$$currentValidationRunId && n(e)
7083 var a = ++this.$$currentValidationRunId,
7086 var e = s.$$parserName || "parse";
7087 return y(s.$$parserValid) ? (r(e, null), !0) : (s.$$parserValid || (o(s.$validators, function(e, t) {
7089 }), o(s.$asyncValidators, function(e, t) {
7091 })), r(e, s.$$parserValid), s.$$parserValid)
7092 }() ? i(!1): function() {
7094 return o(s.$validators, function(i, o) {
7095 var a = Boolean(i(e, t));
7097 }), !!n || (o(s.$asyncValidators, function(e, t) {
7103 o(s.$asyncValidators, function(i, o) {
7105 if (!R(s)) throw Ta("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", s);
7106 r(o, void 0), n.push(s.then(function() {
7111 }), n.length ? s.$$q.all(n).then(function() {
7116 $commitViewValue: function() {
7117 var e = this.$viewValue;
7118 this.$$timeout.cancel(this.$$pendingDebounce), (this.$$lastCommittedViewValue !== e || "" === e && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(e), this.$$lastCommittedViewValue = e, this.$pristine && this.$setDirty(), this.$$parseAndValidate())
7120 $$parseAndValidate: function() {
7122 n.$modelValue !== i && n.$$writeModelToScope()
7124 var t = this.$$lastCommittedViewValue,
7126 if (this.$$parserValid = !y(t) || void 0, this.$$parserValid)
7127 for (var r = 0; r < this.$parsers.length; r++)
7128 if (t = this.$parsers[r](t), y(t)) {
7129 this.$$parserValid = !1;
7132 Jr(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
7133 var i = this.$modelValue,
7134 o = this.$options.getOption("allowInvalid");
7135 this.$$rawModelValue = t, o && (this.$modelValue = t, e()), this.$$runValidators(t, this.$$lastCommittedViewValue, function(r) {
7136 o || (n.$modelValue = r ? t : void 0, e())
7139 $$writeModelToScope: function() {
7140 this.$$ngModelSet(this.$$scope, this.$modelValue), o(this.$viewChangeListeners, function(e) {
7144 this.$$exceptionHandler(e)
7148 $setViewValue: function(e, t) {
7149 this.$viewValue = e, this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(t)
7151 $$debounceViewValueCommit: function(e) {
7152 var t = this.$options.getOption("debounce");
7153 k(t[e]) ? t = t[e] : k(t.default) && (t = t.default), this.$$timeout.cancel(this.$$pendingDebounce);
7155 t > 0 ? this.$$pendingDebounce = this.$$timeout(function() {
7156 n.$commitViewValue()
7157 }, t) : this.$$scope.$root.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
7158 n.$commitViewValue()
7161 $overrideModelOptions: function(e) {
7162 this.$options = this.$options.createChild(e), this.$$setUpdateOnEvents()
7164 $processModelValue: function() {
7165 var e = this.$$format();
7166 this.$viewValue !== e && (this.$$updateEmptyClasses(e), this.$viewValue = this.$$lastCommittedViewValue = e, this.$render(), this.$$runValidators(this.$modelValue, this.$viewValue, m))
7168 $$format: function() {
7169 for (var e = this.$formatters, t = e.length, n = this.$modelValue; t--;) n = e[t](n);
7172 $$setModelValue: function(e) {
7173 this.$modelValue = this.$$rawModelValue = e, this.$$parserValid = void 0, this.$processModelValue()
7175 $$setUpdateOnEvents: function() {
7176 this.$$updateEvents && this.$$element.off(this.$$updateEvents, this.$$updateEventHandler), this.$$updateEvents = this.$options.getOption("updateOn"), this.$$updateEvents && this.$$element.on(this.$$updateEvents, this.$$updateEventHandler)
7178 $$updateEventHandler: function(e) {
7179 this.$$debounceViewValueCommit(e && e.type)
7183 set: function(e, t) {
7186 unset: function(e, t) {
7190 var Ma, Aa = ["$rootScope", function(e) {
7193 require: ["ngModel", "^?form", "^?ngModelOptions"],
7196 compile: function(t) {
7197 return t.addClass(Ca).addClass("ng-untouched").addClass(Ea), {
7198 pre: function(e, t, n, r) {
7200 o = r[1] || i.$$parentForm,
7202 a && (i.$options = a.$options), i.$$initGetterSetters(), o.$addControl(i), n.$observe("name", function(e) {
7203 i.$name !== e && i.$$parentForm.$$renameControl(i, e)
7204 }), e.$on("$destroy", function() {
7205 i.$$parentForm.$removeControl(i)
7208 post: function(t, n, r, i) {
7213 a.$$setUpdateOnEvents(), n.on("blur", function() {
7214 a.$touched || (e.$$phase ? t.$evalAsync(o) : t.$apply(o))
7221 Sa = /(\s+|^)default(\s+|$)/;
7223 getOption: function(e) {
7224 return this.$$options[e]
7226 createChild: function(e) {
7228 return e = d({}, e), o(e, function(n, r) {
7229 "$inherit" === n ? "*" === r ? t = !0 : (e[r] = this.$$options[r], "updateOn" === r && (e.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === r && (e.updateOnDefault = !1, e[r] = ni(n.replace(Sa, function() {
7230 return e.updateOnDefault = !0, " "
7232 }, this), t && (delete e["*"], Nr(e, this.$$options)), Nr(e, Ma.$$options), new Dr(e)
7236 updateOnDefault: !0,
7242 var Oa = function() {
7244 this.$$attrs = e, this.$$scope = t
7246 return e.$inject = ["$attrs", "$scope"], e.prototype = {
7247 $onInit: function() {
7248 var e = this.parentCtrl ? this.parentCtrl.$options : Ma,
7249 t = this.$$scope.$eval(this.$$attrs.ngModelOptions);
7250 this.$options = e.createChild(t)
7256 parentCtrl: "?^^ngModelOptions"
7258 bindToController: !0,
7266 Na = r("ngOptions"),
7267 Ia = /^\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]+?))?$/,
7268 Ra = ["$compile", "$document", "$parse", function(t, n, r) {
7269 function a(e, t, n) {
7270 function o(e, t, n, r, i) {
7271 this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
7276 if (!l && i(e)) t = e;
7279 for (var n in e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n)
7283 var s = e.match(Ia);
7284 if (!s) throw Na("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, te(t));
7285 var c = s[5] || s[7],
7287 u = / as /.test(s[0]) && s[1],
7289 f = r(s[2] ? s[1] : c),
7292 m = d ? function(e, t) {
7297 g = function(e, t) {
7298 return m(e, w(e, t))
7300 v = r(s[2] || s[1]),
7305 w = l ? function(e, t) {
7306 return $[l] = t, $[c] = e, $
7313 getWatchables: r(_, function(e) {
7314 for (var t = [], r = a(e = e || []), i = r.length, o = 0; o < i; o++) {
7315 var c = e === r ? o : r[o],
7319 if (t.push(d), s[2] || s[1]) {
7330 getOptions: function() {
7331 for (var e = [], t = {}, r = _(n) || [], i = a(r), s = i.length, c = 0; c < s; c++) {
7332 var l = r === i ? c : i[c],
7336 $ = new o(p, f, v(n, u), b(n, u), y(n, u));
7342 getOptionFromViewValue: function(e) {
7345 getViewValueFromOption: function(e) {
7346 return d ? V(e.viewValue) : e.viewValue
7352 var s = e.document.createElement("option"),
7353 c = e.document.createElement("optgroup");
7357 require: ["select", "ngModel"],
7359 pre: function(e, t, n, r) {
7360 r[0].registerOption = m
7362 post: function(e, r, i, l) {
7364 var n = s.cloneNode(!1);
7365 t.appendChild(n), f(e, n)
7369 var t = $.getOptionFromViewValue(e),
7371 return n && !n.selected && (n.selected = !0), t
7375 e.element = t, t.disabled = e.disabled, e.label !== t.label && (t.label = e.label, t.textContent = e.label), t.value = e.selectValue
7377 for (var h = l[0], p = l[1], m = i.multiple, g = 0, v = r.children(), b = v.length; g < b; g++)
7378 if ("" === v[g].value) {
7379 h.hasEmptyOption = !0, h.emptyOption = v.eq(g);
7383 var y = !!h.emptyOption;
7384 Ur(s.cloneNode(!1)).val("?");
7385 var $, w = a(i.ngOptions, r, e),
7386 E = n[0].createDocumentFragment();
7387 h.generateUnknownOptionValue = function(e) {
7389 }, m ? (h.writeValue = function(e) {
7391 var t = e && e.map(d) || [];
7392 $.items.forEach(function(e) {
7393 e.element.selected && !q(t, e) && (e.element.selected = !1)
7396 }, h.readValue = function() {
7398 return o(r.val() || [], function(t) {
7399 var n = $.selectValueMap[t];
7400 n && !n.disabled && e.push($.getViewValueFromOption(n))
7402 }, w.trackBy && e.$watchCollection(function() {
7403 if (ei(p.$viewValue)) return p.$viewValue.map(function(e) {
7404 return w.getTrackByValue(e)
7408 })) : (h.writeValue = function(e) {
7410 var t = r[0].options[r[0].selectedIndex],
7411 n = $.getOptionFromViewValue(e);
7412 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)
7414 }, h.readValue = function() {
7415 var e = $.selectValueMap[r.val()];
7416 return e && !e.disabled ? (h.unselectEmptyOption(), h.removeUnknownOption(), $.getViewValueFromOption(e)) : null
7417 }, w.trackBy && e.$watch(function() {
7418 return w.getTrackByValue(p.$viewValue)
7421 })), y && (t(h.emptyOption)(e), r.prepend(h.emptyOption), h.emptyOption[0].nodeType === hi ? (h.hasEmptyOption = !1, h.registerOption = function(e, t) {
7422 "" === t.val() && (h.hasEmptyOption = !0, h.emptyOption = t, h.emptyOption.removeClass("ng-scope"), p.$render(), t.on("$destroy", function() {
7423 var e = h.$isEmptyOptionSelected();
7424 h.hasEmptyOption = !1, h.emptyOption = void 0, e && p.$render()
7426 }) : h.emptyOption.removeClass("ng-scope")), e.$watchCollection(w.getWatchables, function() {
7427 var e = $ && h.readValue();
7429 for (var t = $.items.length - 1; t >= 0; t--) {
7431 Ye(_(n.group) ? n.element.parentNode : n.element)
7434 if (($ = w.getOptions()).items.forEach(function(e) {
7436 _(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)
7437 }), r[0].appendChild(E), p.$render(), !p.$isEmpty(e)) {
7438 var o = h.readValue();
7439 (w.trackBy || m ? B(e, o) : e === o) || (p.$setViewValue(o), p.$render())
7446 Pa = ["$locale", "$interpolate", "$log", function(e, t, n) {
7448 i = /^when(Minus)?(.+)$/;
7450 link: function(a, s, c) {
7455 f = c.$attr.when && s.attr(c.$attr.when),
7457 p = a.$eval(f) || {},
7459 v = t.startSymbol(),
7461 _ = v + d + "-" + h + b,
7463 o(c, function(e, t) {
7466 var r = (n[1] ? "-" : "") + Lr(n[2]);
7467 p[r] = s.attr(c.$attr[t])
7469 }), o(p, function(e, n) {
7470 g[n] = t(e.replace(r, _))
7471 }), a.$watch(d, function(t) {
7472 var r = parseFloat(t),
7474 if (i || r in p || (r = e.pluralCat(r - h)), !(r === u || i && Jr(u))) {
7477 y(o) ? (null != t && n.debug("ngPluralize: no rule defined for '" + r + "' in " + f), $ = m, l()) : $ = a.$watch(o, l), u = r
7483 ja = ["$parse", "$animate", "$compile", function(e, t, n) {
7484 var a = r("ngRepeat"),
7485 s = function(e, t, n, r, i, o, a) {
7486 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))
7492 return e.clone[e.clone.length - 1]
7497 transclude: "element",
7501 compile: function(r, u) {
7503 f = n.$$createComment("end ngRepeat", d),
7504 h = d.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
7505 if (!h) throw a("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", d);
7510 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);
7511 var b = h[3] || h[1],
7513 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);
7514 var _, $, w, E, k = {
7517 return v ? _ = e(v) : (w = function(e, t) {
7519 }, E = function(e) {
7522 function(e, n, r, u, h) {
7523 _ && ($ = function(t, n, r) {
7524 return y && (k[y] = t), k[b] = n, k.$index = r, _(e, k)
7527 e.$watchCollection(m, function(r) {
7528 var u, m, v, _, k, C, x, T, M, A, S, O, D = n[0],
7530 if (g && (e[g] = r), i(r)) M = r, T = $ || w;
7533 for (var I in r) Hr.call(r, I) && "$" !== I.charAt(0) && M.push(I)
7535 for (_ = M.length, S = new Array(_), u = 0; u < _; u++)
7536 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;
7538 if (N[x]) throw o(S, function(e) {
7539 e && e.scope && (p[e.id] = e)
7540 }), 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);
7548 if (A = p[R], O = ve(A.clone), t.leave(O), O[0].parentNode)
7549 for (u = 0, m = O.length; u < m; u++) O[u].$$NG_REMOVED = !0;
7552 for (u = 0; u < _; u++)
7553 if (k = r === M ? u : M[u], C = r[k], (A = S[u]).scope) {
7557 } while (v && v.$$NG_REMOVED);
7558 c(A) !== v && t.move(ve(A.clone), null, D), D = l(A), s(A.scope, u, b, C, y, k, _)
7559 } else h(function(e, n) {
7561 var r = f.cloneNode(!1);
7562 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, _)
7570 Ha = ["$animate", function(e) {
7574 link: function(t, n, r) {
7575 t.$watch(r.ngShow, function(t) {
7576 e[t ? "removeClass" : "addClass"](n, "ng-hide", {
7577 tempClasses: "ng-hide-animate"
7583 La = ["$animate", function(e) {
7587 link: function(t, n, r) {
7588 t.$watch(r.ngHide, function(t) {
7589 e[t ? "addClass" : "removeClass"](n, "ng-hide", {
7590 tempClasses: "ng-hide-animate"
7596 Fa = hr(function(e, t, n) {
7597 e.$watch(n.ngStyle, function(e, n) {
7598 n && e !== n && o(n, function(e, n) {
7603 qa = ["$animate", "$compile", function(e, t) {
7605 require: "ngSwitch",
7606 controller: ["$scope", function() {
7609 link: function(n, r, i, a) {
7610 var s = i.ngSwitch || i.on,
7615 f = function(e, t) {
7616 return function(n) {
7617 !1 !== n && e.splice(t, 1)
7620 n.$watch(s, function(n) {
7621 for (var r, i; u.length;) e.cancel(u.pop());
7622 for (r = 0, i = d.length; r < i; ++r) {
7623 var s = ve(l[r].clone);
7624 d[r].$destroy(), (u[r] = e.leave(s)).done(f(u, r))
7626 l.length = 0, d.length = 0, (c = a.cases["!" + n] || a.cases["?"]) && o(c, function(n) {
7627 n.transclude(function(r, i) {
7630 r[r.length++] = t.$$createComment("end ngSwitchWhen");
7634 l.push(a), e.enter(r, o.parent(), o)
7642 transclude: "element",
7644 require: "^ngSwitch",
7646 link: function(e, t, n, r, i) {
7647 o(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter(function(e, t, n) {
7648 return n[t - 1] !== e
7650 r.cases["!" + e] = r.cases["!" + e] || [], r.cases["!" + e].push({
7658 transclude: "element",
7660 require: "^ngSwitch",
7662 link: function(e, t, n, r, i) {
7663 r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
7669 za = r("ngTransclude"),
7670 Ba = ["$compile", function(e) {
7674 compile: function(t) {
7675 var n = e(t.contents());
7677 function(e, t, r, i, o) {
7685 for (var t = 0, n = e.length; t < n; t++) {
7687 if (r.nodeType !== fi || r.nodeValue.trim()) return !0
7690 if (!o) throw za("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", te(t));
7691 r.ngTransclude === r.$attr.ngTransclude && (r.ngTransclude = "");
7692 var c = r.ngTransclude || r.ngTranscludeSlot;
7694 e.length && s(e) ? t.append(e) : (a(), n.$destroy())
7695 }, null, c), c && !o.isSlotFilled(c) && a()
7700 Wa = ["$templateCache", function(e) {
7704 compile: function(t, n) {
7705 if ("text/ng-template" === n.type) {
7717 Ga = ["$element", "$scope", function(t, n) {
7719 s || (s = !0, n.$$postDigest(function() {
7720 s = !1, o.ngModelCtrl.$render()
7725 c || (c = !0, n.$$postDigest(function() {
7726 n.$$destroyed || (c = !1, o.ngModelCtrl.$setViewValue(o.readValue()), e && o.ngModelCtrl.$render())
7731 o.selectValueMap = {}, o.ngModelCtrl = Ya, o.multiple = !1, o.unknownOption = Ur(e.document.createElement("option")), o.hasEmptyOption = !1, o.emptyOption = void 0, o.renderUnknownOption = function(e) {
7732 var n = o.generateUnknownOptionValue(e);
7733 o.unknownOption.val(n), t.prepend(o.unknownOption), Ir(o.unknownOption, !0), t.val(n)
7734 }, o.updateUnknownOption = function(e) {
7735 var n = o.generateUnknownOptionValue(e);
7736 o.unknownOption.val(n), Ir(o.unknownOption, !0), t.val(n)
7737 }, o.generateUnknownOptionValue = function(e) {
7738 return "? " + nt(e) + " ?"
7739 }, o.removeUnknownOption = function() {
7740 o.unknownOption.parent() && o.unknownOption.remove()
7741 }, o.selectEmptyOption = function() {
7742 o.emptyOption && (t.val(""), Ir(o.emptyOption, !0))
7743 }, o.unselectEmptyOption = function() {
7744 o.hasEmptyOption && Ir(o.emptyOption, !1)
7745 }, n.$on("$destroy", function() {
7746 o.renderUnknownOption = m
7747 }), o.readValue = function() {
7749 n = e in o.selectValueMap ? o.selectValueMap[e] : e;
7750 return o.hasOption(n) ? n : null
7751 }, o.writeValue = function(e) {
7752 var n = t[0].options[t[0].selectedIndex];
7753 if (n && Ir(Ur(n), !1), o.hasOption(e)) {
7754 o.removeUnknownOption();
7756 t.val(r in o.selectValueMap ? r : e);
7757 var i = t[0].options[t[0].selectedIndex];
7759 } else o.selectUnknownOrEmptyOption(e)
7760 }, o.addOption = function(e, t) {
7761 if (t[0].nodeType !== hi) {
7762 me(e, '"option value"'), "" === e && (o.hasEmptyOption = !0, o.emptyOption = t);
7763 var n = a.get(e) || 0;
7764 a.set(e, n + 1), r()
7766 }, o.removeOption = function(e) {
7768 t && (1 === t ? (a.delete(e), "" === e && (o.hasEmptyOption = !1, o.emptyOption = void 0)) : a.set(e, t - 1))
7769 }, o.hasOption = function(e) {
7771 }, o.$hasEmptyOption = function() {
7772 return o.hasEmptyOption
7773 }, o.$isUnknownOptionSelected = function() {
7774 return t[0].options[0] === o.unknownOption[0]
7775 }, o.$isEmptyOptionSelected = function() {
7776 return o.hasEmptyOption && t[0].options[t[0].selectedIndex] === o.emptyOption[0]
7777 }, o.selectUnknownOrEmptyOption = function(e) {
7778 null == e && o.emptyOption ? (o.removeUnknownOption(), o.selectEmptyOption()) : o.unknownOption.parent().length ? o.updateUnknownOption(e) : o.renderUnknownOption(e)
7782 o.registerOption = function(e, t, n, a, s) {
7783 if (n.$attr.ngValue) {
7785 n.$observe("value", function(e) {
7786 var n, r = t.prop("selected");
7787 _(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()
7789 } else a ? n.$observe("value", function(e) {
7791 var n, r = t.prop("selected");
7792 _(c) && (o.removeOption(c), n = !0), c = e, o.addOption(e, t), n && r && i()
7793 }) : s ? e.$watch(s, function(e, r) {
7795 var a = t.prop("selected");
7796 r !== e && o.removeOption(r), o.addOption(e, t), r && a && i()
7797 }) : o.addOption(n.value, t);
7798 n.$observe("disabled", function(e) {
7799 ("true" === e || e && t.prop("selected")) && (o.multiple ? i(!0) : (o.ngModelCtrl.$setViewValue(null), o.ngModelCtrl.$render()))
7800 }), t.on("$destroy", function() {
7801 var e = o.readValue(),
7803 o.removeOption(t), r(), (o.multiple && e && -1 !== e.indexOf(t) || e === t) && i(!0)
7810 require: ["select", "?ngModel"],
7814 pre: function(e, t, n, r) {
7818 if (i.ngModelCtrl = a, t.on("change", function() {
7819 i.removeUnknownOption(), e.$apply(function() {
7820 a.$setViewValue(i.readValue())
7823 i.multiple = !0, i.readValue = function() {
7825 return o(t.find("option"), function(t) {
7826 if (t.selected && !t.disabled) {
7828 e.push(n in i.selectValueMap ? i.selectValueMap[n] : n)
7831 }, i.writeValue = function(e) {
7832 o(t.find("option"), function(t) {
7833 var n = !!e && (q(e, t.value) || q(e, i.selectValueMap[t.value]));
7834 n !== t.selected && Ir(Ur(t), n)
7838 e.$watch(function() {
7839 c !== a.$viewValue || B(s, a.$viewValue) || (s = $e(a.$viewValue), a.$render()), c = a.$viewValue
7840 }), a.$isEmpty = function(e) {
7841 return !e || 0 === e.length
7844 } else i.registerOption = m
7846 post: function(e, t, n, r) {
7850 i.$render = function() {
7851 o.writeValue(i.$viewValue)
7858 Za = ["$interpolate", function(e) {
7862 compile: function(t, n) {
7864 return _(n.ngValue) || (_(n.value) ? r = e(n.value, !0) : (i = e(t.text(), !0)) || n.$set("value", t.text())),
7867 a = o.data("$selectController") || o.parent().data("$selectController");
7868 a && a.registerOption(e, t, n, r, i)
7876 require: "?ngModel",
7877 link: function(e, t, n, r) {
7878 r && (n.required = !0, r.$validators.required = function(e, t) {
7879 return !n.required || !r.$isEmpty(t)
7880 }, n.$observe("required", function() {
7889 require: "?ngModel",
7890 link: function(e, t, n, i) {
7892 var o, a = n.ngPattern || n.pattern;
7893 n.$observe("pattern", function(e) {
7894 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));
7895 o = e || void 0, i.$validate()
7896 }), i.$validators.pattern = function(e, t) {
7897 return i.$isEmpty(t) || y(o) || o.test(t)
7906 require: "?ngModel",
7907 link: function(e, t, n, r) {
7910 n.$observe("maxlength", function(e) {
7912 i = Jr(t) ? -1 : t, r.$validate()
7913 }), r.$validators.maxlength = function(e, t) {
7914 return i < 0 || r.$isEmpty(t) || t.length <= i
7923 require: "?ngModel",
7924 link: function(e, t, n, r) {
7927 n.$observe("minlength", function(e) {
7928 i = h(e) || 0, r.$validate()
7929 }), r.$validators.minlength = function(e, t) {
7930 return r.$isEmpty(t) || t.length >= i
7936 e.angular.bootstrap ? e.console && console.log("WARNING: Tried to load angular more than once.") : (! function() {
7940 (Vr = y(n) ? e.jQuery : n ? e[n] : void 0) && Vr.fn.on ? (Ur = Vr, d(Vr.fn, {
7942 isolateScope: Ai.isolateScope,
7943 controller: Ai.controller,
7944 injector: Ai.injector,
7945 inheritedData: Ai.inheritedData
7946 }), t = Vr.cleanData, Vr.cleanData = function(e) {
7947 for (var n, r, i = 0; null != (r = e[i]); i++)(n = Vr._data(r, "events")) && n.$destroy && Vr(r).triggerHandler("$destroy");
7949 }) : Ur = Ne, Xr.element = Ur, ui = !0
7953 errorHandlingConfig: t,
7983 reloadWithDebugInfo: ue,
7986 $$encodeUriSegment: oe,
7987 $$encodeUriQuery: ae,
7989 }), (zr = _e(e))("ng", ["ngLocale"], ["$provide", function(e) {
7992 }), e.provider("$compile", vt).directive({
8020 ngSwitchDefault: Va,
8038 }).directive(Fo).directive(ga), e.provider({
8044 $$AnimateRunner: Gi,
8045 $$animateAsyncRun: Yi,
8050 $$isDocumentHidden: Ct,
8051 $exceptionHandler: xt,
8057 $httpParamSerializer: Mt,
8058 $httpParamSerializerJQLike: At,
8061 $jsonpCallbacks: uo,
8072 $templateRequest: jn,
8082 angularVersion: "1.6.8"
8084 }(Xr), Xr.module("ngLocale", [], ["$provide", function(e) {
8086 var t = (e += "").indexOf(".");
8087 return -1 == t ? 0 : e.length - t - 1
8092 void 0 === r && (r = Math.min(t(e), 3));
8093 var i = Math.pow(10, r);
8107 e.value("$locale", {
8109 AMPMS: ["AM", "PM"],
8110 DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8111 ERANAMES: ["Before Christ", "Anno Domini"],
8114 MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8115 SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8116 SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8117 STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8118 WEEKENDRANGE: [5, 6],
8119 fullDate: "EEEE, MMMM d, y",
8120 longDate: "MMMM d, y",
8121 medium: "MMM d, y h:mm:ss a",
8122 mediumDate: "MMM d, y",
8123 mediumTime: "h:mm:ss a",
8124 short: "M/d/yy h:mm a",
8125 shortDate: "M/d/yy",
8156 pluralCat: function(e, t) {
8159 return 1 == i && 0 == o.v ? r.ONE : r.OTHER
8162 }]), Ur(function() {
8165 }(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>'),
8167 "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)
8168 }(this, function(e, t) {
8173 return n.length >= r ? e.apply(null, n) : function() {
8174 return t(n.concat([].slice.apply(arguments)))
8177 var n = [].slice.apply(arguments, [1]),
8186 for (var n = t, r = e[t].apply(this, arguments); n--;) r = e[n].call(this, r);
8192 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8193 return r.apply(null, [].slice.call(arguments).reverse())
8198 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
8199 return e.apply(null, n) && t.apply(null, n)
8205 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
8206 return e.apply(null, n) || t.apply(null, n)
8211 return function(n) {
8212 return n[e].apply(n, t)
8217 return function(t) {
8218 for (var n = 0; n < e.length; n++)
8219 if (e[n][0](t)) return e[n][1](t)
8224 if (et(e) && e.length) {
8225 var t = e.slice(0, -1),
8227 return !(t.filter(Pe(Qe)).length || n.filter(Pe(Ze)).length)
8238 function f(e, t, n, r, i) {
8239 void 0 === i && (i = !1);
8240 var o = function(t) {
8241 return e()[t].bind(n())
8245 return t[e] = o(e), t[e].apply(null, arguments)
8248 return (r = r || Object.keys(e())).reduce(function(e, t) {
8249 return e[t] = i ? a(t) : o(t), e
8254 return -1 !== e.indexOf(t)
8258 var n = e.indexOf(t);
8259 return n >= 0 && e.splice(n, 1), e
8267 for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
8268 var r = t.concat({}).reverse(),
8269 i = ft.apply(null, r);
8270 return ft({}, i, b(e || {}, Object.keys(i)))
8275 for (var r in e.path) {
8276 if (e.path[r] !== t.path[r]) break;
8284 for (var r in e) - 1 !== t.indexOf(r) && (n[r] = e[r]);
8289 return Object.keys(e).filter(Pe(mt(t))).reduce(function(t, n) {
8290 return t[n] = e[n], t
8301 i = n ? function(e) {
8303 } : function(e, t) {
8306 return dt(e, function(e, n) {
8313 return dt(e, function(e, r) {
8314 n || t(e, r) && (n = e)
8319 var n = et(e) ? [] : {};
8320 return dt(e, function(e, r) {
8321 return n[r] = t(e, r)
8330 return void 0 === t && (t = "assert failure"),
8333 if (!r) throw new Error(Ze(t) ? t(n) : t);
8339 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8340 if (0 === e.length) return [];
8341 var n, r = e.reduce(function(e, t) {
8342 return Math.min(t.length, e)
8343 }, 9007199254740991),
8345 for (n = 0; n < r; n++) switch (e.length) {
8350 i.push([e[0][n], e[1][n]]);
8353 i.push([e[0][n], e[1][n], e[2][n]]);
8356 i.push([e[0][n], e[1][n], e[2][n], e[3][n]]);
8359 i.push(e.map(function(e) {
8368 if (et(t) && (n = t[0], r = t[1]), !Qe(n)) throw new Error("invalid parameters to applyPairs");
8373 return e.length && e[e.length - 1] || void 0
8377 return t && Object.keys(t).forEach(function(e) {
8379 }), t || (t = {}), ft(t, e)
8383 for (var t = 1; t < arguments.length; t++) {
8384 var n = arguments[t];
8386 for (var r = Object.keys(n), i = 0; i < r.length; i++) e[r[i]] = n[r[i]]
8392 if (e === t) return !0;
8393 if (null === e || null === t) return !1;
8394 if (e !== e && t !== t) return !0;
8396 if (n !== typeof t || "object" !== n) return !1;
8398 if (je(et)(r)) return D(e, t);
8399 if (je(tt)(r)) return e.getTime() === t.getTime();
8400 if (je(nt)(r)) return e.toString() === t.toString();
8401 if (je(Ze)(r)) return !0;
8402 if ([Ze, et, tt, nt].map(He).reduce(function(e, t) {
8407 if (!O(e[i], t[i])) return !1;
8411 if (!o[i]) return !1;
8416 return e.length === t.length && x(e, t).reduce(function(e, t) {
8417 return e && O(t[0], t[1])
8422 if (!e) return "ui-view (defunct)";
8423 var t = e.creationContext ? e.creationContext.name || "(root)" : "(none)";
8424 return "[ui-view#" + e.id + " " + e.$type + ":" + e.fqn + " (" + e.name + "@" + t + ")]"
8428 return Xe(t) ? e.Category[t] : e.Category[e.Category[t]]
8432 var n = Qe(t) ? [t] : t;
8433 return !!(Ze(n) ? n : function(e) {
8434 for (var t = n, r = 0; r < t.length; r++) {
8435 var i = new Ue(t[r]);
8436 if (i && i.matches(e.name) || !i && t[r] === e.name) return !0
8442 function P(e, t, n) {
8443 function r(e, r, a) {
8444 void 0 === a && (a = {});
8445 var s = new Gt(t, n, r, e, o, a);
8446 return i.push(s), s.deregister.bind(s)
8448 var i = (e._registeredHooks = e._registeredHooks || {})[n.name] = [],
8450 return e[n.name] = r, r
8454 return void 0 === e && (e = !1),
8457 i = (t.node.state.path.length - n.node.state.path.length) * r;
8458 return 0 !== i ? i : n.hook.priority - t.hook.priority
8464 return et(e) ? e : Ye(e) ? [e] : []
8472 return "auto" === t ? e[0] : e;
8479 return function(i) {
8480 if (et(i) && 0 === i.length) return i;
8482 return !0 === t ? 0 === $(o, function(e) {
8489 return function(t, r) {
8492 if (i.length !== o.length) return !1;
8493 for (var a = 0; a < i.length; a++)
8494 if (!e(i[a], o[a])) return !1;
8499 ["encode", "decode", "equals", "$normalize"].forEach(function(t) {
8500 var n = e[t].bind(e),
8501 r = "equals" === t ? o : i;
8508 is: i(e.is.bind(e), !0),
8517 return e = Qt(e) && {
8519 } || e, t.__cacheable = !0, ft(e, {
8520 $$fn: l(e.value) ? e.value : t
8524 function F(t, n, r, i, o) {
8525 if (t.type && n && "string" !== n.name) throw new Error("Param '" + i + "' has two type configurations.");
8526 if (t.type && n && "string" === n.name && o.type(t.type)) return o.type(t.type);
8529 var a = r === e.DefType.CONFIG ? "any" : r === e.DefType.PATH ? "path" : r === e.DefType.SEARCH ? "query" : "string";
8532 return t.type instanceof Zt ? t.type : o.type(t.type)
8535 function q(e, t, n) {
8537 if (!t || !1 === r) return !1;
8538 if (!Ye(r) || null == r) return n;
8539 if (!0 === r || Qe(r)) return r;
8540 throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
8543 function U(e, t, n, r) {
8546 to: n || t ? void 0 : ""
8549 to: n || t ? void 0 : ""
8551 return i = et(e.replace) ? e.replace : [], Qe(r) && i.push({
8554 }), o = E(i, Ne("from")), $(a, function(e) {
8555 return -1 === o.indexOf(e.from)
8560 return t.length <= e ? t : t.substr(0, e - 3) + "..."
8564 for (; t.length < e;) t += " ";
8569 return e.replace(/^([A-Z])/, function(e) {
8570 return e.toLowerCase()
8571 }).replace(/([A-Z])/g, function(e) {
8572 return "-" + e.toLowerCase()
8578 n = t.match(/^(function [^ ]+\([^)]*\))/),
8581 return i && r.match(/function \(/) ? "function " + i + r.substr(9) : r
8585 var t = et(e) ? e.slice(-1)[0] : e;
8586 return t && t.toString() || "undefined"
8592 if (-1 !== n.indexOf(e)) return "[circular ref]";
8598 return JSON.stringify(e, function(e, n) {
8600 }).replace(/\\"/g, '"')
8604 var t = new RegExp("(" + e + ")", "g");
8605 return function(e) {
8606 return e.split(t).filter(u)
8611 return Qe(M(e)) && Qe(t) ? e.slice(0, -1).concat(M(e) + t) : k(e, t)
8619 return e.self.$$state = function() {
8625 return e.parent && e.parent.data && (e.data = e.self.data = pt(e.parent.data, e.data)), e.data
8629 return e.parent ? e.parent.path.concat(e) : [e]
8633 var t = e.parent ? ft({}, e.parent.includes) : {};
8634 return t[e.name] = !0, t
8638 var t = function(e) {
8639 var t = at.$injector;
8640 return e.$inject || t && t.annotate(e, t.strictDi) || "deferred"
8643 return e.provide || e.token
8646 [Ne("resolveFn"), function(e) {
8647 return new rn(n(e), e.resolveFn, e.deps, e.policy)
8649 [Ne("useFactory"), function(e) {
8650 return new rn(n(e), e.useFactory, e.deps || e.dependencies, e.policy)
8652 [Ne("useClass"), function(e) {
8653 return new rn(n(e), function() {
8654 return new e.useClass
8657 [Ne("useValue"), function(e) {
8658 return new rn(n(e), function() {
8660 }, [], e.policy, e.useValue)
8662 [Ne("useExisting"), function(e) {
8663 return new rn(n(e), u, [e.useExisting], e.policy)
8667 [i(Ne("val"), Qe), function(e) {
8668 return new rn(e.token, u, [e.val], e.policy)
8670 [i(Ne("val"), et), function(e) {
8671 return new rn(e.token, M(e.val), e.val.slice(0, -1), e.policy)
8673 [i(Ne("val"), Ze), function(e) {
8674 return new rn(e.token, e.val, t(e.val), e.policy)
8678 [Le(rn), function(e) {
8682 return !(!e.token || !e.resolveFn)
8685 return !(!e.provide && !e.token || !(e.useValue || e.useFactory || e.useExisting || e.useClass))
8688 return !!(e && e.val && (Qe(e.val) || et(e.val) || Ze(e.val)))
8690 [qe(!0), function(e) {
8691 throw new Error("Invalid resolve value: " + G(e))
8695 return (et(s) ? s : function(e, t) {
8696 return Object.keys(e || {}).map(function(n) {
8704 }(s, e.resolvePolicy || {})).map(a)
8709 r = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
8713 n = ["(", ")" + (t.isOptional ? "?" : "")];
8716 r = r.replace(/\/$/, ""), n = ["(?:/(", ")|/)?"];
8719 n = ["(" + t.squash + "|", ")?"]
8721 return r + n[0] + t.type.pattern.source + n[1]
8724 function ie(e, t, n, r) {
8725 return "/" === r ? e : t ? bn(r) + e : n ? r.slice(1) + e : e
8729 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");
8730 return Ze(e) ? e : qe(e)
8737 resolveFn: function() {
8741 }, ""), e.addResolvable({
8744 resolveFn: function() {
8748 }, ""), e.addResolvable({
8749 token: "$transition$",
8751 resolveFn: function() {
8755 }, ""), e.addResolvable({
8756 token: "$stateParams",
8758 resolveFn: function() {
8762 }, ""), e.entering().forEach(function(t) {
8766 resolveFn: function() {
8775 return function(t, n) {
8776 return (0, n.$$state()[e])(t, n)
8781 var n = t.$$state().lazyLoad,
8784 r = n._promise = at.$q.when(n(e, t)).then(function(t) {
8785 return t && Array.isArray(t.states) && t.states.forEach(function(t) {
8786 return e.router.stateRegistry.register(t)
8788 }).then(function(e) {
8789 return delete t.lazyLoad, delete t.$$state().lazyLoad, delete n._promise, e
8791 return delete n._promise, at.$q.reject(e)
8798 var t = e._ignoredReason();
8800 zt.traceTransitionIgnored(e);
8801 var n = e.router.globals.transition;
8802 return "SameAsCurrent" === t && n && n.abort(), Pt.ignored().toPromise()
8807 if (!e.valid()) throw new Error(e.error())
8811 var t = function(e) {
8826 function fe(e, t, n, r) {
8827 return function(i) {
8828 var o = i.locationService = new n(i),
8829 a = i.locationConfig = new r(i, t);
8834 dispose: function(e) {
8835 e.dispose(o), e.dispose(a)
8842 return at.$injector = Rr, at.$q = Or, {
8843 name: "vanilla.services",
8846 dispose: function() {
8854 return function(t, n) {
8855 return e = e || at.$injector.get("$templateFactory"), [new ti(t, n, e)]
8860 if (!e.parent) return {};
8861 var t = ["controller", "controllerProvider", "controllerAs", "resolveAs"],
8862 n = ["component", "bindings", "componentProvider"],
8863 r = ["templateProvider", "templateUrl", "template", "notify", "async"].concat(t),
8865 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) {
8872 return dt(a, function(t, i) {
8873 if (i = i || "$default", Qe(t) && (t = {
8875 }), t = ft({}, t), Jr(n, t) && Jr(r, t)) throw new Error("Cannot combine: " + n.join("|") + " with: " + r.join("|") + " in stateview: '" + i + "@" + e.name + "'");
8876 t.resolveAs = t.resolveAs || "$resolve", t.$type = "ng1", t.$context = e, t.$name = i;
8877 var a = Bn.normalizeUIViewTarget(t.$context, t.$name);
8878 t.$uiViewName = a.uiViewName, t.$uiViewContextAnchor = a.uiViewContextAnchor, o[i] = t
8883 var t = at.$injector.get(e + "Directive");
8884 if (!t || !t.length) throw new Error("Unable to find component named '" + e + "'");
8885 return t.map(ri).reduce(kt, [])
8889 function t(e, t, r, i, o, a) {
8890 return n._runtimeServices(i, e, r, t), delete pi.router, delete pi.$get, pi
8891 }(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());
8892 var n = pi.locationService = pi.locationConfig = new si(e);
8893 return si.monkeyPatchPathParameterType(pi), pi.router = pi, pi.$get = t, t.$inject = ["$location", "$browser", "$sniffer", "$rootScope", "$http", "$templateCache"], pi
8896 function be(e, t, n) {
8897 at.$injector = e, at.$q = t, n.stateRegistry.get().map(function(e) {
8898 return e.$$state().resolvables
8899 }).reduce(kt, []).filter(function(e) {
8900 return "deferred" === e.deps
8901 }).forEach(function(t) {
8902 return t.deps = e.annotate(t.resolveFn, e.strictDi)
8907 e.$watch(function() {
8908 zt.approximateDigests++
8913 var t, n = e.match(/^\s*({[^}]*})\s*$/);
8914 if (n && (e = "(" + n[1] + ")"), !(t = e.replace(/\n/g, " ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/)) || 4 !== t.length) throw new Error("Invalid state ref '" + e + "'");
8916 state: t[1] || null,
8917 paramExpr: t[3] || null
8922 var t = e.parent().inheritedData("$uiView"),
8923 n = Re("$cfg.path")(t);
8924 return n ? M(n).state.name : void 0
8927 function we(e, t, n) {
8928 var r = n.uiState || e.current.name,
8929 i = ft(Ce(t, e), n.uiStateOpts || {}),
8930 o = e.href(r, n.uiStateParams, i);
8933 uiStateParams: n.uiStateParams,
8940 var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
8941 n = "FORM" === e[0].nodeName;
8943 attr: n ? "action" : t ? "xlink:href" : "href",
8944 isAnchor: "A" === e.prop("tagName").toUpperCase(),
8949 function ke(e, t, n, r, i) {
8950 return function(o) {
8951 var a = o.which || o.button,
8953 if (!(a > 1 || o.ctrlKey || o.metaKey || o.shiftKey || e.attr("target"))) {
8954 var c = n(function() {
8955 t.go(s.uiState, s.uiStateParams, s.uiStateOpts)
8958 var l = r.isAnchor && !s.href ? 1 : 0;
8959 o.preventDefault = function() {
8960 l-- <= 0 && n.cancel(c)
8968 relative: $e(e) || t.$current,
8974 function xe(e, t, n, r) {
8976 r && (i = r.events), et(i) || (i = ["click"]);
8977 for (var o = e.on ? "on" : "bind", a = 0, s = i; a < s.length; a++) {
8981 t.$on("$destroy", function() {
8982 for (var t = e.off ? "off" : "unbind", r = 0, o = i; r < o.length; r++) {
8990 var t = function(t, n, r) {
8991 return e.is(t, n, r)
8993 return t.$stateful = !0, t
8997 var t = function(t, n, r) {
8998 return e.includes(t, n, r)
9000 return t.$stateful = !0, t
9003 function Ae(e, t, n, r, i, o) {
9004 var a = Re("viewDecl.controllerAs"),
9005 s = Re("viewDecl.resolveAs");
9009 compile: function(r) {
9013 var l = c.data("$uiView");
9014 if (!l) return c.html(o), void e(c.contents())(r);
9019 f = u.path && new un(u.path);
9020 c.html(u.getTemplate(c, f) || o), zt.traceUIViewFill(l.$uiView, c.html());
9021 var h = e(c.contents()),
9027 var b = t(p, ft({}, v, {
9031 m && (r[m] = b, r[m][g] = v), c.data("$ngControllerController", b), c.children().data("$ngControllerController", b), Se(i, n, b, r, u)
9033 if (Qe(u.viewDecl.component)) var y = u.viewDecl.component,
9035 $ = new RegExp("^(x-|data-)?" + _ + "$", "i"),
9036 w = r.$watch(function() {
9037 var e = [].slice.call(c[0].children).filter(function(e) {
9038 return e && e.tagName && $.exec(e.tagName)
9040 return e && De.element(e).data("$" + y + "Controller")
9042 e && (Se(i, n, e, r, u), w())
9050 function Se(e, t, n, r, i) {
9051 !Ze(n.$onInit) || i.viewDecl.component && $i || n.$onInit();
9052 var o = M(i.path).state.self,
9056 if (Ze(n.uiOnParamsChanged)) {
9057 var s = new un(i.path).getResolvable("$transition$").data;
9058 r.$on("$destroy", t.onSuccess({}, function(e) {
9059 if (e !== s && -1 === e.exiting().indexOf(o)) {
9060 var t = e.params("to"),
9061 r = e.params("from"),
9062 i = e.treeChanges().to.map(function(e) {
9063 return e.paramSchema
9065 a = e.treeChanges().from.map(function(e) {
9066 return e.paramSchema
9068 c = i.filter(function(e) {
9069 var n = a.indexOf(e);
9070 return -1 === n || !a[n].type.equals(t[e.id], r[e.id])
9073 var l = c.map(function(e) {
9076 u = $(t, function(e, t) {
9077 return -1 !== l.indexOf(t)
9079 n.uiOnParamsChanged(u, e)
9084 if (Ze(n.uiCanExit)) {
9087 return !!e && (e._uiCanExitIds && !0 === e._uiCanExitIds[c] || l(e.redirectedFrom()))
9092 r.$on("$destroy", t.onBefore(u, function(t) {
9093 var r, i = t._uiCanExitIds = t._uiCanExitIds || {};
9094 return l(t) || (r = e.when(n.uiCanExit(t))).then(function(e) {
9095 return i[c] = !1 !== e
9100 me.$inject = ["state"];
9102 De = t && t.module ? t : Oe,
9104 return function(t) {
9108 Ie = n(function(e, t, n) {
9109 return n && n[e] === t
9112 return i.apply(null, e.split(".").map(Ne))
9116 for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
9117 return !e.apply(null, t)
9121 return function(t) {
9122 return t.reduce(function(t, n) {
9128 return function(t) {
9129 return t.reduce(function(t, n) {
9135 return function(t) {
9136 return null != t && t.constructor === e || t instanceof e
9140 return function(t) {
9151 this.text = e, this.glob = e.split(".");
9152 var t = this.text.split(".").map(function(e) {
9153 return "**" === e ? "(?:|(?:\\.[^.]*)*)" : "*" === e ? "\\.[^.]*" : "\\." + e
9155 this.regexp = new RegExp("^" + t + "$")
9157 return e.prototype.matches = function(e) {
9158 return this.regexp.test("." + e)
9159 }, e.is = function(e) {
9160 return !!/[!,*]+/.exec(e)
9161 }, e.fromString = function(t) {
9162 return e.is(t) ? new e(t) : null
9167 return e.create(t || {})
9169 return e.create = function(t) {
9170 t = e.isStateClass(t) ? new t : t;
9171 var n = pt(pt(t, e.prototype));
9172 return t.$$state = function() {
9174 }, n.self = t, n.__stateObjectCache = {
9175 nameGlob: Ue.fromString(n.name)
9177 }, e.prototype.is = function(e) {
9178 return this === e || this.self === e || this.fqn() === e
9179 }, e.prototype.fqn = function() {
9180 if (!(this.parent && this.parent instanceof this.constructor)) return this.name;
9181 var e = this.parent.fqn();
9182 return e ? e + "." + this.name : this.name
9183 }, e.prototype.root = function() {
9184 return this.parent && this.parent.root() || this
9185 }, e.prototype.parameters = function(e) {
9189 })).inherit && this.parent && this.parent.parameters() || []).concat($t(this.params)).filter(function(t) {
9190 return !e.matchingKeys || e.matchingKeys.hasOwnProperty(t.id)
9192 }, e.prototype.parameter = function(e, t) {
9193 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)
9194 }, e.prototype.toString = function() {
9196 }, e.isStateClass = function(e) {
9197 return Ze(e) && !0 === e.__uiRouterState
9198 }, e.isState = function(e) {
9199 return Je(e.__stateObjectCache)
9202 ze = Object.prototype.toString,
9204 return function(t) {
9205 return typeof t === e
9208 We = Be("undefined"),
9214 Ze = Be("function"),
9218 return null !== e && "object" == typeof e
9222 return "[object Date]" === ze.call(e)
9225 return "[object RegExp]" === ze.call(e)
9228 it = o(Je, i(Ne("then"), Ze)),
9231 throw new Error(e + "(): No coreservices implementation for UI-Router is loaded.")
9238 st = "object" == typeof self && self.self === self && self || "object" == typeof global && global.global === global && global || void 0,
9239 ct = st.angular || {},
9240 lt = ct.fromJson || JSON.parse.bind(JSON),
9241 ut = ct.toJson || JSON.stringify.bind(JSON),
9242 dt = ct.forEach || function(e, t, n) {
9243 if (et(e)) return e.forEach(t, n);
9244 Object.keys(e).forEach(function(n) {
9248 ft = Object.assign || S,
9249 ht = ct.equals || O,
9250 pt = function(e, t) {
9251 return ft(Object.create(e), t)
9257 return e.slice().forEach(function(t) {
9258 "function" == typeof t && t(), gt(e, t)
9261 yt = function(e, t) {
9266 return Object.keys(e).map(function(t) {
9270 wt = function(e, t) {
9273 Et = function(e, t) {
9276 kt = function(e, t) {
9279 Ct = function(e, t) {
9280 return et(t) ? e.concat(t.reduce(Ct, [])) : k(e, t)
9282 xt = function(e, t) {
9283 return mt(e, t) ? e : k(e, t)
9286 return e.reduce(kt, [])
9289 return e.reduce(Ct, [])
9294 return Object.keys(e).map(function(t) {
9299 return e.catch(function(e) {
9304 return Dt(at.$q.reject(e))
9308 void 0 === e && (e = []), void 0 === t && (t = null), this._items = e, this._limit = t
9310 return e.prototype.enqueue = function(e) {
9311 var t = this._items;
9312 return t.push(e), this._limit && t.length > this._limit && t.shift(), e
9313 }, e.prototype.dequeue = function() {
9314 if (this.size()) return this._items.splice(0, 1)[0]
9315 }, e.prototype.clear = function() {
9316 var e = this._items;
9317 return this._items = [], e
9318 }, e.prototype.size = function() {
9319 return this._items.length
9320 }, e.prototype.remove = function(e) {
9321 var t = this._items.indexOf(e);
9322 return t > -1 && this._items.splice(t, 1)[0]
9323 }, e.prototype.peekTail = function() {
9324 return this._items[this._items.length - 1]
9325 }, e.prototype.peekHead = function() {
9326 if (this.size()) return this._items[0]
9330 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"
9331 }(e.RejectType || (e.RejectType = {}));
9334 function t(e, t, n) {
9335 this.$id = Rt++, this.type = e, this.message = t, this.detail = n
9337 return t.prototype.toString = function() {
9338 var e = function(e) {
9339 return e && e.toString !== Object.prototype.toString ? e.toString() : G(e)
9342 return "Transition Rejection($id: " + t.$id + " type: " + t.type + ", message: " + t.message + ", detail: " + e + ")"
9343 }, t.prototype.toPromise = function() {
9344 return ft(Nt(this), {
9345 _transitionRejection: this
9347 }, t.isRejectionPromise = function(e) {
9348 return e && "function" == typeof e.then && Le(t)(e._transitionRejection)
9349 }, t.superseded = function(n, r) {
9350 var i = new t(e.RejectType.SUPERSEDED, "The transition has been superseded by a different transition", n);
9351 return r && r.redirected && (i.redirected = !0), i
9352 }, t.redirected = function(e) {
9353 return t.superseded(e, {
9356 }, t.invalid = function(n) {
9357 return new t(e.RejectType.INVALID, "This transition is invalid", n)
9358 }, t.ignored = function(n) {
9359 return new t(e.RejectType.IGNORED, "The transition was ignored", n)
9360 }, t.aborted = function(n) {
9361 return new t(e.RejectType.ABORTED, "The transition has been aborted", n)
9362 }, t.errored = function(n) {
9363 return new t(e.RejectType.ERROR, "The transition errored", n)
9364 }, t.normalize = function(e) {
9365 return Le(t)(e) ? e : t.errored(e)
9370 n = t.$context.name || "(root)";
9371 return "[View#" + e.$id + " from '" + n + "' state]: target ui-view: '" + t.$uiViewName + "@" + t.$uiViewContextAnchor + "'"
9373 Ht = Function.prototype.bind.call(console.log, console),
9374 Lt = Ze(console.table) ? console.table.bind(console) : Ht.bind(console);
9376 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"
9377 }(e.Category || (e.Category = {}));
9379 qt = Re("router.$id"),
9381 return "Transition #" + Ft(e) + "-" + qt(e)
9385 this._enabled = {}, this.approximateDigests = 0
9387 return t.prototype._set = function(t, n) {
9389 n.length || (n = Object.keys(e.Category).map(function(e) {
9390 return parseInt(e, 10)
9391 }).filter(function(e) {
9393 }).map(function(t) {
9394 return e.Category[t]
9395 })), n.map(I).forEach(function(e) {
9396 return r._enabled[e] = t
9398 }, t.prototype.enable = function() {
9399 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
9401 }, t.prototype.disable = function() {
9402 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
9404 }, t.prototype.enabled = function(e) {
9405 return !!this._enabled[I(e)]
9406 }, t.prototype.traceTransitionStart = function(t) {
9407 this.enabled(e.Category.TRANSITION) && console.log(Ut(t) + ": Started -> " + G(t))
9408 }, t.prototype.traceTransitionIgnored = function(t) {
9409 this.enabled(e.Category.TRANSITION) && console.log(Ut(t) + ": Ignored <> " + G(t))
9410 }, t.prototype.traceHookInvocation = function(t, n, r) {
9411 if (this.enabled(e.Category.HOOK)) {
9412 var i = Re("traceData.hookType")(r) || "internal",
9413 o = Re("traceData.context.state.name")(r) || Re("traceData.context")(r) || "unknown",
9414 a = W(t.registeredHook.callback);
9415 console.log(Ut(n) + ": Hook -> " + i + " context: " + o + ", " + V(200, a))
9417 }, t.prototype.traceHookResult = function(t, n, r) {
9418 this.enabled(e.Category.HOOK) && console.log(Ut(n) + ": <- Hook returned: " + V(200, G(t)))
9419 }, t.prototype.traceResolvePath = function(t, n, r) {
9420 this.enabled(e.Category.RESOLVE) && console.log(Ut(r) + ": Resolving " + t + " (" + n + ")")
9421 }, t.prototype.traceResolvableResolved = function(t, n) {
9422 this.enabled(e.Category.RESOLVE) && console.log(Ut(n) + ": <- Resolved " + t + " to: " + V(200, G(t.data)))
9423 }, t.prototype.traceError = function(t, n) {
9424 this.enabled(e.Category.TRANSITION) && console.log(Ut(n) + ": <- Rejected " + G(n) + ", reason: " + t)
9425 }, t.prototype.traceSuccess = function(t, n) {
9426 this.enabled(e.Category.TRANSITION) && console.log(Ut(n) + ": <- Success " + G(n) + ", final state: " + t.name)
9427 }, t.prototype.traceUIViewEvent = function(t, n, r) {
9428 void 0 === r && (r = ""), this.enabled(e.Category.UIVIEW) && console.log("ui-view: " + z(30, t) + " " + N(n) + r)
9429 }, t.prototype.traceUIViewConfigUpdated = function(t, n) {
9430 this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Updating", t, " with ViewConfig from context='" + n + "'")
9431 }, t.prototype.traceUIViewFill = function(t, n) {
9432 this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Fill", t, " with: " + V(200, n))
9433 }, t.prototype.traceViewSync = function(t) {
9434 if (this.enabled(e.Category.VIEWCONFIG)) {
9435 var n = t.map(function(e) {
9439 "ui-view fqn": t.$type + ":" + t.fqn,
9440 "state: view name": n && n.viewDecl.$context.name + ": " + n.viewDecl.$name + " (" + n.viewDecl.$type + ")"
9442 }).sort(function(e, t) {
9443 return e["ui-view fqn"].localeCompare(t["ui-view fqn"])
9447 }, t.prototype.traceViewServiceEvent = function(t, n) {
9448 this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + jt(n))
9449 }, t.prototype.traceViewServiceUIViewEvent = function(t, n) {
9450 this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + N(n))
9455 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"
9456 }(e.TransitionHookPhase || (e.TransitionHookPhase = {})),
9458 e[e.TRANSITION = 0] = "TRANSITION", e[e.STATE = 1] = "STATE"
9459 }(e.TransitionHookScope || (e.TransitionHookScope = {}));
9460 var Bt = function() {
9461 function e(e, t, n, r) {
9462 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)
9464 return e.prototype.name = function() {
9465 return this._definition && this._definition.name || this._identifier
9466 }, e.prototype.identifier = function() {
9467 return this._identifier
9468 }, e.prototype.params = function() {
9470 }, e.prototype.$state = function() {
9471 return this._definition
9472 }, e.prototype.state = function() {
9473 return this._definition && this._definition.self
9474 }, e.prototype.options = function() {
9475 return this._options
9476 }, e.prototype.exists = function() {
9477 return !(!this._definition || !this._definition.self)
9478 }, e.prototype.valid = function() {
9479 return !this.error()
9480 }, e.prototype.error = function() {
9481 var e = this.options().relative;
9482 if (!this._definition && e) {
9483 var t = e.name ? e.name : e;
9484 return "Could not resolve '" + this.name() + "' from state '" + t + "'"
9486 return this._definition ? this._definition.self ? void 0 : "State '" + this.name() + "' has an invalid definition" : "No such state '" + this.name() + "'"
9487 }, e.prototype.toString = function() {
9488 return "'" + this.name() + "'" + G(this.params())
9489 }, e.prototype.withState = function(t) {
9490 return new e(this._stateRegistry, t, this._params, this._options)
9491 }, e.prototype.withParams = function(t, n) {
9492 void 0 === n && (n = !1);
9493 var r = n ? t : ft({}, this._params, t);
9494 return new e(this._stateRegistry, this._identifier, r, this._options)
9495 }, e.prototype.withOptions = function(t, n) {
9496 void 0 === n && (n = !1);
9497 var r = n ? t : ft({}, this._options, t);
9498 return new e(this._stateRegistry, this._identifier, this._params, r)
9499 }, e.isDef = function(e) {
9500 return e && e.state && (Qe(e.state) || Qe(e.state.name))
9510 function t(t, n, r, i) {
9512 this.transition = t, this.stateContext = n, this.registeredHook = r, this.options = i, this.isSuperseded = function() {
9513 return o.type.hookPhase === e.TransitionHookPhase.RUN && !o.options.transition.isActive()
9514 }, this.options = g(i, Wt), this.type = r.eventType
9516 return t.prototype.logError = function(e) {
9517 this.transition.router.stateService.defaultErrorHandler()(e)
9518 }, t.prototype.invokeHook = function() {
9520 t = this.registeredHook;
9521 if (!t._deregistered) {
9522 var n = this.getNotCurrentRejection();
9524 var r = this.options;
9525 zt.traceHookInvocation(this, this.transition, r);
9526 var i = function(n) {
9527 return t.eventType.getErrorHandler(e)(n)
9530 return t.eventType.getResultHandler(e)(n)
9533 var a = t.callback.call(r.bind, e.transition, e.stateContext);
9534 return !this.type.synchronous && it(a) ? a.catch(function(e) {
9535 return Pt.normalize(e).toPromise()
9536 }).then(o, i) : o(a)
9538 return i(Pt.normalize(e))
9540 t.invokeLimit && ++t.invokeCount >= t.invokeLimit && t.deregister()
9543 }, t.prototype.handleHookResult = function(e) {
9545 n = this.getNotCurrentRejection();
9546 return n || (it(e) ? e.then(function(e) {
9547 return t.handleHookResult(e)
9548 }) : (zt.traceHookResult(e, this.transition, this.options), !1 === e ? Pt.aborted("Hook aborted transition").toPromise() : Le(Bt)(e) ? Pt.redirected(e).toPromise() : void 0))
9549 }, t.prototype.getNotCurrentRejection = function() {
9550 var e = this.transition.router;
9551 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
9552 }, t.prototype.toString = function() {
9555 n = e.registeredHook;
9556 return (Re("traceData.hookType")(t) || "internal") + " context: " + (Re("traceData.context.state.name")(t) || Re("traceData.context")(t) || "unknown") + ", " + V(200, Y(n.callback))
9557 }, t.chain = function(e, t) {
9558 return e.reduce(function(e, t) {
9559 return e.then(function() {
9560 return t.invokeHook()
9562 }, t || at.$q.when())
9563 }, t.invokeHooks = function(e, n) {
9564 for (var r = 0; r < e.length; r++) {
9565 var i = e[r].invokeHook();
9567 var o = e.slice(r + 1);
9568 return t.chain(o, i).then(n)
9572 }, t.runAllHooks = function(e) {
9573 e.forEach(function(e) {
9574 return e.invokeHook()
9576 }, t.HANDLE_RESULT = function(e) {
9577 return function(t) {
9578 return e.handleHookResult(t)
9580 }, t.LOG_REJECTED_RESULT = function(e) {
9581 return function(t) {
9582 it(t) && t.catch(function(t) {
9583 return e.logError(Pt.normalize(t))
9586 }, t.LOG_ERROR = function(e) {
9587 return function(t) {
9588 return e.logError(t)
9590 }, t.REJECT_ERROR = function(e) {
9591 return function(e) {
9594 }, t.THROW_ERROR = function(e) {
9595 return function(e) {
9601 function t(e, t, n, r, i, o) {
9602 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
9604 return t.prototype._matchingNodes = function(e, t) {
9605 if (!0 === t) return e;
9606 var n = e.filter(function(e) {
9607 return R(e.state, t)
9609 return n.length ? n : null
9610 }, t.prototype._getDefaultMatchCriteria = function() {
9611 return E(this.tranSvc._pluginapi._getPathTypes(), function() {
9614 }, t.prototype._getMatchingNodes = function(t) {
9616 r = ft(this._getDefaultMatchCriteria(), this.matchCriteria);
9617 return $t(this.tranSvc._pluginapi._getPathTypes()).reduce(function(i, o) {
9618 var a = o.scope === e.TransitionHookScope.STATE,
9619 s = t[o.name] || [],
9621 return i[o.name] = n._matchingNodes(c, r[o.name]), i
9623 }, t.prototype.matches = function(e) {
9624 var t = this._getMatchingNodes(e);
9625 return $t(t).every(u) ? t : null
9626 }, t.prototype.deregister = function() {
9627 this.removeHookFromRegistry(this), this._deregistered = !0
9634 return t.prototype.buildHooksForPhase = function(e) {
9636 return this.transition.router.transitionService._pluginapi._getEvents(e).map(function(e) {
9637 return t.buildHooks(e)
9638 }).reduce(kt, []).filter(u)
9639 }, t.prototype.buildHooks = function(t) {
9640 var n = this.transition,
9641 r = n.treeChanges(),
9642 i = this.getMatchingHooks(t, r);
9646 current: n.options().current
9648 return i.map(function(i) {
9649 return i.matches(r)[t.criteriaMatchPath.name].map(function(r) {
9657 s = t.criteriaMatchPath.scope === e.TransitionHookScope.STATE ? r.state.self : null,
9658 c = new Yt(n, s, i, a);
9665 }).reduce(kt, []).sort(j(t.reverseSort)).map(function(e) {
9666 return e.transitionHook
9668 }, t.prototype.getMatchingHooks = function(t, n) {
9669 var r = t.hookPhase === e.TransitionHookPhase.CREATE,
9670 i = this.transition.router.transitionService;
9671 return (r ? [i] : [this.transition, i]).map(function(e) {
9672 return e.getHooks(t.name)
9673 }).filter(At(et, "broken event named: " + t.name)).reduce(kt, []).filter(function(e) {
9680 this.pattern = /.*/, this.inherit = !0, ft(this, e)
9682 return e.prototype.is = function(e, t) {
9684 }, e.prototype.encode = function(e, t) {
9686 }, e.prototype.decode = function(e, t) {
9688 }, e.prototype.equals = function(e, t) {
9690 }, e.prototype.$subPattern = function() {
9691 var e = this.pattern.toString();
9692 return e.substr(1, e.length - 2)
9693 }, e.prototype.toString = function() {
9694 return "{ParamType:" + this.name + "}"
9695 }, e.prototype.$normalize = function(e) {
9696 return this.is(e) ? e : this.decode(e)
9697 }, e.prototype.$asArray = function(e, t) {
9698 if (!e) return this;
9699 if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
9700 return new H(this, e)
9703 Xt = Object.prototype.hasOwnProperty,
9705 return 0 === ["value", "type", "squash", "array", "dynamic"].filter(Xt.bind(e || {})).length
9708 e[e.PATH = 0] = "PATH", e[e.SEARCH = 1] = "SEARCH", e[e.CONFIG = 2] = "CONFIG"
9709 }(e.DefType || (e.DefType = {}));
9710 var Jt = function() {
9711 function t(t, n, r, i, o) {
9712 n = F(r = L(r), n, i, t, o.paramTypes);
9713 var a = function() {
9715 array: i === e.DefType.SEARCH && "auto"
9717 o = t.match(/\[\]$/) ? {
9720 return ft(n, o, r).array
9722 n = a ? n.$asArray(a, i === e.DefType.SEARCH) : n;
9723 var s = void 0 !== r.value || i === e.DefType.SEARCH,
9724 c = Ye(r.dynamic) ? !!r.dynamic : !!n.dynamic,
9725 l = Ye(r.raw) ? !!r.raw : !!n.raw,
9726 u = q(r, s, o.defaultSquashPolicy()),
9728 f = Ye(r.inherit) ? !!r.inherit : !!n.inherit;
9743 return t.prototype.isDefaultValue = function(e) {
9744 return this.isOptional && this.type.equals(this.value(), e)
9745 }, t.prototype.value = function(e) {
9747 return e = function(e) {
9748 for (var n = 0, r = t.replace; n < r.length; n++) {
9750 if (i.from === e) return i.to
9753 }(e), We(e) ? function() {
9754 if (t._defaultValueCache) return t._defaultValueCache.defaultValue;
9755 if (!at.$injector) throw new Error("Injectable functions cannot be called at configuration time");
9756 var e = at.$injector.invoke(t.config.$$fn);
9757 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 + ")");
9758 return t.config.$$fn.__cacheable && (t._defaultValueCache = {
9761 }() : this.type.$normalize(e)
9762 }, t.prototype.isSearch = function() {
9763 return this.location === e.DefType.SEARCH
9764 }, t.prototype.validates = function(e) {
9765 if ((We(e) || null === e) && this.isOptional) return !0;
9766 var t = this.type.$normalize(e);
9767 if (!this.type.is(t)) return !1;
9768 var n = this.type.encode(t);
9769 return !(Qe(n) && !this.type.pattern.exec(n))
9770 }, t.prototype.toString = function() {
9771 return "{Param:" + this.id + " " + this.type + " squash: '" + this.squash + "' optional: " + this.isOptional + "}"
9772 }, t.values = function(e, t) {
9773 void 0 === t && (t = {});
9774 for (var n = {}, r = 0, i = e; r < i.length; r++) {
9776 n[o.id] = o.value(t[o.id])
9779 }, t.changed = function(e, t, n) {
9780 return void 0 === t && (t = {}), void 0 === n && (n = {}), e.filter(function(e) {
9781 return !e.type.equals(t[e.id], n[e.id])
9783 }, t.equals = function(e, n, r) {
9784 return void 0 === n && (n = {}), void 0 === r && (r = {}), 0 === t.changed(e, n, r).length
9785 }, t.validates = function(e, t) {
9786 return void 0 === t && (t = {}), e.map(function(e) {
9787 return e.validates(t[e.id])
9793 if (t instanceof e) {
9795 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()
9798 this.state = r, this.paramSchema = r.parameters({
9800 }), this.paramValues = {}, this.resolvables = r.resolvables.map(function(e) {
9805 return e.prototype.applyRawParams = function(e) {
9806 var t = function(t) {
9807 return [t.id, t.value(e[t.id])]
9809 return this.paramValues = this.paramSchema.reduce(function(e, n) {
9812 }, e.prototype.parameter = function(e) {
9813 return w(this.paramSchema, Ie("id", e))
9814 }, e.prototype.equals = function(e, t) {
9815 var n = this.diff(e, t);
9816 return n && 0 === n.length
9817 }, e.prototype.diff = function(e, t) {
9818 if (this.state !== e.state) return !1;
9819 var n = t ? t(this) : this.paramSchema;
9820 return Jt.changed(n, this.paramValues, e.paramValues)
9821 }, e.clone = function(t) {
9827 return e.makeTargetState = function(e, t) {
9829 return new Bt(e, n, t.map(Ne("paramValues")).reduce(yt, {}), {})
9830 }, e.buildPath = function(e) {
9832 return e.$state().path.map(function(e) {
9833 return new en(e).applyRawParams(t)
9835 }, e.buildToPath = function(t, n) {
9836 var r = e.buildPath(n);
9837 return n.options().inherit ? e.inheritParams(t, r, Object.keys(n.params())) : r
9838 }, e.applyViewConfigs = function(t, n, r) {
9839 n.filter(function(e) {
9840 return mt(r, e.state)
9841 }).forEach(function(r) {
9842 var i = $t(r.state.views || {}),
9843 o = e.subPath(n, function(e) {
9846 a = i.map(function(e) {
9847 return t.createViewConfig(o, e)
9849 r.views = a.reduce(kt, [])
9851 }, e.inheritParams = function(e, t, n) {
9853 var n = w(e, Ie("state", t));
9854 return ft({}, n && n.paramValues)
9856 void 0 === n && (n = []);
9857 var i = e.map(function(e) {
9858 return e.paramSchema
9859 }).reduce(kt, []).filter(function(e) {
9862 return t.map(function(t) {
9863 var o = ft({}, t && t.paramValues),
9866 var s = y(r(e, t.state) || {}, i),
9868 return new en(t.state).applyRawParams(c)
9870 }, e.treeChanges = function(t, n, r) {
9871 for (var i = 0, o = Math.min(t.length, n.length); i < o && t[i].state !== r && function(t, n) {
9872 return t.equals(n, e.nonDynamicParams)
9873 }(t[i], n[i]);) i++;
9875 s = (a = t).slice(0, i), c = a.slice(i);
9876 var d = s.map(function(e, t) {
9877 var r = en.clone(e);
9878 return r.paramValues = n[t].paramValues, r
9880 return l = n.slice(i), u = d.concat(l), {
9887 }, e.matching = function(e, t, n) {
9889 return x(e, t).reduce(function(e, t) {
9892 return (r = r || !i.equals(o, n)) ? e : e.concat(i)
9894 }, e.equals = function(t, n, r) {
9895 return t.length === n.length && e.matching(t, n, r).length === t.length
9896 }, e.subPath = function(e, t) {
9899 return -1 === r ? void 0 : e.slice(0, r + 1)
9900 }, e.nonDynamicParams = function(e) {
9901 return e.state.parameters({
9903 }).filter(function(e) {
9906 }, e.paramValues = function(e) {
9907 return e.reduce(function(e, t) {
9908 return ft(e, t.paramValues)
9917 function e(t, n, r, i, o) {
9918 if (this.resolved = !1, this.promise = void 0, t instanceof e) ft(this, t);
9920 if (Ke(t)) throw new Error("new Resolvable(): token argument is required");
9921 if (!Ze(n)) throw new Error("new Resolvable(): resolveFn argument must be a function");
9922 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
9923 } else if (Je(t) && t.token && Ze(t.resolveFn)) {
9925 return new e(a.token, a.resolveFn, a.deps, a.policy, a.data)
9928 return e.prototype.getPolicy = function(e) {
9929 var t = this.policy || {},
9930 n = e && e.resolvePolicy || {};
9932 when: t.when || n.when || nn.when,
9933 async: t.async || n.async || nn.async
9935 }, e.prototype.resolve = function(e, t) {
9938 i = e.findNode(this),
9940 a = "RXWAIT" === this.getPolicy(o).async ? function(e) {
9942 return t.take(1).toPromise().then(function() {
9946 return this.promise = r.when().then(function() {
9947 return r.all(e.getDependencies(n).map(function(n) {
9950 }).then(function(e) {
9951 return n.resolveFn.apply(null, e)
9952 }).then(a).then(function(e) {
9953 return n.data = e, n.resolved = !0, zt.traceResolvableResolved(n, t), n.data
9955 }, e.prototype.get = function(e, t) {
9956 return this.promise || this.resolve(e, t)
9957 }, e.prototype.toString = function() {
9958 return "Resolvable(token: " + G(this.token) + ", requires: [" + this.deps.map(G) + "])"
9959 }, e.prototype.clone = function() {
9961 }, e.fromData = function(t, n) {
9962 return new e(t, function() {
9979 sn = [an.EAGER, an.LAZY],
9981 ln = "Native Injector",
9986 return e.prototype.getTokens = function() {
9987 return this._path.reduce(function(e, t) {
9988 return e.concat(t.resolvables.map(function(e) {
9991 }, []).reduce(xt, [])
9992 }, e.prototype.getResolvable = function(e) {
9993 return M(this._path.map(function(e) {
9994 return e.resolvables
9995 }).reduce(kt, []).filter(function(t) {
9996 return t.token === e
9998 }, e.prototype.getPolicy = function(e) {
9999 var t = this.findNode(e);
10000 return e.getPolicy(t.state)
10001 }, e.prototype.subContext = function(t) {
10002 return new e(tn.subPath(this._path, function(e) {
10003 return e.state === t
10005 }, e.prototype.addResolvables = function(e, t) {
10006 var n = w(this._path, Ie("state", t)),
10007 r = e.map(function(e) {
10010 n.resolvables = n.resolvables.filter(function(e) {
10011 return -1 === r.indexOf(e.token)
10013 }, e.prototype.resolvePath = function(e, t) {
10015 void 0 === e && (e = "LAZY");
10016 var r = (mt(sn, e) ? e : "LAZY") === on.when.EAGER ? cn : sn;
10017 zt.traceResolvePath(this._path, e, t);
10018 var i = function(e, t) {
10019 return function(r) {
10020 return mt(e, n.getPolicy(r)[t])
10023 o = this._path.reduce(function(e, o) {
10024 var a = o.resolvables.filter(i(r, "when")),
10025 s = a.filter(i(["NOWAIT"], "async")),
10026 c = a.filter(Pe(i(["NOWAIT"], "async"))),
10027 l = n.subContext(o.state),
10029 return e.get(l, t).then(function(t) {
10036 return s.forEach(u), e.concat(c.map(u))
10038 return at.$q.all(o)
10039 }, e.prototype.injector = function() {
10040 return this._injector || (this._injector = new dn(this))
10041 }, e.prototype.findNode = function(e) {
10042 return w(this._path, function(t) {
10043 return mt(t.resolvables, e)
10045 }, e.prototype.getDependencies = function(e) {
10047 n = this.findNode(e),
10048 r = (tn.subPath(this._path, function(e) {
10050 }) || this._path).reduce(function(e, t) {
10051 return e.concat(t.resolvables)
10052 }, []).filter(function(t) {
10055 return e.deps.map(function(e) {
10056 var n = r.filter(function(t) {
10057 return t.token === e
10059 if (n.length) return M(n);
10060 var i = t.injector().getNative(e);
10061 if (We(i)) throw new Error("Could not find Dependency Injection token: " + G(e));
10062 return new rn(e, function() {
10070 this.context = e, this.native = this.get(ln) || at.$injector
10072 return e.prototype.get = function(e) {
10073 var t = this.context.getResolvable(e);
10075 if ("NOWAIT" === this.context.getPolicy(t).async) return t.get(this.context);
10076 if (!t.resolved) throw new Error("Resolvable async .get() not complete:" + G(t.token));
10079 return this.getNative(e)
10080 }, e.prototype.getAsync = function(e) {
10081 var t = this.context.getResolvable(e);
10082 return t ? t.get(this.context) : at.$q.when(this.native.get(e))
10083 }, e.prototype.getNative = function(e) {
10084 return this.native && this.native.get(e)
10089 function t(t, n, r) {
10091 if (this._deferred = at.$q.defer(), this.promise = this._deferred.promise, this._registeredHooks = {}, this._hookBuilder = new Kt(this), this.isActive = function() {
10092 return i.router.globals.transition === i
10093 }, this.router = r, this._targetState = n, !n.valid()) throw new Error(n.error());
10094 this._options = ft({
10096 }, n.options()), this.$id = r.transitionService._transitionCount++;
10097 var o = tn.buildToPath(t, n);
10098 this._treeChanges = tn.treeChanges(t, o, this._options.reloadState), this.createTransitionHookRegFns();
10099 var a = this._hookBuilder.buildHooksForPhase(e.TransitionHookPhase.CREATE);
10100 Yt.invokeHooks(a, function() {
10102 }), this.applyViewConfigs(r)
10104 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() {
10106 this.router.transitionService._pluginapi._getEvents().filter(function(t) {
10107 return t.hookPhase !== e.TransitionHookPhase.CREATE
10108 }).forEach(function(e) {
10109 return P(t, t.router.transitionService, e)
10111 }, t.prototype.getHooks = function(e) {
10112 return this._registeredHooks[e]
10113 }, t.prototype.applyViewConfigs = function(e) {
10114 var t = this._treeChanges.entering.map(function(e) {
10117 tn.applyViewConfigs(e.transitionService.$view, this._treeChanges.to, t)
10118 }, t.prototype.$from = function() {
10119 return M(this._treeChanges.from).state
10120 }, t.prototype.$to = function() {
10121 return M(this._treeChanges.to).state
10122 }, t.prototype.from = function() {
10123 return this.$from().self
10124 }, t.prototype.to = function() {
10125 return this.$to().self
10126 }, t.prototype.targetState = function() {
10127 return this._targetState
10128 }, t.prototype.is = function(e) {
10129 return e instanceof t ? this.is({
10131 from: e.$from().name
10132 }) : !(e.to && !R(this.$to(), e.to) || e.from && !R(this.$from(), e.from))
10133 }, t.prototype.params = function(e) {
10134 return void 0 === e && (e = "to"), Object.freeze(this._treeChanges[e].map(Ne("paramValues")).reduce(yt, {}))
10135 }, t.prototype.injector = function(e, t) {
10136 void 0 === t && (t = "to");
10137 var n = this._treeChanges[t];
10138 return e && (n = tn.subPath(n, function(t) {
10139 return t.state === e || t.state.name === e
10140 })), new un(n).injector()
10141 }, t.prototype.getResolveTokens = function(e) {
10142 return void 0 === e && (e = "to"), new un(this._treeChanges[e]).getTokens()
10143 }, t.prototype.addResolvable = function(e, t) {
10144 void 0 === t && (t = ""), e = Le(rn)(e) ? e : new rn(e);
10145 var n = "string" == typeof t ? t : t.name,
10146 r = this._treeChanges.to,
10147 i = w(r, function(e) {
10148 return e.state.name === n
10150 new un(r).addResolvables([e], i.state)
10151 }, t.prototype.redirectedFrom = function() {
10152 return this._options.redirectedFrom || null
10153 }, t.prototype.originalTransition = function() {
10154 var e = this.redirectedFrom();
10155 return e && e.originalTransition() || this
10156 }, t.prototype.options = function() {
10157 return this._options
10158 }, t.prototype.entering = function() {
10159 return E(this._treeChanges.entering, Ne("state")).map(fn)
10160 }, t.prototype.exiting = function() {
10161 return E(this._treeChanges.exiting, Ne("state")).map(fn).reverse()
10162 }, t.prototype.retained = function() {
10163 return E(this._treeChanges.retained, Ne("state")).map(fn)
10164 }, t.prototype.views = function(e, t) {
10165 void 0 === e && (e = "entering");
10166 var n = this._treeChanges[e];
10167 return (n = t ? n.filter(Ie("state", t)) : n).map(Ne("views")).filter(u).reduce(kt, [])
10168 }, t.prototype.treeChanges = function(e) {
10169 return e ? this._treeChanges[e] : this._treeChanges
10170 }, t.prototype.redirect = function(e) {
10171 for (var t = 1, n = this; null != (n = n.redirectedFrom());)
10172 if (++t > 20) throw new Error("Too many consecutive Transition redirects (20+)");
10174 redirectedFrom: this,
10177 "url" === this.options().source && !1 !== e.options().location && (r.location = "replace");
10178 var i = ft({}, this.options(), e.options(), r);
10179 e = e.withOptions(i, !0);
10180 var o = this.router.transitionService.create(this._treeChanges.from, e),
10181 a = this._treeChanges.entering,
10182 s = o._treeChanges.entering;
10183 return tn.matching(s, a, tn.nonDynamicParams).filter(Pe(function(e) {
10184 return function(t) {
10185 return e && t.state.includes[e.name]
10187 }(e.options().reloadState))).forEach(function(e, t) {
10188 e.resolvables = a[t].resolvables
10190 }, t.prototype._changedParams = function() {
10191 var e = this._treeChanges;
10192 if (!(this._options.reload || e.exiting.length || e.entering.length || e.to.length !== e.from.length || x(e.to, e.from).map(function(e) {
10193 return e[0].state !== e[1].state
10194 }).reduce(Et, !1))) {
10195 var t = e.to.map(function(e) {
10196 return e.paramSchema
10198 n = [e.to, e.from].map(function(e) {
10199 return e.map(function(e) {
10200 return e.paramValues
10203 return x(t, n[0], n[1]).map(function(e) {
10207 return Jt.changed(t, n, r)
10210 }, t.prototype.dynamic = function() {
10211 var e = this._changedParams();
10212 return !!e && e.map(function(e) {
10215 }, t.prototype.ignored = function() {
10216 return !!this._ignoredReason()
10217 }, t.prototype._ignoredReason = function() {
10218 var e = this.router.globals.transition,
10219 t = this._options.reloadState,
10220 n = function(e, n) {
10221 if (e.length !== n.length) return !1;
10222 var r = tn.matching(e, n);
10223 return e.length === r.filter(function(e) {
10224 return !t || !e.state.includes[t.name]
10227 r = this.treeChanges(),
10228 i = e && e.treeChanges();
10229 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
10230 }, t.prototype.run = function() {
10232 n = Yt.runAllHooks,
10234 return t._hookBuilder.buildHooksForPhase(e)
10236 i = r(e.TransitionHookPhase.BEFORE);
10237 return Yt.invokeHooks(i, function() {
10238 var e = t.router.globals;
10239 return e.lastStartedTransitionId = t.$id, e.transition = t, e.transitionHistory.enqueue(t), zt.traceTransitionStart(t), at.$q.when(void 0)
10240 }).then(function() {
10241 var t = r(e.TransitionHookPhase.RUN);
10242 return Yt.invokeHooks(t, function() {
10243 return at.$q.when(void 0)
10245 }).then(function() {
10246 zt.traceSuccess(t.$to(), t), t.success = !0, t._deferred.resolve(t.to()), n(r(e.TransitionHookPhase.SUCCESS))
10248 zt.traceError(i, t), t.success = !1, t._deferred.reject(i), t._error = i, n(r(e.TransitionHookPhase.ERROR))
10250 }, t.prototype.valid = function() {
10251 return !this.error() || void 0 !== this.success
10252 }, t.prototype.abort = function() {
10253 We(this.success) && (this._aborted = !0)
10254 }, t.prototype.error = function() {
10255 var e = this.$to();
10256 if (e.self.abstract) return "Cannot transition to abstract state '" + e.name + "'";
10257 var t = e.parameters(),
10259 r = t.filter(function(e) {
10260 return !e.validates(n[e.id])
10262 return r.length ? "Param values not valid for state '" + e.name + "'. Invalid params: [ " + r.map(function(e) {
10264 }).join(", ") + " ]" : !1 === this.success ? this._error : void 0
10265 }, t.prototype.toString = function() {
10266 var e = this.from(),
10269 return null !== e["#"] && void 0 !== e["#"] ? e : y(e, ["#"])
10271 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())) + " )"
10272 }, t.diToken = t, t
10276 var t = Pt.isRejectionPromise;
10277 return (pn = pn || c([
10278 [Pe(Ye), qe("undefined")],
10280 [it, qe("[Promise]")],
10282 return e._transitionRejection.toString()
10284 [Le(Pt), s("toString")],
10285 [Le(hn), s("toString")],
10286 [Le(rn), s("toString")],
10292 return function(t) {
10293 if (!t) return ["", ""];
10294 var n = t.indexOf(e);
10295 return -1 === n ? [t, ""] : [t.substr(0, n), t.substr(n + 1)]
10298 vn = new RegExp("^(?:[a-z]+:)?//[^/]+/"),
10300 return e.replace(/\/[^/]*$/, "")
10306 return e ? e.replace(/^#/, "") : ""
10310 this.enqueue = !0, this.typeQueue = [], this.defaultTypes = b(e.prototype, ["hash", "string", "query", "path", "int", "bool", "date", "json", "any"]);
10311 this.types = pt(E(this.defaultTypes, function(e, t) {
10317 return e.prototype.dispose = function() {
10319 }, e.prototype.type = function(e, t, n) {
10320 if (!Ye(t)) return this.types[e];
10321 if (this.types.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
10322 return this.types[e] = new Zt(ft({
10324 }, t)), n && (this.typeQueue.push({
10327 }), this.enqueue || this._flushTypeQueue()), this
10328 }, e.prototype._flushTypeQueue = function() {
10329 for (; this.typeQueue.length;) {
10330 var e = this.typeQueue.shift();
10331 if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
10332 ft(this.types[e.name], at.$injector.invoke(e.def))
10337 var e = function(e) {
10338 var t = function(e) {
10339 return null != e ? e.toString() : e
10346 equals: function(e, t) {
10350 return ft({}, n, e)
10362 decode: function(e) {
10363 return parseInt(e, 10)
10366 return !Ke(e) && this.decode(e.toString()) === e
10371 encode: function(e) {
10374 decode: function(e) {
10375 return 0 !== parseInt(e, 10)
10381 encode: function(e) {
10382 return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : void 0
10384 decode: function(e) {
10385 if (this.is(e)) return e;
10386 var t = this.capture.exec(e);
10387 return t ? new Date(t[1], t[2] - 1, t[3]) : void 0
10390 return e instanceof Date && !isNaN(e.valueOf())
10392 equals: function(e, t) {
10393 return ["getFullYear", "getMonth", "getDate"].reduce(function(n, r) {
10394 return n && e[r]() === t[r]()
10397 pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
10398 capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
10417 var kn, Cn = function() {
10419 void 0 === e && (e = {}), ft(this, e)
10421 return e.prototype.$inherit = function(e, t, n) {
10422 var r, i = v(t, n),
10426 if (i[s] && i[s].params && (r = Object.keys(i[s].params)).length)
10427 for (var c in r) a.indexOf(r[c]) >= 0 || (a.push(r[c]), o[r[c]] = this[r[c]]);
10428 return ft({}, o, e)
10432 if (!Qe(e)) return !1;
10433 var t = "^" === e.charAt(0);
10435 val: t ? e.substring(1) : e,
10439 Tn = function(e, t) {
10440 return function(n) {
10442 r && r.url && r.name && r.name.match(/\.\*\*$/) && (r.url += "{remainder:any}");
10445 a = i ? e.compile(i.val, {
10446 params: n.params || {},
10447 paramMap: function(e, t) {
10448 return !1 === r.reloadOnSearch && t && (e = ft(e || {}, {
10453 if (!a) return null;
10454 if (!e.isMatcher(a)) throw new Error("Invalid url '" + a + "' in state '" + n + "'");
10455 return i && i.root ? a : (o && o.navigable || t()).url.append(a)
10459 return function(t) {
10460 return !e(t) && t.url ? t : t.parent ? t.parent.navigable : null
10464 return function(t) {
10465 var n = t.url && t.url.parameters({
10468 r = $t(_t(y(t.params || {}, n.map(Ne("id"))), function(t, n) {
10469 return e.fromConfig(n, null, t)
10471 return n.concat(r).map(function(e) {
10484 return "" === e.name
10489 parent: [function(t) {
10490 return i(t) ? null : e.find(n.parentName(t)) || r()
10494 navigable: [Mn(i)],
10495 params: [An(t.paramFactory)],
10502 return e.prototype.builder = function(e, t) {
10503 var n = this.builders,
10505 return Qe(e) && !Ye(t) ? r.length > 1 ? r : r[0] : Qe(e) && Ze(t) ? (n[e] = r, n[e].push(t), function() {
10506 return n[e].splice(n[e].indexOf(t, 1)) && null
10508 }, e.prototype.build = function(e) {
10512 i = this.parentName(e);
10513 if (i && !n.find(i, void 0, !1)) return null;
10515 if (r.hasOwnProperty(o)) {
10516 var a = r[o].reduce(function(e, t) {
10517 return function(n) {
10524 }, e.prototype.parentName = function(e) {
10525 var t = e.name || "",
10527 if ("**" === n.pop() && n.pop(), n.length) {
10528 if (e.parent) throw new Error("States that specify the 'parent:' property should not have a '.' in their name (" + t + ")");
10531 return e.parent ? Qe(e.parent) ? e.parent : e.parent.name : ""
10532 }, e.prototype.name = function(e) {
10534 if (-1 !== t.indexOf(".") || !e.parent) return t;
10535 var n = Qe(e.parent) ? e.parent : e.parent.name;
10536 return n ? n + "." + t : t
10543 return e.prototype.isRelative = function(e) {
10544 return 0 === (e = e || "").indexOf(".") || 0 === e.indexOf("^")
10545 }, e.prototype.find = function(e, t, n) {
10546 if (void 0 === n && (n = !0), e || "" === e) {
10548 i = r ? e : e.name;
10549 this.isRelative(i) && (i = this.resolvePath(i, t));
10550 var o = this._states[i];
10551 if (o && (r || !(r || o !== e && o.self !== e))) return o;
10553 var a = $t(this._states).filter(function(e) {
10554 return e.__stateObjectCache.nameGlob && e.__stateObjectCache.nameGlob.matches(i)
10556 return a.length > 1 && console.log("stateMatcher.find: Found multiple matches for " + i + " using glob: ", a.map(function(e) {
10561 }, e.prototype.resolvePath = function(e, t) {
10562 if (!t) throw new Error("No reference point given for path '" + e + "'");
10563 for (var n = this.find(t), r = e.split("."), i = 0, o = r.length, a = n; i < o; i++)
10564 if ("" !== r[i] || 0 !== i) {
10565 if ("^" !== r[i]) break;
10566 if (!a.parent) throw new Error("Path '" + e + "' not valid for state '" + n.name + "'");
10569 var s = r.slice(i).join(".");
10570 return a.name + (a.name && s ? "." : "") + s
10574 function e(e, t, n, r, i) {
10575 this.$registry = e, this.$urlRouter = t, this.states = n, this.builder = r, this.listeners = i, this.queue = [], this.matcher = e.matcher
10577 return e.prototype.dispose = function() {
10579 }, e.prototype.register = function(e) {
10580 var t = this.queue,
10583 if (!Qe(r)) throw new Error("State must have a valid name");
10584 if (this.states.hasOwnProperty(r) || mt(t.map(Ne("name")), r)) throw new Error("State '" + r + "' is already defined");
10585 return t.push(n), this.flush(), n
10586 }, e.prototype.flush = function() {
10587 for (var e = this, t = this, n = t.queue, r = t.states, i = t.builder, o = [], a = [], s = {}, c = function(t) {
10588 return e.states.hasOwnProperty(t) && e.states[t]
10589 }; n.length > 0;) {
10596 if (h && h.name === u) throw new Error("State '" + u + "' is already defined");
10597 var p = c(u + ".**");
10598 p && this.$registry.deregister(p), r[u] = l, this.attachRoute(l), f >= 0 && a.splice(f, 1), o.push(l)
10601 if (s[u] = n.length, f >= 0 && m === n.length) return n.push(l), r;
10602 f < 0 && a.push(l), n.push(l)
10605 return o.length && this.listeners.forEach(function(e) {
10606 return e("registered", o.map(function(e) {
10610 }, e.prototype.attachRoute = function(e) {
10611 !e.abstract && e.url && this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(e))
10616 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()
10618 return e.prototype._registerRoot = function() {
10632 (this._root = this.stateQueue.register(e)).navigable = null
10633 }, e.prototype.dispose = function() {
10635 this.stateQueue.dispose(), this.listeners = [], this.get().forEach(function(t) {
10636 return e.get(t) && e.deregister(t)
10638 }, e.prototype.onStatesChanged = function(e) {
10639 return this.listeners.push(e),
10641 gt(this.listeners)(e)
10643 }, e.prototype.root = function() {
10645 }, e.prototype.register = function(e) {
10646 return this.stateQueue.register(e)
10647 }, e.prototype._deregisterTree = function(e) {
10649 n = this.get().map(function(e) {
10653 var t = n.filter(function(t) {
10654 return -1 !== e.indexOf(t.parent)
10656 return 0 === t.length ? t : t.concat(r(t))
10659 o = [e].concat(i).reverse();
10660 return o.forEach(function(e) {
10661 var n = t._router.urlRouter;
10662 n.rules().filter(Ie("state", e)).forEach(n.removeRule.bind(n)), delete t.states[e.name]
10664 }, e.prototype.deregister = function(e) {
10665 var t = this.get(e);
10666 if (!t) throw new Error("Can't deregister state; not found: " + e);
10667 var n = this._deregisterTree(t.$$state());
10668 return this.listeners.forEach(function(e) {
10669 return e("deregistered", n.map(function(e) {
10673 }, e.prototype.get = function(e, t) {
10675 if (0 === arguments.length) return Object.keys(this.states).map(function(e) {
10676 return n.states[e].self
10678 var r = this.matcher.find(e, t);
10679 return r && r.self || null
10680 }, e.prototype.decorator = function(e, t) {
10681 return this.builder.builder(e, t)
10684 In = function(e, t, n) {
10685 return e[t] = e[t] || n()
10689 function t(e, n, r, i) {
10691 this.config = i, this._cache = {
10693 }, this._children = [], this._params = [], this._segments = [], this._compiled = [], this.pattern = e, this.config = g(this.config, {
10696 caseInsensitive: !1,
10699 for (var a, s, c, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, d = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, f = 0, h = [], p = function(n) {
10700 if (!t.nameValidator.test(n)) throw new Error("Invalid parameter name '" + n + "' in pattern '" + e + "'");
10701 if (w(o._params, Ie("id", n))) throw new Error("Duplicate parameter name '" + n + "' in pattern '" + e + "'")
10702 }, m = function(t, r) {
10703 var i = t[2] || t[3],
10704 a = r ? t[4] : t[4] || ("*" === t[1] ? "[\\s\\S]*" : null);
10708 cfg: o.config.params[i],
10709 segment: e.substring(f, t.index),
10710 type: a ? n.type(a) || function(e) {
10711 return pt(n.type(r ? "query" : "path"), {
10712 pattern: new RegExp(e, o.config.caseInsensitive ? "i" : void 0)
10717 (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;
10718 var v = (c = e.substring(f)).indexOf("?");
10720 var b = c.substring(v);
10721 if (c = c.substring(0, v), b.length > 0)
10722 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
10724 this._segments.push(c), this._compiled = h.map(function(e) {
10725 return re.apply(null, e)
10728 return t.prototype.append = function(e) {
10729 return this._children.push(e), e._cache = {
10730 path: this._cache.path.concat(e),
10734 }, t.prototype.isRoot = function() {
10735 return this._cache.path[0] === this
10736 }, t.prototype.toString = function() {
10737 return this.pattern
10738 }, t.prototype.exec = function(e, t, n, r) {
10740 void 0 === t && (t = {}), void 0 === r && (r = {});
10741 var o = In(this._cache, "pattern", function() {
10742 return new RegExp(["^", Tt(i._cache.path.map(Ne("_compiled"))).join(""), !1 === i.config.strict ? "/?" : "", "$"].join(""), i.config.caseInsensitive ? "i" : void 0)
10744 if (!o) return null;
10745 var a = this.parameters(),
10746 s = a.filter(function(e) {
10747 return !e.isSearch()
10749 c = a.filter(function(e) {
10750 return e.isSearch()
10752 l = this._cache.path.map(function(e) {
10753 return e._segments.length - 1
10754 }).reduce(function(e, t) {
10758 if (l !== o.length - 1) throw new Error("Unbalanced capture group in route '" + this.pattern + "'");
10759 for (var d = 0; d < l; d++) {
10760 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);
10761 h && !0 === f.array && (h = function(e) {
10762 var t = function(e) {
10763 return e.split("").reverse().join("")
10765 return E(E(t(e).split(/-(?!\\)/), t), function(e) {
10766 return e.replace(/\\-/g, "-")
10768 }(h)), Ye(h) && (h = f.type.decode(h)), u[f.id] = f.value(h)
10770 return c.forEach(function(e) {
10771 for (var n = t[e.id], r = 0; r < e.replace.length; r++) e.replace[r].from === n && (n = e.replace[r].to);
10772 Ye(n) && (n = e.type.decode(n)), u[e.id] = e.value(n)
10773 }), n && (u["#"] = n), u
10774 }, t.prototype.parameters = function(e) {
10775 return void 0 === e && (e = {}), !1 === e.inherit ? this._params : Tt(this._cache.path.map(function(e) {
10778 }, t.prototype.parameter = function(e, t) {
10780 void 0 === t && (t = {});
10781 var r = this._cache.parent;
10782 return function() {
10783 for (var t = 0, r = n._params; t < r.length; t++) {
10785 if (i.id === e) return i
10787 }() || !1 !== t.inherit && r && r.parameter(e, t) || null
10788 }, t.prototype.validates = function(e) {
10789 var t = function(e, t) {
10790 return !e || e.validates(t)
10792 return e = e || {}, this.parameters().filter(function(t) {
10793 return e.hasOwnProperty(t.id)
10794 }).map(function(n) {
10795 return t(n, e[n.id])
10797 }, t.prototype.format = function(e) {
10799 var n = t.value(e[t.id]),
10800 r = t.validates(n),
10801 i = t.isDefaultValue(n);
10807 squash: !!i && t.squash,
10808 encoded: t.type.encode(n)
10811 void 0 === e && (e = {});
10812 var r = this._cache.path,
10813 i = r.map(t.pathSegmentsAndParams).reduce(kt, []).map(function(e) {
10814 return Qe(e) ? e : n(e)
10816 o = r.map(t.queryParams).reduce(kt, []).map(n);
10817 if (i.concat(o).filter(function(e) {
10818 return !1 === e.isValid
10819 }).length) return null;
10820 var a = i.reduce(function(e, n) {
10821 if (Qe(n)) return e + n;
10825 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)
10827 s = o.map(function(e) {
10831 i = e.isDefaultValue;
10832 if (!(null == r || i && !1 !== n) && (et(r) || (r = [r]), 0 !== r.length)) return t.raw || (r = E(r, encodeURIComponent)), r.map(function(e) {
10833 return t.id + "=" + e
10835 }).filter(u).reduce(kt, []).join("&");
10836 return a + (s ? "?" + s : "") + (e["#"] ? "#" + e["#"] : "")
10837 }, t.encodeDashes = function(e) {
10838 return encodeURIComponent(e).replace(/-/g, function(e) {
10839 return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
10841 }, t.pathSegmentsAndParams = function(t) {
10842 return x(t._segments, t._params.filter(function(t) {
10843 return t.location === e.DefType.PATH
10844 }).concat(void 0)).reduce(kt, []).filter(function(e) {
10845 return "" !== e && Ye(e)
10847 }, t.queryParams = function(t) {
10848 return t._params.filter(function(t) {
10849 return t.location === e.DefType.SEARCH
10851 }, t.compare = function(e, n) {
10852 var r = function(e) {
10853 return e._cache.segments = e._cache.segments || e._cache.path.map(t.pathSegmentsAndParams).reduce(kt, []).reduce(Z, []).map(function(e) {
10854 return Qe(e) ? Rn(e) : e
10858 return e._cache.weights = e._cache.weights || r(e).map(function(e) {
10859 return "/" === e ? 1 : Qe(e) ? 2 : e instanceof Jt ? 3 : void 0
10864 ! function(e, t, n) {
10865 for (var r = Math.max(e.length, t.length); e.length < r;) e.push(n);
10866 for (; t.length < r;) t.push(n)
10868 var s, c, l = x(o, a);
10869 for (c = 0; c < l.length; c++)
10870 if (0 != (s = l[c][0] - l[c][1])) return s;
10872 }, t.nameValidator = /^\w+([-.]+\w+)*(?:\[\])?$/, t
10877 this.paramTypes = new En, this._isCaseInsensitive = !1, this._isStrictMode = !0, this._defaultSquashPolicy = !1, this._getConfig = function(e) {
10879 strict: t._isStrictMode,
10880 caseInsensitive: t._isCaseInsensitive
10882 }, this.paramFactory = {
10883 fromConfig: function(n, r, i) {
10884 return new Jt(n, r, i, e.DefType.CONFIG, t)
10886 fromPath: function(n, r, i) {
10887 return new Jt(n, r, i, e.DefType.PATH, t)
10889 fromSearch: function(n, r, i) {
10890 return new Jt(n, r, i, e.DefType.SEARCH, t)
10897 return t.prototype.caseInsensitive = function(e) {
10898 return this._isCaseInsensitive = Ye(e) ? e : this._isCaseInsensitive
10899 }, t.prototype.strictMode = function(e) {
10900 return this._isStrictMode = Ye(e) ? e : this._isStrictMode
10901 }, t.prototype.defaultSquashPolicy = function(e) {
10902 if (Ye(e) && !0 !== e && !1 !== e && !Qe(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
10903 return this._defaultSquashPolicy = Ye(e) ? e : this._defaultSquashPolicy
10904 }, t.prototype.compile = function(e, t) {
10905 return new Pn(e, this.paramTypes, this.paramFactory, this._getConfig(t))
10906 }, t.prototype.isMatcher = function(e) {
10907 if (!Je(e)) return !1;
10909 return dt(Pn.prototype, function(n, r) {
10910 Ze(n) && (t = t && Ye(e[r]) && Ze(e[r]))
10912 }, t.prototype.type = function(e, t, n) {
10913 var r = this.paramTypes.type(e, t, n);
10914 return Ye(t) ? this : r
10915 }, t.prototype.$get = function() {
10916 return this.paramTypes.enqueue = !1, this.paramTypes._flushTypeQueue(), this
10917 }, t.prototype.dispose = function() {
10918 this.paramTypes.dispose()
10925 return e.prototype.compile = function(e) {
10926 return this.router.urlMatcherFactory.compile(e)
10927 }, e.prototype.create = function(e, t) {
10931 return r(n.compile(e))
10933 [Le(Pn), function(e) {
10934 return n.fromUrlMatcher(e, t)
10937 return n.fromState(e, n.router)
10939 [Le(RegExp), function(e) {
10940 return n.fromRegExp(e, t)
10943 return new Ln(e, t)
10947 if (!i) throw new Error("invalid 'what' in when()");
10949 }, e.prototype.fromUrlMatcher = function(e, t) {
10951 Qe(t) && (t = this.router.urlMatcherFactory.compile(t)), Le(Pn)(t) && (n = function(e) {
10956 matchPriority: function(t) {
10957 var n = e.parameters().filter(function(e) {
10958 return e.isOptional
10960 return n.length ? n.filter(function(e) {
10962 }).length / n.length : 1e-6
10966 return ft(new Ln(function(t) {
10967 var n = e.exec(t.path, t.search, t.hash);
10968 return e.validates(n) && n
10970 }, e.prototype.fromState = function(e, t) {
10975 return ft(this.fromUrlMatcher(e.url, function(n) {
10976 var r = t.stateService,
10978 r.href(e, n) !== r.href(i.current, i.params) && r.transitionTo(e, n, {
10983 }, e.prototype.fromRegExp = function(e, t) {
10984 if (e.global || e.sticky) throw new Error("Rule RegExp must not be global or sticky");
10985 var n = Qe(t) ? function(e) {
10986 return t.replace(/\$(\$|\d{1,2})/, function(t, n) {
10987 return e["$" === n ? 0 : Number(n)]
10994 return ft(new Ln(function(t) {
10995 return e.exec(t.path)
10997 }, e.isUrlRule = function(e) {
10998 return e && ["type", "match", "handler"].every(function(t) {
11004 return function(e, t) {
11006 this.match = e, this.type = "RAW", this.matchPriority = function(e) {
11008 }, this.handler = t || u
11011 Fn = function(e, t) {
11012 return (t.priority || 0) - (e.priority || 0)
11014 qn = function(e, t) {
11022 return (n[e.type] || 0) - (n[t.type] || 0)
11024 Un = function(e, t) {
11025 return e.urlMatcher && t.urlMatcher ? Pn.compare(e.urlMatcher, t.urlMatcher) : 0
11027 Vn = function(e, t) {
11032 return n[e.type] && n[t.type] ? 0 : (e.$id || 0) - (t.$id || 0)
11034 kn = function(e, t) {
11036 return 0 !== n ? n : 0 !== (n = qn(e, t)) ? n : 0 !== (n = Un(e, t)) ? n : Vn(e, t)
11038 var zn = function() {
11040 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))
11042 return e.prototype.dispose = function() {
11043 this.listen(!1), this._rules = [], delete this._otherwiseFn
11044 }, e.prototype.sort = function(e) {
11045 this._rules = this.stableSort(this._rules, this._sortFn = e || this._sortFn), this._sorted = !0
11046 }, e.prototype.ensureSorted = function() {
11047 this._sorted || this.sort()
11048 }, e.prototype.stableSort = function(e, t) {
11049 var n = e.map(function(e, t) {
11055 return n.sort(function(e, n) {
11056 var r = t(e.elem, n.elem);
11057 return 0 === r ? e.idx - n.idx : r
11058 }), n.map(function(e) {
11061 }, e.prototype.match = function(e) {
11063 this.ensureSorted(), e = ft({
11068 var n = this.rules();
11069 this._otherwiseFn && n.push(this._otherwiseFn);
11070 for (var r, i = 0; i < n.length && (!r || 0 === this._sortFn(n[i], r.rule)); i++) {
11071 var o = function(n) {
11072 var r = n.match(e, t._router);
11076 weight: n.matchPriority(r)
11079 r = !r || o && o.weight > r.weight ? o : r
11082 }, e.prototype.sync = function(e) {
11083 if (!e || !e.defaultPrevented) {
11084 var t = this._router,
11086 r = t.stateService,
11089 search: n.search(),
11095 return n.url(e, !0)
11097 [Bt.isDef, function(e) {
11098 return r.go(e.state, e.params, e.options)
11100 [Le(Bt), function(e) {
11101 return r.go(e.state(), e.params(), e.options())
11103 ])(o && o.rule.handler(o.match, i, t))
11105 }, e.prototype.listen = function(e) {
11107 if (!1 !== e) return this._stopFn = this._stopFn || this._router.urlService.onChange(function(e) {
11110 this._stopFn && this._stopFn(), delete this._stopFn
11111 }, e.prototype.update = function(e) {
11112 var t = this._router.locationService;
11113 e ? this.location = t.path() : t.path() !== this.location && t.url(this.location, !0)
11114 }, e.prototype.push = function(e, t, n) {
11115 var r = n && !!n.replace;
11116 this._router.urlService.url(e.format(t || {}), r)
11117 }, e.prototype.href = function(e, t, n) {
11118 var r = e.format(t);
11119 if (null == r) return null;
11123 var i = this._router.urlService.config,
11125 if (o || null === r || (r = "#" + i.hashPrefix() + r), r = ie(r, o, n.absolute, i.baseHref()), !n.absolute || !r) return r;
11126 var a = !o && r ? "/" : "",
11128 return s = 80 === s || 443 === s ? "" : ":" + s, [i.protocol(), "://", i.host(), s, a, r].join("")
11129 }, e.prototype.rule = function(e) {
11131 if (!Hn.isUrlRule(e)) throw new Error("invalid rule");
11132 return e.$id = this._id++, e.priority = e.priority || 0, this._rules.push(e), this._sorted = !1,
11134 return t.removeRule(e)
11136 }, e.prototype.removeRule = function(e) {
11138 }, e.prototype.rules = function() {
11139 return this.ensureSorted(), this._rules.slice()
11140 }, e.prototype.otherwise = function(e) {
11142 this._otherwiseFn = this.urlRuleFactory.create(qe(!0), t), this._sorted = !1
11143 }, e.prototype.initial = function(e) {
11145 this.rule(this.urlRuleFactory.create(function(e, t) {
11146 return 0 === t.globals.transitionHistory.size() && !!/^\/?$/.exec(e.path)
11148 }, e.prototype.when = function(e, t, n) {
11149 var r = this.urlRuleFactory.create(e, t);
11150 return Ye(n && n.priority) && (r.priority = n.priority), this.rule(r), r
11151 }, e.prototype.deferIntercept = function(e) {
11152 void 0 === e && (e = !0), this.interceptDeferred = e
11158 this._uiViews = [], this._viewConfigs = [], this._viewConfigFactories = {}, this._pluginapi = {
11159 _rootViewContext: this._rootViewContext.bind(this),
11160 _viewConfigFactory: this._viewConfigFactory.bind(this),
11161 _registeredUIViews: function() {
11164 _activeViewConfigs: function() {
11165 return e._viewConfigs
11169 return e.prototype._rootViewContext = function(e) {
11170 return this._rootContext = e || this._rootContext
11171 }, e.prototype._viewConfigFactory = function(e, t) {
11172 this._viewConfigFactories[e] = t
11173 }, e.prototype.createViewConfig = function(e, t) {
11174 var n = this._viewConfigFactories[t.$type];
11175 if (!n) throw new Error("ViewService: No view config factory registered for type " + t.$type);
11177 return et(r) ? r : [r]
11178 }, e.prototype.deactivateViewConfig = function(e) {
11179 zt.traceViewServiceEvent("<- Removing", e), gt(this._viewConfigs, e)
11180 }, e.prototype.activateViewConfig = function(e) {
11181 zt.traceViewServiceEvent("-> Registering", e), this._viewConfigs.push(e)
11182 }, e.prototype.sync = function() {
11184 for (var t = e.viewDecl.$context, n = 0; ++n && t.parent;) t = t.parent;
11188 i = this._uiViews.map(function(e) {
11191 o = n(function(e, t, n, r) {
11192 return t * (e(n) - e(r))
11194 a = this._uiViews.sort(o(function(e) {
11195 var t = function(e) {
11196 return e && e.parent ? t(e.parent) + 1 : 1
11198 return 1e4 * e.fqn.split(".").length + t(e.creationContext)
11199 }, 1)).map(function(n) {
11200 var a = r._viewConfigs.filter(e.matches(i, n));
11201 return a.length > 1 && a.sort(o(t, -1)), [n, a[0]]
11203 zt.traceViewSync(a), a.forEach(function(e) {
11205 n = e[1]; - 1 !== r._uiViews.indexOf(t) && t.configUpdated(n)
11207 }, e.prototype.registerUIView = function(e) {
11208 zt.traceViewServiceUIViewEvent("-> Registering", e);
11209 var t = this._uiViews;
11210 return t.filter(function(t) {
11211 return t.fqn === e.fqn && t.$type === e.$type
11212 }).length && zt.traceViewServiceUIViewEvent("!!!! duplicate uiView named:", e), t.push(e), this.sync(),
11214 -1 !== t.indexOf(e) ? (zt.traceViewServiceUIViewEvent("<- Deregistering", e), gt(t)(e)) : zt.traceViewServiceUIViewEvent("Tried removing non-registered uiView", e)
11216 }, e.prototype.available = function() {
11217 return this._uiViews.map(Ne("fqn"))
11218 }, e.prototype.active = function() {
11219 return this._uiViews.filter(Ne("$config")).map(Ne("name"))
11220 }, e.normalizeUIViewTarget = function(e, t) {
11221 void 0 === t && (t = "");
11222 var n = t.split("@"),
11223 r = n[0] || "$default",
11224 i = Qe(n[1]) ? n[1] : "^",
11225 o = /^(\^(?:\.\^)*)\.(.*$)/.exec(r);
11226 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) {
11228 }, e).name : "." === i && (i = e.name), {
11230 uiViewContextAnchor: i
11232 }, e.matches = function(e, t) {
11233 return function(n) {
11234 if (t.$type !== n.viewDecl.$type) return !1;
11235 var r = n.viewDecl,
11236 i = r.$uiViewName.split("."),
11237 o = t.fqn.split(".");
11238 if (!ht(i, o.slice(0 - i.length))) return !1;
11239 var a = 1 - i.length || void 0,
11240 s = o.slice(0, a).join("."),
11241 c = e[s].creationContext;
11242 return r.$uiViewContextAnchor === (c && c.name)
11248 this.params = new Cn, this.lastStartedTransitionId = -1, this.transitionHistory = new It([], 1), this.successfulTransitions = new It([], 1)
11250 return e.prototype.dispose = function() {
11251 this.transitionHistory.clear(), this.successfulTransitions.clear(), this.transition = null
11255 return e.reduce(function(e, t) {
11256 return e[t] = ot(t), e
11261 Gn = ["url", "path", "search", "hash", "onChange"],
11262 Kn = ["port", "protocol", "host", "baseHref", "html5Mode", "hashPrefix"],
11263 Zn = ["type", "caseInsensitive", "strictMode", "defaultSquashPolicy"],
11264 Xn = ["sort", "when", "initial", "otherwise", "rules", "rule", "removeRule"],
11265 Qn = ["deferIntercept", "listen", "sync", "match"],
11268 void 0 === t && (t = !0), this.router = e, this.rules = {}, this.config = {};
11269 var n = function() {
11270 return e.locationService
11272 f(n, this, n, Gn, t);
11273 var r = function() {
11274 return e.locationConfig
11276 f(r, this.config, r, Kn, t);
11277 var i = function() {
11278 return e.urlMatcherFactory
11280 f(i, this.config, i, Zn);
11281 var o = function() {
11284 f(o, this.rules, o, Xn), f(o, this, o, Qn)
11286 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() {
11289 search: this.search(),
11292 }, 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
11297 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)
11299 return e.prototype.disposable = function(e) {
11300 this._disposables.push(e)
11301 }, e.prototype.dispose = function(e) {
11303 e && Ze(e.dispose) ? e.dispose(this) : (this._disposed = !0, this._disposables.slice().forEach(function(e) {
11305 "function" == typeof e.dispose && e.dispose(t), gt(t._disposables, e)
11308 }, e.prototype.plugin = function(e, t) {
11309 void 0 === t && (t = {});
11310 var n = new e(this, t);
11311 if (!n.name) throw new Error("Required property `name` missing on plugin: " + n);
11312 return this._disposables.push(n), this._plugins[n.name] = n
11313 }, e.prototype.getPlugin = function(e) {
11314 return e ? this._plugins[e] : $t(this._plugins)
11318 return e.onCreate({}, ae)
11322 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
11324 var n = e.to().redirectTo;
11326 var r = e.router.stateService;
11327 return Ze(n) ? at.$q.when(n(e)).then(t) : t(n)
11333 return !!e.redirectTo
11340 exiting: function(e) {
11345 sr = se("onRetain"),
11347 return e.onRetain({
11348 retained: function(e) {
11349 return !!e.onRetain
11353 lr = se("onEnter"),
11356 entering: function(e) {
11362 return new un(e.treeChanges().to).resolvePath("EAGER", e).then(d)
11365 return e.onStart({}, dr, {
11369 hr = function(e, t) {
11370 return new un(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY", e).then(d)
11381 n = e.views("entering");
11382 if (n.length) return t.all(n.map(function(e) {
11383 return t.when(e.load())
11387 return e.onFinish({}, mr)
11390 var t = e.views("entering"),
11391 n = e.views("exiting");
11392 if (t.length || n.length) {
11393 var r = e.router.viewService;
11394 n.forEach(function(e) {
11395 return r.deactivateViewConfig(e)
11396 }), t.forEach(function(e) {
11397 return r.activateViewConfig(e)
11402 return e.onSuccess({}, vr)
11405 var t = e.router.globals,
11407 t.transition === e && (t.transition = null)
11409 e.onSuccess({}, function() {
11410 t.successfulTransitions.enqueue(e), t.$current = e.$to(), t.current = t.$current.self, A(e.params(), t.params)
11413 }), e.promise.then(n, n)
11416 return e.onCreate({}, yr)
11419 var t = e.options(),
11420 n = e.router.stateService,
11421 r = e.router.urlRouter;
11422 if ("url" !== t.source && t.location && n.$current.navigable) {
11424 replace: "replace" === t.location
11426 r.push(n.$current.navigable.url, n.params, i)
11431 return e.onSuccess({}, $r, {
11437 n = e.entering().filter(function(e) {
11438 return !!e.$$state().lazyLoad
11439 }).map(function(t) {
11442 return at.$q.all(n).then(function() {
11443 if ("url" !== e.originalTransition().options().source) {
11444 var n = e.targetState();
11445 return t.stateService.target(n.identifier(), n.params(), n.options())
11447 var r = t.urlService,
11448 i = r.match(r.parts()),
11450 if (o && "STATE" === o.type) {
11453 return t.stateService.target(a, s, e.options())
11455 t.urlService.sync()
11459 return e.onBefore({
11460 entering: function(e) {
11461 return !!e.lazyLoad
11466 return function(e, t, n, r, i, o, a, s) {
11467 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
11471 return e.onBefore({}, le, {
11476 return e.onBefore({}, ue, {
11487 current: function() {
11494 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()
11496 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) {
11497 $t(this._registeredHooks).forEach(function(e) {
11498 return e.forEach(function(t) {
11499 t._deregistered = !0, gt(e, t)
11502 }, t.prototype.create = function(e, t) {
11503 return new hn(e, t, this._router)
11504 }, t.prototype._defineCoreEvents = function() {
11505 var t = e.TransitionHookPhase,
11507 r = this._criteriaPaths;
11508 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)
11509 }, t.prototype._defineCorePaths = function() {
11510 var t = e.TransitionHookScope.STATE,
11511 n = e.TransitionHookScope.TRANSITION;
11512 this._definePathType("to", n), this._definePathType("from", n), this._definePathType("exiting", t), this._definePathType("retained", t), this._definePathType("entering", t)
11513 }, t.prototype._defineEvent = function(e, t, n, r, i, o, a, s) {
11514 void 0 === i && (i = !1), void 0 === o && (o = Yt.HANDLE_RESULT), void 0 === a && (a = Yt.REJECT_ERROR), void 0 === s && (s = !1);
11515 var c = new Cr(e, t, n, r, i, o, a, s);
11516 this._eventTypes.push(c), P(this, this, c)
11517 }, t.prototype._getEvents = function(e) {
11518 return (Ye(e) ? this._eventTypes.filter(function(t) {
11519 return t.hookPhase === e
11520 }) : this._eventTypes.slice()).sort(function(e, t) {
11521 var n = e.hookPhase - t.hookPhase;
11522 return 0 === n ? e.hookOrder - t.hookOrder : n
11524 }, t.prototype._definePathType = function(e, t) {
11525 this._criteriaPaths[e] = {
11529 }, t.prototype._getPathTypes = function() {
11530 return this._criteriaPaths
11531 }, t.prototype.getHooks = function(e) {
11532 return this._registeredHooks[e]
11533 }, t.prototype._registerCoreTransitionHooks = function() {
11534 var e = this._deregisterHookFns;
11535 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)
11540 this.router = e, this.invalidCallbacks = [], this._defaultErrorHandler = function(e) {
11541 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)
11543 var n = ["current", "$current", "params", "transition"],
11544 r = Object.keys(t.prototype).filter(Pe(mt(n)));
11545 f(qe(t.prototype), this, qe(this), r)
11547 return Object.defineProperty(t.prototype, "transition", {
11549 return this.router.globals.transition
11553 }), Object.defineProperty(t.prototype, "params", {
11555 return this.router.globals.params
11559 }), Object.defineProperty(t.prototype, "current", {
11561 return this.router.globals.current
11565 }), Object.defineProperty(t.prototype, "$current", {
11567 return this.router.globals.$current
11571 }), t.prototype.dispose = function() {
11572 this.defaultErrorHandler(d), this.invalidCallbacks = []
11573 }, t.prototype._handleInvalidTargetState = function(e, t) {
11575 var e = c.dequeue();
11576 return void 0 === e ? Pt.invalid(t.error()).toPromise() : at.$q.when(e(t, i, l)).then(u).then(function(e) {
11581 i = tn.makeTargetState(this.router.stateRegistry, e),
11582 o = this.router.globals,
11584 return o.transitionHistory.peekTail()
11587 c = new It(this.invalidCallbacks.slice()),
11588 l = new un(e).injector(),
11590 if (e instanceof Bt) {
11592 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()
11596 }, t.prototype.onInvalid = function(e) {
11597 return this.invalidCallbacks.push(e),
11599 gt(this.invalidCallbacks)(e)
11601 }, t.prototype.reload = function(e) {
11602 return this.transitionTo(this.current, this.params, {
11603 reload: !Ye(e) || e,
11607 }, t.prototype.go = function(e, t, n) {
11609 relative: this.$current,
11612 return this.transitionTo(e, t, r)
11613 }, t.prototype.target = function(e, t, n) {
11614 if (void 0 === n && (n = {}), Je(n.reload) && !n.reload.name) throw new Error("Invalid reload state object");
11615 var r = this.router.stateRegistry;
11616 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) + "'");
11617 return new Bt(this.router.stateRegistry, e, t, n)
11618 }, t.prototype.getCurrentPath = function() {
11620 t = this.router.globals.successfulTransitions.peekTail();
11621 return t ? t.treeChanges().to : [new en(e.router.stateRegistry.root())]
11622 }, t.prototype.transitionTo = function(t, n, r) {
11624 void 0 === n && (n = {}), void 0 === r && (r = {});
11625 var o = this.router,
11629 current: function() {
11630 return a.transition
11633 var s = this.target(t, n, r),
11634 c = this.getCurrentPath();
11635 if (!s.exists()) return this._handleInvalidTargetState(c, s);
11636 if (!s.valid()) return Nt(s.error());
11637 var l = function(t) {
11638 return function(n) {
11639 if (n instanceof Pt) {
11640 var r = o.globals.lastStartedTransitionId === t.$id;
11641 if (n.type === e.RejectType.IGNORED) return r && o.urlRouter.update(), at.$q.when(a.current);
11643 if (n.type === e.RejectType.SUPERSEDED && n.redirected && s instanceof Bt) {
11644 var c = t.redirect(s);
11645 return c.run().catch(l(c))
11647 if (n.type === e.RejectType.ABORTED) return r && o.urlRouter.update(), at.$q.reject(n)
11649 return i.defaultErrorHandler()(n), at.$q.reject(n)
11652 u = this.router.transitionService.create(c, s),
11653 d = u.run().catch(l(u));
11654 return Dt(d), ft(d, {
11657 }, t.prototype.is = function(e, t, n) {
11659 relative: this.$current
11661 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11663 if (this.$current !== r) return !1;
11665 var i = r.parameters({
11669 return Jt.equals(i, Jt.values(i, t), this.params)
11671 }, t.prototype.includes = function(e, t, n) {
11673 relative: this.$current
11675 var r = Qe(e) && Ue.fromString(e);
11677 if (!r.matches(this.$current.name)) return !1;
11678 e = this.$current.name
11680 var i = this.router.stateRegistry.matcher.find(e, n.relative),
11681 o = this.$current.includes;
11683 if (!Ye(o[i.name])) return !1;
11685 var a = i.parameters({
11689 return Jt.equals(a, Jt.values(a, t), this.params)
11691 }, t.prototype.href = function(e, t, n) {
11696 relative: this.$current
11698 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11699 if (!Ye(r)) return null;
11700 n.inherit && (t = this.params.$inherit(t, this.$current, r));
11701 var i = r && n.lossy ? r.navigable : r;
11702 return i && void 0 !== i.url && null !== i.url ? this.router.urlRouter.href(i.url, t, {
11703 absolute: n.absolute
11705 }, t.prototype.defaultErrorHandler = function(e) {
11706 return this._defaultErrorHandler = e || this._defaultErrorHandler
11707 }, t.prototype.get = function(e, t) {
11708 var n = this.router.stateRegistry;
11709 return 0 === arguments.length ? n.get() : n.get(e, t || this.$current)
11710 }, t.prototype.lazyLoad = function(e, t) {
11711 var n = this.get(e);
11712 if (!n || !n.lazyLoad) throw new Error("Can not lazy load " + e);
11713 var r = this.getCurrentPath(),
11714 i = tn.makeTargetState(this.router.stateRegistry, r);
11715 return t = t || this.router.transitionService.create(r, i), ce(t, n)
11719 when: function(e) {
11720 return new Promise(function(t, n) {
11724 reject: function(e) {
11725 return new Promise(function(t, n) {
11729 defer: function() {
11731 return e.promise = new Promise(function(t, n) {
11732 e.resolve = t, e.reject = n
11736 if (et(e)) return Promise.all(e);
11738 var t = Object.keys(e).map(function(t) {
11739 return e[t].then(function(e) {
11746 return Or.all(t).then(function(e) {
11747 return e.reduce(function(e, t) {
11748 return e[t.key] = t.val, e
11755 Nr = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
11762 return null != Rr.get(e)
11764 invoke: function(e, t, n) {
11765 var r = ft({}, Dr, n || {}),
11766 i = Rr.annotate(e),
11767 o = At(function(e) {
11768 return r.hasOwnProperty(e)
11770 return "DI can't find injectable: '" + e + "'"
11772 a = i.filter(o).map(function(e) {
11775 return Ze(e) ? e.apply(t, a) : e.slice(-1)[0].apply(t, a)
11777 annotate: function(e) {
11778 if (!l(e)) throw new Error("Not an injectable function: " + e);
11779 if (e && e.$inject) return e.$inject;
11780 if (et(e)) return e.slice(0, -1);
11781 var t = e.toString().replace(Nr, "");
11782 return t.slice(t.indexOf("(") + 1, t.indexOf(")")).match(Ir) || []
11785 Pr = function(e, t) {
11788 return e.hasOwnProperty(n) ? et(e[n]) ? e[n].push(r) : e[n] = [e[n], r] : e[n] = r, e
11791 return e.split("&").filter(u).map($n).reduce(Pr, {})
11797 i = Object.keys(n).map(function(e) {
11799 return (et(t) ? t : [t]).map(function(t) {
11802 }).reduce(kt, []).join("&");
11803 return t + (i ? "?" + i : "") + (r ? "#" + r : "")
11808 this.fireAfterUpdate = t, this._listener = function(e) {
11809 return n._listeners.forEach(function(t) {
11812 }, this._listeners = [], this.hash = function() {
11813 return de(n._get()).hash
11814 }, this.path = function() {
11815 return de(n._get()).path
11816 }, this.search = function() {
11817 return jr(de(n._get()).search)
11818 }, this._location = st.location, this._history = st.history
11820 return e.prototype.url = function(e, t) {
11821 return void 0 === t && (t = !0), Ye(e) && e !== this._get() && (this._set(null, null, e, t), this.fireAfterUpdate && this._listeners.forEach(function(t) {
11826 }, e.prototype.onChange = function(e) {
11828 return this._listeners.push(e),
11830 return gt(t._listeners, e)
11832 }, e.prototype.dispose = function(e) {
11833 bt(this._listeners)
11837 var e = Object.setPrototypeOf || {
11840 instanceof Array && function(e, t) {
11842 } || function(e, t) {
11843 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11845 return function(t, n) {
11847 this.constructor = t
11849 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
11854 var n = e.call(this, t, !1) || this;
11855 return st.addEventListener("hashchange", n._listener, !1), n
11857 return Fr(t, e), t.prototype._get = function() {
11858 return wn(this._location.hash)
11859 }, t.prototype._set = function(e, t, n, r) {
11860 this._location.hash = n
11861 }, t.prototype.dispose = function(t) {
11862 e.prototype.dispose.call(this, t), st.removeEventListener("hashchange", this._listener)
11866 var e = Object.setPrototypeOf || {
11869 instanceof Array && function(e, t) {
11871 } || function(e, t) {
11872 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11874 return function(t, n) {
11876 this.constructor = t
11878 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
11883 return e.call(this, t, !0) || this
11885 return Ur(t, e), t.prototype._get = function() {
11887 }, t.prototype._set = function(e, t, n, r) {
11892 var e = Object.setPrototypeOf || {
11895 instanceof Array && function(e, t) {
11897 } || function(e, t) {
11898 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11900 return function(t, n) {
11902 this.constructor = t
11904 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
11909 var n = e.call(this, t, !0) || this;
11910 return n._config = t.urlService.config, st.addEventListener("popstate", n._listener, !1), n
11912 return zr(t, e), t.prototype._getBasePrefix = function() {
11913 return bn(this._config.baseHref())
11914 }, t.prototype._get = function() {
11915 var e = this._location,
11919 r = _n(r)[1], n = yn(n)[1];
11920 var i = this._getBasePrefix(),
11921 o = t === this._config.baseHref(),
11922 a = t.startsWith(i);
11923 return (t = o ? "/" : a ? t.substring(i.length) : t) + (r ? "?" + r : "") + (n ? "#" + n : "")
11924 }, t.prototype._set = function(e, t, n, r) {
11925 var i = this._getBasePrefix() + n;
11926 r ? this._history.replaceState(e, t, i) : this._history.pushState(e, t, i)
11927 }, t.prototype.dispose = function(t) {
11928 e.prototype.dispose.call(this, t), st.removeEventListener("popstate", this._listener)
11932 return function() {
11934 this._baseHref = "", this._port = 80, this._protocol = "http", this._host = "localhost", this._hashPrefix = "", this.port = function() {
11936 }, this.protocol = function() {
11938 }, this.host = function() {
11940 }, this.baseHref = function() {
11942 }, this.html5Mode = function() {
11944 }, this.hashPrefix = function(t) {
11945 return Ye(t) ? e._hashPrefix = t : e._hashPrefix
11946 }, this.dispose = d
11951 void 0 === t && (t = !1), this._isHtml5 = t, this._baseHref = void 0, this._hashPrefix = ""
11953 return e.prototype.port = function() {
11954 return location.port ? Number(location.port) : "https" === this.protocol() ? 443 : 80
11955 }, e.prototype.protocol = function() {
11956 return location.protocol.replace(/:/g, "")
11957 }, e.prototype.host = function() {
11958 return location.hostname
11959 }, e.prototype.html5Mode = function() {
11960 return this._isHtml5
11961 }, e.prototype.hashPrefix = function(e) {
11962 return Ye(e) ? this._hashPrefix = e : this._hashPrefix
11963 }, e.prototype.baseHref = function(e) {
11964 return Ye(e) ? this._baseHref = e : Ye(this._baseHref) ? this._baseHref : this.applyDocumentBaseHref()
11965 }, e.prototype.applyDocumentBaseHref = function() {
11966 var e = document.getElementsByTagName("base")[0];
11967 return this._baseHref = e ? e.href.substr(location.origin.length) : ""
11968 }, e.prototype.dispose = function() {}, e
11970 Gr = fe("vanilla.hashBangLocation", !1, qr, Yr),
11971 Kr = fe("vanilla.pushStateLocation", !0, Br, Yr),
11972 Zr = fe("vanilla.memoryLocation", !1, Vr, Wr),
11975 return e.prototype.dispose = function(e) {}, e
11977 Qr = Object.freeze({
11986 createProxyFunctions: f,
12014 assertPredicate: At,
12023 silenceUncaughtInPromise: Dt,
12024 silentRejection: Nt,
12025 notImplemented: ot,
12047 isNullOrUndefined: Ke,
12062 functionToString: W,
12065 beforeAfterSubstr: gn,
12088 resolvePolicies: on,
12089 defaultResolvePolicy: nn,
12091 NATIVE_INJECTOR_TOKEN: ln,
12092 ResolveContext: un,
12093 resolvablesBuilder: ne,
12097 StateQueueManager: Dn,
12101 get TransitionHookPhase() {
12102 return e.TransitionHookPhase
12104 get TransitionHookScope() {
12105 return e.TransitionHookScope
12109 RegisteredHook: Gt,
12112 return e.RejectType
12116 TransitionHook: Yt,
12117 TransitionEventType: Cr,
12118 defaultTransOpts: Mr,
12119 TransitionService: Ar,
12121 UrlMatcherFactory: jn,
12123 UrlRuleFactory: Hn,
12127 UIRouterGlobals: Wn,
12131 BaseLocationServices: Lr,
12132 HashLocationService: qr,
12133 MemoryLocationService: Vr,
12134 PushStateLocationService: Br,
12135 MemoryLocationConfig: Wr,
12136 BrowserLocationConfig: Yr,
12137 keyValsToObjectR: Pr,
12141 locationPluginFactory: fe,
12142 servicesPlugin: he,
12143 hashLocationPlugin: Gr,
12144 pushStateLocationPlugin: Kr,
12145 memoryLocationPlugin: Zr,
12146 UIRouterPluginBase: Xr
12148 Jr = function(e, t) {
12149 return e.reduce(function(e, n) {
12150 return e || Ye(t[n])
12155 function e(e, t, n) {
12157 this.path = e, this.viewDecl = t, this.factory = n, this.$id = ei++, this.loaded = !1, this.getTemplate = function(e, t) {
12158 return r.component ? r.factory.makeComponentTemplate(e, t, r.component, r.viewDecl.bindings) : r.template
12161 return e.prototype.load = function() {
12164 n = new un(this.path),
12165 r = this.path.reduce(function(e, t) {
12166 return ft(e, t.paramValues)
12169 template: t.when(this.factory.fromConfig(this.viewDecl, r, n)),
12170 controller: t.when(this.getController(n))
12172 return t.all(i).then(function(t) {
12173 return zt.traceViewServiceEvent("Loaded", e), e.controller = t.controller, ft(e, t.template), e
12175 }, e.prototype.getController = function(e) {
12176 var t = this.viewDecl.controllerProvider;
12177 if (!l(t)) return this.viewDecl.controller;
12178 var n = at.$injector.annotate(t),
12179 r = et(t) ? M(t) : t;
12180 return new rn("", r, n).get(e)
12186 this._useHttp = De.version.minor < 3, this.$get = ["$http", "$templateCache", "$injector", function(t, n, r) {
12187 return e.$templateRequest = r.has && r.has("$templateRequest") && r.get("$templateRequest"), e.$http = t, e.$templateCache = n, e
12190 return e.prototype.useHttpService = function(e) {
12192 }, e.prototype.fromConfig = function(e, t, n) {
12193 var r = function(e) {
12194 return at.$q.when(e).then(function(e) {
12201 return at.$q.when(e).then(function(e) {
12207 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>")
12208 }, e.prototype.fromString = function(e, t) {
12209 return Ze(e) ? e(t) : e
12210 }, e.prototype.fromUrl = function(e, t) {
12211 return Ze(e) && (e = e(t)), null == e ? null : this._useHttp ? this.$http.get(e, {
12212 cache: this.$templateCache,
12214 Accept: "text/html"
12216 }).then(function(e) {
12218 }) : this.$templateRequest(e)
12219 }, e.prototype.fromProvider = function(e, t, n) {
12220 var r = at.$injector.annotate(e),
12221 i = et(e) ? M(e) : e;
12222 return new rn("", i, r).get(n)
12223 }, e.prototype.fromComponentProvider = function(e, t, n) {
12224 var r = at.$injector.annotate(e),
12225 i = et(e) ? M(e) : e;
12226 return new rn("", i, r).get(n)
12227 }, e.prototype.makeComponentTemplate = function(e, t, n, r) {
12229 var i = De.version.minor >= 3 ? "::" : "",
12232 return /^(x|data)-/.exec(t) ? "x-" + t : t
12234 a = ge(n).map(function(n) {
12238 if (e.attr(c) && !r[a]) return c + "='" + e.attr(c) + "'";
12240 if ("@" === s) return c + "='{{" + i + "$resolve." + l + "}}'";
12242 var u = t.getResolvable(l),
12244 f = d && at.$injector.annotate(d) || [];
12245 return c + "='$resolve." + l + (et(d) ? "[" + (d.length - 1) + "]" : "") + "(" + f.join(",") + ")'"
12247 return c + "='" + i + "$resolve." + l + "'"
12250 return "<" + s + " " + a + "></" + s + ">"
12254 return ii(Je(e.bindToController) ? e.bindToController : e.scope)
12257 return Object.keys(e || {}).map(function(t) {
12258 return [t, /^([=<@&])[?]?(.*)/.exec(e[t])]
12259 }).filter(function(e) {
12260 return Ye(e) && et(e[1])
12261 }).map(function(e) {
12263 name: e[1][2] || e[0],
12270 this.stateRegistry = t, this.stateService = n, f(qe(e.prototype), this, qe(this))
12272 return e.prototype.decorator = function(e, t) {
12273 return this.stateRegistry.decorator(e, t) || this
12274 }, e.prototype.state = function(e, t) {
12275 return Je(e) ? t = e : t.name = e, this.stateRegistry.register(t), this
12276 }, e.prototype.onInvalid = function(e) {
12277 return this.stateService.onInvalid(e)
12281 return function(t, n) {
12283 i = "onExit" === e ? "from" : "to";
12284 return r ? function(e, t) {
12285 var n = new un(e.treeChanges(i)),
12290 return at.$injector.invoke(r, this, o)
12296 this._urlListeners = [], this.$locationProvider = e;
12298 f(t, this, t, ["hashPrefix"])
12300 return e.prototype.dispose = function() {}, e.prototype.onChange = function(e) {
12302 return this._urlListeners.push(e),
12304 return gt(t._urlListeners)(e)
12306 }, e.prototype.html5Mode = function() {
12307 var e = this.$locationProvider.html5Mode();
12308 return (e = Je(e) ? e.enabled : e) && this.$sniffer.history
12309 }, e.prototype.url = function(e, t, n) {
12310 return void 0 === t && (t = !1), e && this.$location.url(e), t && this.$location.replace(), n && this.$location.state(n), this.$location.url()
12311 }, e.prototype._runtimeServices = function(e, t, n, r) {
12313 this.$location = t, this.$sniffer = n, e.$on("$locationChangeSuccess", function(e) {
12314 return i._urlListeners.forEach(function(t) {
12320 f(o, this, o, ["replace", "path", "search", "hash"]), f(o, this, o, ["port", "protocol", "host"]), f(a, this, a, ["baseHref"])
12321 }, e.monkeyPatchPathParameterType = function(e) {
12322 var t = e.urlMatcherFactory.type("path");
12323 t.encode = function(e) {
12324 return null != e ? e.toString().replace(/(~|\/)/g, function(e) {
12330 }, t.decode = function(e) {
12331 return null != e ? e.toString().replace(/(~~|~2F)/g, function(e) {
12342 this._router = e, this._urlRouter = e.urlRouter
12344 return e.prototype.$get = function() {
12345 var e = this._urlRouter;
12346 return e.update(!0), e.interceptDeferred || e.listen(), e
12347 }, e.prototype.rule = function(e) {
12349 if (!Ze(e)) throw new Error("'rule' must be a function");
12350 var n = new Ln(function() {
12351 return e(at.$injector, t._router.locationService)
12353 return this._urlRouter.rule(n), this
12354 }, e.prototype.otherwise = function(e) {
12356 n = this._urlRouter;
12357 if (Qe(e)) n.otherwise(e);
12359 if (!Ze(e)) throw new Error("'rule' must be a string or function");
12360 n.otherwise(function() {
12361 return e(at.$injector, t._router.locationService)
12365 }, e.prototype.when = function(t, n) {
12366 return (et(n) || Ze(n)) && (n = e.injectableHandler(this._router, n)), this._urlRouter.when(t, n), this
12367 }, e.injectableHandler = function(e, t) {
12368 return function(n) {
12369 return at.$injector.invoke(t, null, {
12371 $stateParams: e.globals.params
12374 }, e.prototype.deferIntercept = function(e) {
12375 this._urlRouter.deferIntercept(e)
12378 De.module("ui.router.angular1", []);
12379 var li = De.module("ui.router.init", []),
12380 ui = De.module("ui.router.util", ["ng", "ui.router.init"]),
12381 di = De.module("ui.router.router", ["ui.router.util"]),
12382 fi = De.module("ui.router.state", ["ui.router.router", "ui.router.util", "ui.router.angular1"]),
12383 hi = De.module("ui.router", ["ui.router.init", "ui.router.state", "ui.router.angular1"]),
12384 pi = (De.module("ui.router.compat", ["ui.router"]), null);
12385 ve.$inject = ["$locationProvider"];
12386 var mi = function(e) {
12387 return ["$uiRouterProvider", function(t) {
12388 var n = t.router[e];
12389 return n.$get = function() {
12394 be.$inject = ["$injector", "$q", "$uiRouter"];
12395 ye.$inject = ["$rootScope"], li.provider("$uiRouter", ve), di.provider("$urlRouter", ["$uiRouterProvider", function(e) {
12396 return e.urlRouterProvider = new ci(e)
12397 }]), ui.provider("$urlService", mi("urlService")), ui.provider("$urlMatcherFactory", ["$uiRouterProvider", function() {
12398 return pi.urlMatcherFactory
12399 }]), ui.provider("$templateFactory", function() {
12401 }), fi.provider("$stateRegistry", mi("stateRegistry")), fi.provider("$uiRouterGlobals", mi("globals")), fi.provider("$transitions", mi("transitionService")), fi.provider("$state", ["$uiRouterProvider", function() {
12402 return ft(pi.stateProvider, {
12404 return pi.stateService
12407 }]), fi.factory("$stateParams", ["$uiRouter", function(e) {
12408 return e.globals.params
12409 }]), hi.factory("$view", function() {
12410 return pi.viewService
12411 }), hi.service("$trace", function() {
12413 }), hi.run(ye), ui.run(["$urlMatcherFactory", function(e) {}]), fi.run(["$state", function(e) {}]), di.run(["$urlRouter", function(e) {}]), li.run(be);
12414 var gi, vi = function(e) {
12415 return e.getTokens().filter(Qe).map(function(t) {
12416 var n = e.getResolvable(t);
12417 return [t, "NOWAIT" === e.getPolicy(n).async ? n.promise : n.data]
12420 gi = ["$uiRouter", "$timeout", function(e, t) {
12421 var n = e.stateService;
12424 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12425 link: function(r, i, o, a) {
12428 d && d(), u && (d = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
12438 f.uiState = p.state, f.uiStateOpts = o.uiSrefOpts ? r.$eval(o.uiSrefOpts) : {}, p.paramExpr && (r.$watch(p.paramExpr, function(e) {
12439 f.uiStateParams = ft({}, e), s()
12440 }, !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))
12445 bi = ["$uiRouter", "$timeout", function(e, t) {
12446 var n = e.stateService;
12449 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12450 link: function(r, i, o, a) {
12453 f && f(), u && (f = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
12462 m = ["uiState", "uiStateParams", "uiStateOpts"],
12463 g = m.reduce(function(e, t) {
12466 m.forEach(function(e) {
12467 h[e] = o[e] ? r.$eval(o[e]) : null, o.$observe(e, function(t) {
12468 g[e](), g[e] = r.$watch(t, function(t) {
12472 }), 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))
12477 yi = ["$state", "$stateParams", "$interpolate", "$uiRouter", function(e, t, n, r) {
12480 controller: ["$scope", "$element", "$attrs", function(t, i, o) {
12482 e.promise.then(c, d)
12485 function s(t, n, r) {
12487 state: e.get(t, $e(i)) || {
12500 var n = function(e) {
12501 return e.split(/\s/).filter(u)
12504 return e.map(function(e) {
12505 return e.activeClass
12506 }).map(n).reduce(kt, [])
12508 o = r(h).concat(n(l)).reduce(xt, []),
12509 a = r(h.filter(function(t) {
12510 return e.includes(t.state.name, t.params)
12512 s = !!h.filter(function(t) {
12513 return e.is(t.state.name, t.params)
12514 }).length ? n(l) : [],
12515 c = a.concat(s).reduce(xt, []),
12516 d = o.filter(function(e) {
12519 t.$evalAsync(function() {
12520 c.forEach(function(e) {
12521 return i.addClass(e)
12522 }), d.forEach(function(e) {
12523 return i.removeClass(e)
12528 l = n(o.uiSrefActiveEq || "", !1)(t);
12530 f = t.$eval(o.uiSrefActive)
12532 f = f || n(o.uiSrefActive || "", !1)(t), Je(f) && dt(f, function(e, n) {
12535 s(r.state, t.$eval(r.paramExpr), n)
12537 }), this.$$addStateInfo = function(e, t) {
12538 if (!(Je(f) && h.length > 0)) {
12539 var n = s(e, t, f);
12542 }, t.$on("$stateChangeSuccess", c), t.$on("$destroy", r.transitionService.onStart({}, a)), r.globals.transition && a(r.globals.transition), c()
12545 }], 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);
12547 _i = ["$view", "$animate", "$uiViewScroll", "$interpolate", "$q", function(e, t, n, r, i) {
12550 enter: function(e, n, r) {
12551 De.version.minor > 2 ? t.enter(e, null, n).then(r) : t.enter(e, null, n, r)
12553 leave: function(e, n) {
12554 De.version.minor > 2 ? t.leave(e).then(n) : t.leave(e, n)
12565 $context: e._pluginapi._rootViewContext()
12575 transclude: "element",
12576 compile: function(t, l, u) {
12577 return function(t, l, d) {
12579 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) {
12580 var e = m.data("$uiViewAnim");
12581 zt.traceUIViewEvent("Animate out", e), _.leave(m, function() {
12582 e.$$animLeave.resolve(), p = null
12583 }), p = m, m = null
12596 $animEnter: o.promise,
12597 $animLeave: a.promise,
12600 r.$emit("$viewContentLoading", E);
12601 var d = u(r, function(e) {
12602 e.data("$uiViewAnim", c), e.data("$uiView", s), _.enter(e, l, function() {
12603 o.resolve(), g && g.$emit("$viewContentAnimationEnded"), (Ye(y) && !y || t.$eval(y)) && n(e)
12606 m = d, (g = r).$emit("$viewContentLoaded", e || $), g.$eval(b)
12608 var p, m, g, v, b = d.onload || "",
12612 w = l.inheritedData("$uiView") || s,
12613 E = r(d.uiView || d.name || "")(t) || "$default",
12618 fqn: w.$uiView.fqn ? w.$uiView.fqn + "." + E : E,
12620 configUpdated: function(e) {
12621 (!e || e instanceof ti) && (a($, e) || (zt.traceUIViewConfigUpdated(k, e && e.viewDecl && e.viewDecl.$context), $ = e, h(e)))
12623 get creationContext() {
12624 var e = Re("$cfg.viewDecl.$context")(w),
12625 t = Re("$uiView.creationContext")(w);
12629 zt.traceUIViewEvent("Linking", k), l.data("$uiView", {
12631 }), h(), v = e.registerUIView(k), t.$on("$destroy", function() {
12632 zt.traceUIViewEvent("Destroying/Unregistering", k), v()
12638 }], Ae.$inject = ["$compile", "$controller", "$transitions", "$view", "$q", "$timeout"];
12639 var $i = "function" == typeof De.module("ui.router").component,
12641 De.module("ui.router.state").directive("uiView", _i), De.module("ui.router.state").directive("uiView", Ae), De.module("ui.router.state").provider("$uiViewScroll", function() {
12643 this.useAnchorScroll = function() {
12645 }, this.$get = ["$anchorScroll", "$timeout", function(t, n) {
12646 return e ? t : function(e) {
12647 return n(function() {
12648 e[0].scrollIntoView()
12653 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", {
12659 return e.set(t[0], t[1]), e
12666 function n(e, t, n) {
12667 switch (n.length) {
12671 return e.call(t, n[0]);
12673 return e.call(t, n[0], n[1]);
12675 return e.call(t, n[0], n[1], n[2])
12677 return e.apply(t, n)
12680 function r(e, t, n, r) {
12681 for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
12689 for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
12694 for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
12699 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12700 if (!t(e[n], n, e)) return !1;
12705 for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
12707 t(a, n, e) && (o[i++] = a)
12713 return !!(null == e ? 0 : e.length) && y(e, t, 0) > -1
12716 function l(e, t, n) {
12717 for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
12718 if (n(t, e[r])) return !0;
12723 for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
12728 for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
12732 function f(e, t, n, r) {
12734 o = null == e ? 0 : e.length;
12735 for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
12739 function h(e, t, n, r) {
12740 var i = null == e ? 0 : e.length;
12741 for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
12746 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12747 if (t(e[n], n, e)) return !0;
12756 return e.match(Rt) || []
12759 function v(e, t, n) {
12761 return n(e, function(e, n, i) {
12762 if (t(e, n, i)) return r = n, !1
12766 function b(e, t, n, r) {
12767 for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
12768 if (t(e[o], o, e)) return o;
12772 function y(e, t, n) {
12773 return t === t ? W(e, t, n) : b(e, $, n)
12776 function _(e, t, n, r) {
12777 for (var i = n - 1, o = e.length; ++i < o;)
12778 if (r(e[i], t)) return i;
12787 var n = null == e ? 0 : e.length;
12788 return n ? T(e, t) / n : Se
12792 return function(t) {
12793 return null == t ? J : t[e]
12798 return function(t) {
12799 return null == e ? J : e[t]
12803 function C(e, t, n, r, i) {
12804 return i(e, function(e, i, o) {
12805 n = r ? (r = !1, e) : t(n, e, i, o)
12811 for (e.sort(t); n--;) e[n] = e[n].value;
12816 for (var n, r = -1, i = e.length; ++r < i;) {
12818 o !== J && (n = n === J ? o : n + o)
12824 for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
12829 return u(t, function(t) {
12835 return function(t) {
12841 return u(t, function(t) {
12851 for (var n = -1, r = e.length; ++n < r && y(t, e[n], 0) > -1;);
12856 for (var n = e.length; n-- && y(t, e[n], 0) > -1;);
12861 for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
12866 return "\\" + wn[e]
12870 return null == e ? J : e[t]
12882 for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
12889 return e.forEach(function(e, r) {
12895 return function(n) {
12901 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
12903 a !== t && a !== oe || (e[n] = oe, o[i++] = n)
12911 return e.forEach(function(e) {
12919 return e.forEach(function(e) {
12924 function W(e, t, n) {
12925 for (var r = n - 1, i = e.length; ++r < i;)
12926 if (e[r] === t) return r;
12930 function Y(e, t, n) {
12931 for (var r = n + 1; r--;)
12932 if (e[r] === t) return r;
12937 return H(e) ? Z(e) : Ln(e)
12941 return H(e) ? X(e) : m(e)
12945 for (var t = dn.lastIndex = 0; dn.test(e);) ++t;
12950 return e.match(dn) || []
12954 return e.match(fn) || []
12957 te = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",
12958 ne = "Expected a function",
12959 re = "__lodash_hash_undefined__",
12961 oe = "__lodash_placeholder__",
12984 Me = 9007199254740991,
12985 Ae = 1.7976931348623157e308,
12995 ["curryRight", me],
12998 ["partialRight", ve],
13001 Re = "[object Arguments]",
13002 Pe = "[object Array]",
13003 je = "[object AsyncFunction]",
13004 He = "[object Boolean]",
13005 Le = "[object Date]",
13006 Fe = "[object DOMException]",
13007 qe = "[object Error]",
13008 Ue = "[object Function]",
13009 Ve = "[object GeneratorFunction]",
13010 ze = "[object Map]",
13011 Be = "[object Number]",
13012 We = "[object Null]",
13013 Ye = "[object Object]",
13014 Ge = "[object Proxy]",
13015 Ke = "[object RegExp]",
13016 Ze = "[object Set]",
13017 Xe = "[object String]",
13018 Qe = "[object Symbol]",
13019 Je = "[object Undefined]",
13020 et = "[object WeakMap]",
13021 tt = "[object WeakSet]",
13022 nt = "[object ArrayBuffer]",
13023 rt = "[object DataView]",
13024 it = "[object Float32Array]",
13025 ot = "[object Float64Array]",
13026 at = "[object Int8Array]",
13027 st = "[object Int16Array]",
13028 ct = "[object Int32Array]",
13029 lt = "[object Uint8Array]",
13030 ut = "[object Uint8ClampedArray]",
13031 dt = "[object Uint16Array]",
13032 ft = "[object Uint32Array]",
13033 ht = /\b__p \+= '';/g,
13034 pt = /\b(__p \+=) '' \+/g,
13035 mt = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
13036 gt = /&(?:amp|lt|gt|quot|#39);/g,
13038 bt = RegExp(gt.source),
13039 yt = RegExp(vt.source),
13040 _t = /<%-([\s\S]+?)%>/g,
13041 $t = /<%([\s\S]+?)%>/g,
13042 wt = /<%=([\s\S]+?)%>/g,
13043 Et = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
13046 xt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
13047 Tt = /[\\^$.*+?()[\]{}|]/g,
13048 Mt = RegExp(Tt.source),
13052 Dt = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
13053 Nt = /\{\n\/\* \[wrapped with (.+)\] \*/,
13055 Rt = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
13057 jt = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
13059 Lt = /^[-+]0x[0-9a-f]+$/i,
13061 qt = /^\[object .+?Constructor\]$/,
13062 Ut = /^0o[0-7]+$/i,
13063 Vt = /^(?:0|[1-9]\d*)$/,
13064 zt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
13066 Wt = /['\n\r\u2028\u2029\\]/g,
13067 Yt = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
13068 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",
13069 Kt = "[" + Gt + "]",
13070 Zt = "[" + Yt + "]",
13071 Xt = "[a-z\\xdf-\\xf6\\xf8-\\xff]",
13072 Qt = "[^\\ud800-\\udfff" + Gt + "\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",
13073 Jt = "\\ud83c[\\udffb-\\udfff]",
13074 en = "(?:\\ud83c[\\udde6-\\uddff]){2}",
13075 tn = "[\\ud800-\\udbff][\\udc00-\\udfff]",
13076 nn = "[A-Z\\xc0-\\xd6\\xd8-\\xde]",
13077 rn = "(?:" + Xt + "|" + Qt + ")",
13078 on = "(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",
13079 an = "[\\ufe0e\\ufe0f]?" + on + ("(?:\\u200d(?:" + ["[^\\ud800-\\udfff]", en, tn].join("|") + ")[\\ufe0e\\ufe0f]?" + on + ")*"),
13080 sn = "(?:" + ["[\\u2700-\\u27bf]", en, tn].join("|") + ")" + an,
13081 cn = "(?:" + ["[^\\ud800-\\udfff]" + Zt + "?", Zt, en, tn, "[\\ud800-\\udfff]"].join("|") + ")",
13082 ln = RegExp("['’]", "g"),
13083 un = RegExp(Zt, "g"),
13084 dn = RegExp(Jt + "(?=" + Jt + ")|" + cn + an, "g"),
13085 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"),
13086 hn = RegExp("[\\u200d\\ud800-\\udfff" + Yt + "\\ufe0e\\ufe0f]"),
13087 pn = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
13088 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"],
13091 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;
13093 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;
13310 Cn = "object" == typeof global && global && global.Object === Object && global,
13311 xn = "object" == typeof self && self && self.Object === Object && self,
13312 Tn = Cn || xn || Function("return this")(),
13313 Mn = "object" == typeof exports && exports && !exports.nodeType && exports,
13314 An = Mn && "object" == typeof module && module && !module.nodeType && module,
13315 Sn = An && An.exports === Mn,
13316 On = Sn && Cn.process,
13319 return On && On.binding && On.binding("util")
13322 Nn = Dn && Dn.isArrayBuffer,
13323 In = Dn && Dn.isDate,
13324 Rn = Dn && Dn.isMap,
13325 Pn = Dn && Dn.isRegExp,
13326 jn = Dn && Dn.isSet,
13327 Hn = Dn && Dn.isTypedArray,
13332 Vn = function m(k) {
13334 if (ta(e) && !zc(e) && !(e instanceof Rt)) {
13335 if (e instanceof X) return e;
13336 if (za.call(e, "__wrapped__")) return Co(e)
13344 this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = J
13348 this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Oe, this.__views__ = []
13353 n = null == e ? 0 : e.length;
13354 for (this.clear(); ++t < n;) {
13356 this.set(r[0], r[1])
13362 n = null == e ? 0 : e.length;
13363 for (this.clear(); ++t < n;) {
13365 this.set(r[0], r[1])
13371 n = null == e ? 0 : e.length;
13372 for (this.clear(); ++t < n;) {
13374 this.set(r[0], r[1])
13380 n = null == e ? 0 : e.length;
13381 for (this.__data__ = new Kt; ++t < n;) this.add(e[t])
13385 var t = this.__data__ = new Gt(e);
13389 function Qt(e, t) {
13392 i = !n && !r && Wc(e),
13393 o = !n && !r && !i && Xc(e),
13394 a = n || r || i || o,
13395 s = a ? M(e.length, ja) : [],
13397 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);
13403 return t ? e[wr(0, t - 1)] : J
13406 function en(e, t) {
13407 return $o(ai(e), hn(t, 0, e.length))
13414 function nn(e, t, n) {
13415 (n === J || Yo(e[t], n)) && (n !== J || t in e) || dn(e, t, n)
13418 function rn(e, t, n) {
13420 za.call(e, t) && Yo(r, n) && (n !== J || t in e) || dn(e, t, n)
13423 function on(e, t) {
13424 for (var n = e.length; n--;)
13425 if (Yo(e[n][0], t)) return n;
13429 function an(e, t, n, r) {
13430 return Us(e, function(e, i, o) {
13435 function sn(e, t) {
13436 return e && si(t, ma(t), e)
13439 function cn(e, t) {
13440 return e && si(t, ga(t), e)
13443 function dn(e, t, n) {
13444 "__proto__" == t && cs ? cs(e, t, {
13452 function fn(e, t) {
13453 for (var n = -1, r = t.length, i = Sa(r), o = null == e; ++n < r;) i[n] = o ? J : ha(e, t[n]);
13457 function hn(e, t, n) {
13458 return e === e && (n !== J && (e = e <= n ? e : n), t !== J && (e = e >= t ? e : t)), e
13461 function pn(e, t, n, r, o, a) {
13465 if (n && (s = o ? n(e, r, o, a) : n(e)), s !== J) return s;
13466 if (!ea(e)) return e;
13469 if (s = Qi(e), !c) return ai(e, s)
13472 h = f == Ue || f == Ve;
13473 if (Wc(e)) return Gr(e, c);
13474 if (f == Ye || f == Re || h && !o) {
13475 if (s = l || h ? {} : Ji(e), !c) return l ? li(e, cn(s, e)) : ci(e, sn(s, e))
13477 if (!bn[f]) return o ? e : {};
13478 s = eo(e, f, pn, c)
13485 var m = u ? l ? qi : Fi : l ? ga : ma,
13487 return i(g || e, function(r, i) {
13488 g && (r = e[i = r]), rn(s, i, pn(r, t, n, i, e, a))
13494 return function(n) {
13499 function _n(e, t, n) {
13501 if (null == e) return !r;
13502 for (e = Ra(e); r--;) {
13506 if (a === J && !(i in e) || !o(a)) return !1
13511 function $n(e, t, n) {
13512 if ("function" != typeof e) throw new Ha(ne);
13513 return rc(function() {
13518 function wn(e, t, n, r) {
13526 n && (t = u(t, S(n))), r ? (o = l, a = !1) : t.length >= ee && (o = D, a = !1, t = new Zt(t));
13527 e: for (; ++i < s;) {
13529 p = null == n ? h : n(h);
13530 if (h = r || 0 !== h ? h : 0, a && p === p) {
13531 for (var m = f; m--;)
13532 if (t[m] === p) continue e;
13534 } else o(t, p, r) || d.push(h)
13539 function Cn(e, t) {
13541 return Us(e, function(e, r, i) {
13542 return n = !!t(e, r, i)
13546 function xn(e, t, n) {
13547 for (var r = -1, i = e.length; ++r < i;) {
13550 if (null != a && (s === J ? a === a && !oa(a) : n(a, s))) var s = a,
13556 function Mn(e, t, n, r) {
13558 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;
13562 function An(e, t) {
13564 return Us(e, function(e, r, i) {
13565 t(e, r, i) && n.push(e)
13569 function On(e, t, n, r, i) {
13572 for (n || (n = no), i || (i = []); ++o < a;) {
13574 t > 0 && n(s) ? t > 1 ? On(s, t - 1, n, r, i) : d(i, s) : r || (i[i.length] = s)
13579 function Dn(e, t) {
13580 return e && zs(e, t, ma)
13583 function Ln(e, t) {
13584 return e && Bs(e, t, ma)
13587 function zn(e, t) {
13588 return s(t, function(t) {
13593 function Bn(e, t) {
13594 for (var n = 0, r = (t = Wr(t, e)).length; null != e && n < r;) e = e[wo(t[n++])];
13595 return n && n == r ? e : J
13598 function Wn(e, t, n) {
13600 return zc(e) ? r : d(r, n(e))
13604 return null == e ? e === J ? Je : We : ss && ss in Ra(e) ? Gi(e) : mo(e)
13607 function Gn(e, t) {
13611 function Kn(e, t) {
13612 return null != e && za.call(e, t)
13615 function Zn(e, t) {
13616 return null != e && t in Ra(e)
13619 function Xn(e, t, n) {
13620 return e >= _s(t, n) && e < ys(t, n)
13623 function Qn(e, t, n) {
13624 for (var r = n ? l : c, i = e[0].length, o = e.length, a = o, s = Sa(o), d = 1 / 0, f = []; a--;) {
13626 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
13631 e: for (; ++p < i && f.length < d;) {
13634 if (g = n || 0 !== g ? g : 0, !(m ? D(m, v) : r(f, v, n))) {
13635 for (a = o; --a;) {
13637 if (!(b ? D(b, v) : r(e[a], v, n))) continue e
13639 m && m.push(v), f.push(g)
13645 function Jn(e, t, n, r) {
13646 return Dn(e, function(e, i, o) {
13651 function er(e, t, r) {
13652 var i = null == (e = vo(e, t = Wr(t, e))) ? e : e[wo(So(t))];
13653 return null == i ? J : n(i, e, r)
13657 return ta(e) && Yn(e) == Re
13660 function nr(e, t, n, r, i) {
13661 return e === t || (null == e || null == t || !ta(e) && !ta(t) ? e !== e && t !== t : rr(e, t, n, r, nr, i))
13664 function rr(e, t, n, r, i, o) {
13667 c = a ? Pe : ec(e),
13668 l = s ? Pe : ec(t),
13669 u = (c = c == Re ? Ye : c) == Ye,
13670 d = (l = l == Re ? Ye : l) == Ye,
13673 if (!Wc(t)) return !1;
13676 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);
13678 var h = u && za.call(e, "__wrapped__"),
13679 p = d && za.call(t, "__wrapped__");
13681 var m = h ? e.value() : e,
13682 g = p ? t.value() : t;
13683 return o || (o = new Xt), i(m, g, n, r, o)
13686 return !!f && (o || (o = new Xt), Hi(e, t, n, r, i, o))
13689 function ir(e, t, n, r) {
13693 if (null == e) return !o;
13694 for (e = Ra(e); i--;) {
13696 if (a && s[2] ? s[1] !== e[s[0]] : !(s[0] in e)) return !1
13699 var c = (s = n[i])[0],
13703 if (l === J && !(c in e)) return !1
13706 if (r) var f = r(l, u, c, e, t, d);
13707 if (!(f === J ? nr(u, l, le | ue, r, d) : f)) return !1
13714 return !(!ea(e) || co(e)) && (Xo(e) ? Za : qt).test(Eo(e))
13718 return "function" == typeof e ? e : null == e ? Ea : "object" == typeof e ? zc(e) ? fr(e[0], e[1]) : dr(e) : Ta(e)
13722 if (!lo(e)) return bs(e);
13724 for (var n in Ra(e)) za.call(e, n) && "constructor" != n && t.push(n);
13729 if (!ea(e)) return po(e);
13732 for (var r in e)("constructor" != r || !t && za.call(e, r)) && n.push(r);
13736 function lr(e, t) {
13740 function ur(e, t) {
13742 r = Go(e) ? Sa(e.length) : [];
13743 return Us(e, function(e, i, o) {
13744 r[++n] = t(e, i, o)
13750 return 1 == t.length && t[0][2] ? fo(t[0][0], t[0][1]) : function(n) {
13751 return n === e || ir(n, e, t)
13755 function fr(e, t) {
13756 return oo(e) && uo(t) ? fo(wo(e), t) : function(n) {
13758 return r === J && r === t ? pa(n, e) : nr(t, r, le | ue)
13762 function hr(e, t, n, r, i) {
13763 e !== t && zs(t, function(o, a) {
13764 if (ea(o)) i || (i = new Xt), pr(e, t, a, n, hr, r, i);
13766 var s = r ? r(e[a], o, a + "", e, t, i) : J;
13767 s === J && (s = o), nn(e, a, s)
13772 function pr(e, t, n, r, i, o, a) {
13776 if (l) nn(e, n, l);
13778 var u = o ? o(s, c, n + "", e, t, a) : J,
13783 p = !f && !h && Xc(c);
13784 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
13786 d && (a.set(c, u), i(u, c, r, o, a), a.delete(c)), nn(e, n, u)
13790 function mr(e, t) {
13792 if (n) return t += t < 0 ? n : 0, ro(t, n) ? e[t] : J
13795 function gr(e, t, n) {
13797 return t = u(t.length ? t : [Ea], S(zi())), x(ur(e, function(e, n, i) {
13799 criteria: u(t, function(t) {
13805 }), function(e, t) {
13810 function vr(e, t) {
13811 return br(e, t, function(t, n) {
13816 function br(e, t, n) {
13817 for (var r = -1, i = t.length, o = {}; ++r < i;) {
13820 n(s, a) && Mr(o, Wr(a, e), s)
13826 return function(t) {
13831 function _r(e, t, n, r) {
13836 for (e === t && (t = ai(t)), n && (s = u(e, S(n))); ++o < a;)
13837 for (var c = 0, l = t[o], d = n ? n(l) : l;
13838 (c = i(s, d, c, r)) > -1;) s !== e && is.call(s, c, 1), is.call(e, c, 1);
13842 function $r(e, t) {
13843 for (var n = e ? t.length : 0, r = n - 1; n--;) {
13845 if (n == r || i !== o) {
13847 ro(i) ? is.call(e, i, 1) : Hr(e, i)
13853 function wr(e, t) {
13854 return e + hs(Es() * (t - e + 1))
13857 function Er(e, t, n, r) {
13858 for (var i = -1, o = ys(fs((t - e) / (n || 1)), 0), a = Sa(o); o--;) a[r ? o : ++i] = e, e += n;
13862 function kr(e, t) {
13864 if (!e || t < 1 || t > Me) return n;
13866 t % 2 && (n += e), (t = hs(t / 2)) && (e += e)
13871 function Cr(e, t) {
13872 return ic(go(e, t, Ea), e + "")
13879 function Tr(e, t) {
13881 return $o(n, hn(t, 0, n.length))
13884 function Mr(e, t, n, r) {
13885 if (!ea(e)) return e;
13886 for (var i = -1, o = (t = Wr(t, e)).length, a = o - 1, s = e; null != s && ++i < o;) {
13891 (l = r ? r(u, c, s) : J) === J && (l = ea(u) ? u : ro(t[i + 1]) ? [] : {})
13893 rn(s, c, l), s = s[c]
13902 function Sr(e, t, n) {
13905 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;
13906 for (var o = Sa(i); ++r < i;) o[r] = e[r + t];
13910 function Or(e, t) {
13912 return Us(e, function(e, r, i) {
13913 return !(n = t(e, r, i))
13917 function Dr(e, t, n) {
13919 i = null == e ? r : e.length;
13920 if ("number" == typeof t && t === t && i <= Ne) {
13922 var o = r + i >>> 1,
13924 null !== a && !oa(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
13928 return Nr(e, t, Ea, n)
13931 function Nr(e, t, n, r) {
13933 for (var i = 0, o = null == e ? 0 : e.length, a = t !== t, s = null === t, c = oa(t), l = t === J; i < o;) {
13934 var u = hs((i + o) / 2),
13940 if (a) var g = r || p;
13941 else g = l ? p && (r || f) : s ? p && f && (r || !h) : c ? p && f && !h && (r || !m) : !h && !m && (r ? d <= t : d < t);
13942 g ? i = u + 1 : o = u
13947 function Ir(e, t) {
13948 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
13951 if (!n || !Yo(s, c)) {
13953 o[i++] = 0 === a ? 0 : a
13960 return "number" == typeof e ? e : oa(e) ? Se : +e
13964 if ("string" == typeof e) return e;
13965 if (zc(e)) return u(e, Pr) + "";
13966 if (oa(e)) return Fs ? Fs.call(e) : "";
13968 return "0" == t && 1 / e == -Te ? "-0" : t
13971 function jr(e, t, n) {
13978 if (n) a = !1, i = l;
13979 else if (o >= ee) {
13980 var d = t ? null : Zs(e);
13981 if (d) return z(d);
13982 a = !1, i = D, u = new Zt
13983 } else u = t ? [] : s;
13984 e: for (; ++r < o;) {
13987 if (f = n || 0 !== f ? f : 0, a && h === h) {
13988 for (var p = u.length; p--;)
13989 if (u[p] === h) continue e;
13990 t && u.push(h), s.push(f)
13991 } else i(u, h, n) || (u !== s && u.push(h), s.push(f))
13996 function Hr(e, t) {
13997 return t = Wr(t, e), null == (e = vo(e, t)) || delete e[wo(So(t))]
14000 function Lr(e, t, n, r) {
14001 return Mr(e, t, n(Bn(e, t)), r)
14004 function Fr(e, t, n, r) {
14005 for (var i = e.length, o = r ? i : -1;
14006 (r ? o-- : ++o < i) && t(e[o], o, e););
14007 return n ? Sr(e, r ? 0 : o, r ? o + 1 : i) : Sr(e, r ? o + 1 : 0, r ? i : o)
14010 function qr(e, t) {
14012 return n instanceof Rt && (n = n.value()), f(t, function(e, t) {
14013 return t.func.apply(t.thisArg, d([e], t.args))
14017 function Ur(e, t, n) {
14019 if (r < 2) return r ? jr(e[0]) : [];
14020 for (var i = -1, o = Sa(r); ++i < r;)
14021 for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = wn(o[i] || a, e[s], t, n));
14022 return jr(On(o, 1), t, n)
14025 function Vr(e, t, n) {
14026 for (var r = -1, i = e.length, o = t.length, a = {}; ++r < i;) {
14027 var s = r < o ? t[r] : J;
14034 return Ko(e) ? e : []
14038 return "function" == typeof e ? e : Ea
14041 function Wr(e, t) {
14042 return zc(e) ? e : oo(e, t) ? [e] : oc(fa(e))
14045 function Yr(e, t, n) {
14047 return n = n === J ? r : n, !t && n >= r ? e : Sr(e, t, n)
14050 function Gr(e, t) {
14051 if (t) return e.slice();
14053 r = es ? es(n) : new e.constructor(n);
14054 return e.copy(r), r
14058 var t = new e.constructor(e.byteLength);
14059 return new Ja(t).set(new Ja(e)), t
14062 function Zr(e, t) {
14063 var n = t ? Kr(e.buffer) : e.buffer;
14064 return new e.constructor(n, e.byteOffset, e.byteLength)
14067 function Xr(t, n, r) {
14068 return f(n ? r(q(t), ae) : q(t), e, new t.constructor)
14072 var t = new e.constructor(e.source, Ht.exec(e));
14073 return t.lastIndex = e.lastIndex, t
14076 function Jr(e, n, r) {
14077 return f(n ? r(z(e), ae) : z(e), t, new e.constructor)
14081 return Ls ? Ra(Ls.call(e)) : {}
14084 function ti(e, t) {
14085 var n = t ? Kr(e.buffer) : e.buffer;
14086 return new e.constructor(n, e.byteOffset, e.length)
14089 function ni(e, t) {
14099 if (!s && !l && !o && e > t || o && a && c && !s && !l || r && a && c || !n && c || !i) return 1;
14100 if (!r && !o && !l && e < t || l && n && i && !r && !o || s && n && i || !a && i || !c) return -1
14105 function ri(e, t, n) {
14106 for (var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; ++r < a;) {
14107 var c = ni(i[r], o[r]);
14108 if (c) return r >= s ? c : c * ("desc" == n[r] ? -1 : 1)
14110 return e.index - t.index
14113 function ii(e, t, n, r) {
14114 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];
14115 for (; ++i < a;)(d || i < o) && (u[n[i]] = e[i]);
14116 for (; l--;) u[s++] = e[i++];
14120 function oi(e, t, n, r) {
14121 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];
14122 for (var h = i; ++c < l;) d[h + c] = t[c];
14123 for (; ++a < s;)(f || i < o) && (d[h + n[a]] = e[i++]);
14127 function ai(e, t) {
14130 for (t || (t = Sa(r)); ++n < r;) t[n] = e[n];
14134 function si(e, t, n, r) {
14137 for (var o = -1, a = t.length; ++o < a;) {
14139 c = r ? r(n[s], e[s], s, n, e) : J;
14140 c === J && (c = e[s]), i ? dn(n, s, c) : rn(n, s, c)
14145 function ci(e, t) {
14146 return si(e, Qs(e), t)
14149 function li(e, t) {
14150 return si(e, Js(e), t)
14153 function ui(e, t) {
14154 return function(n, i) {
14155 var o = zc(n) ? r : an,
14157 return o(n, e, zi(i, 2), a)
14162 return Cr(function(t, n) {
14165 o = i > 1 ? n[i - 1] : J,
14166 a = i > 2 ? n[2] : J;
14167 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;) {
14175 function fi(e, t) {
14176 return function(n, r) {
14177 if (null == n) return n;
14178 if (!Go(n)) return e(n, r);
14179 for (var i = n.length, o = t ? i : -1, a = Ra(n);
14180 (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
14186 return function(t, n, r) {
14187 for (var i = -1, o = Ra(t), a = r(t), s = a.length; s--;) {
14188 var c = a[e ? s : ++i];
14189 if (!1 === n(o[c], c, o)) break
14195 function pi(e, t, n) {
14197 return (this && this !== Tn && this instanceof r ? o : e).apply(i ? n : this, arguments)
14205 return function(t) {
14206 var n = H(t = fa(t)) ? K(t) : J,
14207 r = n ? n[0] : t.charAt(0),
14208 i = n ? Yr(n, 1).join("") : t.slice(1);
14214 return function(t) {
14215 return f($a(_a(t).replace(ln, "")), e, "")
14220 return function() {
14222 switch (t.length) {
14226 return new e(t[0]);
14228 return new e(t[0], t[1]);
14230 return new e(t[0], t[1], t[2]);
14232 return new e(t[0], t[1], t[2], t[3]);
14234 return new e(t[0], t[1], t[2], t[3], t[4]);
14236 return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
14238 return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
14240 var n = qs(e.prototype),
14242 return ea(r) ? r : n
14246 function bi(e, t, r) {
14248 for (var a = arguments.length, s = Sa(a), c = a, l = Vi(i); c--;) s[c] = arguments[c];
14249 var u = a < 3 && s[0] !== l && s[a - 1] !== l ? [] : V(s, l);
14250 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)
14257 return function(t, n, r) {
14261 t = ma(t), n = function(e) {
14262 return o(i[e], e, i)
14265 var a = e(t, n, r);
14266 return a > -1 ? i[o ? t[a] : a] : J
14271 return Li(function(t) {
14274 i = X.prototype.thru;
14275 for (e && t.reverse(); r--;) {
14277 if ("function" != typeof o) throw new Ha(ne);
14278 if (i && !a && "wrapper" == Ui(o)) var a = new X([], !0)
14280 for (r = a ? r : n; ++r < n;) {
14281 var s = Ui(o = t[r]),
14282 c = "wrapper" == s ? Xs(o) : J;
14283 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)
14285 return function() {
14288 if (a && 1 == e.length && zc(r)) return a.plant(r).value();
14289 for (var i = 0, o = n ? t[i].apply(this, e) : r; ++i < n;) o = t[i].call(this, o);
14295 function $i(e, t, n, r, i, o, a, s, c, l) {
14297 for (var v = arguments.length, b = Sa(v), y = v; y--;) b[y] = arguments[y];
14298 if (p) var _ = Vi(u),
14300 if (r && (b = ii(b, r, i, p)), o && (b = oi(b, o, a, p)), v -= $, p && v < l) {
14302 return Ai(e, t, $i, u.placeholder, n, b, w, s, c, l - v)
14304 var E = f ? n : this,
14306 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)
14317 function wi(e, t) {
14318 return function(n, r) {
14319 return Jn(n, e, t(r), {})
14323 function Ei(e, t) {
14324 return function(n, r) {
14326 if (n === J && r === J) return t;
14327 if (n !== J && (i = n), r !== J) {
14328 if (i === J) return r;
14329 "string" == typeof n || "string" == typeof r ? (n = Pr(n), r = Pr(r)) : (n = Rr(n), r = Rr(r)), i = e(n, r)
14336 return Li(function(t) {
14337 return t = u(t, S(zi())), Cr(function(r) {
14339 return e(t, function(e) {
14346 function Ci(e, t) {
14347 var n = (t = t === J ? " " : Pr(t)).length;
14348 if (n < 2) return n ? kr(t, e) : t;
14349 var r = kr(t, fs(e / G(t)));
14350 return H(t) ? Yr(K(r), 0, e).join("") : r.slice(0, e)
14353 function xi(e, t, r, i) {
14355 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];
14356 for (; c--;) d[l++] = arguments[++t];
14357 return n(f, a ? r : this, d)
14365 return function(t, n, r) {
14366 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)
14371 return function(t, n) {
14372 return "string" == typeof t && "string" == typeof n || (t = ua(t), n = ua(n)), e(t, n)
14376 function Ai(e, t, n, r, i, o, a, s, c, l) {
14382 t |= u ? ge : ve, (t &= ~(u ? ve : ge)) & he || (t &= ~(de | fe));
14383 var m = [e, t, i, h, d, p, f, s, c, l],
14385 return so(e) && nc(g, m), g.placeholder = r, yo(g, e, t)
14390 return function(e, n) {
14391 if (e = ua(e), n = null == n ? 0 : _s(ca(n), 292)) {
14392 var r = (fa(e) + "e").split("e");
14393 return +((r = (fa(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
14400 return function(t) {
14402 return n == ze ? q(t) : n == Ze ? B(t) : A(t, e(t))
14406 function Di(e, t, n, r, i, o, a, s) {
14408 if (!c && "function" != typeof e) throw new Ha(ne);
14409 var l = r ? r.length : 0;
14410 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) {
14415 var f = c ? J : Xs(e),
14416 h = [e, t, n, r, i, u, d, o, a, s];
14417 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);
14418 else var p = pi(e, t, n);
14419 return yo((f ? Ws : nc)(p, h), e, t)
14422 function Ni(e, t, n, r) {
14423 return e === J || Yo(e, qa[n]) && !za.call(r, n) ? t : e
14426 function Ii(e, t, n, r, i, o) {
14427 return ea(e) && ea(t) && (o.set(t, e), hr(e, t, J, Ii, o), o.delete(t)), e
14431 return ra(e) ? J : e
14434 function Pi(e, t, n, r, i, o) {
14438 if (s != c && !(a && c > s)) return !1;
14440 if (l && o.get(t)) return l == t;
14443 f = n & ue ? new Zt : J;
14444 for (o.set(e, t), o.set(t, e); ++u < s;) {
14447 if (r) var g = a ? r(m, h, u, t, e, o) : r(h, m, u, e, t, o);
14454 if (!p(t, function(e, t) {
14455 if (!D(f, t) && (h === e || i(h, e, n, r, o))) return f.push(t)
14460 } else if (h !== m && !i(h, m, n, r, o)) {
14465 return o.delete(e), o.delete(t), d
14468 function ji(e, t, n, r, i, o, a) {
14471 if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
14472 e = e.buffer, t = t.buffer;
14474 return !(e.byteLength != t.byteLength || !o(new Ja(e), new Ja(t)));
14480 return e.name == t.name && e.message == t.message;
14483 return e == t + "";
14488 if (s || (s = z), e.size != t.size && !c) return !1;
14490 if (l) return l == t;
14491 r |= ue, a.set(e, t);
14492 var u = Pi(s(e), s(t), r, i, o, a);
14493 return a.delete(e), u;
14495 if (Ls) return Ls.call(e) == Ls.call(t)
14500 function Hi(e, t, n, r, i, o) {
14504 if (c != Fi(t).length && !a) return !1;
14505 for (var l = c; l--;) {
14507 if (!(a ? u in t : za.call(t, u))) return !1
14510 if (d && o.get(t)) return d == t;
14512 o.set(e, t), o.set(t, e);
14513 for (var h = a; ++l < c;) {
14514 var p = e[u = s[l]],
14516 if (r) var g = a ? r(m, p, u, t, e, o) : r(p, m, u, e, t, o);
14517 if (!(g === J ? p === m || i(p, m, n, r, o) : g)) {
14521 h || (h = "constructor" == u)
14524 var v = e.constructor,
14526 v != b && "constructor" in e && "constructor" in t && !("function" == typeof v && v instanceof v && "function" == typeof b && b instanceof b) && (f = !1)
14528 return o.delete(e), o.delete(t), f
14532 return ic(go(e, J, Mo), e + "")
14536 return Wn(e, ma, Qs)
14540 return Wn(e, ga, Js)
14544 for (var t = e.name + "", n = Ds[t], r = za.call(Ds, t) ? n.length : 0; r--;) {
14547 if (null == o || o == e) return i.name
14553 return (za.call(W, "placeholder") ? W : e).placeholder
14557 var e = W.iteratee || ka;
14558 return e = e === ka ? ar : e, arguments.length ? e(arguments[0], arguments[1]) : e
14561 function Bi(e, t) {
14562 var n = e.__data__;
14563 return ao(t) ? n["string" == typeof t ? "string" : "hash"] : n.map
14567 for (var t = ma(e), n = t.length; n--;) {
14570 t[n] = [r, i, uo(i)]
14575 function Yi(e, t) {
14577 return or(n) ? n : J
14581 var t = za.call(e, ss),
14587 var i = Ya.call(e);
14588 return r && (t ? e[ss] = n : delete e[ss]), i
14591 function Ki(e, t, n) {
14592 for (var r = -1, i = n.length; ++r < i;) {
14616 var t = e.match(Nt);
14617 return t ? t[1].split(It) : []
14620 function Xi(e, t, n) {
14621 for (var r = -1, i = (t = Wr(t, e)).length, o = !1; ++r < i;) {
14623 if (!(o = null != e && n(e, a))) break;
14626 return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Jo(i) && ro(a, i) && (zc(e) || Vc(e))
14631 n = e.constructor(t);
14632 return t && "string" == typeof e[0] && za.call(e, "index") && (n.index = e.index, n.input = e.input), n
14636 return "function" != typeof e.constructor || lo(e) ? {} : qs(ts(e))
14639 function eo(e, t, n, r) {
14640 var i = e.constructor;
14660 return Xr(e, r, n);
14667 return Jr(e, r, n);
14673 function to(e, t) {
14677 return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(Dt, "{\n/* [wrapped with " + t + "] */\n")
14681 return zc(e) || Vc(e) || !!(os && e && e[os])
14684 function ro(e, t) {
14685 return !!(t = null == t ? Me : t) && ("number" == typeof e || Vt.test(e)) && e > -1 && e % 1 == 0 && e < t
14688 function io(e, t, n) {
14689 if (!ea(n)) return !1;
14691 return !!("number" == r ? Go(n) && ro(t, n.length) : "string" == r && t in n) && Yo(n[t], e)
14694 function oo(e, t) {
14695 if (zc(e)) return !1;
14697 return !("number" != n && "symbol" != n && "boolean" != n && null != e && !oa(e)) || kt.test(e) || !Et.test(e) || null != t && e in Ra(t)
14702 return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e
14708 if ("function" != typeof n || !(t in Rt.prototype)) return !1;
14709 if (e === n) return !0;
14711 return !!r && e === r[0]
14715 return !!Wa && Wa in e
14719 var t = e && e.constructor;
14720 return e === ("function" == typeof t && t.prototype || qa)
14724 return e === e && !ea(e)
14727 function fo(e, t) {
14728 return function(n) {
14729 return null != n && n[e] === t && (t !== J || e in Ra(n))
14733 function ho(e, t) {
14737 o = i < (de | fe | be),
14738 a = r == be && n == pe || r == be && n == ye && e[7].length <= t[8] || r == (be | ye) && t[7].length <= t[8] && n == pe;
14739 if (!o && !a) return e;
14740 r & de && (e[2] = t[2], i |= n & de ? 0 : he);
14744 e[3] = c ? ii(c, s, t[4]) : s, e[4] = c ? V(e[3], oe) : t[4]
14746 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
14752 for (var n in Ra(e)) t.push(n);
14760 function go(e, t, r) {
14761 return t = ys(t === J ? e.length - 1 : t, 0),
14763 for (var i = arguments, o = -1, a = ys(i.length - t, 0), s = Sa(a); ++o < a;) s[o] = i[t + o];
14765 for (var c = Sa(t + 1); ++o < t;) c[o] = i[o];
14766 return c[t] = r(s), n(e, this, c)
14770 function vo(e, t) {
14771 return t.length < 2 ? e : Bn(e, Sr(t, 0, -1))
14774 function bo(e, t) {
14775 for (var n = e.length, r = _s(t.length, n), i = ai(e); r--;) {
14777 e[r] = ro(o, n) ? i[o] : J
14782 function yo(e, t, n) {
14784 return ic(e, to(r, ko(Zi(r), n)))
14790 return function() {
14793 if (n = r, i > 0) {
14794 if (++t >= Ee) return arguments[0]
14796 return e.apply(J, arguments)
14800 function $o(e, t) {
14804 for (t = t === J ? r : t; ++n < t;) {
14807 e[o] = e[n], e[n] = a
14809 return e.length = t, e
14813 if ("string" == typeof e || oa(e)) return e;
14815 return "0" == t && 1 / e == -Te ? "-0" : t
14830 function ko(e, t) {
14831 return i(Ie, function(n) {
14832 var r = "_." + n[0];
14833 t & n[1] && !c(e, r) && e.push(r)
14838 if (e instanceof Rt) return e.clone();
14839 var t = new X(e.__wrapped__, e.__chain__);
14840 return t.__actions__ = ai(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
14843 function xo(e, t, n) {
14844 var r = null == e ? 0 : e.length;
14846 var i = null == n ? 0 : ca(n);
14847 return i < 0 && (i = ys(r + i, 0)), b(e, zi(t, 3), i)
14850 function To(e, t, n) {
14851 var r = null == e ? 0 : e.length;
14854 return n !== J && (i = ca(n), i = n < 0 ? ys(r + i, 0) : _s(i, r - 1)), b(e, zi(t, 3), i, !0)
14858 return (null == e ? 0 : e.length) ? On(e, 1) : []
14862 return e && e.length ? e[0] : J
14866 var t = null == e ? 0 : e.length;
14867 return t ? e[t - 1] : J
14870 function Oo(e, t) {
14871 return e && e.length && t && t.length ? _r(e, t) : e
14875 return null == e ? e : ks.call(e)
14879 if (!e || !e.length) return [];
14881 return e = s(e, function(e) {
14882 if (Ko(e)) return t = ys(e.length, t), !0
14883 }), M(t, function(t) {
14888 function Io(e, t) {
14889 if (!e || !e.length) return [];
14891 return null == t ? r : u(r, function(e) {
14898 return t.__chain__ = !0, t
14901 function Po(e, t) {
14905 function jo(e, t) {
14906 return (zc(e) ? i : Us)(e, zi(t, 3))
14909 function Ho(e, t) {
14910 return (zc(e) ? o : Vs)(e, zi(t, 3))
14913 function Lo(e, t) {
14914 return (zc(e) ? u : ur)(e, zi(t, 3))
14917 function Fo(e, t, n) {
14918 return t = n ? J : t, t = e && null == t ? e.length : t, Di(e, be, J, J, J, J, t)
14921 function qo(e, t) {
14923 if ("function" != typeof t) throw new Ha(ne);
14926 return --e > 0 && (n = t.apply(this, arguments)), e <= 1 && (t = J), n
14930 function Uo(e, t, n) {
14931 var r = Di(e, pe, J, J, J, J, J, t = n ? J : t);
14932 return r.placeholder = Uo.placeholder, r
14935 function Vo(e, t, n) {
14936 var r = Di(e, me, J, J, J, J, J, t = n ? J : t);
14937 return r.placeholder = Vo.placeholder, r
14940 function zo(e, t, n) {
14944 return u = d = J, g = t, h = e.apply(r, n)
14948 return g = e, p = rc(s, t), v ? r(e) : h
14954 return b ? _s(r, f - n) : r
14960 return m === J || n >= t || n < 0 || b && r >= f
14965 if (a(e)) return c(e);
14970 return p = J, y && u ? r(e) : (u = d = J, h)
14976 if (u = arguments, d = this, m = e, n) {
14977 if (p === J) return i(m);
14978 if (b) return p = rc(s, t), r(m)
14980 return p === J && (p = rc(s, t)), h
14982 var u, d, f, h, p, m, g = 0,
14986 if ("function" != typeof e) throw new Ha(ne);
14987 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() {
14988 p !== J && Ks(p), g = 0, u = m = d = p = J
14989 }, l.flush = function() {
14990 return p === J ? h : c(Dc())
14994 function Bo(e, t) {
14995 if ("function" != typeof e || null != t && "function" != typeof t) throw new Ha(ne);
14996 var n = function() {
14998 i = t ? t.apply(this, r) : r[0],
15000 if (o.has(i)) return o.get(i);
15001 var a = e.apply(this, r);
15002 return n.cache = o.set(i, a) || o, a
15004 return n.cache = new(Bo.Cache || Kt), n
15008 if ("function" != typeof e) throw new Ha(ne);
15009 return function() {
15011 switch (t.length) {
15013 return !e.call(this);
15015 return !e.call(this, t[0]);
15017 return !e.call(this, t[0], t[1]);
15019 return !e.call(this, t[0], t[1], t[2])
15021 return !e.apply(this, t)
15025 function Yo(e, t) {
15026 return e === t || e !== e && t !== t
15030 return null != e && Jo(e.length) && !Xo(e)
15034 return ta(e) && Go(e)
15038 if (!ta(e)) return !1;
15040 return t == qe || t == Fe || "string" == typeof e.message && "string" == typeof e.name && !ra(e)
15044 if (!ea(e)) return !1;
15046 return t == Ue || t == Ve || t == je || t == Ge
15050 return "number" == typeof e && e == ca(e)
15054 return "number" == typeof e && e > -1 && e % 1 == 0 && e <= Me
15059 return null != e && ("object" == t || "function" == t)
15063 return null != e && "object" == typeof e
15067 return "number" == typeof e || ta(e) && Yn(e) == Be
15071 if (!ta(e) || Yn(e) != Ye) return !1;
15073 if (null === t) return !0;
15074 var n = za.call(t, "constructor") && t.constructor;
15075 return "function" == typeof n && n instanceof n && Va.call(n) == Ga
15079 return "string" == typeof e || !zc(e) && ta(e) && Yn(e) == Xe
15083 return "symbol" == typeof e || ta(e) && Yn(e) == Qe
15088 if (Go(e)) return ia(e) ? K(e) : ai(e);
15089 if (as && e[as]) return F(e[as]());
15091 return (t == ze ? q : t == Ze ? z : ba)(e)
15095 return e ? (e = ua(e)) === Te || e === -Te ? (e < 0 ? -1 : 1) * Ae : e === e ? e : 0 : 0 === e ? e : 0
15101 return t === t ? n ? t - n : t : 0
15105 return e ? hn(ca(e), 0, Oe) : 0
15109 if ("number" == typeof e) return e;
15110 if (oa(e)) return Se;
15112 var t = "function" == typeof e.valueOf ? e.valueOf() : e;
15113 e = ea(t) ? t + "" : t
15115 if ("string" != typeof e) return 0 === e ? e : +e;
15116 e = e.replace(At, "");
15117 var n = Ft.test(e);
15118 return n || Ut.test(e) ? kn(e.slice(2), n ? 2 : 8) : Lt.test(e) ? Se : +e
15122 return si(e, ga(e))
15126 return null == e ? "" : Pr(e)
15129 function ha(e, t, n) {
15130 var r = null == e ? J : Bn(e, t);
15131 return r === J ? n : r
15134 function pa(e, t) {
15135 return null != e && Xi(e, t, Zn)
15139 return Go(e) ? Qt(e) : sr(e)
15143 return Go(e) ? Qt(e, !0) : cr(e)
15146 function va(e, t) {
15147 if (null == e) return {};
15148 var n = u(qi(e), function(e) {
15151 return t = zi(t), br(e, n, function(e, n) {
15157 return null == e ? [] : O(e, ma(e))
15161 return El(fa(e).toLowerCase())
15165 return (e = fa(e)) && e.replace(zt, Fn).replace(un, "")
15168 function $a(e, t, n) {
15169 return e = fa(e), (t = n ? J : t) === J ? L(e) ? Q(e) : g(e) : e.match(t) || []
15173 return function() {
15183 return ar("function" == typeof e ? e : pn(e, ae))
15186 function Ca(e, t, n) {
15189 null != n || ea(t) && (o.length || !r.length) || (n = t, t = e, e = this, o = zn(t, ma(t)));
15190 var a = !(ea(n) && "chain" in n && !n.chain),
15192 return i(o, function(n) {
15194 e[n] = r, s && (e.prototype[n] = function() {
15195 var t = this.__chain__;
15197 var n = e(this.__wrapped__);
15198 return (n.__actions__ = ai(this.__actions__)).push({
15202 }), n.__chain__ = t, n
15204 return r.apply(e, d([this.value()], arguments))
15212 return oo(e) ? E(wo(e)) : yr(e)
15222 var Sa = (k = null == k ? Tn : Vn.defaults(Tn.Object(), k, Vn.pick(Tn, mn))).Array,
15234 Ua = k["__core-js_shared__"],
15236 za = qa.hasOwnProperty,
15239 var e = /[^.]+$/.exec(Ua && Ua.keys && Ua.keys.IE_PROTO || "");
15240 return e ? "Symbol(src)_1." + e : ""
15245 Za = Pa("^" + Va.call(za).replace(Tt, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
15246 Xa = Sn ? k.Buffer : J,
15249 es = Xa ? Xa.allocUnsafe : J,
15250 ts = U(Ra.getPrototypeOf, Ra),
15252 rs = qa.propertyIsEnumerable,
15254 os = Qa ? Qa.isConcatSpreadable : J,
15255 as = Qa ? Qa.iterator : J,
15256 ss = Qa ? Qa.toStringTag : J,
15259 var e = Yi(Ra, "defineProperty");
15260 return e({}, "", {}), e
15263 ls = k.clearTimeout !== Tn.clearTimeout && k.clearTimeout,
15264 us = Oa && Oa.now !== Tn.Date.now && Oa.now,
15265 ds = k.setTimeout !== Tn.setTimeout && k.setTimeout,
15268 ps = Ra.getOwnPropertySymbols,
15269 ms = Xa ? Xa.isBuffer : J,
15272 bs = U(Ra.keys, Ra),
15279 Cs = Yi(k, "DataView"),
15281 Ts = Yi(k, "Promise"),
15283 As = Yi(k, "WeakMap"),
15284 Ss = Yi(Ra, "create"),
15292 Hs = Qa ? Qa.prototype : J,
15293 Ls = Hs ? Hs.valueOf : J,
15294 Fs = Hs ? Hs.toString : J,
15297 return function(t) {
15298 if (!ea(t)) return {};
15299 if (ns) return ns(t);
15302 return e.prototype = J, n
15305 W.templateSettings = {
15313 }, 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() {
15314 this.__data__ = Ss ? Ss(null) : {}, this.size = 0
15315 }, Yt.prototype.delete = function(e) {
15316 var t = this.has(e) && delete this.__data__[e];
15317 return this.size -= t ? 1 : 0, t
15318 }, Yt.prototype.get = function(e) {
15319 var t = this.__data__;
15322 return n === re ? J : n
15324 return za.call(t, e) ? t[e] : J
15325 }, Yt.prototype.has = function(e) {
15326 var t = this.__data__;
15327 return Ss ? t[e] !== J : za.call(t, e)
15328 }, Yt.prototype.set = function(e, t) {
15329 var n = this.__data__;
15330 return this.size += this.has(e) ? 0 : 1, n[e] = Ss && t === J ? re : t, this
15331 }, Gt.prototype.clear = function() {
15332 this.__data__ = [], this.size = 0
15333 }, Gt.prototype.delete = function(e) {
15334 var t = this.__data__,
15336 return !(n < 0 || (n == t.length - 1 ? t.pop() : is.call(t, n, 1), --this.size, 0))
15337 }, Gt.prototype.get = function(e) {
15338 var t = this.__data__,
15340 return n < 0 ? J : t[n][1]
15341 }, Gt.prototype.has = function(e) {
15342 return on(this.__data__, e) > -1
15343 }, Gt.prototype.set = function(e, t) {
15344 var n = this.__data__,
15346 return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
15347 }, Kt.prototype.clear = function() {
15348 this.size = 0, this.__data__ = {
15350 map: new(xs || Gt),
15353 }, Kt.prototype.delete = function(e) {
15354 var t = Bi(this, e).delete(e);
15355 return this.size -= t ? 1 : 0, t
15356 }, Kt.prototype.get = function(e) {
15357 return Bi(this, e).get(e)
15358 }, Kt.prototype.has = function(e) {
15359 return Bi(this, e).has(e)
15360 }, Kt.prototype.set = function(e, t) {
15361 var n = Bi(this, e),
15363 return n.set(e, t), this.size += n.size == r ? 0 : 1, this
15364 }, Zt.prototype.add = Zt.prototype.push = function(e) {
15365 return this.__data__.set(e, re), this
15366 }, Zt.prototype.has = function(e) {
15367 return this.__data__.has(e)
15368 }, Xt.prototype.clear = function() {
15369 this.__data__ = new Gt, this.size = 0
15370 }, Xt.prototype.delete = function(e) {
15371 var t = this.__data__,
15373 return this.size = t.size, n
15374 }, Xt.prototype.get = function(e) {
15375 return this.__data__.get(e)
15376 }, Xt.prototype.has = function(e) {
15377 return this.__data__.has(e)
15378 }, Xt.prototype.set = function(e, t) {
15379 var n = this.__data__;
15380 if (n instanceof Gt) {
15381 var r = n.__data__;
15382 if (!xs || r.length < ee - 1) return r.push([e, t]), this.size = ++n.size, this;
15383 n = this.__data__ = new Kt(r)
15385 return n.set(e, t), this.size = n.size, this
15391 Ws = Os ? function(e, t) {
15392 return Os.set(e, t), e
15394 Ys = cs ? function(e, t) {
15395 return cs(e, "toString", {
15403 Ks = ls || function(e) {
15404 return Tn.clearTimeout(e)
15406 Zs = Ms && 1 / z(new Ms([, -0]))[1] == Te ? function(e) {
15409 Xs = Os ? function(e) {
15412 Qs = ps ? function(e) {
15413 return null == e ? [] : (e = Ra(e), s(ps(e), function(t) {
15414 return rs.call(e, t)
15417 Js = ps ? function(e) {
15418 for (var t = []; e;) d(t, Qs(e)), e = ts(e);
15422 (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) {
15424 n = t == Ye ? e.constructor : J,
15425 r = n ? Eo(n) : "";
15426 if (r) switch (r) {
15432 return "[object Promise]";
15440 var tc = Ua ? Xo : Aa,
15442 rc = ds || function(e, t) {
15443 return Tn.setTimeout(e, t)
15447 var t = Bo(e, function(e) {
15448 return n.size === ie && n.clear(), e
15454 return Ct.test(e) && t.push(""), e.replace(xt, function(e, n, r, i) {
15455 t.push(r ? i.replace(Pt, "$1") : n || e)
15458 ac = Cr(function(e, t) {
15459 return Ko(e) ? wn(e, On(t, 1, Ko, !0)) : []
15461 sc = Cr(function(e, t) {
15463 return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), zi(n, 2)) : []
15465 cc = Cr(function(e, t) {
15467 return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), J, n) : []
15469 lc = Cr(function(e) {
15471 return t.length && t[0] === e[0] ? Qn(t) : []
15473 uc = Cr(function(e) {
15476 return t === So(n) ? t = J : n.pop(), n.length && n[0] === e[0] ? Qn(n, zi(t, 2)) : []
15478 dc = Cr(function(e) {
15481 return (t = "function" == typeof t ? t : J) && n.pop(), n.length && n[0] === e[0] ? Qn(n, J, t) : []
15484 hc = Li(function(e, t) {
15485 var n = null == e ? 0 : e.length,
15487 return $r(e, u(t, function(e) {
15488 return ro(e, n) ? +e : e
15491 pc = Cr(function(e) {
15492 return jr(On(e, 1, Ko, !0))
15494 mc = Cr(function(e) {
15496 return Ko(t) && (t = J), jr(On(e, 1, Ko, !0), zi(t, 2))
15498 gc = Cr(function(e) {
15500 return t = "function" == typeof t ? t : J, jr(On(e, 1, Ko, !0), J, t)
15502 vc = Cr(function(e, t) {
15503 return Ko(e) ? wn(e, t) : []
15505 bc = Cr(function(e) {
15506 return Ur(s(e, Ko))
15508 yc = Cr(function(e) {
15510 return Ko(t) && (t = J), Ur(s(e, Ko), zi(t, 2))
15512 _c = Cr(function(e) {
15514 return t = "function" == typeof t ? t : J, Ur(s(e, Ko), J, t)
15517 wc = Cr(function(e) {
15519 n = t > 1 ? e[t - 1] : J;
15520 return n = "function" == typeof n ? (e.pop(), n) : J, Io(e, n)
15522 Ec = Li(function(e) {
15525 r = this.__wrapped__,
15529 return !(t > 1 || this.__actions__.length) && r instanceof Rt && ro(n) ? ((r = r.slice(n, +n + (t ? 1 : 0))).__actions__.push({
15533 }), new X(r, this.__chain__).thru(function(e) {
15534 return t && !e.length && e.push(J), e
15537 kc = ui(function(e, t, n) {
15538 za.call(e, n) ? ++e[n] : dn(e, n, 1)
15542 Tc = ui(function(e, t, n) {
15543 za.call(e, n) ? e[n].push(t) : dn(e, n, [t])
15545 Mc = Cr(function(e, t, r) {
15547 o = "function" == typeof t,
15548 a = Go(e) ? Sa(e.length) : [];
15549 return Us(e, function(e) {
15550 a[++i] = o ? n(t, e, r) : er(e, t, r)
15553 Ac = ui(function(e, t, n) {
15556 Sc = ui(function(e, t, n) {
15557 e[n ? 0 : 1].push(t)
15564 Oc = Cr(function(e, t) {
15565 if (null == e) return [];
15567 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), [])
15569 Dc = us || function() {
15570 return Tn.Date.now()
15572 Nc = Cr(function(e, t, n) {
15575 var i = V(n, Vi(Nc));
15578 return Di(e, r, t, n, i)
15580 Ic = Cr(function(e, t, n) {
15583 var i = V(n, Vi(Ic));
15586 return Di(t, r, e, n, i)
15588 Rc = Cr(function(e, t) {
15591 Pc = Cr(function(e, t, n) {
15592 return $n(e, ua(t) || 0, n)
15595 var jc = Gs(function(e, t) {
15596 var r = (t = 1 == t.length && zc(t[0]) ? u(t[0], S(zi())) : u(On(t, 1), S(zi()))).length;
15597 return Cr(function(i) {
15598 for (var o = -1, a = _s(i.length, r); ++o < a;) i[o] = t[o].call(this, i[o]);
15599 return n(e, this, i)
15602 Hc = Cr(function(e, t) {
15603 var n = V(t, Vi(Hc));
15604 return Di(e, ge, J, t, n)
15606 Lc = Cr(function(e, t) {
15607 var n = V(t, Vi(Lc));
15608 return Di(e, ve, J, t, n)
15610 Fc = Li(function(e, t) {
15611 return Di(e, ye, J, J, J, t)
15614 Uc = Mi(function(e, t) {
15617 Vc = tr(function() {
15619 }()) ? tr : function(e) {
15620 return ta(e) && za.call(e, "callee") && !rs.call(e, "callee")
15623 Bc = Nn ? S(Nn) : function(e) {
15624 return ta(e) && Yn(e) == nt
15627 Yc = In ? S(In) : function(e) {
15628 return ta(e) && Yn(e) == Le
15630 Gc = Rn ? S(Rn) : function(e) {
15631 return ta(e) && ec(e) == ze
15633 Kc = Pn ? S(Pn) : function(e) {
15634 return ta(e) && Yn(e) == Ke
15636 Zc = jn ? S(jn) : function(e) {
15637 return ta(e) && ec(e) == Ze
15639 Xc = Hn ? S(Hn) : function(e) {
15640 return ta(e) && Jo(e.length) && !!vn[Yn(e)]
15643 Jc = Mi(function(e, t) {
15646 el = di(function(e, t) {
15647 if (lo(t) || Go(t)) si(t, ma(t), e);
15649 for (var n in t) za.call(t, n) && rn(e, n, t[n])
15651 tl = di(function(e, t) {
15654 nl = di(function(e, t, n, r) {
15657 rl = di(function(e, t, n, r) {
15661 ol = Cr(function(e) {
15662 return e.push(J, Ni), n(nl, J, e)
15664 al = Cr(function(e) {
15665 return e.push(J, Ii), n(dl, J, e)
15667 sl = wi(function(e, t, n) {
15670 cl = wi(function(e, t, n) {
15671 za.call(e, t) ? e[t].push(n) : e[t] = [n]
15674 ul = di(function(e, t, n) {
15677 dl = di(function(e, t, n, r) {
15680 fl = Li(function(e, t) {
15682 if (null == e) return n;
15684 t = u(t, function(t) {
15685 return t = Wr(t, e), r || (r = t.length > 1), t
15686 }), si(e, qi(e), n), r && (n = pn(n, ae | se | ce, Ri));
15687 for (var i = t.length; i--;) Hr(n, t[i]);
15690 hl = Li(function(e, t) {
15691 return null == e ? {} : vr(e, t)
15695 gl = gi(function(e, t, n) {
15696 return t = t.toLowerCase(), e + (n ? ya(t) : t)
15698 vl = gi(function(e, t, n) {
15699 return e + (n ? "-" : "") + t.toLowerCase()
15701 bl = gi(function(e, t, n) {
15702 return e + (n ? " " : "") + t.toLowerCase()
15704 yl = mi("toLowerCase"),
15705 _l = gi(function(e, t, n) {
15706 return e + (n ? "_" : "") + t.toLowerCase()
15708 $l = gi(function(e, t, n) {
15709 return e + (n ? " " : "") + El(t)
15711 wl = gi(function(e, t, n) {
15712 return e + (n ? " " : "") + t.toUpperCase()
15714 El = mi("toUpperCase"),
15715 kl = Cr(function(e, t) {
15719 return Zo(e) ? e : new Da(e)
15722 Cl = Li(function(e, t) {
15723 return i(t, function(t) {
15724 t = wo(t), dn(e, t, Nc(e[t], e))
15729 Ml = Cr(function(e, t) {
15730 return function(n) {
15734 Al = Cr(function(e, t) {
15735 return function(n) {
15744 Rl = Ei(function(e, t) {
15748 jl = Ei(function(e, t) {
15752 Ll = Ei(function(e, t) {
15756 ql = Ei(function(e, t) {
15759 return W.after = function(e, t) {
15760 if ("function" != typeof t) throw new Ha(ne);
15763 if (--e < 1) return t.apply(this, arguments)
15765 }, 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() {
15766 if (!arguments.length) return [];
15767 var e = arguments[0];
15768 return zc(e) ? e : [e]
15769 }, W.chain = Ro, W.chunk = function(e, t, n) {
15770 t = (n ? io(e, t, n) : t === J) ? 1 : ys(ca(t), 0);
15771 var r = null == e ? 0 : e.length;
15772 if (!r || t < 1) return [];
15773 for (var i = 0, o = 0, a = Sa(fs(r / t)); i < r;) a[o++] = Sr(e, i, i += t);
15775 }, W.compact = function(e) {
15776 for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
15781 }, W.concat = function() {
15782 var e = arguments.length;
15784 for (var t = Sa(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
15785 return d(zc(n) ? ai(n) : [n], On(t, 1))
15786 }, W.cond = function(e) {
15787 var t = null == e ? 0 : e.length,
15789 return e = t ? u(e, function(e) {
15790 if ("function" != typeof e[1]) throw new Ha(ne);
15791 return [r(e[0]), e[1]]
15792 }) : [], Cr(function(r) {
15793 for (var i = -1; ++i < t;) {
15795 if (n(o[0], this, r)) return n(o[1], this, r)
15798 }, W.conforms = function(e) {
15799 return yn(pn(e, ae))
15800 }, W.constant = wa, W.countBy = kc, W.create = function(e, t) {
15802 return null == t ? n : sn(n, t)
15803 }, 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) {
15804 var r = null == e ? 0 : e.length;
15805 return r ? (t = n || t === J ? 1 : ca(t), Sr(e, t < 0 ? 0 : t, r)) : []
15806 }, W.dropRight = function(e, t, n) {
15807 var r = null == e ? 0 : e.length;
15808 return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Sr(e, 0, t < 0 ? 0 : t)) : []
15809 }, W.dropRightWhile = function(e, t) {
15810 return e && e.length ? Fr(e, zi(t, 3), !0, !0) : []
15811 }, W.dropWhile = function(e, t) {
15812 return e && e.length ? Fr(e, zi(t, 3), !0) : []
15813 }, W.fill = function(e, t, n, r) {
15814 var i = null == e ? 0 : e.length;
15815 return i ? (n && "number" != typeof n && io(e, t, n) && (n = 0, r = i), Mn(e, t, n, r)) : []
15816 }, W.filter = function(e, t) {
15817 return (zc(e) ? s : An)(e, zi(t, 3))
15818 }, W.flatMap = function(e, t) {
15819 return On(Lo(e, t), 1)
15820 }, W.flatMapDeep = function(e, t) {
15821 return On(Lo(e, t), Te)
15822 }, W.flatMapDepth = function(e, t, n) {
15823 return n = n === J ? 1 : ca(n), On(Lo(e, t), n)
15824 }, W.flatten = Mo, W.flattenDeep = function(e) {
15825 return (null == e ? 0 : e.length) ? On(e, Te) : []
15826 }, W.flattenDepth = function(e, t) {
15827 return (null == e ? 0 : e.length) ? (t = t === J ? 1 : ca(t), On(e, t)) : []
15828 }, W.flip = function(e) {
15830 }, W.flow = xl, W.flowRight = Tl, W.fromPairs = function(e) {
15831 for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
15836 }, W.functions = function(e) {
15837 return null == e ? [] : zn(e, ma(e))
15838 }, W.functionsIn = function(e) {
15839 return null == e ? [] : zn(e, ga(e))
15840 }, W.groupBy = Tc, W.initial = function(e) {
15841 return (null == e ? 0 : e.length) ? Sr(e, 0, -1) : []
15842 }, 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) {
15844 return t = zi(t, 3), Dn(e, function(e, r, i) {
15845 dn(n, t(e, r, i), e)
15847 }, W.mapValues = function(e, t) {
15849 return t = zi(t, 3), Dn(e, function(e, r, i) {
15850 dn(n, r, t(e, r, i))
15852 }, W.matches = function(e) {
15853 return dr(pn(e, ae))
15854 }, W.matchesProperty = function(e, t) {
15855 return fr(e, pn(t, ae))
15856 }, 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) {
15857 return e = ca(e), Cr(function(t) {
15860 }, W.omit = fl, W.omitBy = function(e, t) {
15861 return va(e, Wo(zi(t)))
15862 }, W.once = function(e) {
15864 }, W.orderBy = function(e, t, n, r) {
15865 return null == e ? [] : (zc(t) || (t = null == t ? [] : [t]), n = r ? J : n, zc(n) || (n = null == n ? [] : [n]), gr(e, t, n))
15866 }, 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) {
15867 return function(t) {
15868 return null == e ? J : Bn(e, t)
15870 }, W.pull = fc, W.pullAll = Oo, W.pullAllBy = function(e, t, n) {
15871 return e && e.length && t && t.length ? _r(e, t, zi(n, 2)) : e
15872 }, W.pullAllWith = function(e, t, n) {
15873 return e && e.length && t && t.length ? _r(e, t, J, n) : e
15874 }, W.pullAt = hc, W.range = Nl, W.rangeRight = Il, W.rearg = Fc, W.reject = function(e, t) {
15875 return (zc(e) ? s : An)(e, Wo(zi(t, 3)))
15876 }, W.remove = function(e, t) {
15878 if (!e || !e.length) return n;
15882 for (t = zi(t, 3); ++r < o;) {
15884 t(a, r, e) && (n.push(a), i.push(r))
15887 }, W.rest = function(e, t) {
15888 if ("function" != typeof e) throw new Ha(ne);
15889 return t = t === J ? t : ca(t), Cr(e, t)
15890 }, W.reverse = Do, W.sampleSize = function(e, t, n) {
15891 return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), (zc(e) ? en : Tr)(e, t)
15892 }, W.set = function(e, t, n) {
15893 return null == e ? e : Mr(e, t, n)
15894 }, W.setWith = function(e, t, n, r) {
15895 return r = "function" == typeof r ? r : J, null == e ? e : Mr(e, t, n, r)
15896 }, W.shuffle = function(e) {
15897 return (zc(e) ? tn : Ar)(e)
15898 }, W.slice = function(e, t, n) {
15899 var r = null == e ? 0 : e.length;
15900 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)) : []
15901 }, W.sortBy = Oc, W.sortedUniq = function(e) {
15902 return e && e.length ? Ir(e) : []
15903 }, W.sortedUniqBy = function(e, t) {
15904 return e && e.length ? Ir(e, zi(t, 2)) : []
15905 }, W.split = function(e, t, n) {
15906 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) : []
15907 }, W.spread = function(e, t) {
15908 if ("function" != typeof e) throw new Ha(ne);
15909 return t = null == t ? 0 : ys(ca(t), 0), Cr(function(r) {
15912 return i && d(o, i), n(e, this, o)
15914 }, W.tail = function(e) {
15915 var t = null == e ? 0 : e.length;
15916 return t ? Sr(e, 1, t) : []
15917 }, W.take = function(e, t, n) {
15918 return e && e.length ? (t = n || t === J ? 1 : ca(t), Sr(e, 0, t < 0 ? 0 : t)) : []
15919 }, W.takeRight = function(e, t, n) {
15920 var r = null == e ? 0 : e.length;
15921 return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Sr(e, t < 0 ? 0 : t, r)) : []
15922 }, W.takeRightWhile = function(e, t) {
15923 return e && e.length ? Fr(e, zi(t, 3), !1, !0) : []
15924 }, W.takeWhile = function(e, t) {
15925 return e && e.length ? Fr(e, zi(t, 3)) : []
15926 }, W.tap = function(e, t) {
15928 }, W.throttle = function(e, t, n) {
15931 if ("function" != typeof e) throw new Ha(ne);
15932 return ea(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), zo(e, t, {
15937 }, W.thru = Po, W.toArray = aa, W.toPairs = pl, W.toPairsIn = ml, W.toPath = function(e) {
15938 return zc(e) ? u(e, wo) : oa(e) ? [e] : ai(oc(fa(e)))
15939 }, W.toPlainObject = da, W.transform = function(e, t, n) {
15941 o = r || Wc(e) || Xc(e);
15942 if (t = zi(t, 4), null == n) {
15943 var a = e && e.constructor;
15944 n = o ? r ? new a : [] : ea(e) && Xo(a) ? qs(ts(e)) : {}
15946 return (o ? i : Dn)(e, function(e, r, i) {
15947 return t(n, e, r, i)
15949 }, W.unary = function(e) {
15951 }, W.union = pc, W.unionBy = mc, W.unionWith = gc, W.uniq = function(e) {
15952 return e && e.length ? jr(e) : []
15953 }, W.uniqBy = function(e, t) {
15954 return e && e.length ? jr(e, zi(t, 2)) : []
15955 }, W.uniqWith = function(e, t) {
15956 return t = "function" == typeof t ? t : J, e && e.length ? jr(e, J, t) : []
15957 }, W.unset = function(e, t) {
15958 return null == e || Hr(e, t)
15959 }, W.unzip = No, W.unzipWith = Io, W.update = function(e, t, n) {
15960 return null == e ? e : Lr(e, t, Br(n))
15961 }, W.updateWith = function(e, t, n, r) {
15962 return r = "function" == typeof r ? r : J, null == e ? e : Lr(e, t, Br(n), r)
15963 }, W.values = ba, W.valuesIn = function(e) {
15964 return null == e ? [] : O(e, ga(e))
15965 }, W.without = vc, W.words = $a, W.wrap = function(e, t) {
15966 return Hc(Br(t), e)
15967 }, W.xor = bc, W.xorBy = yc, W.xorWith = _c, W.zip = $c, W.zipObject = function(e, t) {
15968 return Vr(e || [], t || [], rn)
15969 }, W.zipObjectDeep = function(e, t) {
15970 return Vr(e || [], t || [], Mr)
15971 }, 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) {
15972 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)
15973 }, W.clone = function(e) {
15975 }, W.cloneDeep = function(e) {
15976 return pn(e, ae | ce)
15977 }, W.cloneDeepWith = function(e, t) {
15978 return t = "function" == typeof t ? t : J, pn(e, ae | ce, t)
15979 }, W.cloneWith = function(e, t) {
15980 return t = "function" == typeof t ? t : J, pn(e, ce, t)
15981 }, W.conformsTo = function(e, t) {
15982 return null == t || _n(e, t, ma(t))
15983 }, W.deburr = _a, W.defaultTo = function(e, t) {
15984 return null == e || e !== e ? t : e
15985 }, W.divide = jl, W.endsWith = function(e, t, n) {
15986 e = fa(e), t = Pr(t);
15988 i = n = n === J ? r : hn(ca(n), 0, r);
15989 return (n -= t.length) >= 0 && e.slice(n, i) == t
15990 }, W.eq = Yo, W.escape = function(e) {
15991 return (e = fa(e)) && yt.test(e) ? e.replace(vt, qn) : e
15992 }, W.escapeRegExp = function(e) {
15993 return (e = fa(e)) && Mt.test(e) ? e.replace(Tt, "\\$&") : e
15994 }, W.every = function(e, t, n) {
15995 var r = zc(e) ? a : Cn;
15996 return n && io(e, t, n) && (t = J), r(e, zi(t, 3))
15997 }, W.find = Cc, W.findIndex = xo, W.findKey = function(e, t) {
15998 return v(e, zi(t, 3), Dn)
15999 }, W.findLast = xc, W.findLastIndex = To, W.findLastKey = function(e, t) {
16000 return v(e, zi(t, 3), Ln)
16001 }, W.floor = Hl, W.forEach = jo, W.forEachRight = Ho, W.forIn = function(e, t) {
16002 return null == e ? e : zs(e, zi(t, 3), ga)
16003 }, W.forInRight = function(e, t) {
16004 return null == e ? e : Bs(e, zi(t, 3), ga)
16005 }, W.forOwn = function(e, t) {
16006 return e && Dn(e, zi(t, 3))
16007 }, W.forOwnRight = function(e, t) {
16008 return e && Ln(e, zi(t, 3))
16009 }, W.get = ha, W.gt = qc, W.gte = Uc, W.has = function(e, t) {
16010 return null != e && Xi(e, t, Kn)
16011 }, W.hasIn = pa, W.head = Ao, W.identity = Ea, W.includes = function(e, t, n, r) {
16012 e = Go(e) ? e : ba(e), n = n && !r ? ca(n) : 0;
16014 return n < 0 && (n = ys(i + n, 0)), ia(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && y(e, t, n) > -1
16015 }, W.indexOf = function(e, t, n) {
16016 var r = null == e ? 0 : e.length;
16018 var i = null == n ? 0 : ca(n);
16019 return i < 0 && (i = ys(r + i, 0)), y(e, t, i)
16020 }, W.inRange = function(e, t, n) {
16021 return t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), e = ua(e), Xn(e, t, n)
16022 }, W.invoke = ll, W.isArguments = Vc, W.isArray = zc, W.isArrayBuffer = Bc, W.isArrayLike = Go, W.isArrayLikeObject = Ko, W.isBoolean = function(e) {
16023 return !0 === e || !1 === e || ta(e) && Yn(e) == He
16024 }, W.isBuffer = Wc, W.isDate = Yc, W.isElement = function(e) {
16025 return ta(e) && 1 === e.nodeType && !ra(e)
16026 }, W.isEmpty = function(e) {
16027 if (null == e) return !0;
16028 if (Go(e) && (zc(e) || "string" == typeof e || "function" == typeof e.splice || Wc(e) || Xc(e) || Vc(e))) return !e.length;
16030 if (t == ze || t == Ze) return !e.size;
16031 if (lo(e)) return !sr(e).length;
16033 if (za.call(e, n)) return !1;
16035 }, W.isEqual = function(e, t) {
16037 }, W.isEqualWith = function(e, t, n) {
16038 var r = (n = "function" == typeof n ? n : J) ? n(e, t) : J;
16039 return r === J ? nr(e, t, J, n) : !!r
16040 }, W.isError = Zo, W.isFinite = function(e) {
16041 return "number" == typeof e && gs(e)
16042 }, W.isFunction = Xo, W.isInteger = Qo, W.isLength = Jo, W.isMap = Gc, W.isMatch = function(e, t) {
16043 return e === t || ir(e, t, Wi(t))
16044 }, W.isMatchWith = function(e, t, n) {
16045 return n = "function" == typeof n ? n : J, ir(e, t, Wi(t), n)
16046 }, W.isNaN = function(e) {
16047 return na(e) && e != +e
16048 }, W.isNative = function(e) {
16049 if (tc(e)) throw new Da(te);
16051 }, W.isNil = function(e) {
16053 }, W.isNull = function(e) {
16055 }, W.isNumber = na, W.isObject = ea, W.isObjectLike = ta, W.isPlainObject = ra, W.isRegExp = Kc, W.isSafeInteger = function(e) {
16056 return Qo(e) && e >= -Me && e <= Me
16057 }, W.isSet = Zc, W.isString = ia, W.isSymbol = oa, W.isTypedArray = Xc, W.isUndefined = function(e) {
16059 }, W.isWeakMap = function(e) {
16060 return ta(e) && ec(e) == et
16061 }, W.isWeakSet = function(e) {
16062 return ta(e) && Yn(e) == tt
16063 }, W.join = function(e, t) {
16064 return null == e ? "" : vs.call(e, t)
16065 }, W.kebabCase = vl, W.last = So, W.lastIndexOf = function(e, t, n) {
16066 var r = null == e ? 0 : e.length;
16069 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)
16070 }, W.lowerCase = bl, W.lowerFirst = yl, W.lt = Qc, W.lte = Jc, W.max = function(e) {
16071 return e && e.length ? xn(e, Ea, Gn) : J
16072 }, W.maxBy = function(e, t) {
16073 return e && e.length ? xn(e, zi(t, 2), Gn) : J
16074 }, W.mean = function(e) {
16076 }, W.meanBy = function(e, t) {
16077 return w(e, zi(t, 2))
16078 }, W.min = function(e) {
16079 return e && e.length ? xn(e, Ea, lr) : J
16080 }, W.minBy = function(e, t) {
16081 return e && e.length ? xn(e, zi(t, 2), lr) : J
16082 }, W.stubArray = Ma, W.stubFalse = Aa, W.stubObject = function() {
16084 }, W.stubString = function() {
16086 }, W.stubTrue = function() {
16088 }, W.multiply = Ll, W.nth = function(e, t) {
16089 return e && e.length ? mr(e, ca(t)) : J
16090 }, W.noConflict = function() {
16091 return Tn._ === this && (Tn._ = Ka), this
16092 }, W.noop = xa, W.now = Dc, W.pad = function(e, t, n) {
16094 var r = (t = ca(t)) ? G(e) : 0;
16095 if (!t || r >= t) return e;
16096 var i = (t - r) / 2;
16097 return Ci(hs(i), n) + e + Ci(fs(i), n)
16098 }, W.padEnd = function(e, t, n) {
16100 var r = (t = ca(t)) ? G(e) : 0;
16101 return t && r < t ? e + Ci(t - r, n) : e
16102 }, W.padStart = function(e, t, n) {
16104 var r = (t = ca(t)) ? G(e) : 0;
16105 return t && r < t ? Ci(t - r, n) + e : e
16106 }, W.parseInt = function(e, t, n) {
16107 return n || null == t ? t = 0 : t && (t = +t), ws(fa(e).replace(St, ""), t || 0)
16108 }, W.random = function(e, t, n) {
16109 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) {
16113 if (n || e % 1 || t % 1) {
16115 return _s(e + i * (t - e + En("1e-" + ((i + "").length - 1))), t)
16118 }, W.reduce = function(e, t, n) {
16119 var r = zc(e) ? f : C,
16120 i = arguments.length < 3;
16121 return r(e, zi(t, 4), n, i, Us)
16122 }, W.reduceRight = function(e, t, n) {
16123 var r = zc(e) ? h : C,
16124 i = arguments.length < 3;
16125 return r(e, zi(t, 4), n, i, Vs)
16126 }, W.repeat = function(e, t, n) {
16127 return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), kr(fa(e), t)
16128 }, W.replace = function() {
16131 return e.length < 3 ? t : t.replace(e[1], e[2])
16132 }, W.result = function(e, t, n) {
16134 i = (t = Wr(t, e)).length;
16135 for (i || (i = 1, e = J); ++r < i;) {
16136 var o = null == e ? J : e[wo(t[r])];
16137 o === J && (r = i, o = n), e = Xo(o) ? o.call(e) : o
16140 }, W.round = Fl, W.runInContext = m, W.sample = function(e) {
16141 return (zc(e) ? Jt : xr)(e)
16142 }, W.size = function(e) {
16143 if (null == e) return 0;
16144 if (Go(e)) return ia(e) ? G(e) : e.length;
16146 return t == ze || t == Ze ? e.size : sr(e).length
16147 }, W.snakeCase = _l, W.some = function(e, t, n) {
16148 var r = zc(e) ? p : Or;
16149 return n && io(e, t, n) && (t = J), r(e, zi(t, 3))
16150 }, W.sortedIndex = function(e, t) {
16152 }, W.sortedIndexBy = function(e, t, n) {
16153 return Nr(e, t, zi(n, 2))
16154 }, W.sortedIndexOf = function(e, t) {
16155 var n = null == e ? 0 : e.length;
16158 if (r < n && Yo(e[r], t)) return r
16161 }, W.sortedLastIndex = function(e, t) {
16162 return Dr(e, t, !0)
16163 }, W.sortedLastIndexBy = function(e, t, n) {
16164 return Nr(e, t, zi(n, 2), !0)
16165 }, W.sortedLastIndexOf = function(e, t) {
16166 if (null == e ? 0 : e.length) {
16167 var n = Dr(e, t, !0) - 1;
16168 if (Yo(e[n], t)) return n
16171 }, W.startCase = $l, W.startsWith = function(e, t, n) {
16172 return e = fa(e), n = null == n ? 0 : hn(ca(n), 0, e.length), t = Pr(t), e.slice(n, n + t.length) == t
16173 }, W.subtract = ql, W.sum = function(e) {
16174 return e && e.length ? T(e, Ea) : 0
16175 }, W.sumBy = function(e, t) {
16176 return e && e.length ? T(e, zi(t, 2)) : 0
16177 }, W.template = function(e, t, n) {
16178 var r = W.templateSettings;
16179 n && io(e, t, n) && (t = J), e = fa(e), t = nl({}, t, r, Ni);
16180 var i, o, a = nl({}, t.imports, r.imports, Ni),
16184 u = t.interpolate || Bt,
16186 f = Pa((t.escape || Bt).source + "|" + u.source + "|" + (u === wt ? jt : Bt).source + "|" + (t.evaluate || Bt).source + "|$", "g"),
16187 h = "//# sourceURL=" + ("sourceURL" in t ? t.sourceURL : "lodash.templateSources[" + ++gn + "]") + "\n";
16188 e.replace(f, function(t, n, r, a, s, c) {
16189 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
16191 var p = t.variable;
16192 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}";
16193 var m = kl(function() {
16194 return Na(s, h + "return " + d).apply(J, c)
16196 if (m.source = d, Zo(m)) throw m;
16198 }, W.times = function(e, t) {
16199 if ((e = ca(e)) < 1 || e > Me) return [];
16202 t = zi(t), e -= Oe;
16203 for (var i = M(r, t); ++n < e;) t(n);
16205 }, W.toFinite = sa, W.toInteger = ca, W.toLength = la, W.toLower = function(e) {
16206 return fa(e).toLowerCase()
16207 }, W.toNumber = ua, W.toSafeInteger = function(e) {
16208 return e ? hn(ca(e), -Me, Me) : 0 === e ? e : 0
16209 }, W.toString = fa, W.toUpper = function(e) {
16210 return fa(e).toUpperCase()
16211 }, W.trim = function(e, t, n) {
16212 if ((e = fa(e)) && (n || t === J)) return e.replace(At, "");
16213 if (!e || !(t = Pr(t))) return e;
16216 return Yr(r, N(r, i), I(r, i) + 1).join("")
16217 }, W.trimEnd = function(e, t, n) {
16218 if ((e = fa(e)) && (n || t === J)) return e.replace(Ot, "");
16219 if (!e || !(t = Pr(t))) return e;
16221 return Yr(r, 0, I(r, K(t)) + 1).join("")
16222 }, W.trimStart = function(e, t, n) {
16223 if ((e = fa(e)) && (n || t === J)) return e.replace(St, "");
16224 if (!e || !(t = Pr(t))) return e;
16226 return Yr(r, N(r, K(t))).join("")
16227 }, W.truncate = function(e, t) {
16231 var i = "separator" in t ? t.separator : i;
16232 n = "length" in t ? ca(t.length) : n, r = "omission" in t ? Pr(t.omission) : r
16234 var o = (e = fa(e)).length;
16239 if (n >= o) return e;
16241 if (s < 1) return r;
16242 var c = a ? Yr(a, 0, s).join("") : e.slice(0, s);
16243 if (i === J) return c + r;
16244 if (a && (s += c.length - s), Kc(i)) {
16245 if (e.slice(s).search(i)) {
16247 for (i.global || (i = Pa(i.source, fa(Ht.exec(i)) + "g")), i.lastIndex = 0; l = i.exec(u);) var d = l.index;
16248 c = c.slice(0, d === J ? s : d)
16250 } else if (e.indexOf(Pr(i), s) != s) {
16251 var f = c.lastIndexOf(i);
16252 f > -1 && (c = c.slice(0, f))
16255 }, W.unescape = function(e) {
16256 return (e = fa(e)) && bt.test(e) ? e.replace(gt, Un) : e
16257 }, W.uniqueId = function(e) {
16260 }, W.upperCase = wl, W.upperFirst = El, W.each = jo, W.eachRight = Ho, W.first = Ao, Ca(W, function() {
16262 return Dn(W, function(t, n) {
16263 za.call(W.prototype, n) || (e[n] = t)
16267 }), W.VERSION = "4.17.4", i(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(e) {
16268 W[e].placeholder = W
16269 }), i(["drop", "take"], function(e, t) {
16270 Rt.prototype[e] = function(n) {
16271 n = n === J ? 1 : ys(ca(n), 0);
16272 var r = this.__filtered__ && !t ? new Rt(this) : this.clone();
16273 return r.__filtered__ ? r.__takeCount__ = _s(n, r.__takeCount__) : r.__views__.push({
16275 type: e + (r.__dir__ < 0 ? "Right" : "")
16277 }, Rt.prototype[e + "Right"] = function(t) {
16278 return this.reverse()[e](t).reverse()
16280 }), i(["filter", "map", "takeWhile"], function(e, t) {
16282 r = n == Ce || 3 == n;
16283 Rt.prototype[e] = function(e) {
16284 var t = this.clone();
16285 return t.__iteratees__.push({
16286 iteratee: zi(e, 3),
16288 }), t.__filtered__ = t.__filtered__ || r, t
16290 }), i(["head", "last"], function(e, t) {
16291 var n = "take" + (t ? "Right" : "");
16292 Rt.prototype[e] = function() {
16293 return this[n](1).value()[0]
16295 }), i(["initial", "tail"], function(e, t) {
16296 var n = "drop" + (t ? "" : "Right");
16297 Rt.prototype[e] = function() {
16298 return this.__filtered__ ? new Rt(this) : this[n](1)
16300 }), Rt.prototype.compact = function() {
16301 return this.filter(Ea)
16302 }, Rt.prototype.find = function(e) {
16303 return this.filter(e).head()
16304 }, Rt.prototype.findLast = function(e) {
16305 return this.reverse().find(e)
16306 }, Rt.prototype.invokeMap = Cr(function(e, t) {
16307 return "function" == typeof e ? new Rt(this) : this.map(function(n) {
16310 }), Rt.prototype.reject = function(e) {
16311 return this.filter(Wo(zi(e)))
16312 }, Rt.prototype.slice = function(e, t) {
16315 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)
16316 }, Rt.prototype.takeRightWhile = function(e) {
16317 return this.reverse().takeWhile(e).reverse()
16318 }, Rt.prototype.toArray = function() {
16319 return this.take(Oe)
16320 }, Dn(Rt.prototype, function(e, t) {
16321 var n = /^(?:filter|find|map|reject)|While$/.test(t),
16322 r = /^(?:head|last)$/.test(t),
16323 i = W[r ? "take" + ("last" == t ? "Right" : "") : t],
16324 o = r || /^find/.test(t);
16325 i && (W.prototype[t] = function() {
16326 var t = this.__wrapped__,
16327 a = r ? [1] : arguments,
16328 s = t instanceof Rt,
16332 var t = i.apply(W, d([e], a));
16333 return r && f ? t[0] : t
16335 l && n && "function" == typeof c && 1 != c.length && (s = l = !1);
16336 var f = this.__chain__,
16337 h = !!this.__actions__.length,
16341 t = m ? t : new Rt(this);
16342 var g = e.apply(t, a);
16343 return g.__actions__.push({
16349 return p && m ? e.apply(this, a) : (g = this.thru(u), p ? r ? g.value()[0] : g.value() : g)
16351 }), i(["pop", "push", "shift", "sort", "splice", "unshift"], function(e) {
16353 n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
16354 r = /^(?:pop|shift)$/.test(e);
16355 W.prototype[e] = function() {
16357 if (r && !this.__chain__) {
16358 var i = this.value();
16359 return t.apply(zc(i) ? i : [], e)
16361 return this[n](function(n) {
16362 return t.apply(zc(n) ? n : [], e)
16365 }), Dn(Rt.prototype, function(e, t) {
16368 var r = n.name + "";
16369 (Ds[r] || (Ds[r] = [])).push({
16374 }), Ds[$i(J, fe).name] = [{
16377 }], Rt.prototype.clone = function() {
16378 var e = new Rt(this.__wrapped__);
16379 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
16380 }, Rt.prototype.reverse = function() {
16381 if (this.__filtered__) {
16382 var e = new Rt(this);
16383 e.__dir__ = -1, e.__filtered__ = !0
16384 } else(e = this.clone()).__dir__ *= -1;
16386 }, Rt.prototype.value = function() {
16387 var e = this.__wrapped__.value(),
16391 i = n ? e.length : 0,
16392 o = Ki(0, i, this.__views__),
16397 u = this.__iteratees__,
16400 h = _s(c, this.__takeCount__);
16401 if (!n || !r && i == c && h == c) return qr(e, this.__actions__);
16403 e: for (; c-- && f < h;) {
16404 for (var m = -1, g = e[l += t]; ++m < d;) {
16409 if (y == xe) g = _;
16411 if (y == Ce) continue e;
16418 }, W.prototype.at = Ec, W.prototype.chain = function() {
16420 }, W.prototype.commit = function() {
16421 return new X(this.value(), this.__chain__)
16422 }, W.prototype.next = function() {
16423 this.__values__ === J && (this.__values__ = aa(this.value()));
16424 var e = this.__index__ >= this.__values__.length;
16427 value: e ? J : this.__values__[this.__index__++]
16429 }, W.prototype.plant = function(e) {
16430 for (var t, n = this; n instanceof Z;) {
16432 r.__index__ = 0, r.__values__ = J, t ? i.__wrapped__ = r : t = r;
16436 return i.__wrapped__ = e, t
16437 }, W.prototype.reverse = function() {
16438 var e = this.__wrapped__;
16439 if (e instanceof Rt) {
16441 return this.__actions__.length && (t = new Rt(this)), (t = t.reverse()).__actions__.push({
16445 }), new X(t, this.__chain__)
16447 return this.thru(Do)
16448 }, W.prototype.toJSON = W.prototype.valueOf = W.prototype.value = function() {
16449 return qr(this.__wrapped__, this.__actions__)
16450 }, W.prototype.first = W.prototype.head, as && (W.prototype[as] = function() {
16454 "function" == typeof define && "object" == typeof define.amd && define.amd ? (Tn._ = Vn, define(function() {
16456 })) : An ? ((An.exports = Vn)._ = Vn, Mn._ = Vn) : Tn._ = Vn
16459 var n = t.isDefined,
16467 t.module("LocalStorageModule", []).provider("localStorageService", function() {
16468 this.prefix = "ls", this.storageType = "localStorage", this.cookie = {
16472 }, this.defaultToCookie = !0, this.notify = {
16475 }, this.setPrefix = function(e) {
16476 return this.prefix = e, this
16477 }, this.setStorageType = function(e) {
16478 return this.storageType = e, this
16479 }, this.setDefaultToCookie = function(e) {
16480 return this.defaultToCookie = !!e, this
16481 }, this.setStorageCookie = function(e, t, n) {
16482 return this.cookie.expiry = e, this.cookie.path = t, this.cookie.secure = n, this
16483 }, this.setStorageCookieDomain = function(e) {
16484 return this.cookie.domain = e, this
16485 }, this.setNotify = function(e, t) {
16486 return this.notify = {
16490 }, this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(e, t, u, d, f) {
16492 if (n || (n = t.event), b.setItem && s(n.key) && w(n.key)) {
16495 e.$broadcast("LocalStorageModule.notification.changed", {
16497 newvalue: n.newValue,
16498 storageType: m.storageType
16508 u ? u[0] && (u = u[0]) : u = document, "." !== g.substr(-1) && (g = g ? g + "." : "");
16509 var _ = function(e) {
16513 return e.replace(new RegExp("^" + g, "g"), "")
16516 return 0 === e.indexOf(g)
16520 var n = y in t && null !== t[y],
16521 r = _("__" + Math.round(1e7 * Math.random()));
16522 return n && ((p = t[y]).setItem(r, ""), p.removeItem(r)), n
16524 return m.defaultToCookie && (y = "cookie"), e.$broadcast("LocalStorageModule.notification.error", t.message), !1
16528 C = function(t, n, i) {
16531 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", {
16534 storageType: "cookie"
16537 p && p.setItem(_(t), n), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
16540 storageType: m.storageType
16543 return e.$broadcast("LocalStorageModule.notification.error", r.message), A(t, n)
16550 x = function(t, n) {
16553 if (I(n), !k && m.defaultToCookie || "cookie" === m.storageType) return k || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), S(t);
16554 var i = p ? p.getItem(_(t)) : null;
16555 if (!i || "null" === i) return null;
16557 return JSON.parse(i)
16569 arguments.length >= 1 && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (n = 1, I(arguments[arguments.length - 1]));
16571 for (r = 0; r < arguments.length - n; r++)
16572 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", {
16574 storageType: "cookie"
16577 p.removeItem(_(i)), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
16579 storageType: m.storageType
16582 e.$broadcast("LocalStorageModule.notification.error", t.message), O(i)
16590 return t.navigator.cookieEnabled || "cookie" in u && (u.cookie.length > 0 || (u.cookie = "test").indexOf.call(u.cookie, "test") > -1)
16592 return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
16595 A = function(t, n, s, c) {
16596 if (r(n)) return !1;
16597 if ((a(n) || o(n)) && (n = l(n)), !M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16602 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) {
16603 var p = "; path=" + v.path;
16604 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
16607 return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
16612 if (!M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16613 for (var n = u.cookie && u.cookie.split(";") || [], r = 0; r < n.length; r++) {
16615 " " === i.charAt(0);) i = i.substring(1, i.length);
16616 if (0 === i.indexOf(_(t) + "=")) {
16617 var o = decodeURIComponent(i.substring(g.length + t.length + 1, i.length));
16619 var a = JSON.parse(o);
16620 return "number" == typeof a ? o : a
16632 for (var e = null, t = g.length, n = u.cookie.split(";"), r = 0; r < n.length; r++) {
16634 " " === e.charAt(0);) e = e.substring(1, e.length);
16635 var i = e.substring(t, e.indexOf("="));
16643 return e && y !== e && (y = e, k = E()), k
16645 k && (t.addEventListener ? (t.addEventListener("storage", h, !1), e.$on("$destroy", function() {
16646 t.removeEventListener("storage", h)
16647 })) : t.attachEvent && (t.attachEvent("onstorage", h), e.$on("$destroy", function() {
16648 t.detachEvent("onstorage", h)
16654 setPrefix: function(e) {
16660 keys: function(t) {
16663 if (I(t), !k) return e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), [];
16667 if (o.substr(0, r) === g) try {
16668 i.push(o.substr(r))
16670 return e.$broadcast("LocalStorageModule.notification.error", t.Description), []
16678 clearAll: function(t, n) {
16682 var i = g ? new RegExp("^" + g) : new RegExp,
16683 o = t ? new RegExp(t) : new RegExp;
16684 if (!k && m.defaultToCookie || "cookie" === m.storageType) return k || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), D();
16685 if (!k && !m.defaultToCookie) return !1;
16688 if (i.test(s) && o.test(s.substr(a))) try {
16691 return e.$broadcast("LocalStorageModule.notification.error", t.message), D()
16698 bind: function(e, t, r, i, a) {
16699 var s = x(i = i || t, a);
16700 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) {
16706 length: function(e) {
16710 for (var r = 0, i = t[y], o = 0; o < i.length; o++) 0 === i.key(o).indexOf(g) && r++;
16716 defaultToCookie: this.defaultToCookie,
16728 }(window, window.angular),
16733 return null != e && "" !== e && "hasOwnProperty" !== e && a.test("." + e)
16737 if (!n(r)) throw o("badmember", 'Dotted member path "@{0}" is invalid.', r);
16738 for (var i = r.split("."), a = 0, s = i.length; a < s && t.isDefined(e); a++) {
16740 e = null !== e ? e[c] : void 0
16746 n = n || {}, t.forEach(n, function(e, t) {
16749 for (var r in e) !e.hasOwnProperty(r) || "$" === r.charAt(0) && "$" === r.charAt(1) || (n[r] = e[r]);
16752 var o = t.$$minErr("$resource"),
16753 a = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
16754 t.module("ngResource", ["ng"]).info({
16755 angularVersion: "1.6.6"
16756 }).provider("$resource", function() {
16757 var e = /^https?:\/\/\[[^\]]*][^/]*/,
16760 stripTrailingSlashes: !0,
16780 }, this.$get = ["$http", "$log", "$q", "$timeout", function(a, s, c, l) {
16782 this.template = e, this.defaults = p({}, n.defaults, t), this.urlParams = {}
16785 function d(e, t, _, $) {
16788 return n = p({}, t, n), h(n, function(t, n) {
16789 b(t) && (t = t(e)), i[n] = t && t.charAt && "@" === t.charAt(0) ? r(e, t.substr(1)) : t
16800 var C = new u(e, $);
16801 return _ = p({}, n.defaults.actions, _), k.prototype.toJSON = function() {
16802 var e = p({}, this);
16803 return delete e.$promise, delete e.$resolved, delete e.$cancelRequest, e
16804 }, h(_, function(e, t) {
16805 var n = !0 === e.hasBody || !1 !== e.hasBody && /^(POST|PUT|PATCH)$/i.test(e.method),
16807 u = v(e.cancellable) ? e.cancellable : C.defaults.cancellable;
16808 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) {
16809 var _, $, x, T = {};
16810 switch (arguments.length) {
16816 T = s, _ = d, $ = v;
16825 b(s) ? $ = s : n ? _ = s : T = s;
16830 throw o("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
16832 var M, A, S = this instanceof k,
16833 O = S ? _ : e.isArray ? [] : new k(_),
16835 N = e.interceptor && e.interceptor.response || E,
16836 I = e.interceptor && e.interceptor.responseError || void 0,
16839 h(e, function(e, t) {
16841 default: D[t] = m(e);
16845 case "interceptor":
16846 case "cancellable":
16848 }), !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);
16849 var j = a(D).then(function(n) {
16852 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);
16853 if (e.isArray) O.length = 0, h(r, function(e) {
16854 "object" == typeof e ? O.push(new k(e)) : O.push(e)
16857 var a = O.$promise;
16858 i(r, O), O.$promise = a
16861 return n.resource = O, n
16863 return e.resource = O, c.reject(e)
16865 return j = j.finally(function() {
16866 O.$resolved = !0, !S && u && (O.$cancelRequest = f, l.cancel(A), M = A = D.timeout = null)
16867 }), j = j.then(function(e) {
16869 return ($ || f)(t, e.headers, e.status, e.statusText), t
16870 }, R || P ? function(e) {
16871 return R && !P && j.catch(f), R && x(e), P ? I(e) : c.reject(e)
16872 } : void 0), S ? j : (O.$promise = j, O.$resolved = !1, u && (O.$cancelRequest = function(e) {
16873 j.catch(f), null !== M && M.resolve(e)
16875 }, k.prototype["$" + t] = function(e, n, r) {
16876 b(e) && (r = n, n = e, e = {});
16877 var i = k[t].call(this, e, this, n, r);
16878 return i.$promise || i
16880 }), k.bind = function(n) {
16881 var r = p({}, t, n);
16882 return d(e, r, _, $)
16893 _ = t.$$encodeUriQuery,
16894 $ = t.$$encodeUriSegment;
16895 return u.prototype = {
16896 setUrlParams: function(t, n, r) {
16897 var i, a, s = this,
16898 c = r || s.template,
16900 u = s.urlParams = Object.create(null);
16901 h(c.split(/\W/), function(e) {
16902 if ("hasOwnProperty" === e) throw o("badname", "hasOwnProperty is not a valid parameter name.");
16903 !new RegExp("^\\d+$").test(e) && e && new RegExp("(^|[^\\\\]):" + e + "(\\W|$)").test(c) && (u[e] = {
16904 isQueryParamValue: new RegExp("\\?.*=:" + e + "(?:\\W|$)").test(c)
16906 }), c = c.replace(/\\:/g, ":"), c = c.replace(e, function(e) {
16908 }), n = n || {}, h(s.urlParams, function(e, t) {
16909 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) {
16911 })) : c = c.replace(new RegExp("(/?):" + t + "(\\W|$)", "g"), function(e, t, n) {
16912 return "/" === n.charAt(0) ? n : t + n
16914 }), s.defaults.stripTrailingSlashes && (c = c.replace(/\/+$/, "") || "/"), c = c.replace(/\/\.(?=\w+($|\?))/, "."), t.url = l + c.replace(/\/(\\|%5C)\./, "/."), h(n, function(e, n) {
16915 s.urlParams[n] || (t.params = t.params || {}, t.params[n] = e)
16921 }(window, window.angular),
16923 "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
16924 }(this, function() {
16928 return Ct.apply(null, arguments)
16932 return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
16936 return null != e && "[object Object]" === Object.prototype.toString.call(e)
16940 if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length;
16943 if (e.hasOwnProperty(t)) return !1;
16948 return void 0 === e
16952 return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
16956 return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
16961 for (n = 0; n < e.length; ++n) r.push(t(e[n], n));
16966 return Object.prototype.hasOwnProperty.call(e, t)
16970 for (var n in t) c(t, n) && (e[n] = t[n]);
16971 return c(t, "toString") && (e.toString = t.toString), c(t, "valueOf") && (e.valueOf = t.valueOf), e
16974 function u(e, t, n, r) {
16975 return qe(e, t, n, r, !0).utc()
16986 invalidMonth: null,
16988 userInvalidated: !1,
16990 parsedDateParts: [],
16993 weekdayMismatch: !1
16998 return null == e._pf && (e._pf = d()), e._pf
17002 if (null == e._isValid) {
17004 n = xt.call(t.parsedDateParts, function(e) {
17007 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);
17008 if (e._strict && (r = r && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return r;
17016 return null != e ? l(f(t), e) : f(t).userInvalidated = !0, t
17021 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)
17022 for (n = 0; n < Tt.length; n++) i(o = t[r = Tt[n]]) || (e[r] = o);
17027 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)
17031 return e instanceof g || null != e && null != e._isAMomentObject
17035 return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
17041 return 0 !== t && isFinite(t) && (n = b(t)), n
17044 function _(e, t, n) {
17045 var r, i = Math.min(e.length, t.length),
17046 o = Math.abs(e.length - t.length),
17048 for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && y(e[r]) !== y(t[r])) && a++;
17053 !1 === e.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t)
17058 return l(function() {
17059 if (null != e.deprecationHandler && e.deprecationHandler(null, t), r) {
17060 for (var i, o = [], a = 0; a < arguments.length; a++) {
17061 if (i = "", "object" == typeof arguments[a]) {
17062 i += "\n[" + a + "] ";
17063 for (var s in arguments[0]) i += s + ": " + arguments[0][s] + ", ";
17065 } else i = arguments[a];
17068 $(t + "\nArguments: " + Array.prototype.slice.call(o).join("") + "\n" + (new Error).stack), r = !1
17070 return n.apply(this, arguments)
17075 null != e.deprecationHandler && e.deprecationHandler(t, n), At[t] || ($(n), At[t] = !0)
17079 return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
17083 var r, i = l({}, e);
17084 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]);
17085 for (r in e) c(e, r) && !c(t, r) && n(e[r]) && (i[r] = l({}, i[r]));
17090 null != e && this.set(e)
17094 var n = e.toLowerCase();
17095 Rt[n] = Rt[n + "s"] = Rt[t] = e
17099 return "string" == typeof e ? Rt[e] || Rt[e.toLowerCase()] : void 0
17104 for (n in e) c(e, n) && (t = M(n)) && (r[t] = e[n]);
17114 for (var n in e) t.push({
17118 return t.sort(function(e, t) {
17119 return e.priority - t.priority
17123 function D(e, t, n) {
17124 var r = "" + Math.abs(e),
17126 return (e >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
17129 function N(e, t, n, r) {
17131 "string" == typeof r && (i = function() {
17133 }), e && (Ft[e] = i), t && (Ft[t[0]] = function() {
17134 return D(i.apply(this, arguments), t[1], t[2])
17135 }), n && (Ft[n] = function() {
17136 return this.localeData().ordinal(i.apply(this, arguments), e)
17141 return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
17145 var t, n, r = e.match(jt);
17146 for (t = 0, n = r.length; t < n; t++) Ft[r[t]] ? r[t] = Ft[r[t]] : r[t] = I(r[t]);
17147 return function(t) {
17149 for (i = 0; i < n; i++) o += k(r[i]) ? r[i].call(t, e) : r[i];
17155 return e.isValid() ? (t = j(t, e.localeData()), Lt[t] = Lt[t] || R(t), Lt[t](e)) : e.localeData().invalidDate()
17160 for (Ht.lastIndex = 0; n >= 0 && Ht.test(e);) e = e.replace(Ht, function(e) {
17161 return t.longDateFormat(e) || e
17162 }), Ht.lastIndex = 0, n -= 1;
17166 function H(e, t, n) {
17167 on[e] = k(t) ? t : function(e, r) {
17168 return e && n ? n : t
17173 return c(on, e) ? on[e](t._strict, t._locale) : new RegExp(F(e))
17177 return q(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, r, i) {
17178 return t || n || r || i
17183 return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
17188 for ("string" == typeof e && (e = [e]), o(t) && (r = function(e, n) {
17190 }), n = 0; n < e.length; n++) an[e[n]] = r
17194 U(e, function(e, n, r, i) {
17195 r._w = r._w || {}, t(e, r._w, r, i)
17199 function z(e, t, n) {
17200 null != t && c(an, e) && an[e](t, n._a, n, e)
17204 return W(e) ? 366 : 365
17208 return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
17212 return function(r) {
17213 return null != r ? (K(this, t, r), e.updateOffset(this, n), this) : G(this, t)
17218 return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
17221 function K(e, t, n) {
17222 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))
17226 return (e % t + t) % t
17230 if (isNaN(e) || isNaN(t)) return NaN;
17232 return e += (t - n) / 12, 1 === n ? W(e) ? 29 : 28 : 31 - n % 7 % 2
17235 function Q(e, t, n) {
17236 var r, i, o, a = e.toLocaleLowerCase();
17237 if (!this._monthsParse)
17238 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();
17239 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
17244 if (!e.isValid()) return e;
17245 if ("string" == typeof t)
17246 if (/^\d+$/.test(t)) t = y(t);
17247 else if (t = e.localeData().monthsParse(t), !o(t)) return e;
17248 return n = Math.min(e.date(), X(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
17252 return null != t ? (J(this, t), e.updateOffset(this, !0), this) : G(this, "Month")
17257 return t.length - e.length
17262 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, ""));
17263 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]);
17264 for (t = 0; t < 24; t++) o[t] = q(o[t]);
17265 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")
17268 function ne(e, t, n, r, i, o, a) {
17269 var s = new Date(e, t, n, r, i, o, a);
17270 return e < 100 && e >= 0 && isFinite(s.getFullYear()) && s.setFullYear(e), s
17274 var t = new Date(Date.UTC.apply(null, arguments));
17275 return e < 100 && e >= 0 && isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e), t
17278 function ie(e, t, n) {
17280 return -((7 + re(e, 0, r).getUTCDay() - t) % 7) + r - 1
17283 function oe(e, t, n, r, i) {
17284 var o, a, s = 1 + 7 * (t - 1) + (7 + n - r) % 7 + ie(e, r, i);
17285 return s <= 0 ? a = B(o = e - 1) + s : s > B(e) ? (o = e + 1, a = s - B(e)) : (o = e, a = s), {
17291 function ae(e, t, n) {
17292 var r, i, o = ie(e.year(), t, n),
17293 a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1;
17294 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), {
17300 function se(e, t, n) {
17301 var r = ie(e, t, n),
17302 i = ie(e + 1, t, n);
17303 return (B(e) - r + i) / 7
17306 function ce(e, t) {
17307 return "string" != typeof e ? e : isNaN(e) ? "number" == typeof(e = t.weekdaysParse(e)) ? e : null : parseInt(e, 10)
17310 function le(e, t) {
17311 return "string" == typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e
17314 function ue(e, t, n) {
17315 var r, i, o, a = e.toLocaleLowerCase();
17316 if (!this._weekdaysParse)
17317 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();
17318 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
17323 return t.length - e.length
17325 var t, n, r, i, o, a = [],
17329 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);
17330 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]);
17331 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")
17335 return this.hours() % 12 || 12
17338 function he(e, t) {
17339 N(e, 0, 0, function() {
17340 return this.localeData().meridiem(this.hours(), this.minutes(), t)
17344 function pe(e, t) {
17345 return t._meridiemParse
17349 return e ? e.toLowerCase().replace("_", "-") : e
17353 for (var t, n, r, i, o = 0; o < e.length;) {
17354 for (t = (i = me(e[o]).split("-")).length, n = (n = me(e[o + 1])) ? n.split("-") : null; t > 0;) {
17355 if (r = ve(i.slice(0, t).join("-"))) return r;
17356 if (n && n.length >= t && _(i, n, !0) >= t - 1) break;
17366 if (!In[e] && "undefined" != typeof module && module && module.exports) try {
17367 t = Sn._abbr, require("./locale/" + e), be(t)
17372 function be(e, t) {
17374 return e && (n = i(t) ? _e(e) : ye(e, t)) && (Sn = n), Sn._abbr
17377 function ye(e, t) {
17380 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;
17381 else if (null != t.parentLocale) {
17382 if (null == In[t.parentLocale]) return Rn[t.parentLocale] || (Rn[t.parentLocale] = []), Rn[t.parentLocale].push({
17386 n = In[t.parentLocale]._config
17388 return In[e] = new x(C(n, t)), Rn[e] && Rn[e].forEach(function(e) {
17389 ye(e.name, e.config)
17392 return delete In[e], null
17397 if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return Sn;
17399 if (n = ve(e)) return n;
17407 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
17410 function we(e, t, n) {
17411 return null != e ? e : null != t ? t : n
17415 var n = new Date(e.now());
17416 return t._useUTC ? [n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()] : [n.getFullYear(), n.getMonth(), n.getDate()]
17420 var t, n, r, i, o = [];
17422 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];
17423 for (; t < 7; t++) e._a[t] = o[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
17424 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)
17429 var t, n, r, i, o, a, s, c;
17430 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);
17432 o = e._locale._week.dow, a = e._locale._week.doy;
17433 var l = ae(Ue(), o, a);
17434 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
17436 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)
17440 var t, n, r, i, o, a, s = e._i,
17441 c = Pn.exec(s) || jn.exec(s);
17443 for (f(e).iso = !0, t = 0, n = Ln.length; t < n; t++)
17444 if (Ln[t][1].exec(c[1])) {
17445 i = Ln[t][0], r = !1 !== Ln[t][2];
17448 if (null == i) return void(e._isValid = !1);
17450 for (t = 0, n = Fn.length; t < n; t++)
17451 if (Fn[t][1].exec(c[3])) {
17452 o = (c[2] || " ") + Fn[t][0];
17455 if (null == o) return void(e._isValid = !1)
17457 if (!r && null != o) return void(e._isValid = !1);
17459 if (!Hn.exec(c[4])) return void(e._isValid = !1);
17462 e._f = i + (o || "") + (a || ""), Ie(e)
17463 } else e._isValid = !1
17466 function Te(e, t, n, r, i, o) {
17467 var a = [Me(e), _n.indexOf(t), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)];
17468 return o && a.push(parseInt(o, 10)), a
17472 var t = parseInt(e, 10);
17473 return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t
17477 return e.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim()
17480 function Se(e, t, n) {
17481 return !e || Cn.indexOf(e) === new Date(t[0], t[1], t[2]).getDay() || (f(n).weekdayMismatch = !0, n._isValid = !1, !1)
17484 function Oe(e, t, n) {
17485 if (e) return Vn[e];
17487 var r = parseInt(n, 10),
17489 return 60 * ((r - i) / 100) + i
17493 var t = Un.exec(Ae(e._i));
17495 var n = Te(t[4], t[3], t[2], t[5], t[6], t[7]);
17496 if (!Se(t[1], n, e)) return;
17497 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
17498 } else e._isValid = !1
17502 var n = qn.exec(t._i);
17503 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])
17507 if (t._f !== e.ISO_8601)
17508 if (t._f !== e.RFC_2822) {
17509 t._a = [], f(t).empty = !0;
17510 var n, r, i, o, a, s = "" + t._i,
17513 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);
17514 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)
17519 function Re(e, t, n) {
17521 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
17526 if (0 === e._f.length) return f(e).invalidFormat = !0, void(e._d = new Date(NaN));
17527 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));
17534 e._a = s([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
17535 return e && parseInt(e, 10)
17541 var t = new g($e(Le(e)));
17542 return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t
17548 return e._locale = e._locale || _e(e._l), null === n || void 0 === r && "" === n ? p({
17550 }) : ("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))
17555 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) {
17556 return parseInt(e, 10)
17557 }), ke(r)) : n(c) ? je(r) : o(c) ? r._d = new Date(c) : e.createFromInputFallback(r)
17560 function qe(e, i, o, a, s) {
17562 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)
17565 function Ue(e, t, n, r) {
17566 return qe(e, t, n, r, !1)
17569 function Ve(e, n) {
17571 if (1 === n.length && t(n[0]) && (n = n[0]), !n.length) return Ue();
17572 for (r = n[0], i = 1; i < n.length; ++i) n[i].isValid() && !n[i][e](r) || (r = n[i]);
17578 if (-1 === gn.call(Wn, t) || null != e[t] && isNaN(e[t])) return !1;
17579 for (var n = !1, r = 0; r < Wn.length; ++r)
17582 parseFloat(e[Wn[r]]) !== y(e[Wn[r]]) && (n = !0)
17590 r = t.quarter || 0,
17597 u = t.millisecond || 0;
17598 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()
17602 return e instanceof Be
17606 return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
17609 function Ge(e, t) {
17610 N(e, 0, 0, function() {
17611 var e = this.utcOffset(),
17613 return e < 0 && (e = -e, n = "-"), n + D(~~(e / 60), 2) + t + D(~~e % 60, 2)
17617 function Ke(e, t) {
17618 var n = (t || "").match(e);
17619 if (null === n) return null;
17620 var r = ((n[n.length - 1] || []) + "").match(Yn) || ["-", 0, 0],
17621 i = 60 * r[1] + y(r[2]);
17622 return 0 === i ? 0 : "+" === r[0] ? i : -i
17625 function Ze(t, n) {
17627 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()
17631 return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
17635 return !!this.isValid() && (this._isUTC && 0 === this._offset)
17638 function Je(e, t) {
17639 var n, r, i, a = e,
17641 return We(e) ? a = {
17642 ms: e._milliseconds,
17645 } : o(e) ? (a = {}, t ? a[t] = e : a.milliseconds = e) : (s = Gn.exec(e)) ? (n = "-" === s[1] ? -1 : 1, a = {
17651 ms: y(Ye(1e3 * s[hn])) * n
17652 }) : (s = Kn.exec(e)) ? (n = "-" === s[1] ? -1 : (s[1], 1), a = {
17660 }) : 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
17663 function et(e, t) {
17664 var n = e && parseFloat(e.replace(",", "."));
17665 return (isNaN(n) ? 0 : n) * t
17668 function tt(e, t) {
17673 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
17676 function nt(e, t) {
17678 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) : {
17684 function rt(e, t) {
17685 return function(n, r) {
17687 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
17691 function it(t, n, r, i) {
17692 var o = n._milliseconds,
17695 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))
17698 function ot(e, t) {
17699 var n, r = 12 * (t.year() - e.year()) + (t.month() - e.month()),
17700 i = e.clone().add(r, "months");
17701 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
17706 return void 0 === e ? this._locale._abbr : (null != (t = _e(e)) && (this._locale = t), this)
17710 return this._locale
17713 function ct(e, t) {
17714 N(0, [e, e.length], 0, t)
17717 function lt(e, t, n, r, i) {
17719 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))
17722 function ut(e, t, n, r, i) {
17723 var o = oe(e, t, n, r, i),
17724 a = re(o.year, 0, o.dayOfYear);
17725 return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
17732 function ft(e, t, n, r) {
17738 function ht(e, t, n) {
17739 if (o(e) && (t = e, e = void 0), e = e || "", null != t) return ft(e, t, n, "month");
17741 for (r = 0; r < 12; r++) i[r] = ft(e, r, n, "month");
17745 function pt(e, t, n, r) {
17746 "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 || "");
17748 a = e ? i._week.dow : 0;
17749 if (null != n) return ft(t, (n + a) % 7, r, "day");
17751 for (s = 0; s < 7; s++) c[s] = ft(t, (s + a) % 7, r, "day");
17755 function mt(e, t, n, r) {
17757 return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble()
17761 return e < 0 ? Math.floor(e) : Math.ceil(e)
17765 return 4800 * e / 146097
17769 return 146097 * e / 4800
17773 return function() {
17779 return function() {
17780 return this.isValid() ? this._data[e] : NaN
17784 function $t(e, t, n, r, i) {
17785 return i.relativeTime(t || 1, !!n, e, r)
17788 function wt(e, t, n) {
17789 var r = Je(e).abs(),
17796 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];
17797 return u[2] = t, u[3] = +e > 0, u[4] = n, $t.apply(null, u)
17801 return (e > 0) - (e < 0) || +e
17805 if (!this.isValid()) return this.localeData().invalidDate();
17806 var e, t, n, r = kr(this._milliseconds) / 1e3,
17807 i = kr(this._days),
17808 o = kr(this._months);
17809 t = b((e = b(r / 60)) / 60), r %= 60, e %= 60;
17810 var a = n = b(o / 12),
17815 d = r ? r.toFixed(3).replace(/\.?0+$/, "") : "",
17816 f = this.asSeconds();
17817 if (!f) return "P0D";
17818 var h = f < 0 ? "-" : "",
17819 p = Et(this._months) !== Et(f) ? "-" : "",
17820 m = Et(this._days) !== Et(f) ? "-" : "",
17821 g = Et(this._milliseconds) !== Et(f) ? "-" : "";
17822 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" : "")
17825 xt = Array.prototype.some ? Array.prototype.some : function(e) {
17826 for (var t = Object(this), n = t.length >>> 0, r = 0; r < n; r++)
17827 if (r in t && e.call(this, t[r], r, t)) return !0;
17830 var Tt = e.momentProperties = [],
17833 e.suppressDeprecationWarnings = !1, e.deprecationHandler = null;
17835 St = Object.keys ? Object.keys : function(e) {
17837 for (t in e) c(e, t) && n.push(t);
17841 sameDay: "[Today at] LT",
17842 nextDay: "[Tomorrow at] LT",
17843 nextWeek: "dddd [at] LT",
17844 lastDay: "[Yesterday at] LT",
17845 lastWeek: "[Last] dddd [at] LT",
17852 LL: "MMMM D, YYYY",
17853 LLL: "MMMM D, YYYY h:mm A",
17854 LLLL: "dddd, MMMM D, YYYY h:mm A"
17860 s: "a few seconds",
17875 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,
17876 Ht = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
17886 Gt = /\d\d\d\d\d\d?/,
17889 Xt = /[+-]?\d{1,6}/,
17892 en = /Z|[+-]\d\d:?\d\d/gi,
17893 tn = /Z|[+-]\d\d(?::?\d\d)?/gi,
17894 nn = /[+-]?\d+(\.\d{1,3})?/,
17895 rn = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
17907 N("Y", 0, 0, function() {
17908 var e = this.year();
17909 return e <= 9999 ? "" + e : "+" + e
17910 }), N(0, ["YY", 2], 0, function() {
17911 return this.year() % 100
17912 }), 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) {
17913 n[sn] = 2 === t.length ? e.parseTwoDigitYear(t) : y(t)
17914 }), U("YY", function(t, n) {
17915 n[sn] = e.parseTwoDigitYear(t)
17916 }), U("Y", function(e, t) {
17917 t[sn] = parseInt(e, 10)
17918 }), e.parseTwoDigitYear = function(e) {
17919 return y(e) + (y(e) > 68 ? 1900 : 2e3)
17921 var gn, vn = Y("FullYear", !0);
17922 gn = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
17924 for (t = 0; t < this.length; ++t)
17925 if (this[t] === e) return t;
17927 }, N("M", ["MM", 2], "Mo", function() {
17928 return this.month() + 1
17929 }), N("MMM", 0, 0, function(e) {
17930 return this.localeData().monthsShort(this, e)
17931 }), N("MMMM", 0, 0, function(e) {
17932 return this.localeData().months(this, e)
17933 }), T("month", "M"), S("month", 8), H("M", Wt), H("MM", Wt, Ut), H("MMM", function(e, t) {
17934 return t.monthsShortRegex(e)
17935 }), H("MMMM", function(e, t) {
17936 return t.monthsRegex(e)
17937 }), U(["M", "MM"], function(e, t) {
17939 }), U(["MMM", "MMMM"], function(e, t, n, r) {
17940 var i = n._locale.monthsParse(e, r, n._strict);
17941 null != i ? t[cn] = i : f(n).invalidMonth = e
17943 var bn = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
17944 yn = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
17945 _n = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
17948 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) {
17949 t[r.substr(0, 1)] = y(e)
17955 N("d", 0, "do", "day"), N("dd", 0, 0, function(e) {
17956 return this.localeData().weekdaysMin(this, e)
17957 }), N("ddd", 0, 0, function(e) {
17958 return this.localeData().weekdaysShort(this, e)
17959 }), N("dddd", 0, 0, function(e) {
17960 return this.localeData().weekdays(this, e)
17961 }), 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) {
17962 return t.weekdaysMinRegex(e)
17963 }), H("ddd", function(e, t) {
17964 return t.weekdaysShortRegex(e)
17965 }), H("dddd", function(e, t) {
17966 return t.weekdaysRegex(e)
17967 }), V(["dd", "ddd", "dddd"], function(e, t, n, r) {
17968 var i = n._locale.weekdaysParse(e, r, n._strict);
17969 null != i ? t.d = i : f(n).invalidWeekday = e
17970 }), V(["d", "e", "E"], function(e, t, n, r) {
17973 var kn = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
17974 Cn = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
17975 xn = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
17979 N("H", ["HH", 2], 0, "hour"), N("h", ["hh", 2], 0, fe), N("k", ["kk", 2], 0, function() {
17980 return this.hours() || 24
17981 }), N("hmm", 0, 0, function() {
17982 return "" + fe.apply(this) + D(this.minutes(), 2)
17983 }), N("hmmss", 0, 0, function() {
17984 return "" + fe.apply(this) + D(this.minutes(), 2) + D(this.seconds(), 2)
17985 }), N("Hmm", 0, 0, function() {
17986 return "" + this.hours() + D(this.minutes(), 2)
17987 }), N("Hmmss", 0, 0, function() {
17988 return "" + this.hours() + D(this.minutes(), 2) + D(this.seconds(), 2)
17989 }), 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) {
17991 t[un] = 24 === r ? 0 : r
17992 }), U(["a", "A"], function(e, t, n) {
17993 n._isPm = n._locale.isPM(e), n._meridiem = e
17994 }), U(["h", "hh"], function(e, t, n) {
17995 t[un] = y(e), f(n).bigHour = !0
17996 }), U("hmm", function(e, t, n) {
17997 var r = e.length - 2;
17998 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r)), f(n).bigHour = !0
17999 }), U("hmmss", function(e, t, n) {
18000 var r = e.length - 4,
18002 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r, 2)), t[fn] = y(e.substr(i)), f(n).bigHour = !0
18003 }), U("Hmm", function(e, t, n) {
18004 var r = e.length - 2;
18005 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r))
18006 }), U("Hmmss", function(e, t, n) {
18007 var r = e.length - 4,
18009 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r, 2)), t[fn] = y(e.substr(i))
18011 var Sn, On = /[ap]\.?m?\.?/i,
18012 Dn = Y("Hours", !0),
18015 longDateFormat: Dt,
18016 invalidDate: "Invalid date",
18018 dayOfMonthOrdinalParse: Nt,
18030 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)?)?$/,
18031 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)?)?$/,
18032 Hn = /Z|[+-]\d\d(?::?\d\d)?/,
18034 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
18035 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
18036 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
18037 ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
18038 ["YYYY-DDD", /\d{4}-\d{3}/],
18039 ["YYYY-MM", /\d{4}-\d\d/, !1],
18040 ["YYYYYYMMDD", /[+-]\d{10}/],
18041 ["YYYYMMDD", /\d{8}/],
18042 ["GGGG[W]WWE", /\d{4}W\d{3}/],
18043 ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
18044 ["YYYYDDD", /\d{7}/]
18047 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
18048 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
18049 ["HH:mm:ss", /\d\d:\d\d:\d\d/],
18050 ["HH:mm", /\d\d:\d\d/],
18051 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
18052 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
18053 ["HHmmss", /\d\d\d\d\d\d/],
18054 ["HHmm", /\d\d\d\d/],
18057 qn = /^\/?Date\((\-?\d+)/i,
18058 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}))$/,
18071 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) {
18072 e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
18073 }), e.ISO_8601 = function() {}, e.RFC_2822 = function() {};
18074 var zn = w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
18075 var e = Ue.apply(null, arguments);
18076 return this.isValid() && e.isValid() ? e < this ? this : e : p()
18078 Bn = w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
18079 var e = Ue.apply(null, arguments);
18080 return this.isValid() && e.isValid() ? e > this ? this : e : p()
18082 Wn = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
18083 Ge("Z", ":"), Ge("ZZ", ""), H("Z", tn), H("ZZ", tn), U(["Z", "ZZ"], function(e, t, n) {
18084 n._useUTC = !0, n._tzm = Ke(tn, e)
18086 var Yn = /([\+\-]|\d\d)/gi;
18087 e.updateOffset = function() {};
18088 var Gn = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
18089 Kn = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
18090 Je.fn = Be.prototype, Je.invalid = function() {
18093 var Zn = rt(1, "add"),
18094 Xn = rt(-1, "subtract");
18095 e.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", e.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
18096 var Qn = w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
18097 return void 0 === e ? this.localeData() : this.locale(e)
18099 N(0, ["gg", 2], 0, function() {
18100 return this.weekYear() % 100
18101 }), N(0, ["GG", 2], 0, function() {
18102 return this.isoWeekYear() % 100
18103 }), 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) {
18104 t[r.substr(0, 2)] = y(e)
18105 }), V(["gg", "GG"], function(t, n, r, i) {
18106 n[i] = e.parseTwoDigitYear(t)
18107 }), N("Q", 0, "Qo", "quarter"), T("quarter", "Q"), S("quarter", 7), H("Q", qt), U("Q", function(e, t) {
18108 t[cn] = 3 * (y(e) - 1)
18109 }), N("D", ["DD", 2], "Do", "date"), T("date", "D"), S("date", 9), H("D", Wt), H("DD", Wt, Ut), H("Do", function(e, t) {
18110 return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
18111 }), U(["D", "DD"], ln), U("Do", function(e, t) {
18112 t[ln] = y(e.match(Wt)[0], 10)
18114 var Jn = Y("Date", !0);
18115 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) {
18116 n._dayOfYear = y(e)
18117 }), N("m", ["mm", 2], 0, "minute"), T("minute", "m"), S("minute", 14), H("m", Wt), H("mm", Wt, Ut), U(["m", "mm"], dn);
18118 var er = Y("Minutes", !1);
18119 N("s", ["ss", 2], 0, "second"), T("second", "s"), S("second", 15), H("s", Wt), H("ss", Wt, Ut), U(["s", "ss"], fn);
18120 var tr = Y("Seconds", !1);
18121 N("S", 0, 0, function() {
18122 return ~~(this.millisecond() / 100)
18123 }), N(0, ["SS", 2], 0, function() {
18124 return ~~(this.millisecond() / 10)
18125 }), N(0, ["SSS", 3], 0, "millisecond"), N(0, ["SSSS", 4], 0, function() {
18126 return 10 * this.millisecond()
18127 }), N(0, ["SSSSS", 5], 0, function() {
18128 return 100 * this.millisecond()
18129 }), N(0, ["SSSSSS", 6], 0, function() {
18130 return 1e3 * this.millisecond()
18131 }), N(0, ["SSSSSSS", 7], 0, function() {
18132 return 1e4 * this.millisecond()
18133 }), N(0, ["SSSSSSSS", 8], 0, function() {
18134 return 1e5 * this.millisecond()
18135 }), N(0, ["SSSSSSSSS", 9], 0, function() {
18136 return 1e6 * this.millisecond()
18137 }), T("millisecond", "ms"), S("millisecond", 16), H("S", Kt, qt), H("SS", Kt, Ut), H("SSS", Kt, Vt);
18139 for (nr = "SSSS"; nr.length <= 9; nr += "S") H(nr, Qt);
18140 for (nr = "S"; nr.length <= 9; nr += "S") U(nr, function(e, t) {
18141 t[hn] = y(1e3 * ("0." + e))
18143 var rr = Y("Milliseconds", !1);
18144 N("z", 0, 0, "zoneAbbr"), N("zz", 0, 0, "zoneName");
18145 var ir = g.prototype;
18146 ir.add = Zn, ir.calendar = function(t, n) {
18148 i = Ze(r, this).startOf("day"),
18149 o = e.calendarFormat(this, i) || "sameElse",
18150 a = n && (k(n[o]) ? n[o].call(this, r) : n[o]);
18151 return this.format(a || this.localeData().calendar(o, this, Ue(r)))
18152 }, ir.clone = function() {
18154 }, ir.diff = function(e, t, n) {
18156 if (!this.isValid()) return NaN;
18157 if (!(r = Ze(e, this)).isValid()) return NaN;
18158 switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), t = M(t)) {
18160 o = ot(this, r) / 12;
18166 o = ot(this, r) / 3;
18169 o = (this - r) / 1e3;
18172 o = (this - r) / 6e4;
18175 o = (this - r) / 36e5;
18178 o = (this - r - i) / 864e5;
18181 o = (this - r - i) / 6048e5;
18186 return n ? o : b(o)
18187 }, ir.endOf = function(e) {
18188 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"))
18189 }, ir.format = function(t) {
18190 t || (t = this.isUtc() ? e.defaultFormatUtc : e.defaultFormat);
18191 var n = P(this, t);
18192 return this.localeData().postformat(n)
18193 }, ir.from = function(e, t) {
18194 return this.isValid() && (v(e) && e.isValid() || Ue(e).isValid()) ? Je({
18197 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
18198 }, ir.fromNow = function(e) {
18199 return this.from(Ue(), e)
18200 }, ir.to = function(e, t) {
18201 return this.isValid() && (v(e) && e.isValid() || Ue(e).isValid()) ? Je({
18204 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
18205 }, ir.toNow = function(e) {
18206 return this.to(Ue(), e)
18207 }, ir.get = function(e) {
18208 return e = M(e), k(this[e]) ? this[e]() : this
18209 }, ir.invalidAt = function() {
18210 return f(this).overflow
18211 }, ir.isAfter = function(e, t) {
18212 var n = v(e) ? e : Ue(e);
18213 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
18214 }, ir.isBefore = function(e, t) {
18215 var n = v(e) ? e : Ue(e);
18216 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
18217 }, ir.isBetween = function(e, t, n, r) {
18218 return ("(" === (r = r || "()")[0] ? this.isAfter(e, n) : !this.isBefore(e, n)) && (")" === r[1] ? this.isBefore(t, n) : !this.isAfter(t, n))
18219 }, ir.isSame = function(e, t) {
18220 var n, r = v(e) ? e : Ue(e);
18221 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()))
18222 }, ir.isSameOrAfter = function(e, t) {
18223 return this.isSame(e, t) || this.isAfter(e, t)
18224 }, ir.isSameOrBefore = function(e, t) {
18225 return this.isSame(e, t) || this.isBefore(e, t)
18226 }, ir.isValid = function() {
18228 }, ir.lang = Qn, ir.locale = at, ir.localeData = st, ir.max = Bn, ir.min = zn, ir.parsingFlags = function() {
18229 return l({}, f(this))
18230 }, ir.set = function(e, t) {
18231 if ("object" == typeof e)
18232 for (var n = O(e = A(e)), r = 0; r < n.length; r++) this[n[r].unit](e[n[r].unit]);
18233 else if (e = M(e), k(this[e])) return this[e](t);
18235 }, ir.startOf = function(e) {
18236 switch (e = M(e)) {
18252 this.milliseconds(0)
18254 return "week" === e && this.weekday(0), "isoWeek" === e && this.isoWeekday(1), "quarter" === e && this.month(3 * Math.floor(this.month() / 3)), this
18255 }, ir.subtract = Xn, ir.toArray = function() {
18257 return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]
18258 }, ir.toObject = function() {
18265 minutes: e.minutes(),
18266 seconds: e.seconds(),
18267 milliseconds: e.milliseconds()
18269 }, ir.toDate = function() {
18270 return new Date(this.valueOf())
18271 }, ir.toISOString = function() {
18272 if (!this.isValid()) return null;
18273 var e = this.clone().utc();
18274 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]")
18275 }, ir.inspect = function() {
18276 if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
18279 this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
18280 var n = "[" + e + '("]',
18281 r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
18283 return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
18284 }, ir.toJSON = function() {
18285 return this.isValid() ? this.toISOString() : null
18286 }, ir.toString = function() {
18287 return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
18288 }, ir.unix = function() {
18289 return Math.floor(this.valueOf() / 1e3)
18290 }, ir.valueOf = function() {
18291 return this._d.valueOf() - 6e4 * (this._offset || 0)
18292 }, ir.creationData = function() {
18296 locale: this._locale,
18297 isUTC: this._isUTC,
18298 strict: this._strict
18300 }, ir.year = vn, ir.isLeapYear = function() {
18301 return W(this.year())
18302 }, ir.weekYear = function(e) {
18303 return lt.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
18304 }, ir.isoWeekYear = function(e) {
18305 return lt.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
18306 }, ir.quarter = ir.quarters = function(e) {
18307 return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
18308 }, ir.month = ee, ir.daysInMonth = function() {
18309 return X(this.year(), this.month())
18310 }, ir.week = ir.weeks = function(e) {
18311 var t = this.localeData().week(this);
18312 return null == e ? t : this.add(7 * (e - t), "d")
18313 }, ir.isoWeek = ir.isoWeeks = function(e) {
18314 var t = ae(this, 1, 4).week;
18315 return null == e ? t : this.add(7 * (e - t), "d")
18316 }, ir.weeksInYear = function() {
18317 var e = this.localeData()._week;
18318 return se(this.year(), e.dow, e.doy)
18319 }, ir.isoWeeksInYear = function() {
18320 return se(this.year(), 1, 4)
18321 }, ir.date = Jn, ir.day = ir.days = function(e) {
18322 if (!this.isValid()) return null != e ? this : NaN;
18323 var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
18324 return null != e ? (e = ce(e, this.localeData()), this.add(e - t, "d")) : t
18325 }, ir.weekday = function(e) {
18326 if (!this.isValid()) return null != e ? this : NaN;
18327 var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
18328 return null == e ? t : this.add(e - t, "d")
18329 }, ir.isoWeekday = function(e) {
18330 if (!this.isValid()) return null != e ? this : NaN;
18332 var t = le(e, this.localeData());
18333 return this.day(this.day() % 7 ? t : t - 7)
18335 return this.day() || 7
18336 }, ir.dayOfYear = function(e) {
18337 var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
18338 return null == e ? t : this.add(e - t, "d")
18339 }, 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) {
18340 var i, o = this._offset || 0;
18341 if (!this.isValid()) return null != t ? this : NaN;
18343 if ("string" == typeof t) {
18344 if (null === (t = Ke(tn, t))) return this
18345 } else Math.abs(t) < 16 && !r && (t *= 60);
18346 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
18348 return this._isUTC ? o : Xe(this)
18349 }, ir.utc = function(e) {
18350 return this.utcOffset(0, e)
18351 }, ir.local = function(e) {
18352 return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(Xe(this), "m")), this
18353 }, ir.parseZone = function() {
18354 if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
18355 else if ("string" == typeof this._i) {
18356 var e = Ke(en, this._i);
18357 null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
18360 }, ir.hasAlignedHourOffset = function(e) {
18361 return !!this.isValid() && (e = e ? Ue(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
18362 }, ir.isDST = function() {
18363 return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
18364 }, ir.isLocal = function() {
18365 return !!this.isValid() && !this._isUTC
18366 }, ir.isUtcOffset = function() {
18367 return !!this.isValid() && this._isUTC
18368 }, ir.isUtc = Qe, ir.isUTC = Qe, ir.zoneAbbr = function() {
18369 return this._isUTC ? "UTC" : ""
18370 }, ir.zoneName = function() {
18371 return this._isUTC ? "Coordinated Universal Time" : ""
18372 }, 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) {
18373 return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
18374 }), ir.isDSTShifted = w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
18375 if (!i(this._isDSTShifted)) return this._isDSTShifted;
18377 if (m(e, this), (e = Le(e))._a) {
18378 var t = e._isUTC ? u(e._a) : Ue(e._a);
18379 this._isDSTShifted = this.isValid() && _(e._a, t.toArray()) > 0
18380 } else this._isDSTShifted = !1;
18381 return this._isDSTShifted
18383 var or = x.prototype;
18384 or.calendar = function(e, t, n) {
18385 var r = this._calendar[e] || this._calendar.sameElse;
18386 return k(r) ? r.call(t, n) : r
18387 }, or.longDateFormat = function(e) {
18388 var t = this._longDateFormat[e],
18389 n = this._longDateFormat[e.toUpperCase()];
18390 return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
18392 }), this._longDateFormat[e])
18393 }, or.invalidDate = function() {
18394 return this._invalidDate
18395 }, or.ordinal = function(e) {
18396 return this._ordinal.replace("%d", e)
18397 }, or.preparse = dt, or.postformat = dt, or.relativeTime = function(e, t, n, r) {
18398 var i = this._relativeTime[n];
18399 return k(i) ? i(e, t, n, r) : i.replace(/%d/i, e)
18400 }, or.pastFuture = function(e, t) {
18401 var n = this._relativeTime[e > 0 ? "future" : "past"];
18402 return k(n) ? n(t) : n.replace(/%s/i, t)
18403 }, or.set = function(e) {
18405 for (n in e) k(t = e[n]) ? this[n] = t : this["_" + n] = t;
18406 this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
18407 }, or.months = function(e, n) {
18408 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
18409 }, or.monthsShort = function(e, n) {
18410 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
18411 }, or.monthsParse = function(e, t, n) {
18413 if (this._monthsParseExact) return Q.call(this, e, t, n);
18414 for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
18415 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;
18416 if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r;
18417 if (!n && this._monthsParse[r].test(e)) return r
18419 }, or.monthsRegex = function(e) {
18420 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)
18421 }, or.monthsShortRegex = function(e) {
18422 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)
18423 }, or.week = function(e) {
18424 return ae(e, this._week.dow, this._week.doy).week
18425 }, or.firstDayOfYear = function() {
18426 return this._week.doy
18427 }, or.firstDayOfWeek = function() {
18428 return this._week.dow
18429 }, or.weekdays = function(e, n) {
18430 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
18431 }, or.weekdaysMin = function(e) {
18432 return e ? this._weekdaysMin[e.day()] : this._weekdaysMin
18433 }, or.weekdaysShort = function(e) {
18434 return e ? this._weekdaysShort[e.day()] : this._weekdaysShort
18435 }, or.weekdaysParse = function(e, t, n) {
18437 if (this._weekdaysParseExact) return ue.call(this, e, t, n);
18438 for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
18439 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;
18440 if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r;
18441 if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r;
18442 if (!n && this._weekdaysParse[r].test(e)) return r
18444 }, or.weekdaysRegex = function(e) {
18445 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)
18446 }, or.weekdaysShortRegex = function(e) {
18447 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)
18448 }, or.weekdaysMinRegex = function(e) {
18449 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)
18450 }, or.isPM = function(e) {
18451 return "p" === (e + "").toLowerCase().charAt(0)
18452 }, or.meridiem = function(e, t, n) {
18453 return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM"
18455 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
18456 ordinal: function(e) {
18458 return e + (1 === y(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
18460 }), e.lang = w("moment.lang is deprecated. Use moment.locale instead.", be), e.langData = w("moment.langData is deprecated. Use moment.localeData instead.", _e);
18470 mr = _t("milliseconds"),
18471 gr = _t("seconds"),
18472 vr = _t("minutes"),
18488 return Cr.isValid = function() {
18489 return this._isValid
18490 }, Cr.abs = function() {
18491 var e = this._data;
18492 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
18493 }, Cr.add = function(e, t) {
18494 return mt(this, e, t, 1)
18495 }, Cr.subtract = function(e, t) {
18496 return mt(this, e, t, -1)
18497 }, Cr.as = function(e) {
18498 if (!this.isValid()) return NaN;
18499 var t, n, r = this._milliseconds;
18500 if ("month" === (e = M(e)) || "year" === e) return t = this._days + r / 864e5, n = this._months + vt(t), "month" === e ? n : n / 12;
18501 switch (t = this._days + Math.round(bt(this._months)), e) {
18503 return t / 7 + r / 6048e5;
18505 return t + r / 864e5;
18507 return 24 * t + r / 36e5;
18509 return 1440 * t + r / 6e4;
18511 return 86400 * t + r / 1e3;
18512 case "millisecond":
18513 return Math.floor(864e5 * t) + r;
18515 throw new Error("Unknown unit " + e)
18517 }, 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() {
18518 return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * y(this._months / 12) : NaN
18519 }, Cr._bubble = function() {
18520 var e, t, n, r, i, o = this._milliseconds,
18524 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
18525 }, Cr.clone = function() {
18527 }, Cr.get = function(e) {
18528 return e = M(e), this.isValid() ? this[e + "s"]() : NaN
18529 }, Cr.milliseconds = mr, Cr.seconds = gr, Cr.minutes = vr, Cr.hours = br, Cr.days = yr, Cr.weeks = function() {
18530 return b(this.days() / 7)
18531 }, Cr.months = _r, Cr.years = $r, Cr.humanize = function(e) {
18532 if (!this.isValid()) return this.localeData().invalidDate();
18533 var t = this.localeData(),
18534 n = wt(this, !e, t);
18535 return e && (n = t.pastFuture(+this, n)), t.postformat(n)
18536 }, 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) {
18537 n._d = new Date(1e3 * parseFloat(e, 10))
18538 }), U("x", function(e, t, n) {
18539 n._d = new Date(y(e))
18540 }), e.version = "2.19.2",
18543 }(Ue), e.fn = ir, e.min = function() {
18544 return Ve("isBefore", [].slice.call(arguments, 0))
18545 }, e.max = function() {
18546 return Ve("isAfter", [].slice.call(arguments, 0))
18547 }, e.now = function() {
18548 return Date.now ? Date.now() : +new Date
18549 }, e.utc = u, e.unix = function(e) {
18551 }, e.months = function(e, t) {
18552 return ht(e, t, "months")
18553 }, e.isDate = a, e.locale = be, e.invalid = p, e.duration = Je, e.isMoment = v, e.weekdays = function(e, t, n) {
18554 return pt(e, t, n, "weekdays")
18555 }, e.parseZone = function() {
18556 return Ue.apply(null, arguments).parseZone()
18557 }, e.localeData = _e, e.isDuration = We, e.monthsShort = function(e, t) {
18558 return ht(e, t, "monthsShort")
18559 }, e.weekdaysMin = function(e, t, n) {
18560 return pt(e, t, n, "weekdaysMin")
18561 }, e.defineLocale = ye, e.updateLocale = function(e, t) {
18564 null != (r = ve(e)) && (i = r._config), (n = new x(t = C(i, t))).parentLocale = In[e], In[e] = n, be(e)
18565 } else null != In[e] && (null != In[e].parentLocale ? In[e] = In[e].parentLocale : null != In[e] && delete In[e]);
18567 }, e.locales = function() {
18569 }, e.weekdaysShort = function(e, t, n) {
18570 return pt(e, t, n, "weekdaysShort")
18571 }, e.normalizeUnits = M, e.relativeTimeRounding = function(e) {
18572 return void 0 === e ? wr : "function" == typeof e && (wr = e, !0)
18573 }, e.relativeTimeThreshold = function(e, t) {
18574 return void 0 !== Er[e] && (void 0 === t ? Er[e] : (Er[e] = t, "s" === e && (Er.ss = t - 1), !0))
18575 }, e.calendarFormat = function(e, t) {
18576 var n = e.diff(t, "days", !0);
18577 return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
18578 }, e.prototype = ir, e
18582 "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
18583 if (!e.document) throw new Error("jQuery requires a window with a document");
18586 }("undefined" != typeof window ? window : this, function(e, t) {
18590 var n = (t = t || te).createElement("script");
18591 n.text = e, t.head.appendChild(n).parentNode.removeChild(n)
18595 var t = !!e && "length" in e && e.length,
18597 return "function" !== n && !he.isWindow(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
18601 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
18604 function o(e, t, n) {
18605 return he.isFunction(t) ? he.grep(e, function(e, r) {
18606 return !!t.call(e, r, e) !== n
18607 }) : t.nodeType ? he.grep(e, function(e) {
18608 return e === t !== n
18609 }) : "string" != typeof t ? he.grep(e, function(e) {
18610 return ae.call(t, e) > -1 !== n
18611 }) : Ee.test(t) ? he.filter(t, e, n) : (t = he.filter(t, e), he.grep(e, function(e) {
18612 return ae.call(t, e) > -1 !== n && 1 === e.nodeType
18618 (e = e[t]) && 1 !== e.nodeType;);
18624 return he.each(e.match(Me) || [], function(e, n) {
18637 function u(e, t, n, r) {
18640 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))
18642 n.apply(void 0, [e])
18647 te.removeEventListener("DOMContentLoaded", d), e.removeEventListener("load", d), he.ready()
18651 this.expando = he.expando + f.uid++
18655 return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Re.test(e) ? JSON.parse(e) : e)
18658 function p(e, t, n) {
18660 if (void 0 === n && 1 === e.nodeType)
18661 if (r = "data-" + t.replace(Pe, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
18670 function m(e, t, n, r) {
18673 s = r ? function() {
18676 return he.css(e, t, "")
18679 l = n && n[3] || (he.cssNumber[t] ? "" : "px"),
18680 u = (he.cssNumber[t] || "px" !== l && +c) && He.exec(he.css(e, t));
18681 if (u && u[3] !== l) {
18682 l = l || u[3], n = n || [], u = +c || 1;
18684 u /= o = o || ".5", he.style(e, t, u + l)
18685 } while (o !== (o = s() / c) && 1 !== o && --a)
18687 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
18691 var t, n = e.ownerDocument,
18694 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)
18698 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)));
18699 for (o = 0; o < a; o++) null != i[o] && (e[o].style.display = i[o]);
18705 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
18709 for (var n = 0, r = e.length; n < r; n++) Ne.set(e[n], "globalEval", !t || Ne.get(t[n], "globalEval"))
18712 function _(e, t, n, r, i) {
18713 for (var o, a, s, c, l, u, d = t.createDocumentFragment(), f = [], h = 0, p = e.length; h < p; h++)
18714 if ((o = e[h]) || 0 === o)
18715 if ("object" === he.type(o)) he.merge(f, o.nodeType ? [o] : o);
18716 else if (Ye.test(o)) {
18717 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;
18718 he.merge(f, a.childNodes), (a = d.firstChild).textContent = ""
18719 } else f.push(t.createTextNode(o));
18720 for (d.textContent = "", h = 0; o = f[h++];)
18721 if (r && he.inArray(o, r) > -1) i && i.push(o);
18722 else if (l = he.contains(o.ownerDocument, o), a = b(d.appendChild(o), "script"), l && y(a), n)
18723 for (u = 0; o = a[u++];) Be.test(o.type || "") && n.push(o);
18737 return te.activeElement
18741 function k(e, t, n, r, i, o) {
18743 if ("object" == typeof t) {
18744 "string" != typeof n && (r = r || n, n = void 0);
18745 for (s in t) k(e, s, n, r, t[s], o);
18748 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;
18749 else if (!i) return e;
18750 return 1 === o && (a = i, (i = function(e) {
18751 return he().off(e), a.apply(this, arguments)
18752 }).guid = a.guid || (a.guid = he.guid++)), e.each(function() {
18753 he.event.add(this, t, i, r, n)
18758 return i(e, "table") && i(11 !== t.nodeType ? t : t.firstChild, "tr") ? he(">tbody", e)[0] || e : e
18762 return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
18766 var t = tt.exec(e.type);
18767 return t ? e.type = t[1] : e.removeAttribute("type"), e
18771 var n, r, i, o, a, s, c, l;
18772 if (1 === t.nodeType) {
18773 if (Ne.hasData(e) && (o = Ne.access(e), a = Ne.set(t, o), l = o.events)) {
18774 delete a.handle, a.events = {};
18776 for (n = 0, r = l[i].length; n < r; n++) he.event.add(t, i, l[i][n])
18778 Ie.hasData(e) && (s = Ie.access(e), c = he.extend({}, s), Ie.set(t, c))
18783 var n = t.nodeName.toLowerCase();
18784 "input" === n && Ve.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
18787 function S(e, t, r, i) {
18788 t = ie.apply([], t);
18789 var o, a, s, c, l, u, d = 0,
18793 m = he.isFunction(p);
18794 if (m || f > 1 && "string" == typeof p && !fe.checkClone && et.test(p)) return e.each(function(n) {
18796 m && (t[0] = p.call(this, n, o.html())), S(o, t, r, i)
18798 if (f && (o = _(t, e[0].ownerDocument, !1, e, i), a = o.firstChild, 1 === o.childNodes.length && (o = a), a || i)) {
18799 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);
18801 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))
18806 function O(e, t, n) {
18807 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));
18811 function D(e, t, n) {
18812 var r, i, o, a, s = e.style;
18813 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
18819 if (!e()) return (this.get = t).apply(this, arguments);
18826 if (e in dt) return e;
18827 for (var t = e[0].toUpperCase() + e.slice(1), n = ut.length; n--;)
18828 if ((e = ut[n] + t) in dt) return e
18832 var t = he.cssProps[e];
18833 return t || (t = he.cssProps[e] = I(e) || e), t
18836 function P(e, t, n) {
18837 var r = He.exec(t);
18838 return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
18841 function j(e, t, n, r, i) {
18843 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)));
18847 function H(e, t, n) {
18850 a = "border-box" === he.css(e, "boxSizing", !1, i);
18851 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")
18854 function L(e, t, n, r, i) {
18855 return new L.prototype.init(e, t, n, r, i)
18859 ht && (!1 === te.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(F) : e.setTimeout(F, he.fx.interval), he.fx.tick())
18863 return e.setTimeout(function() {
18873 for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = Le[r])] = i["padding" + n] = e;
18874 return t && (i.opacity = i.width = e), i
18877 function V(e, t, n) {
18878 for (var r, i = (B.tweeners[t] || []).concat(B.tweeners["*"]), o = 0, a = i.length; o < a; o++)
18879 if (r = i[o].call(n, t, e)) return r
18885 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) {
18886 o = a.expand(o), delete e[r];
18887 for (n in o) n in e || (e[n] = o[n], t[n] = i)
18891 function B(e, t, n) {
18893 a = B.prefilters.length,
18894 s = he.Deferred().always(function() {
18899 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);
18900 return s.notifyWith(e, [l, r, n]), r < 1 && a ? n : (a || s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l]), !1)
18904 props: he.extend({}, t),
18905 opts: he.extend(!0, {
18907 easing: he.easing._default
18909 originalProperties: t,
18910 originalOptions: n,
18911 startTime: ft || q(),
18912 duration: n.duration,
18914 createTween: function(t, n) {
18915 var r = he.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
18916 return l.tweens.push(r), r
18918 stop: function(t) {
18920 r = t ? l.tweens.length : 0;
18921 if (i) return this;
18922 for (i = !0; n < r; n++) l.tweens[n].run(1);
18923 return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]), this
18927 for (z(u, l.opts.specialEasing); o < a; o++)
18928 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;
18929 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, {
18932 queue: l.opts.queue
18937 return (e.match(Me) || []).join(" ")
18941 return e.getAttribute && e.getAttribute("class") || ""
18944 function G(e, t, n, r) {
18946 if (Array.isArray(t)) he.each(t, function(t, i) {
18947 n || Ct.test(e) ? r(e, i) : G(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
18949 else if (n || "object" !== he.type(t)) r(e, t);
18951 for (i in t) G(e + "[" + i + "]", t[i], n, r)
18955 return function(t, n) {
18956 "string" != typeof t && (n = t, t = "*");
18958 o = t.toLowerCase().match(Me) || [];
18959 if (he.isFunction(n))
18960 for (; r = o[i++];) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
18964 function Z(e, t, n, r) {
18967 return o[s] = !0, he.each(e[s] || [], function(e, s) {
18968 var l = s(t, n, r);
18969 return "string" != typeof l || a || o[l] ? a ? !(c = l) : void 0 : (t.dataTypes.unshift(l), i(l), !1)
18974 return i(t.dataTypes[0]) || !o["*"] && i("*")
18978 var n, r, i = he.ajaxSettings.flatOptions || {};
18979 for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
18980 return r && he.extend(!0, e, r), e
18983 function Q(e, t, n) {
18984 for (var r, i, o, a, s = e.contents, c = e.dataTypes;
18985 "*" === c[0];) c.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
18988 if (s[i] && s[i].test(r)) {
18992 if (c[0] in n) o = c[0];
18995 if (!c[0] || e.converters[i + " " + c[0]]) {
19003 if (o) return o !== c[0] && c.unshift(o), n[o]
19006 function J(e, t, n, r) {
19007 var i, o, a, s, c, l = {},
19008 u = e.dataTypes.slice();
19010 for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
19011 for (o = u.shift(); o;)
19012 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !c && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), c = o, o = u.shift())
19013 if ("*" === o) o = c;
19014 else if ("*" !== c && c !== o) {
19015 if (!(a = l[c + " " + o] || l["* " + o]))
19017 if ((s = i.split(" "))[1] === o && (a = l[c + " " + s[0]] || l["* " + s[0]])) {
19018 !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], u.unshift(s[1]));
19022 if (a && e.throws) t = a(t);
19027 state: "parsererror",
19028 error: a ? e : "No conversion from " + c + " to " + o
19039 ne = Object.getPrototypeOf,
19046 le = se.hasOwnProperty,
19048 de = ue.call(Object),
19050 he = function(e, t) {
19051 return new he.fn.init(e, t)
19053 pe = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
19056 ve = function(e, t) {
19057 return t.toUpperCase()
19059 he.fn = he.prototype = {
19063 toArray: function() {
19064 return re.call(this)
19067 return null == e ? re.call(this) : e < 0 ? this[e + this.length] : this[e]
19069 pushStack: function(e) {
19070 var t = he.merge(this.constructor(), e);
19071 return t.prevObject = this, t
19073 each: function(e) {
19074 return he.each(this, e)
19077 return this.pushStack(he.map(this, function(t, n) {
19078 return e.call(t, n, t)
19081 slice: function() {
19082 return this.pushStack(re.apply(this, arguments))
19084 first: function() {
19091 var t = this.length,
19092 n = +e + (e < 0 ? t : 0);
19093 return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
19096 return this.prevObject || this.constructor()
19101 }, he.extend = he.fn.extend = function() {
19102 var e, t, n, r, i, o, a = arguments[0] || {},
19104 c = arguments.length,
19106 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++)
19107 if (null != (e = arguments[s]))
19108 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));
19111 expando: "jQuery" + ("3.2.1" + Math.random()).replace(/\D/g, ""),
19113 error: function(e) {
19116 noop: function() {},
19117 isFunction: function(e) {
19118 return "function" === he.type(e)
19120 isWindow: function(e) {
19121 return null != e && e === e.window
19123 isNumeric: function(e) {
19124 var t = he.type(e);
19125 return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
19127 isPlainObject: function(e) {
19129 return !(!e || "[object Object]" !== ce.call(e)) && (!(t = ne(e)) || "function" == typeof(n = le.call(t, "constructor") && t.constructor) && ue.call(n) === de)
19131 isEmptyObject: function(e) {
19133 for (t in e) return !1;
19136 type: function(e) {
19137 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? se[ce.call(e)] || "object" : typeof e
19139 globalEval: function(e) {
19142 camelCase: function(e) {
19143 return e.replace(me, "ms-").replace(ge, ve)
19145 each: function(e, t) {
19148 for (n = e.length; i < n && !1 !== t.call(e[i], i, e[i]); i++);
19151 if (!1 === t.call(e[i], i, e[i])) break; return e
19153 trim: function(e) {
19154 return null == e ? "" : (e + "").replace(pe, "")
19156 makeArray: function(e, t) {
19158 return null != e && (r(Object(e)) ? he.merge(n, "string" == typeof e ? [e] : e) : oe.call(n, e)), n
19160 inArray: function(e, t, n) {
19161 return null == t ? -1 : ae.call(t, e, n)
19163 merge: function(e, t) {
19164 for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
19165 return e.length = i, e
19167 grep: function(e, t, n) {
19168 for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
19171 map: function(e, t, n) {
19175 for (i = e.length; a < i; a++) null != (o = t(e[a], a, n)) && s.push(o);
19177 for (a in e) null != (o = t(e[a], a, n)) && s.push(o);
19178 return ie.apply([], s)
19181 proxy: function(e, t) {
19183 if ("string" == typeof t && (n = e[t], t = e, e = n), he.isFunction(e)) return r = re.call(arguments, 2), i = function() {
19184 return e.apply(t || this, r.concat(re.call(arguments)))
19185 }, i.guid = e.guid = e.guid || he.guid++, i
19189 }), "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) {
19190 se["[object " + t + "]"] = t.toLowerCase()
19192 var be = function(e) {
19193 function t(e, t, n, r) {
19194 var i, o, a, s, c, u, f, h = t && t.ownerDocument,
19195 p = t ? t.nodeType : 9;
19196 if (n = n || [], "string" != typeof e || !e || 1 !== p && 9 !== p && 11 !== p) return n;
19197 if (!r && ((t ? t.ownerDocument || t : L) !== O && S(t), t = t || O, N)) {
19198 if (11 !== p && (c = me.exec(e)))
19201 if (!(a = t.getElementById(i))) return n;
19202 if (a.id === i) return n.push(a), n
19203 } else if (h && (a = h.getElementById(i)) && j(t, a) && a.id === i) return n.push(a), n
19205 if (c[2]) return Z.apply(n, t.getElementsByTagName(e)), n;
19206 if ((i = c[3]) && _.getElementsByClassName && t.getElementsByClassName) return Z.apply(n, t.getElementsByClassName(i)), n
19208 if (_.qsa && !z[e + " "] && (!I || !I.test(e))) {
19209 if (1 !== p) h = t, f = e;
19210 else if ("object" !== t.nodeName.toLowerCase()) {
19211 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]);
19212 f = u.join(","), h = ge.test(e) && l(t.parentNode) || t
19215 return Z.apply(n, h.querySelectorAll(f)), n
19216 } catch (e) {} finally {
19217 s === H && t.removeAttribute("id")
19221 return x(e.replace(oe, "$1"), t, n, r)
19226 return t.push(n + " ") > $.cacheLength && delete e[t.shift()], e[n + " "] = r
19233 return e[H] = !0, e
19237 var t = O.createElement("fieldset");
19243 t.parentNode && t.parentNode.removeChild(t), t = null
19248 for (var n = e.split("|"), r = n.length; r--;) $.attrHandle[n[r]] = t
19253 r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
19256 for (; n = n.nextSibling;)
19257 if (n === t) return -1;
19262 return function(t) {
19263 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
19268 return r(function(t) {
19269 return t = +t, r(function(n, r) {
19270 for (var i, o = e([], n.length, t), a = o.length; a--;) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
19276 return e && void 0 !== e.getElementsByTagName && e
19282 for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
19286 function f(e, t, n) {
19290 a = n && "parentNode" === o,
19292 return t.first ? function(t, n, i) {
19294 if (1 === t.nodeType || a) return e(t, n, i);
19296 } : function(t, n, c) {
19297 var l, u, d, f = [F, s];
19300 if ((1 === t.nodeType || a) && e(t, n, c)) return !0
19303 if (1 === t.nodeType || a)
19304 if (d = t[H] || (t[H] = {}), u = d[t.uniqueID] || (d[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase()) t = t[r] || t;
19306 if ((l = u[o]) && l[0] === F && l[1] === s) return f[2] = l[2];
19307 if (u[o] = f, f[2] = e(t, n, c)) return !0
19313 return e.length > 1 ? function(t, n, r) {
19314 for (var i = e.length; i--;)
19315 if (!e[i](t, n, r)) return !1;
19320 function p(e, n, r) {
19321 for (var i = 0, o = n.length; i < o; i++) t(e, n[i], r);
19325 function m(e, t, n, r, i) {
19326 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)));
19330 function g(e, t, n, i, o, a) {
19331 return i && !i[H] && (i = g(i)), o && !o[H] && (o = g(o, a)), r(function(r, a, s, c) {
19332 var l, u, d, f = [],
19335 v = r || p(t || "*", s.nodeType ? [s] : s, []),
19336 b = !e || !r && t ? v : m(v, f, e, s, c),
19337 y = n ? o || (r ? e : g || i) ? [] : a : b;
19338 if (n && n(b, y, s, c), i)
19339 for (l = m(y, h), i(l, [], s, c), u = l.length; u--;)(d = l[u]) && (y[h[u]] = !(b[h[u]] = d));
19343 for (l = [], u = y.length; u--;)(d = y[u]) && l.push(b[u] = d);
19344 o(null, y = [], l, c)
19346 for (u = y.length; u--;)(d = y[u]) && (l = o ? Q(r, d) : f[u]) > -1 && (r[l] = !(a[l] = d))
19348 } else y = m(y === a ? y.splice(g, y.length) : y), o ? o(null, a, y, c) : Z.apply(a, y)
19353 for (var t, n, r, i = e.length, o = $.relative[e[0].type], a = o || $.relative[" "], s = o ? 1 : 0, c = f(function(e) {
19355 }, a, !0), l = f(function(e) {
19356 return Q(t, e) > -1
19357 }, a, !0), u = [function(e, n, r) {
19358 var i = !o && (r || n !== T) || ((t = n).nodeType ? c(e, n, r) : l(e, n, r));
19361 if (n = $.relative[e[s].type]) u = [f(h(u), n)];
19363 if ((n = $.filter[e[s].type].apply(null, e[s].matches))[H]) {
19364 for (r = ++s; r < i && !$.relative[e[r].type]; r++);
19365 return g(s > 1 && h(u), s > 1 && d(e.slice(0, s - 1).concat({
19366 value: " " === e[s - 2].type ? "*" : ""
19367 })).replace(oe, "$1"), n, s < r && v(e.slice(s, r)), r < i && v(e = e.slice(r)), r < i && d(e))
19375 var i = n.length > 0,
19377 a = function(r, a, s, c, l) {
19378 var u, d, f, h = 0,
19383 y = r || o && $.find.TAG("*", l),
19384 _ = F += null == b ? 1 : Math.random() || .1,
19386 for (l && (T = a === O || a || l); p !== w && null != (u = y[p]); p++) {
19388 for (d = 0, a || u.ownerDocument === O || (S(u), s = !N); f = e[d++];)
19389 if (f(u, a || O, s)) {
19395 i && ((u = !f && u) && h--, r && g.push(u))
19397 if (h += p, i && p !== h) {
19398 for (d = 0; f = n[d++];) f(g, v, a, s);
19401 for (; p--;) g[p] || v[p] || (v[p] = G.call(c));
19404 Z.apply(c, v), l && !r && v.length > 0 && h + n.length > 1 && t.uniqueSort(c)
19406 return l && (F = _, T = b), g
19408 return i ? r(a) : a
19410 var y, _, $, w, E, k, C, x, T, M, A, S, O, D, N, I, R, P, j, H = "sizzle" + 1 * new Date,
19417 B = function(e, t) {
19418 return e === t && (A = !0), 0
19420 W = {}.hasOwnProperty,
19426 Q = function(e, t) {
19427 for (var n = 0, r = e.length; n < r; n++)
19428 if (e[n] === t) return n;
19431 J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
19432 ee = "[\\x20\\t\\r\\n\\f]",
19433 te = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
19434 ne = "\\[" + ee + "*(" + te + ")(?:" + ee + "*([*^$|!~]?=)" + ee + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + te + "))|)" + ee + "*\\]",
19435 re = ":(" + te + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ne + ")*)|.*)\\)|)",
19436 ie = new RegExp(ee + "+", "g"),
19437 oe = new RegExp("^" + ee + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ee + "+$", "g"),
19438 ae = new RegExp("^" + ee + "*," + ee + "*"),
19439 se = new RegExp("^" + ee + "*([>+~]|" + ee + ")" + ee + "*"),
19440 ce = new RegExp("=" + ee + "*([^\\]'\"]*?)" + ee + "*\\]", "g"),
19441 le = new RegExp(re),
19442 ue = new RegExp("^" + te + "$"),
19444 ID: new RegExp("^#(" + te + ")"),
19445 CLASS: new RegExp("^\\.(" + te + ")"),
19446 TAG: new RegExp("^(" + te + "|[*])"),
19447 ATTR: new RegExp("^" + ne),
19448 PSEUDO: new RegExp("^" + re),
19449 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ee + "*(even|odd|(([+-]|)(\\d*)n|)" + ee + "*(?:([+-]|)" + ee + "*(\\d+)|))" + ee + "*\\)|)", "i"),
19450 bool: new RegExp("^(?:" + J + ")$", "i"),
19451 needsContext: new RegExp("^" + ee + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ee + "*((?:-\\d)?\\d*)" + ee + "*\\)|)(?=[^-]|$)", "i")
19453 fe = /^(?:input|select|textarea|button)$/i,
19455 pe = /^[^{]+\{\s*\[native \w/,
19456 me = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
19458 ve = new RegExp("\\\\([\\da-f]{1,6}" + ee + "?|(" + ee + ")|.)", "ig"),
19459 be = function(e, t, n) {
19460 var r = "0x" + t - 65536;
19461 return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
19463 ye = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
19464 _e = function(e, t) {
19465 return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
19470 we = f(function(e) {
19471 return !0 === e.disabled && ("form" in e || "label" in e)
19477 Z.apply(Y = X.call(L.childNodes), L.childNodes), Y[L.childNodes.length].nodeType
19480 apply: Y.length ? function(e, t) {
19481 K.apply(e, X.call(t))
19482 } : function(e, t) {
19483 for (var n = e.length, r = 0; e[n++] = t[r++];);
19488 _ = t.support = {}, E = t.isXML = function(e) {
19489 var t = e && (e.ownerDocument || e).documentElement;
19490 return !!t && "HTML" !== t.nodeName
19491 }, S = t.setDocument = function(e) {
19492 var t, n, r = e ? e.ownerDocument || e : L;
19493 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) {
19494 return e.className = "i", !e.getAttribute("className")
19495 }), _.getElementsByTagName = i(function(e) {
19496 return e.appendChild(O.createComment("")), !e.getElementsByTagName("*").length
19497 }), _.getElementsByClassName = pe.test(O.getElementsByClassName), _.getById = i(function(e) {
19498 return D.appendChild(e).id = H, !O.getElementsByName || !O.getElementsByName(H).length
19499 }), _.getById ? ($.filter.ID = function(e) {
19500 var t = e.replace(ve, be);
19501 return function(e) {
19502 return e.getAttribute("id") === t
19504 }, $.find.ID = function(e, t) {
19505 if (void 0 !== t.getElementById && N) {
19506 var n = t.getElementById(e);
19507 return n ? [n] : []
19509 }) : ($.filter.ID = function(e) {
19510 var t = e.replace(ve, be);
19511 return function(e) {
19512 var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
19513 return n && n.value === t
19515 }, $.find.ID = function(e, t) {
19516 if (void 0 !== t.getElementById && N) {
19517 var n, r, i, o = t.getElementById(e);
19519 if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
19520 for (i = t.getElementsByName(e), r = 0; o = i[r++];)
19521 if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
19525 }), $.find.TAG = _.getElementsByTagName ? function(e, t) {
19526 return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : _.qsa ? t.querySelectorAll(e) : void 0
19527 } : function(e, t) {
19530 o = t.getElementsByTagName(e);
19532 for (; n = o[i++];) 1 === n.nodeType && r.push(n);
19536 }, $.find.CLASS = _.getElementsByClassName && function(e, t) {
19537 if (void 0 !== t.getElementsByClassName && N) return t.getElementsByClassName(e)
19538 }, R = [], I = [], (_.qsa = pe.test(O.querySelectorAll)) && (i(function(e) {
19539 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(".#.+[+~]")
19540 }), i(function(e) {
19541 e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
19542 var t = O.createElement("input");
19543 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(",.*:")
19544 })), (_.matchesSelector = pe.test(P = D.matches || D.webkitMatchesSelector || D.mozMatchesSelector || D.oMatchesSelector || D.msMatchesSelector)) && i(function(e) {
19545 _.disconnectedMatch = P.call(e, "*"), P.call(e, "[s!='']:x"), R.push("!=", re)
19546 }), 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) {
19547 var n = 9 === e.nodeType ? e.documentElement : e,
19548 r = t && t.parentNode;
19549 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
19550 } : function(e, t) {
19552 for (; t = t.parentNode;)
19553 if (t === e) return !0;
19555 }, B = t ? function(e, t) {
19556 if (e === t) return A = !0, 0;
19557 var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
19558 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)
19559 } : function(e, t) {
19560 if (e === t) return A = !0, 0;
19566 if (!i || !o) return e === O ? -1 : t === O ? 1 : i ? -1 : o ? 1 : M ? Q(M, e) - Q(M, t) : 0;
19567 if (i === o) return a(e, t);
19568 for (n = e; n = n.parentNode;) s.unshift(n);
19569 for (n = t; n = n.parentNode;) c.unshift(n);
19570 for (; s[r] === c[r];) r++;
19571 return r ? a(s[r], c[r]) : s[r] === L ? -1 : c[r] === L ? 1 : 0
19573 }, t.matches = function(e, n) {
19574 return t(e, null, null, n)
19575 }, t.matchesSelector = function(e, n) {
19576 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 {
19577 var r = P.call(e, n);
19578 if (r || _.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
19580 return t(n, O, null, [e]).length > 0
19581 }, t.contains = function(e, t) {
19582 return (e.ownerDocument || e) !== O && S(e), j(e, t)
19583 }, t.attr = function(e, t) {
19584 (e.ownerDocument || e) !== O && S(e);
19585 var n = $.attrHandle[t.toLowerCase()],
19586 r = n && W.call($.attrHandle, t.toLowerCase()) ? n(e, t, !N) : void 0;
19587 return void 0 !== r ? r : _.attributes || !N ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
19588 }, t.escape = function(e) {
19589 return (e + "").replace(ye, _e)
19590 }, t.error = function(e) {
19591 throw new Error("Syntax error, unrecognized expression: " + e)
19592 }, t.uniqueSort = function(e) {
19596 if (A = !_.detectDuplicates, M = !_.sortStable && e.slice(0), e.sort(B), A) {
19597 for (; t = e[i++];) t === e[i] && (r = n.push(i));
19598 for (; r--;) e.splice(n[r], 1)
19601 }, w = t.getText = function(e) {
19606 if (1 === i || 9 === i || 11 === i) {
19607 if ("string" == typeof e.textContent) return e.textContent;
19608 for (e = e.firstChild; e; e = e.nextSibling) n += w(e)
19609 } else if (3 === i || 4 === i) return e.nodeValue
19611 for (; t = e[r++];) n += w(t);
19613 }, ($ = t.selectors = {
19628 dir: "previousSibling",
19632 dir: "previousSibling"
19636 ATTR: function(e) {
19637 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)
19639 CHILD: function(e) {
19640 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
19642 PSEUDO: function(e) {
19643 var t, n = !e[6] && e[2];
19644 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))
19649 var t = e.replace(ve, be).toLowerCase();
19650 return "*" === e ? function() {
19653 return e.nodeName && e.nodeName.toLowerCase() === t
19656 CLASS: function(e) {
19657 var t = U[e + " "];
19658 return t || (t = new RegExp("(^|" + ee + ")" + e + "(" + ee + "|$)")) && U(e, function(e) {
19659 return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
19662 ATTR: function(e, n, r) {
19663 return function(i) {
19664 var o = t.attr(i, e);
19665 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 + "-"))
19668 CHILD: function(e, t, n, r, i) {
19669 var o = "nth" !== e.slice(0, 3),
19670 a = "last" !== e.slice(-4),
19671 s = "of-type" === t;
19672 return 1 === r && 0 === i ? function(e) {
19673 return !!e.parentNode
19674 } : function(t, n, c) {
19675 var l, u, d, f, h, p, m = o !== a ? "nextSibling" : "previousSibling",
19677 v = s && t.nodeName.toLowerCase(),
19683 for (f = t; f = f[m];)
19684 if (s ? f.nodeName.toLowerCase() === v : 1 === f.nodeType) return !1;
19685 p = m = "only" === e && !p && "nextSibling"
19689 if (p = [a ? g.firstChild : g.lastChild], a && b) {
19690 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();)
19691 if (1 === f.nodeType && ++y && f === t) {
19695 } 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)
19697 (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)););
19698 return (y -= i) === r || y % r == 0 && y / r >= 0
19702 PSEUDO: function(e, n) {
19703 var i, o = $.pseudos[e] || $.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
19704 return o[H] ? o(n) : o.length > 1 ? (i = [e, e, "", n], $.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
19705 for (var r, i = o(e, n), a = i.length; a--;) e[r = Q(e, i[a])] = !(t[r] = i[a])
19712 not: r(function(e) {
19715 i = C(e.replace(oe, "$1"));
19716 return i[H] ? r(function(e, t, n, r) {
19717 for (var o, a = i(e, null, r, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
19718 }) : function(e, r, o) {
19719 return t[0] = e, i(t, null, o, n), t[0] = null, !n.pop()
19722 has: r(function(e) {
19723 return function(n) {
19724 return t(e, n).length > 0
19727 contains: r(function(e) {
19728 return e = e.replace(ve, be),
19730 return (t.textContent || t.innerText || w(t)).indexOf(e) > -1
19733 lang: r(function(e) {
19734 return ue.test(e || "") || t.error("unsupported lang: " + e), e = e.replace(ve, be).toLowerCase(),
19738 if (n = N ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
19739 } while ((t = t.parentNode) && 1 === t.nodeType);
19743 target: function(t) {
19744 var n = e.location && e.location.hash;
19745 return n && n.slice(1) === t.id
19747 root: function(e) {
19750 focus: function(e) {
19751 return e === O.activeElement && (!O.hasFocus || O.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
19755 checked: function(e) {
19756 var t = e.nodeName.toLowerCase();
19757 return "input" === t && !!e.checked || "option" === t && !!e.selected
19759 selected: function(e) {
19760 return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
19762 empty: function(e) {
19763 for (e = e.firstChild; e; e = e.nextSibling)
19764 if (e.nodeType < 6) return !1;
19767 parent: function(e) {
19768 return !$.pseudos.empty(e)
19770 header: function(e) {
19771 return he.test(e.nodeName)
19773 input: function(e) {
19774 return fe.test(e.nodeName)
19776 button: function(e) {
19777 var t = e.nodeName.toLowerCase();
19778 return "input" === t && "button" === e.type || "button" === t
19780 text: function(e) {
19782 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
19784 first: c(function() {
19787 last: c(function(e, t) {
19790 eq: c(function(e, t, n) {
19791 return [n < 0 ? n + t : n]
19793 even: c(function(e, t) {
19794 for (var n = 0; n < t; n += 2) e.push(n);
19797 odd: c(function(e, t) {
19798 for (var n = 1; n < t; n += 2) e.push(n);
19801 lt: c(function(e, t, n) {
19802 for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
19805 gt: c(function(e, t, n) {
19806 for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
19810 }).pseudos.nth = $.pseudos.eq;
19817 }) $.pseudos[y] = function(e) {
19818 return function(t) {
19819 return "input" === t.nodeName.toLowerCase() && t.type === e
19825 }) $.pseudos[y] = function(e) {
19826 return function(t) {
19827 var n = t.nodeName.toLowerCase();
19828 return ("input" === n || "button" === n) && t.type === e
19831 return u.prototype = $.filters = $.pseudos, $.setFilters = new u, k = t.tokenize = function(e, n) {
19832 var r, i, o, a, s, c, l, u = V[e + " "];
19833 if (u) return n ? 0 : u.slice(0);
19834 for (s = e, c = [], l = $.preFilter; s;) {
19835 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({
19837 type: i[0].replace(oe, " ")
19838 }), s = s.slice(r.length));
19839 for (a in $.filter) !(i = de[a].exec(s)) || l[a] && !(i = l[a](i)) || (r = i.shift(), o.push({
19843 }), s = s.slice(r.length));
19846 return n ? s.length : s ? t.error(e) : V(e, c).slice(0)
19847 }, C = t.compile = function(e, t) {
19852 for (t || (t = k(e)), n = t.length; n--;)(o = v(t[n]))[H] ? r.push(o) : i.push(o);
19853 (o = z(e, b(i, r))).selector = e
19856 }, x = t.select = function(e, t, n, r) {
19857 var i, o, a, s, c, u = "function" == typeof e && e,
19858 f = !r && k(e = u.selector || e);
19859 if (n = n || [], 1 === f.length) {
19860 if ((o = f[0] = f[0].slice(0)).length > 2 && "ID" === (a = o[0]).type && 9 === t.nodeType && N && $.relative[o[1].type]) {
19861 if (!(t = ($.find.ID(a.matches[0].replace(ve, be), t) || [])[0])) return n;
19862 u && (t = t.parentNode), e = e.slice(o.shift().value.length)
19864 for (i = de.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !$.relative[s = a.type]);)
19865 if ((c = $.find[s]) && (r = c(a.matches[0].replace(ve, be), ge.test(o[0].type) && l(t.parentNode) || t))) {
19866 if (o.splice(i, 1), !(e = r.length && d(o))) return Z.apply(n, r), n;
19870 return (u || C(e, f))(r, t, !N, n, !t || ge.test(e) && l(t.parentNode) || t), n
19871 }, _.sortStable = H.split("").sort(B).join("") === H, _.detectDuplicates = !!A, S(), _.sortDetached = i(function(e) {
19872 return 1 & e.compareDocumentPosition(O.createElement("fieldset"))
19873 }), i(function(e) {
19874 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
19875 }) || o("type|href|height|width", function(e, t, n) {
19876 if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
19877 }), _.attributes && i(function(e) {
19878 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
19879 }) || o("value", function(e, t, n) {
19880 if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
19881 }), i(function(e) {
19882 return null == e.getAttribute("disabled")
19883 }) || o(J, function(e, t, n) {
19885 if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
19888 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;
19889 var ye = function(e, t, n) {
19890 for (var r = [], i = void 0 !== n;
19891 (e = e[t]) && 9 !== e.nodeType;)
19892 if (1 === e.nodeType) {
19893 if (i && he(e).is(n)) break;
19898 _e = function(e, t) {
19899 for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
19902 $e = he.expr.match.needsContext,
19903 we = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,
19904 Ee = /^.[^:#\[\.,]*$/;
19905 he.filter = function(e, t, n) {
19907 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) {
19908 return 1 === e.nodeType
19911 find: function(e) {
19912 var t, n, r = this.length,
19914 if ("string" != typeof e) return this.pushStack(he(e).filter(function() {
19915 for (t = 0; t < r; t++)
19916 if (he.contains(i[t], this)) return !0
19918 for (n = this.pushStack([]), t = 0; t < r; t++) he.find(e, i[t], n);
19919 return r > 1 ? he.uniqueSort(n) : n
19921 filter: function(e) {
19922 return this.pushStack(o(this, e || [], !1))
19925 return this.pushStack(o(this, e || [], !0))
19928 return !!o(this, "string" == typeof e && $e.test(e) ? he(e) : e || [], !1).length
19931 var ke, Ce = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
19932 (he.fn.init = function(e, t, n) {
19934 if (!e) return this;
19935 if (n = n || ke, "string" == typeof e) {
19936 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);
19938 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))
19939 for (r in t) he.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
19942 return (i = te.getElementById(r[2])) && (this[0] = i, this.length = 1), this
19944 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)
19945 }).prototype = he.fn, ke = he(te);
19946 var xe = /^(?:parents|prev(?:Until|All))/,
19955 var t = he(e, this),
19957 return this.filter(function() {
19958 for (var e = 0; e < n; e++)
19959 if (he.contains(this, t[e])) return !0
19962 closest: function(e, t) {
19966 a = "string" != typeof e && he(e);
19969 for (n = this[r]; n && n !== t; n = n.parentNode)
19970 if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && he.find.matchesSelector(n, e))) {
19974 return this.pushStack(o.length > 1 ? he.uniqueSort(o) : o)
19976 index: function(e) {
19977 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
19979 add: function(e, t) {
19980 return this.pushStack(he.uniqueSort(he.merge(this.get(), he(e, t))))
19982 addBack: function(e) {
19983 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
19986 parent: function(e) {
19987 var t = e.parentNode;
19988 return t && 11 !== t.nodeType ? t : null
19990 parents: function(e) {
19991 return ye(e, "parentNode")
19993 parentsUntil: function(e, t, n) {
19994 return ye(e, "parentNode", n)
19996 next: function(e) {
19997 return a(e, "nextSibling")
19999 prev: function(e) {
20000 return a(e, "previousSibling")
20002 nextAll: function(e) {
20003 return ye(e, "nextSibling")
20005 prevAll: function(e) {
20006 return ye(e, "previousSibling")
20008 nextUntil: function(e, t, n) {
20009 return ye(e, "nextSibling", n)
20011 prevUntil: function(e, t, n) {
20012 return ye(e, "previousSibling", n)
20014 siblings: function(e) {
20015 return _e((e.parentNode || {}).firstChild, e)
20017 children: function(e) {
20018 return _e(e.firstChild)
20020 contents: function(e) {
20021 return i(e, "iframe") ? e.contentDocument : (i(e, "template") && (e = e.content || e), he.merge([], e.childNodes))
20023 }, function(e, t) {
20024 he.fn[e] = function(n, r) {
20025 var i = he.map(this, t, n);
20026 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)
20029 var Me = /[^\x20\t\r\n\f]+/g;
20030 he.Callbacks = function(e) {
20031 e = "string" == typeof e ? s(e) : he.extend({}, e);
20032 var t, n, r, i, o = [],
20036 for (i = i || e.once, r = t = !0; a.length; c = -1)
20037 for (n = a.shift(); ++c < o.length;) !1 === o[c].apply(n[0], n[1]) && e.stopOnFalse && (c = o.length, n = !1);
20038 e.memory || (n = !1), t = !1, i && (o = n ? [] : "")
20042 return o && (n && !t && (c = o.length - 1, a.push(n)), function t(n) {
20043 he.each(n, function(n, r) {
20044 he.isFunction(r) ? e.unique && u.has(r) || o.push(r) : r && r.length && "string" !== he.type(r) && t(r)
20046 }(arguments), n && !t && l()), this
20048 remove: function() {
20049 return he.each(arguments, function(e, t) {
20051 (n = he.inArray(t, o, n)) > -1;) o.splice(n, 1), n <= c && c--
20055 return e ? he.inArray(e, o) > -1 : o.length > 0
20057 empty: function() {
20058 return o && (o = []), this
20060 disable: function() {
20061 return i = a = [], o = n = "", this
20063 disabled: function() {
20067 return i = a = [], n || t || (o = n = ""), this
20069 locked: function() {
20072 fireWith: function(e, n) {
20073 return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || l()), this
20076 return u.fireWith(this, arguments), this
20078 fired: function() {
20084 Deferred: function(t) {
20086 ["notify", "progress", he.Callbacks("memory"), he.Callbacks("memory"), 2],
20087 ["resolve", "done", he.Callbacks("once memory"), he.Callbacks("once memory"), 0, "resolved"],
20088 ["reject", "fail", he.Callbacks("once memory"), he.Callbacks("once memory"), 1, "rejected"]
20092 state: function() {
20095 always: function() {
20096 return o.done(arguments).fail(arguments), this
20098 catch: function(e) {
20099 return i.then(null, e)
20103 return he.Deferred(function(t) {
20104 he.each(n, function(n, r) {
20105 var i = he.isFunction(e[r[4]]) && e[r[4]];
20106 o[r[1]](function() {
20107 var e = i && i.apply(this, arguments);
20108 e && he.isFunction(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments)
20113 then: function(t, r, i) {
20114 function o(t, n, r, i) {
20115 return function() {
20121 if ((e = r.apply(s, u)) === n.promise()) throw new TypeError("Thenable self-resolution");
20122 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))
20125 f = i ? d : function() {
20129 he.Deferred.exceptionHook && he.Deferred.exceptionHook(e, f.stackTrace), t + 1 >= a && (r !== l && (s = void 0, u = [e]), n.rejectWith(s, u))
20132 t ? f() : (he.Deferred.getStackHook && (f.stackTrace = he.Deferred.getStackHook()), e.setTimeout(f))
20136 return he.Deferred(function(e) {
20137 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))
20140 promise: function(e) {
20141 return null != e ? he.extend(e, i) : i
20145 return he.each(n, function(e, t) {
20148 i[t[1]] = a.add, s && a.add(function() {
20150 }, n[3 - e][2].disable, n[0][2].lock), a.add(t[3].fire), o[t[0]] = function() {
20151 return o[t[0] + "With"](this === o ? void 0 : this, arguments), this
20152 }, o[t[0] + "With"] = a.fireWith
20153 }), i.promise(o), t && t.call(o, o), o
20155 when: function(e) {
20156 var t = arguments.length,
20159 i = re.call(arguments),
20162 return function(n) {
20163 r[e] = this, i[e] = arguments.length > 1 ? re.call(arguments) : n, --t || o.resolveWith(r, i)
20166 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();
20167 for (; n--;) u(i[n], a(n), o.reject);
20171 var Ae = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
20172 he.Deferred.exceptionHook = function(t, n) {
20173 e.console && e.console.warn && t && Ae.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n)
20174 }, he.readyException = function(t) {
20175 e.setTimeout(function() {
20179 var Se = he.Deferred();
20180 he.fn.ready = function(e) {
20181 return Se.then(e).catch(function(e) {
20182 he.readyException(e)
20187 ready: function(e) {
20188 (!0 === e ? --he.readyWait : he.isReady) || (he.isReady = !0, !0 !== e && --he.readyWait > 0 || Se.resolveWith(te, [he]))
20190 }), 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));
20191 var Oe = function(e, t, n, r, i, o, a) {
20195 if ("object" === he.type(n)) {
20197 for (s in n) Oe(e, t, s, n[s], !0, o, a)
20198 } 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) {
20199 return l.call(he(e), n)
20201 for (; s < c; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
20202 return i ? e : l ? t.call(e) : c ? t(e[0], n) : o
20205 return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
20207 f.uid = 1, f.prototype = {
20208 cache: function(e) {
20209 var t = e[this.expando];
20210 return t || (t = {}, De(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
20215 set: function(e, t, n) {
20216 var r, i = this.cache(e);
20217 if ("string" == typeof t) i[he.camelCase(t)] = n;
20219 for (r in t) i[he.camelCase(r)] = t[r];
20222 get: function(e, t) {
20223 return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][he.camelCase(t)]
20225 access: function(e, t, n) {
20226 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)
20228 remove: function(e, t) {
20229 var n, r = e[this.expando];
20230 if (void 0 !== r) {
20231 if (void 0 !== t) {
20232 n = (t = Array.isArray(t) ? t.map(he.camelCase) : (t = he.camelCase(t)) in r ? [t] : t.match(Me) || []).length;
20233 for (; n--;) delete r[t[n]]
20234 }(void 0 === t || he.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
20237 hasData: function(e) {
20238 var t = e[this.expando];
20239 return void 0 !== t && !he.isEmptyObject(t)
20244 Re = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
20247 hasData: function(e) {
20248 return Ie.hasData(e) || Ne.hasData(e)
20250 data: function(e, t, n) {
20251 return Ie.access(e, t, n)
20253 removeData: function(e, t) {
20256 _data: function(e, t, n) {
20257 return Ne.access(e, t, n)
20259 _removeData: function(e, t) {
20263 data: function(e, t) {
20264 var n, r, i, o = this[0],
20265 a = o && o.attributes;
20266 if (void 0 === e) {
20267 if (this.length && (i = Ie.get(o), 1 === o.nodeType && !Ne.get(o, "hasDataAttrs"))) {
20268 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]));
20269 Ne.set(o, "hasDataAttrs", !0)
20273 return "object" == typeof e ? this.each(function() {
20275 }) : Oe(this, function(t) {
20277 if (o && void 0 === t) {
20278 if (void 0 !== (n = Ie.get(o, e))) return n;
20279 if (void 0 !== (n = p(o, e))) return n
20280 } else this.each(function() {
20283 }, null, t, arguments.length > 1, null, !0)
20285 removeData: function(e) {
20286 return this.each(function() {
20291 queue: function(e, t, n) {
20293 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 || []
20295 dequeue: function(e, t) {
20297 var n = he.queue(e, t),
20300 o = he._queueHooks(e, t);
20301 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
20303 }, o)), !r && o && o.empty.fire()
20305 _queueHooks: function(e, t) {
20306 var n = t + "queueHooks";
20307 return Ne.get(e, n) || Ne.access(e, n, {
20308 empty: he.Callbacks("once memory").add(function() {
20309 Ne.remove(e, [t + "queue", n])
20314 queue: function(e, t) {
20316 return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? he.queue(this[0], e) : void 0 === t ? this : this.each(function() {
20317 var n = he.queue(this, e, t);
20318 he._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && he.dequeue(this, e)
20321 dequeue: function(e) {
20322 return this.each(function() {
20323 he.dequeue(this, e)
20326 clearQueue: function(e) {
20327 return this.queue(e || "fx", [])
20329 promise: function(e, t) {
20335 --r || i.resolveWith(o, [o])
20337 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));
20338 return s(), i.promise(t)
20341 var je = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
20342 He = new RegExp("^(?:([+-])=|)(" + je + ")([a-z%]*)$", "i"),
20343 Le = ["Top", "Right", "Bottom", "Left"],
20344 Fe = function(e, t) {
20345 return "none" === (e = t || e).style.display || "" === e.style.display && he.contains(e.ownerDocument, e) && "none" === he.css(e, "display")
20347 qe = function(e, t, n, r) {
20349 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
20350 i = n.apply(e, r || []);
20351 for (o in t) e.style[o] = a[o];
20362 toggle: function(e) {
20363 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
20364 Fe(this) ? he(this).show() : he(this).hide()
20368 var Ve = /^(?:checkbox|radio)$/i,
20369 ze = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
20370 Be = /^$|\/(?:java|ecma)script/i,
20372 option: [1, "<select multiple='multiple'>", "</select>"],
20373 thead: [1, "<table>", "</table>"],
20374 col: [2, "<table><colgroup>", "</colgroup></table>"],
20375 tr: [2, "<table><tbody>", "</tbody></table>"],
20376 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
20377 _default: [0, "", ""]
20379 We.optgroup = We.option, We.tbody = We.tfoot = We.colgroup = We.caption = We.thead, We.th = We.td;
20380 var Ye = /<|&#?\w+;/;
20382 var e = te.createDocumentFragment().appendChild(te.createElement("div")),
20383 t = te.createElement("input");
20384 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
20386 var Ge = te.documentElement,
20388 Ze = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
20389 Xe = /^([^.]*)(?:\.(.+)|)/;
20392 add: function(e, t, n, r, i) {
20393 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.get(e);
20395 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) {
20396 return void 0 !== he && he.event.triggered !== t.type ? he.event.dispatch.apply(e, arguments) : void 0
20397 }), 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({
20404 needsContext: i && he.expr.match.needsContext.test(i),
20405 namespace: p.join(".")
20406 }, 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)
20408 remove: function(e, t, n, r, i) {
20409 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.hasData(e) && Ne.get(e);
20410 if (g && (c = g.events)) {
20411 for (l = (t = (t || "").match(Me) || [""]).length; l--;)
20412 if (s = Xe.exec(t[l]) || [], h = m = s[1], p = (s[2] || "").split(".").sort(), h) {
20413 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));
20414 a && !f.length && (d.teardown && !1 !== d.teardown.call(e, p, g.handle) || he.removeEvent(e, h, g.handle), delete c[h])
20416 for (h in c) he.event.remove(e, h + t[l], n, r, !0);
20417 he.isEmptyObject(c) && Ne.remove(e, "handle events")
20420 dispatch: function(e) {
20421 var t, n, r, i, o, a, s = he.event.fix(e),
20422 c = new Array(arguments.length),
20423 l = (Ne.get(this, "events") || {})[s.type] || [],
20424 u = he.event.special[s.type] || {};
20425 for (c[0] = s, t = 1; t < arguments.length; t++) c[t] = arguments[t];
20426 if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {
20427 for (a = he.event.handlers.call(this, s, l), t = 0;
20428 (i = a[t++]) && !s.isPropagationStopped();)
20429 for (s.currentTarget = i.elem, n = 0;
20430 (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()));
20431 return u.postDispatch && u.postDispatch.call(this, s), s.result
20434 handlers: function(e, t) {
20435 var n, r, i, o, a, s = [],
20436 c = t.delegateCount,
20438 if (c && l.nodeType && !("click" === e.type && e.button >= 1))
20439 for (; l !== this; l = l.parentNode || this)
20440 if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
20441 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);
20442 o.length && s.push({
20447 return l = this, c < t.length && s.push({
20449 handlers: t.slice(c)
20452 addProp: function(e, t) {
20453 Object.defineProperty(he.Event.prototype, e, {
20456 get: he.isFunction(t) ? function() {
20457 if (this.originalEvent) return t(this.originalEvent)
20459 if (this.originalEvent) return this.originalEvent[e]
20462 Object.defineProperty(this, e, {
20472 return e[he.expando] ? e : new he.Event(e)
20479 trigger: function() {
20480 if (this !== E() && this.focus) return this.focus(), !1
20482 delegateType: "focusin"
20485 trigger: function() {
20486 if (this === E() && this.blur) return this.blur(), !1
20488 delegateType: "focusout"
20491 trigger: function() {
20492 if ("checkbox" === this.type && this.click && i(this, "input")) return this.click(), !1
20494 _default: function(e) {
20495 return i(e.target, "a")
20499 postDispatch: function(e) {
20500 void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
20504 }, he.removeEvent = function(e, t, n) {
20505 e.removeEventListener && e.removeEventListener(t, n)
20506 }, he.Event = function(e, t) {
20507 if (!(this instanceof he.Event)) return new he.Event(e, t);
20508 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
20509 }, he.Event.prototype = {
20510 constructor: he.Event,
20511 isDefaultPrevented: w,
20512 isPropagationStopped: w,
20513 isImmediatePropagationStopped: w,
20515 preventDefault: function() {
20516 var e = this.originalEvent;
20517 this.isDefaultPrevented = $, e && !this.isSimulated && e.preventDefault()
20519 stopPropagation: function() {
20520 var e = this.originalEvent;
20521 this.isPropagationStopped = $, e && !this.isSimulated && e.stopPropagation()
20523 stopImmediatePropagation: function() {
20524 var e = this.originalEvent;
20525 this.isImmediatePropagationStopped = $, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
20531 changedTouches: !0,
20557 which: function(e) {
20559 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
20561 }, he.event.addProp), he.each({
20562 mouseenter: "mouseover",
20563 mouseleave: "mouseout",
20564 pointerenter: "pointerover",
20565 pointerleave: "pointerout"
20566 }, function(e, t) {
20567 he.event.special[e] = {
20570 handle: function(e) {
20572 i = e.relatedTarget,
20574 return i && (i === r || he.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
20578 on: function(e, t, n, r) {
20579 return k(this, e, t, n, r)
20581 one: function(e, t, n, r) {
20582 return k(this, e, t, n, r, 1)
20584 off: function(e, t, n) {
20586 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;
20587 if ("object" == typeof e) {
20588 for (i in e) this.off(i, t, e[i]);
20591 return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = w), this.each(function() {
20592 he.event.remove(this, e, n, t)
20596 var Qe = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
20597 Je = /<script|<style|<link/i,
20598 et = /checked\s*(?:[^=]|=\s*.checked.)/i,
20599 tt = /^true\/(.*)/,
20600 nt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
20602 htmlPrefilter: function(e) {
20603 return e.replace(Qe, "<$1></$2>")
20605 clone: function(e, t, n) {
20606 var r, i, o, a, s = e.cloneNode(!0),
20607 c = he.contains(e.ownerDocument, e);
20608 if (!(fe.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || he.isXMLDoc(e)))
20609 for (a = b(s), r = 0, i = (o = b(e)).length; r < i; r++) A(o[r], a[r]);
20612 for (o = o || b(e), a = a || b(s), r = 0, i = o.length; r < i; r++) M(o[r], a[r]);
20614 return (a = b(s, "script")).length > 0 && y(a, !c && b(e, "script")), s
20616 cleanData: function(e) {
20617 for (var t, n, r, i = he.event.special, o = 0; void 0 !== (n = e[o]); o++)
20619 if (t = n[Ne.expando]) {
20621 for (r in t.events) i[r] ? he.event.remove(n, r) : he.removeEvent(n, r, t.handle);
20622 n[Ne.expando] = void 0
20624 n[Ie.expando] && (n[Ie.expando] = void 0)
20628 detach: function(e) {
20629 return O(this, e, !0)
20631 remove: function(e) {
20634 text: function(e) {
20635 return Oe(this, function(e) {
20636 return void 0 === e ? he.text(this) : this.empty().each(function() {
20637 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
20639 }, null, e, arguments.length)
20641 append: function() {
20642 return S(this, arguments, function(e) {
20643 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || C(this, e).appendChild(e)
20646 prepend: function() {
20647 return S(this, arguments, function(e) {
20648 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
20649 var t = C(this, e);
20650 t.insertBefore(e, t.firstChild)
20654 before: function() {
20655 return S(this, arguments, function(e) {
20656 this.parentNode && this.parentNode.insertBefore(e, this)
20659 after: function() {
20660 return S(this, arguments, function(e) {
20661 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
20664 empty: function() {
20665 for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (he.cleanData(b(e, !1)), e.textContent = "");
20668 clone: function(e, t) {
20669 return e = null != e && e, t = null == t ? e : t, this.map(function() {
20670 return he.clone(this, e, t)
20673 html: function(e) {
20674 return Oe(this, function(e) {
20675 var t = this[0] || {},
20678 if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
20679 if ("string" == typeof e && !Je.test(e) && !We[(ze.exec(e) || ["", ""])[1].toLowerCase()]) {
20680 e = he.htmlPrefilter(e);
20682 for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (he.cleanData(b(t, !1)), t.innerHTML = e);
20686 t && this.empty().append(e)
20687 }, null, e, arguments.length)
20689 replaceWith: function() {
20691 return S(this, arguments, function(t) {
20692 var n = this.parentNode;
20693 he.inArray(this, e) < 0 && (he.cleanData(b(this)), n && n.replaceChild(t, this))
20697 appendTo: "append",
20698 prependTo: "prepend",
20699 insertBefore: "before",
20700 insertAfter: "after",
20701 replaceAll: "replaceWith"
20702 }, function(e, t) {
20703 he.fn[e] = function(e) {
20704 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());
20705 return this.pushStack(r)
20708 var rt = /^margin/,
20709 it = new RegExp("^(" + je + ")(?!px)[a-z%]+$", "i"),
20711 var n = t.ownerDocument.defaultView;
20712 return n && n.opener || (n = e), n.getComputedStyle(t)
20717 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);
20718 var t = e.getComputedStyle(s);
20719 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
20722 var n, r, i, o, a = te.createElement("div"),
20723 s = te.createElement("div");
20724 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, {
20725 pixelPosition: function() {
20728 boxSizingReliable: function() {
20731 pixelMarginRight: function() {
20734 reliableMarginLeft: function() {
20739 var at = /^(none|table(?!-c[ea]).+)/,
20742 position: "absolute",
20743 visibility: "hidden",
20747 letterSpacing: "0",
20750 ut = ["Webkit", "Moz", "ms"],
20751 dt = te.createElement("div").style;
20755 get: function(e, t) {
20757 var n = D(e, "opacity");
20758 return "" === n ? "1" : n
20764 animationIterationCount: !0,
20781 style: function(e, t, n, r) {
20782 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
20783 var i, o, a, s = he.camelCase(t),
20786 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];
20787 "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))
20790 css: function(e, t, n, r) {
20791 var i, o, a, s = he.camelCase(t);
20792 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
20794 }), he.each(["height", "width"], function(e, t) {
20796 get: function(e, n, r) {
20797 if (n) return !at.test(he.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? H(e, t, r) : qe(e, ct, function() {
20801 set: function(e, n, r) {
20802 var i, o = r && ot(e),
20803 a = r && j(e, t, r, "border-box" === he.css(e, "boxSizing", !1, o), o);
20804 return a && (i = He.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = he.css(e, t)), P(0, n, a)
20807 }), he.cssHooks.marginLeft = N(fe.reliableMarginLeft, function(e, t) {
20808 if (t) return (parseFloat(D(e, "marginLeft")) || e.getBoundingClientRect().left - qe(e, {
20811 return e.getBoundingClientRect().left
20817 }, function(e, t) {
20818 he.cssHooks[e + t] = {
20819 expand: function(n) {
20820 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];
20823 }, rt.test(e) || (he.cssHooks[e + t].set = P)
20825 css: function(e, t) {
20826 return Oe(this, function(e, t, n) {
20829 if (Array.isArray(t)) {
20830 for (r = ot(e), i = t.length; a < i; a++) o[t[a]] = he.css(e, t[a], !1, r);
20833 return void 0 !== n ? he.style(e, t, n) : he.css(e, t)
20834 }, e, t, arguments.length > 1)
20836 }), he.Tween = L, L.prototype = {
20838 init: function(e, t, n, r, i, o) {
20839 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")
20842 var e = L.propHooks[this.prop];
20843 return e && e.get ? e.get(this) : L.propHooks._default.get(this)
20846 var t, n = L.propHooks[this.prop];
20847 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
20849 }, L.prototype.init.prototype = L.prototype, L.propHooks = {
20853 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
20856 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)
20859 }, L.propHooks.scrollTop = L.propHooks.scrollLeft = {
20861 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
20864 linear: function(e) {
20867 swing: function(e) {
20868 return .5 - Math.cos(e * Math.PI) / 2
20871 }, he.fx = L.prototype.init, he.fx.step = {};
20872 var ft, ht, pt = /^(?:toggle|show|hide)$/,
20873 mt = /queueHooks$/;
20874 he.Animation = he.extend(B, {
20876 "*": [function(e, t) {
20877 var n = this.createTween(e, t);
20878 return m(n.elem, e, He.exec(t), n), n
20881 tweener: function(e, t) {
20882 he.isFunction(e) ? (t = e, e = ["*"]) : e = e.match(Me);
20883 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)
20885 prefilters: [function(e, t, n) {
20886 var r, i, o, a, s, c, l, u, d = "width" in t || "height" in t,
20890 m = e.nodeType && Fe(e),
20891 g = Ne.get(e, "fxshow");
20892 n.queue || (null == (a = he._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
20894 }), a.unqueued++, f.always(function() {
20895 f.always(function() {
20896 a.unqueued--, he.queue(e, "fx").length || a.empty.fire()
20900 if (i = t[r], pt.test(i)) {
20901 if (delete t[r], o = o || "toggle" === i, i === (m ? "hide" : "show")) {
20902 if ("show" !== i || !g || void 0 === g[r]) continue;
20905 h[r] = g && g[r] || he.style(e, r)
20907 if ((c = !he.isEmptyObject(t)) || !he.isEmptyObject(h)) {
20908 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() {
20910 }), null == l && (u = p.display, l = "none" === u ? "" : u)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", f.always(function() {
20911 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
20913 for (r in h) c || (g ? "hidden" in g && (m = g.hidden) : g = Ne.access(e, "fxshow", {
20915 }), o && (g.hidden = !m), m && v([e], !0), f.done(function() {
20916 m || v([e]), Ne.remove(e, "fxshow");
20917 for (r in h) he.style(e, r, h[r])
20918 })), c = V(m ? g[r] : 0, r, f), r in g || (g[r] = c.start, m && (c.end = c.start, c.start = 0))
20921 prefilter: function(e, t) {
20922 t ? B.prefilters.unshift(e) : B.prefilters.push(e)
20924 }), he.speed = function(e, t, n) {
20925 var r = e && "object" == typeof e ? he.extend({}, e) : {
20926 complete: n || !n && t || he.isFunction(e) && e,
20928 easing: n && t || t && !he.isFunction(t) && t
20930 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() {
20931 he.isFunction(r.old) && r.old.call(this), r.queue && he.dequeue(this, r.queue)
20934 fadeTo: function(e, t, n, r) {
20935 return this.filter(Fe).css("opacity", 0).show().end().animate({
20939 animate: function(e, t, n, r) {
20940 var i = he.isEmptyObject(e),
20941 o = he.speed(t, n, r),
20943 var t = B(this, he.extend({}, e), o);
20944 (i || Ne.get(this, "finish")) && t.stop(!0)
20946 return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
20948 stop: function(e, t, n) {
20949 var r = function(e) {
20951 delete e.stop, t(n)
20953 return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each(function() {
20955 i = null != e && e + "queueHooks",
20958 if (i) a[i] && a[i].stop && r(a[i]);
20960 for (i in a) a[i] && a[i].stop && mt.test(i) && r(a[i]);
20961 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));
20962 !t && n || he.dequeue(this, e)
20965 finish: function(e) {
20966 return !1 !== e && (e = e || "fx"), this.each(function() {
20967 var t, n = Ne.get(this),
20968 r = n[e + "queue"],
20969 i = n[e + "queueHooks"],
20971 a = r ? r.length : 0;
20972 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));
20973 for (t = 0; t < a; t++) r[t] && r[t].finish && r[t].finish.call(this);
20977 }), he.each(["toggle", "show", "hide"], function(e, t) {
20979 he.fn[t] = function(e, r, i) {
20980 return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(U(t, !0), e, r, i)
20983 slideDown: U("show"),
20984 slideUp: U("hide"),
20985 slideToggle: U("toggle"),
20995 }, function(e, t) {
20996 he.fn[e] = function(e, n, r) {
20997 return this.animate(t, e, n, r)
20999 }), he.timers = [], he.fx.tick = function() {
21002 for (ft = he.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
21003 n.length || he.fx.stop(), ft = void 0
21004 }, he.fx.timer = function(e) {
21005 he.timers.push(e), he.fx.start()
21006 }, he.fx.interval = 13, he.fx.start = function() {
21007 ht || (ht = !0, F())
21008 }, he.fx.stop = function() {
21010 }, he.fx.speeds = {
21014 }, he.fn.delay = function(t, n) {
21015 return t = he.fx ? he.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function(n, r) {
21016 var i = e.setTimeout(n, t);
21017 r.stop = function() {
21023 var e = te.createElement("input"),
21024 t = te.createElement("select").appendChild(te.createElement("option"));
21025 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
21027 var gt, vt = he.expr.attrHandle;
21029 attr: function(e, t) {
21030 return Oe(this, he.attr, e, t, arguments.length > 1)
21032 removeAttr: function(e) {
21033 return this.each(function() {
21034 he.removeAttr(this, e)
21038 attr: function(e, t, n) {
21039 var r, i, o = e.nodeType;
21040 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)
21044 set: function(e, t) {
21045 if (!fe.radioValue && "radio" === t && i(e, "input")) {
21047 return e.setAttribute("type", t), n && (e.value = n), t
21052 removeAttr: function(e, t) {
21054 i = t && t.match(Me);
21055 if (i && 1 === e.nodeType)
21056 for (; n = i[r++];) e.removeAttribute(n)
21059 set: function(e, t, n) {
21060 return !1 === t ? he.removeAttr(e, n) : e.setAttribute(n, n), n
21062 }, he.each(he.expr.match.bool.source.match(/\w+/g), function(e, t) {
21063 var n = vt[t] || he.find.attr;
21064 vt[t] = function(e, t, r) {
21065 var i, o, a = t.toLowerCase();
21066 return r || (o = vt[a], vt[a] = i, i = null != n(e, t, r) ? a : null, vt[a] = o), i
21069 var bt = /^(?:input|select|textarea|button)$/i,
21070 yt = /^(?:a|area)$/i;
21072 prop: function(e, t) {
21073 return Oe(this, he.prop, e, t, arguments.length > 1)
21075 removeProp: function(e) {
21076 return this.each(function() {
21077 delete this[he.propFix[e] || e]
21081 prop: function(e, t, n) {
21082 var r, i, o = e.nodeType;
21083 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]
21088 var t = he.find.attr(e, "tabindex");
21089 return t ? parseInt(t, 10) : bt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
21097 }), fe.optSelected || (he.propHooks.selected = {
21099 var t = e.parentNode;
21100 return t && t.parentNode && t.parentNode.selectedIndex, null
21103 var t = e.parentNode;
21104 t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
21106 }), he.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
21107 he.propFix[this.toLowerCase()] = this
21109 addClass: function(e) {
21110 var t, n, r, i, o, a, s, c = 0;
21111 if (he.isFunction(e)) return this.each(function(t) {
21112 he(this).addClass(e.call(this, t, Y(this)))
21114 if ("string" == typeof e && e)
21115 for (t = e.match(Me) || []; n = this[c++];)
21116 if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
21117 for (a = 0; o = t[a++];) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
21118 i !== (s = W(r)) && n.setAttribute("class", s)
21122 removeClass: function(e) {
21123 var t, n, r, i, o, a, s, c = 0;
21124 if (he.isFunction(e)) return this.each(function(t) {
21125 he(this).removeClass(e.call(this, t, Y(this)))
21127 if (!arguments.length) return this.attr("class", "");
21128 if ("string" == typeof e && e)
21129 for (t = e.match(Me) || []; n = this[c++];)
21130 if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
21131 for (a = 0; o = t[a++];)
21132 for (; r.indexOf(" " + o + " ") > -1;) r = r.replace(" " + o + " ", " ");
21133 i !== (s = W(r)) && n.setAttribute("class", s)
21137 toggleClass: function(e, t) {
21139 return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : he.isFunction(e) ? this.each(function(n) {
21140 he(this).toggleClass(e.call(this, n, Y(this), t), t)
21141 }) : this.each(function() {
21143 if ("string" === n)
21144 for (r = 0, i = he(this), o = e.match(Me) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
21145 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__") || ""))
21148 hasClass: function(e) {
21150 for (t = " " + e + " "; n = this[r++];)
21151 if (1 === n.nodeType && (" " + W(Y(n)) + " ").indexOf(t) > -1) return !0;
21158 var t, n, r, i = this[0]; {
21159 if (arguments.length) return r = he.isFunction(e), this.each(function(n) {
21161 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) {
21162 return null == e ? "" : e + ""
21163 })), (t = he.valHooks[this.type] || he.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
21165 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
21172 var t = he.find.attr(e, "value");
21173 return null != t ? t : W(he.text(e))
21178 var t, n, r, o = e.options,
21179 a = e.selectedIndex,
21180 s = "select-one" === e.type,
21182 l = s ? a + 1 : o.length;
21183 for (r = a < 0 ? l : s ? a : 0; r < l; r++)
21184 if (((n = o[r]).selected || r === a) && !n.disabled && (!n.parentNode.disabled || !i(n.parentNode, "optgroup"))) {
21185 if (t = he(n).val(), s) return t;
21190 set: function(e, t) {
21191 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);
21192 return n || (e.selectedIndex = -1), o
21196 }), he.each(["radio", "checkbox"], function() {
21197 he.valHooks[this] = {
21198 set: function(e, t) {
21199 if (Array.isArray(t)) return e.checked = he.inArray(he(e).val(), t) > -1
21201 }, fe.checkOn || (he.valHooks[this].get = function(e) {
21202 return null === e.getAttribute("value") ? "on" : e.value
21205 var $t = /^(?:focusinfocus|focusoutblur)$/;
21206 he.extend(he.event, {
21207 trigger: function(t, n, r, i) {
21208 var o, a, s, c, l, u, d, f = [r || te],
21209 h = le.call(t, "type") ? t.type : t,
21210 p = le.call(t, "namespace") ? t.namespace.split(".") : [];
21211 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))) {
21212 if (!i && !d.noBubble && !he.isWindow(r)) {
21213 for (c = d.delegateType || h, $t.test(c + h) || (a = a.parentNode); a; a = a.parentNode) f.push(a), s = a;
21214 s === (r.ownerDocument || te) && f.push(s.defaultView || s.parentWindow || e)
21217 (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());
21218 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
21221 simulate: function(e, t, n) {
21222 var r = he.extend(new he.Event, n, {
21226 he.event.trigger(r, null, t)
21229 trigger: function(e, t) {
21230 return this.each(function() {
21231 he.event.trigger(e, t, this)
21234 triggerHandler: function(e, t) {
21236 if (n) return he.event.trigger(e, t, n, !0)
21238 }), 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) {
21239 he.fn[t] = function(e, n) {
21240 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
21243 hover: function(e, t) {
21244 return this.mouseenter(e).mouseleave(t || e)
21246 }), fe.focusin = "onfocusin" in e, fe.focusin || he.each({
21249 }, function(e, t) {
21250 var n = function(e) {
21251 he.event.simulate(t, e.target, he.event.fix(e))
21253 he.event.special[t] = {
21254 setup: function() {
21255 var r = this.ownerDocument || this,
21256 i = Ne.access(r, t);
21257 i || r.addEventListener(e, n, !0), Ne.access(r, t, (i || 0) + 1)
21259 teardown: function() {
21260 var r = this.ownerDocument || this,
21261 i = Ne.access(r, t) - 1;
21262 i ? Ne.access(r, t, i) : (r.removeEventListener(e, n, !0), Ne.remove(r, t))
21266 var wt = e.location,
21269 he.parseXML = function(t) {
21271 if (!t || "string" != typeof t) return null;
21273 n = (new e.DOMParser).parseFromString(t, "text/xml")
21277 return n && !n.getElementsByTagName("parsererror").length || he.error("Invalid XML: " + t), n
21281 Tt = /^(?:submit|button|image|reset|file)$/i,
21282 Mt = /^(?:input|select|textarea|keygen)/i;
21283 he.param = function(e, t) {
21285 i = function(e, t) {
21286 var n = he.isFunction(t) ? t() : t;
21287 r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
21289 if (Array.isArray(e) || e.jquery && !he.isPlainObject(e)) he.each(e, function() {
21290 i(this.name, this.value)
21293 for (n in e) G(n, e[n], t, i);
21296 serialize: function() {
21297 return he.param(this.serializeArray())
21299 serializeArray: function() {
21300 return this.map(function() {
21301 var e = he.prop(this, "elements");
21302 return e ? he.makeArray(e) : this
21303 }).filter(function() {
21305 return this.name && !he(this).is(":disabled") && Mt.test(this.nodeName) && !Tt.test(e) && (this.checked || !Ve.test(e))
21306 }).map(function(e, t) {
21307 var n = he(this).val();
21308 return null == n ? null : Array.isArray(n) ? he.map(n, function(e) {
21311 value: e.replace(xt, "\r\n")
21315 value: n.replace(xt, "\r\n")
21322 Ot = /([?&])_=[^&]*/,
21323 Dt = /^(.*?):[ \t]*([^\r\n]*)$/gm,
21324 Nt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
21325 It = /^(?:GET|HEAD)$/,
21329 Ht = "*/".concat("*"),
21330 Lt = te.createElement("a");
21331 Lt.href = wt.href, he.extend({
21338 isLocal: Nt.test(wt.protocol),
21342 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
21345 text: "text/plain",
21347 xml: "application/xml, text/xml",
21348 json: "application/json, text/javascript"
21356 xml: "responseXML",
21357 text: "responseText",
21358 json: "responseJSON"
21363 "text json": JSON.parse,
21364 "text xml": he.parseXML
21371 ajaxSetup: function(e, t) {
21372 return t ? X(X(e, he.ajaxSettings), t) : X(he.ajaxSettings, e)
21374 ajaxPrefilter: K(Pt),
21375 ajaxTransport: K(jt),
21376 ajax: function(t, n) {
21377 function r(t, n, r, s) {
21378 var l, f, h, _, $, w = n;
21379 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")))
21381 "object" == typeof t && (n = t, t = void 0), n = n || {};
21382 var i, o, a, s, c, l, u, d, f, h, p = he.ajaxSetup({}, n),
21383 m = p.context || p,
21384 g = p.context && (m.nodeType || m.jquery) ? he(m) : he.event,
21386 b = he.Callbacks("once memory"),
21387 y = p.statusCode || {},
21393 getResponseHeader: function(e) {
21397 for (s = {}; t = Dt.exec(a);) s[t[1].toLowerCase()] = t[2];
21398 t = s[e.toLowerCase()]
21400 return null == t ? null : t
21402 getAllResponseHeaders: function() {
21403 return u ? a : null
21405 setRequestHeader: function(e, t) {
21406 return null == u && (e = $[e.toLowerCase()] = $[e.toLowerCase()] || e, _[e] = t), this
21408 overrideMimeType: function(e) {
21409 return null == u && (p.mimeType = e), this
21411 statusCode: function(e) {
21414 if (u) E.always(e[E.status]);
21416 for (t in e) y[t] = [y[t], e[t]];
21419 abort: function(e) {
21421 return i && i.abort(t), r(0, t), this
21424 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) {
21425 l = te.createElement("a");
21427 l.href = p.url, l.href = l.href, p.crossDomain = Lt.protocol + "//" + Lt.host != l.protocol + "//" + l.host
21432 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;
21433 (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["*"]);
21434 for (f in p.headers) E.setRequestHeader(f, p.headers[f]);
21435 if (p.beforeSend && (!1 === p.beforeSend.call(m, E, p) || u)) return E.abort();
21436 if (w = "abort", b.add(p.complete), E.done(p.success), E.fail(p.error), i = Z(jt, p, n, E)) {
21437 if (E.readyState = 1, d && g.trigger("ajaxSend", [E, p]), u) return E;
21438 p.async && p.timeout > 0 && (c = e.setTimeout(function() {
21442 u = !1, i.send(_, r)
21447 } else r(-1, "No Transport");
21450 getJSON: function(e, t, n) {
21451 return he.get(e, t, n, "json")
21453 getScript: function(e, t) {
21454 return he.get(e, void 0, t, "script")
21456 }), he.each(["get", "post"], function(e, t) {
21457 he[t] = function(e, n, r, i) {
21458 return he.isFunction(n) && (i = i || r, r = n, n = void 0), he.ajax(he.extend({
21464 }, he.isPlainObject(e) && e))
21466 }), he._evalUrl = function(e) {
21470 dataType: "script",
21477 wrapAll: function(e) {
21479 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() {
21480 for (var e = this; e.firstElementChild;) e = e.firstElementChild;
21482 }).append(this)), this
21484 wrapInner: function(e) {
21485 return he.isFunction(e) ? this.each(function(t) {
21486 he(this).wrapInner(e.call(this, t))
21487 }) : this.each(function() {
21490 n.length ? n.wrapAll(e) : t.append(e)
21493 wrap: function(e) {
21494 var t = he.isFunction(e);
21495 return this.each(function(n) {
21496 he(this).wrapAll(t ? e.call(this, n) : e)
21499 unwrap: function(e) {
21500 return this.parent(e).not("body").each(function() {
21501 he(this).replaceWith(this.childNodes)
21504 }), he.expr.pseudos.hidden = function(e) {
21505 return !he.expr.pseudos.visible(e)
21506 }, he.expr.pseudos.visible = function(e) {
21507 return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
21508 }, he.ajaxSettings.xhr = function() {
21510 return new e.XMLHttpRequest
21517 qt = he.ajaxSettings.xhr();
21518 fe.cors = !!qt && "withCredentials" in qt, fe.ajax = qt = !!qt, he.ajaxTransport(function(t) {
21520 if (fe.cors || qt && !t.crossDomain) return {
21521 send: function(i, o) {
21522 var a, s = t.xhr();
21523 if (s.open(t.type, t.url, t.async, t.username, t.password), t.xhrFields)
21524 for (a in t.xhrFields) s[a] = t.xhrFields[a];
21525 t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType), t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
21526 for (a in i) s.setRequestHeader(a, i[a]);
21528 return function() {
21529 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 ? {
21532 text: s.responseText
21533 }, s.getAllResponseHeaders()))
21535 }, s.onload = n(), r = s.onerror = n("error"), void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function() {
21536 4 === s.readyState && e.setTimeout(function() {
21541 s.send(t.hasContent && t.data || null)
21546 abort: function() {
21550 }), he.ajaxPrefilter(function(e) {
21551 e.crossDomain && (e.contents.script = !1)
21554 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
21557 script: /\b(?:java|ecma)script\b/
21560 "text script": function(e) {
21561 return he.globalEval(e), e
21564 }), he.ajaxPrefilter("script", function(e) {
21565 void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
21566 }), he.ajaxTransport("script", function(e) {
21567 if (e.crossDomain) {
21570 send: function(r, i) {
21571 t = he("<script>").prop({
21572 charset: e.scriptCharset,
21574 }).on("load error", n = function(e) {
21575 t.remove(), n = null, e && i("error" === e.type ? 404 : 200, e.type)
21576 }), te.head.appendChild(t[0])
21578 abort: function() {
21585 Vt = /(=)\?(?=&|$)|\?\?/;
21588 jsonpCallback: function() {
21589 var e = Ut.pop() || he.expando + "_" + Et++;
21590 return this[e] = !0, e
21592 }), he.ajaxPrefilter("json jsonp", function(t, n, r) {
21593 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");
21594 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() {
21595 return a || he.error(i + " was not called"), a[0]
21596 }, t.dataTypes[0] = "json", o = e[i], e[i] = function() {
21598 }, r.always(function() {
21599 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
21601 }), fe.createHTMLDocument = function() {
21602 var e = te.implementation.createHTMLDocument("").body;
21603 return e.innerHTML = "<form></form><form></form>", 2 === e.childNodes.length
21604 }(), he.parseHTML = function(e, t, n) {
21605 if ("string" != typeof e) return [];
21606 "boolean" == typeof t && (n = t, t = !1);
21608 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))
21609 }, he.fn.load = function(e, t, n) {
21610 var r, i, o, a = this,
21611 s = e.indexOf(" ");
21612 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({
21617 }).done(function(e) {
21618 o = arguments, a.html(r ? he("<div>").append(he.parseHTML(e)).find(r) : e)
21619 }).always(n && function(e, t) {
21620 a.each(function() {
21621 n.apply(this, o || [e.responseText, t, e])
21624 }, he.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
21625 he.fn[t] = function(e) {
21626 return this.on(t, e)
21628 }), he.expr.pseudos.animated = function(e) {
21629 return he.grep(he.timers, function(t) {
21630 return e === t.elem
21633 setOffset: function(e, t, n) {
21634 var r, i, o, a, s, c, l = he.css(e, "position"),
21637 "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)
21640 offset: function(e) {
21641 if (arguments.length) return void 0 === e ? this : this.each(function(t) {
21642 he.offset.setOffset(this, e, t)
21644 var t, n, r, i, o = this[0];
21645 if (o) return o.getClientRects().length ? (r = o.getBoundingClientRect(), t = o.ownerDocument, n = t.documentElement, i = t.defaultView, {
21646 top: r.top + i.pageYOffset - n.clientTop,
21647 left: r.left + i.pageXOffset - n.clientLeft
21653 position: function() {
21655 var e, t, n = this[0],
21660 return "fixed" === he.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), i(e[0], "html") || (r = e.offset()), r = {
21661 top: r.top + he.css(e[0], "borderTopWidth", !0),
21662 left: r.left + he.css(e[0], "borderLeftWidth", !0)
21664 top: t.top - r.top - he.css(n, "marginTop", !0),
21665 left: t.left - r.left - he.css(n, "marginLeft", !0)
21669 offsetParent: function() {
21670 return this.map(function() {
21671 for (var e = this.offsetParent; e && "static" === he.css(e, "position");) e = e.offsetParent;
21676 scrollLeft: "pageXOffset",
21677 scrollTop: "pageYOffset"
21678 }, function(e, t) {
21679 var n = "pageYOffset" === t;
21680 he.fn[e] = function(r) {
21681 return Oe(this, function(e, r, i) {
21683 if (he.isWindow(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i) return o ? o[t] : e[r];
21684 o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
21685 }, e, r, arguments.length)
21687 }), he.each(["top", "left"], function(e, t) {
21688 he.cssHooks[t] = N(fe.pixelPosition, function(e, n) {
21689 if (n) return n = D(e, t), it.test(n) ? he(e).position()[t] + "px" : n
21694 }, function(e, t) {
21696 padding: "inner" + e,
21699 }, function(n, r) {
21700 he.fn[r] = function(i, o) {
21701 var a = arguments.length && (n || "boolean" != typeof i),
21702 s = n || (!0 === i || !0 === o ? "margin" : "border");
21703 return Oe(this, function(t, n, i) {
21705 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)
21706 }, t, a ? i : void 0, a)
21710 bind: function(e, t, n) {
21711 return this.on(e, null, t, n)
21713 unbind: function(e, t) {
21714 return this.off(e, null, t)
21716 delegate: function(e, t, n, r) {
21717 return this.on(t, e, n, r)
21719 undelegate: function(e, t, n) {
21720 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
21722 }), he.holdReady = function(e) {
21723 e ? he.readyWait++ : he.ready(!0)
21724 }, he.isArray = Array.isArray, he.parseJSON = JSON.parse, he.nodeName = i, "function" == typeof define && define.amd && define("jquery", [], function() {
21729 return he.noConflict = function(t) {
21730 return e.$ === he && (e.$ = Bt), t && e.jQuery === he && (e.jQuery = zt), he
21731 }, t || (e.jQuery = e.$ = he), he
21733 function(e, t, n) {
21737 if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
21738 this.supportDirectory = /Chrome/.test(e.navigator.userAgent) || /Firefox/.test(e.navigator.userAgent) || /Edge/.test(e.navigator.userAgent), this.files = [], this.defaults = {
21739 chunkSize: 1048576,
21740 forceChunkSize: !1,
21741 simultaneousUploads: 3,
21743 fileParameterName: "file",
21744 progressCallbacksInterval: 500,
21745 speedSmoothingFactor: .1,
21748 withCredentials: !1,
21750 method: "multipart",
21752 uploadMethod: "POST",
21753 prioritizeFirstAndLastChunk: !1,
21754 allowDuplicateUploads: !1,
21757 generateUniqueIdentifier: null,
21758 maxChunkRetries: 0,
21759 chunkRetryInterval: null,
21760 permanentErrors: [404, 413, 415, 500, 501],
21761 successStatuses: [200, 201, 202],
21762 onDropStopPropagation: !1,
21765 }, this.opts = {}, this.events = {};
21767 this.onDrop = function(e) {
21768 n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
21769 var t = e.dataTransfer;
21770 t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
21771 }, this.preventEvent = function(e) {
21773 }, this.opts = r.extend({}, this.defaults, t || {})
21777 function i(e, t, r) {
21778 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()
21781 function o(e, t, n, r, i) {
21783 e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
21786 function a(e, t, n) {
21787 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() {
21788 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
21789 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
21790 }, this.endByte = this.computeEndByte(), this.xhr = null;
21792 this.event = function(e, t) {
21793 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
21794 }, this.progressHandler = function(e) {
21795 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
21796 }, this.testHandler = function(e) {
21797 var t = r.status(!0);
21798 "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())
21799 }, this.doneHandler = function(e) {
21800 var t = r.status();
21801 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
21803 r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
21804 var n = r.flowObj.opts.chunkRetryInterval;
21805 null !== n ? setTimeout(function() {
21813 var n = e.indexOf(t);
21814 n > -1 && e.splice(n, 1)
21818 return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
21822 setTimeout(e.bind(t), 0)
21826 return d(arguments, function(t) {
21827 t !== e && d(t, function(t, n) {
21833 function d(e, t, n) {
21836 if (void 0 !== e.length) {
21837 for (r = 0; r < e.length; r++)
21838 if (!1 === t.call(n, e[r], r)) return
21841 if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
21844 var f = e.navigator.msPointerEnabled;
21846 on: function(e, t) {
21847 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
21849 off: function(e, t) {
21850 e !== n ? (e = e.toLowerCase(), t !== n ? this.events.hasOwnProperty(e) && s(this.events[e], t) : delete this.events[e]) : this.events = {}
21852 fire: function(e, t) {
21853 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
21855 return this.events.hasOwnProperty(e) && d(this.events[e], function(e) {
21856 n = !1 === e.apply(this, t.slice(1)) || n
21857 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
21859 webkitReadDataTransfer: function(e) {
21861 e.readEntries(function(o) {
21862 o.length ? (a += o.length, d(o, function(e) {
21864 var i = e.fullPath;
21865 e.file(function(e) {
21868 } else e.isDirectory && t(e.createReader())
21874 e.relativePath = t.substring(1), s.push(e), i()
21882 0 == --a && o.addFiles(s, e)
21885 a = e.dataTransfer.items.length,
21887 d(e.dataTransfer.items, function(e) {
21888 var r = e.webkitGetAsEntry();
21889 r ? r.isFile ? n(e.getAsFile(), r.fullPath) : t(r.createReader()) : i()
21892 generateUniqueIdentifier: function(e) {
21893 var t = this.opts.generateUniqueIdentifier;
21894 if ("function" == typeof t) return t(e);
21895 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
21896 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
21898 uploadNextChunk: function(e) {
21900 if (this.opts.prioritizeFirstAndLastChunk && (d(this.files, function(e) {
21901 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
21903 if (d(this.files, function(e) {
21904 if (e.paused || d(e.chunks, function(e) {
21905 if ("pending" === e.status()) return e.send(), t = !0, !1
21909 return d(this.files, function(e) {
21910 if (!e.isComplete()) return n = !0, !1
21911 }), n || e || l(function() {
21912 this.fire("complete")
21915 assignBrowse: function(e, n, r, i) {
21916 e instanceof Element && (e = [e]), d(e, function(e) {
21918 "INPUT" === e.tagName && "file" === e.type ? o = e : ((o = t.createElement("input")).setAttribute("type", "file"), u(o.style, {
21919 visibility: "hidden",
21920 position: "absolute",
21923 }), e.appendChild(o), e.addEventListener("click", function() {
21925 }, !1)), this.opts.singleFile || r || o.setAttribute("multiple", "multiple"), n && o.setAttribute("webkitdirectory", "webkitdirectory"), d(i, function(e, t) {
21926 o.setAttribute(t, e)
21929 o.addEventListener("change", function(e) {
21930 e.target.value && (a.addFiles(e.target.files, e), e.target.value = "")
21934 assignDrop: function(e) {
21935 void 0 === e.length && (e = [e]), d(e, function(e) {
21936 e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
21939 unAssignDrop: function(e) {
21940 void 0 === e.length && (e = [e]), d(e, function(e) {
21941 e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
21944 isUploading: function() {
21946 return d(this.files, function(t) {
21947 if (t.isUploading()) return e = !0, !1
21950 _shouldUploadNext: function() {
21953 n = this.opts.simultaneousUploads;
21954 return d(this.files, function(r) {
21955 d(r.chunks, function(r) {
21956 if ("uploading" === r.status() && ++e >= n) return t = !1, !1
21960 upload: function() {
21961 var e = this._shouldUploadNext();
21963 this.fire("uploadStart");
21964 for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
21965 t || l(function() {
21966 this.fire("complete")
21970 resume: function() {
21971 d(this.files, function(e) {
21972 e.isComplete() || e.resume()
21975 pause: function() {
21976 d(this.files, function(e) {
21980 cancel: function() {
21981 for (var e = this.files.length - 1; e >= 0; e--) this.files[e].cancel()
21983 progress: function() {
21986 return d(this.files, function(n) {
21987 e += n.progress() * n.size, t += n.size
21988 }), t > 0 ? e / t : 0
21990 addFile: function(e, t) {
21991 this.addFiles([e], t)
21993 addFiles: function(e, t) {
21996 if ((!f || f && e.size > 0) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
21997 var r = this.generateUniqueIdentifier(e);
21998 if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(r)) {
21999 var o = new i(this, e, r);
22000 this.fire("fileAdded", o, t) && n.push(o)
22003 }, this), this.fire("filesAdded", n, t) && (d(n, function(e) {
22004 this.opts.singleFile && this.files.length > 0 && this.removeFile(this.files[0]), this.files.push(e)
22005 }, this), this.fire("filesSubmitted", n, t))
22007 removeFile: function(e) {
22008 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))
22010 getFromUniqueIdentifier: function(e) {
22012 return d(this.files, function(n) {
22013 n.uniqueIdentifier === e && (t = n)
22016 getSize: function() {
22018 return d(this.files, function(t) {
22022 sizeUploaded: function() {
22024 return d(this.files, function(t) {
22025 e += t.sizeUploaded()
22028 timeRemaining: function() {
22031 return d(this.files, function(n) {
22032 n.paused || n.error || (e += n.size - n.sizeUploaded(), t += n.averageSpeed)
22033 }), e && !t ? Number.POSITIVE_INFINITY : e || t ? Math.floor(e / t) : 0
22036 measureSpeed: function() {
22037 var e = Date.now() - this._lastProgressCallback;
22039 var t = this.flowObj.opts.speedSmoothingFactor,
22040 n = this.sizeUploaded();
22041 this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
22044 chunkEvent: function(e, t, n) {
22047 if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
22048 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
22051 this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
22054 if (this.error) return;
22055 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));
22058 this.flowObj.fire("fileRetry", this, e)
22061 pause: function() {
22062 this.paused = !0, this.abort()
22064 resume: function() {
22065 this.paused = !1, this.flowObj.upload()
22067 abort: function(e) {
22068 this.currentSpeed = 0, this.averageSpeed = 0;
22069 var t = this.chunks;
22070 e && (this.chunks = []), d(t, function(e) {
22071 "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
22074 cancel: function() {
22075 this.flowObj.removeFile(this)
22077 retry: function() {
22078 this.bootstrap(), this.flowObj.upload()
22080 bootstrap: function() {
22081 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
22082 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))
22084 progress: function() {
22085 if (this.error) return 1;
22086 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
22088 d(this.chunks, function(t) {
22089 e += t.progress() * (t.endByte - t.startByte)
22091 var t = e / this.size;
22092 return this._prevProgress = Math.max(this._prevProgress, t > .9999 ? 1 : t), this._prevProgress
22094 isUploading: function() {
22096 return d(this.chunks, function(t) {
22097 if ("uploading" === t.status()) return e = !0, !1
22100 isComplete: function() {
22102 return d(this.chunks, function(t) {
22103 var n = t.status();
22104 if ("pending" === n || "uploading" === n || "reading" === n || 1 === t.preprocessState || 1 === t.readState) return e = !0, !1
22107 sizeUploaded: function() {
22109 return d(this.chunks, function(t) {
22110 e += t.sizeUploaded()
22113 timeRemaining: function() {
22114 if (this.paused || this.error) return 0;
22115 var e = this.size - this.sizeUploaded();
22116 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
22118 getType: function() {
22119 return this.file.type && this.file.type.split("/")[1]
22121 getExtension: function() {
22122 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
22125 getParams: function() {
22127 flowChunkNumber: this.offset + 1,
22128 flowChunkSize: this.flowObj.opts.chunkSize,
22129 flowCurrentChunkSize: this.endByte - this.startByte,
22130 flowTotalSize: this.fileObj.size,
22131 flowIdentifier: this.fileObj.uniqueIdentifier,
22132 flowFilename: this.fileObj.name,
22133 flowRelativePath: this.fileObj.relativePath,
22134 flowTotalChunks: this.fileObj.chunks.length
22137 getTarget: function(e, t) {
22138 return e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&")
22141 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
22142 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
22143 t = this.prepareXhrRequest(e, !0);
22146 preprocessFinished: function() {
22147 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
22149 readFinished: function(e) {
22150 this.readState = 2, this.bytes = e, this.send()
22153 var e = this.flowObj.opts.preprocess,
22154 t = this.flowObj.opts.readFileFn;
22155 if ("function" == typeof e) switch (this.preprocessState) {
22157 return this.preprocessState = 1, void e(this);
22161 switch (this.readState) {
22163 return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
22167 if (!this.flowObj.opts.testChunks || this.tested) {
22168 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);
22169 var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
22170 r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
22174 abort: function() {
22176 this.xhr = null, e && e.abort()
22178 status: function(e) {
22179 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"
22181 message: function() {
22182 return this.xhr ? this.xhr.responseText : ""
22184 progress: function() {
22185 if (this.pendingRetry) return 0;
22186 var e = this.status();
22187 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : this.total > 0 ? this.loaded / this.total : 0
22189 sizeUploaded: function() {
22190 var e = this.endByte - this.startByte;
22191 return "success" !== this.status() && (e = this.progress() * e), e
22193 prepareXhrRequest: function(e, t, n, r) {
22194 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
22195 i = u(i, this.getParams());
22196 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
22198 if ("GET" === e || "octet" === n) {
22200 d(i, function(e, t) {
22201 s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
22202 }), o = this.getTarget(o, s), a = r || null
22203 } else a = new FormData, d(i, function(e, t) {
22205 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
22206 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) {
22207 this.xhr.setRequestHeader(t, e)
22210 }, 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() {
22213 }(window, document), angular.module("flow.provider", []).provider("flowFactory", function() {
22215 this.defaults = {}, this.factory = function(e) {
22217 }, this.events = [], this.on = function(e, t) {
22218 this.events.push([e, t])
22219 }, this.$get = function() {
22220 var e = this.factory,
22224 create: function(r) {
22225 var i = e(angular.extend({}, t, r));
22226 return angular.forEach(n, function(e) {
22232 }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(e, t, n, r) {
22233 var i = angular.extend({}, e.$eval(t.flowInit)),
22234 o = e.$eval(t.flowObject) || r.create(i),
22236 var n = Array.prototype.slice.call(arguments);
22238 var r = e.$broadcast.apply(e, ["flow::" + t, o].concat(n));
22245 }[t] && e.$apply(), r.defaultPrevented) return !1
22247 o.on("catchAll", a), e.$on("$destroy", function() {
22248 o.off("catchAll", a)
22249 }), e.$flow = o, t.hasOwnProperty("flowName") && (n(t.flowName).assign(e, o), e.$on("$destroy", function() {
22250 n(t.flowName).assign(e)
22252 }]).directive("flowInit", [function() {
22255 controller: "flowCtrl"
22257 }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
22261 require: "^flowInit",
22262 link: function(e, t, n) {
22263 var r = n.hasOwnProperty("flowDirectory"),
22264 i = n.hasOwnProperty("flowSingleFile"),
22265 o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
22266 e.$flow.assignBrowse(t, r, i, o)
22269 }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
22272 link: function(e, t, n) {
22273 t.bind("drop dragover", function(e) {
22278 }).directive("flowDragEnter", ["$timeout", function(e) {
22281 link: function(t, n, r) {
22284 n = e.dataTransfer || e.originalEvent.dataTransfer;
22285 return angular.forEach(n && n.types, function(e) {
22286 "Files" === e && (t = !0)
22290 n.bind("dragover", function(n) {
22291 i(n) && (a || (t.$apply(r.flowDragEnter), a = !0), e.cancel(o), n.preventDefault())
22292 }), n.bind("dragleave drop", function(n) {
22293 e.cancel(o), o = e(function() {
22294 t.$eval(r.flowDragLeave), o = null, a = !1
22299 }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
22302 require: "^flowInit",
22303 link: function(e, t, n) {
22305 e.$flow.assignDrop(t)
22309 e.$flow.unAssignDrop(t)
22311 n.flowDropEnabled ? e.$watch(n.flowDropEnabled, function(e) {
22321 return e.charAt(0).toUpperCase() + e.slice(1)
22323 var n = e.module("flow.events", ["flow.init"]),
22325 fileSuccess: ["$file", "$message"],
22326 fileProgress: ["$file"],
22327 fileAdded: ["$file", "$event"],
22328 filesAdded: ["$files", "$event"],
22329 filesSubmitted: ["$files", "$event"],
22330 fileRetry: ["$file"],
22331 fileRemoved: ["$file"],
22332 fileError: ["$file", "$message"],
22336 error: ["$message", "$file"]
22338 e.forEach(r, function(r, i) {
22339 var o = "flow" + t(i);
22340 "flowUploadStart" == o && (o = "flowUploadStarted"), n.directive(o, [function() {
22342 require: "^flowInit",
22343 controller: ["$scope", "$attrs", function(t, n) {
22344 t.$on("flow::" + i, function() {
22345 var i = Array.prototype.slice.call(arguments),
22347 if (t.$flow === i.shift()) {
22349 e.forEach(r, function(e, t) {
22351 }), !1 === t.$eval(n[o], s) && a.preventDefault()
22358 }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
22361 require: "^flowInit",
22362 link: function(e, t, n) {
22364 e.$watch(r, function(t) {
22366 var r = new FileReader;
22367 r.readAsDataURL(t.file), r.onload = function(t) {
22368 e.$apply(function() {
22369 n.$set("src", t.target.result)
22376 }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
22379 require: "^flowInit",
22380 link: function(e) {
22381 e.transfers = e.$flow.files
22384 }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
22390 return d(t, c).chars(e), t.join("")
22392 var r, i, o, a, s, c, l, u, d, f = t.$$minErr("$sanitize");
22393 t.module("ngSanitize", []).provider("$sanitize", function() {
22397 for (n = 0; n < i.length; n++) r[t ? s(i[n]) : i[n]] = !0;
22402 for (var t = {}, n = 0, r = e.length; n < r; n++) {
22404 t[i.name] = i.value
22410 return e.replace(/&/g, "&").replace(b, function(e) {
22411 return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
22412 }).replace(y, function(e) {
22413 return "&#" + e.charCodeAt(0) + ";"
22414 }).replace(/</g, "<").replace(/>/g, ">")
22419 if (t.nodeType === e.Node.ELEMENT_NODE)
22420 for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
22422 a = o.name.toLowerCase();
22423 "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
22425 var s = t.firstChild;
22426 s && m(s), t = g("nextSibling", t)
22432 if (n && l.call(t, n)) throw f("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
22436 this.$get = ["$$sanitizeUri", function(e) {
22437 return v && i(M, x),
22440 return u(t, d(n, function(t, n) {
22441 return !/^unsafe:/.test(e(t, n))
22444 }], this.enableSvg = function(e) {
22445 return a(e) ? (v = e, this) : v
22446 }, r = t.bind, i = t.extend, o = t.forEach, a = t.isDefined, s = t.lowercase, c = t.noop, u = function(e, t) {
22447 null === e || void 0 === e ? e = "" : "string" != typeof e && (e = "" + e);
22452 if (0 === r) throw f("uinput", "Failed to sanitize html because the input is unstable");
22453 r--, e = n.innerHTML, n = N(e)
22454 } while (e !== n.innerHTML);
22455 for (var i = n.firstChild; i;) {
22456 switch (i.nodeType) {
22458 t.start(i.nodeName.toLowerCase(), h(i.attributes));
22461 t.chars(i.textContent)
22464 if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = g("nextSibling", i))))
22465 for (; null == o && (i = g("parentNode", i)) !== n;) o = g("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
22468 for (; i = n.firstChild;) n.removeChild(i)
22469 }, d = function(e, t) {
22473 start: function(e, r) {
22474 e = s(e), !n && T[e] && (n = e), n || !0 !== M[e] || (i("<"), i(e), o(r, function(n, r) {
22476 a = "img" === e && "src" === o || "background" === o;
22477 !0 !== D[o] || !0 === A[o] && !t(n, a) || (i(" "), i(r), i('="'), i(p(n)), i('"'))
22481 e = s(e), n || !0 !== M[e] || !0 === _[e] || (i("</"), i(e), i(">")), e == n && (n = !1)
22483 chars: function(e) {
22487 }, l = e.Node.prototype.contains || function(e) {
22488 return !!(16 & this.compareDocumentPosition(e))
22490 var b = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
22491 y = /([^#-~ |!])/g,
22492 _ = n("area,br,col,hr,img,wbr"),
22493 $ = n("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
22496 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")),
22497 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")),
22498 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"),
22499 T = n("script,style"),
22500 M = i({}, _, k, C, E),
22501 A = n("background,cite,href,longdesc,src,xlink:href"),
22502 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"),
22503 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),
22504 D = i({}, A, O, S),
22505 N = function(e, t) {
22507 if (!t || !t.implementation) throw f("noinert", "Can't create an inert html document");
22508 var r = ((n = t.implementation.createHTMLDocument("inert")).documentElement || n.getDocumentElement()).querySelector("body");
22509 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) {
22510 t = "<remove></remove>" + t;
22512 var n = (new e.DOMParser).parseFromString(t, "text/html").body;
22513 return n.firstChild.remove(), n
22518 return r.innerHTML = e, t.documentMode && m(r), r
22520 t = "<remove></remove>" + t;
22526 var n = new e.XMLHttpRequest;
22527 n.responseType = "document", n.open("GET", "data:text/html;charset=utf-8," + t, !1), n.send(null);
22528 var r = n.response.body;
22529 return r.firstChild.remove(), r
22533 angularVersion: "1.6.6"
22534 }), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
22535 var r = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
22537 o = t.$$minErr("linky"),
22542 return function(t, u, d) {
22546 if (null == t || "" === t) return t;
22547 if (!l(t)) throw o("notstring", "Expected string but received: {0}", t);
22548 for (var h, p, m, g = s(d) ? d : c(d) ? function() {
22552 }, 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)),
22556 for (n in r) b.push(n + '="' + r[n] + '" ');
22557 !a(u) || "target" in r || b.push('target="', u, '" '), b.push('href="', e.replace(/"/g, """), '">'), f(t), b.push("</a>")
22558 }(p, h[0].replace(i, "")), v = v.substring(m + h[0].length);
22559 return f(v), e(b.join(""))
22562 }(window, window.angular),
22565 angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(e) {
22584 class: "wondering",
22600 class: "thumbsup2",
22616 class: "thumbs-up",
22632 class: "heart-broken",
22636 class: "heart-broken",
22659 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"];
22660 return function(r, i) {
22662 return angular.forEach(arguments, function(t) {
22663 t !== e && angular.forEach(t, function(t, n) {
22664 e[n] && e[n].constructor && e[n].constructor === Object ? o(e[n], t) : e[n] = t
22672 linkTarget: "_self"
22674 if (o(a, i), void 0 !== r && null !== r) {
22675 if ("object" == typeof r) return r;
22681 return angular.isNumber(r) || (r = r.toString()), r = r.replace(/[&<>]/g, function(e) {
22683 }), a.fontSmiley && (r = function(e) {
22684 var n = e.split(" ");
22685 return angular.forEach(t, function(e) {
22686 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>")
22688 }(r)), a.emoji && (r = function(e) {
22689 var t = new RegExp(":(" + n.join("|") + "):", "g");
22690 return e.replace(t, function(e, t) {
22691 return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
22693 }(r)), a.link && (r = function(e) {
22694 var t = /\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi,
22695 n = /^[a-z]+\:\/\//i;
22696 return e.replace(t, function(e) {
22698 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>"
22700 }(r)), e.trustAsHtml(r)
22703 }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(e, t, n, r, i) {
22704 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>'), {
22707 templateUrl: function(e, t) {
22708 return t.embedTemplateUrl || ""
22710 link: function(i, o, a) {
22712 return angular.forEach(arguments, function(t) {
22713 t !== e && angular.forEach(t, function(t, n) {
22714 e[n] && e[n].constructor && e[n].constructor === Object ? s(e[n], t) : e[n] = t
22718 var c = i.$eval(a.embedData),
22719 l = i.$eval(a.embedOptions);
22720 i.video = {}, i.image = {}, i.pdf = {}, i.audio = {}, i.videoServices = [], i.audioServices = [], i.codeServices = [], i.gist = [];
22725 linkTarget: "_self",
22747 thumbnailQuality: "medium"
22758 dailymotionEmbed: !0,
22762 soundCloudEmbed: !0,
22763 soundCloudOptions: {
22765 themeColor: "f50000",
22776 codepenHeight: 300,
22778 jsfiddleHeight: 300,
22782 githubgistEmbed: !0,
22786 s(u, l), String.prototype.trunc = function(e, t) {
22787 var n = this.length > e,
22788 r = n ? this.substr(0, e - 1) : this;
22789 return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
22790 }, Array.prototype.getUnique = function() {
22791 for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
22795 calcDimensions: function(e) {
22800 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)
22802 embed: function(e, r) {
22803 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;
22805 var a = this.calcDimensions(r);
22806 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) {
22807 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
22809 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
22810 }) : (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
22812 var s = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi;
22814 var c = this.calcDimensions(r);
22815 i.video.id = RegExp.$3, r.video.details ? n.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
22816 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
22817 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
22818 }) : (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"))
22822 embedBasic: function(e) {
22823 var n = /((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi;
22824 return e.match(n) && (i.video.basic = t.trustAsResourceUrl(RegExp.$1)), e
22826 twitchtvEmbed: function(e, n) {
22827 var r = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
22828 o = e.match(r) ? e.match(r).getUnique() : null,
22829 a = d.calcDimensions(n);
22831 for (var s = 0; s < o.length;) {
22832 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>');
22833 i.videoServices.push(c), s++
22837 dailymotionEmbed: function(e, n) {
22838 var r = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
22839 o = e.match(r) ? e.match(r).getUnique() : null,
22840 a = d.calcDimensions(n);
22842 for (var s = 0; s < o.length;) {
22843 var c = t.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + o[s].split("/")[2] + '" height="' + a.height + '" width="' + a.width + '"></iframe>');
22844 i.videoServices.push(c), s++
22848 tedEmbed: function(e, n) {
22849 var r = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
22850 o = e.match(r) ? e.match(r).getUnique() : null,
22851 a = d.calcDimensions(n);
22853 for (var s = 0; s < o.length;) {
22854 var c = t.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + o[s].split("/")[2] + '.html" height="' + a.height + '" width="' + a.width + '"></iframe>');
22855 i.videoServices.push(c), s++
22859 dotsubEmbed: function(e, n) {
22860 var r = /dotsub.com\/view\/[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('<iframe src="https://dotsub.com/media/' + o[s].split("/")[2] + '/embed/" width="' + a.width + '" height="' + a.height + '"></iframe>');
22866 i.videoServices.push(c), s++
22870 liveleakEmbed: function(e, n) {
22871 var r = /liveleak.com\/view\?i=[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.liveleak.com/e/' + o[s].split("=")[1] + '" height="' + a.height + '" width="' + a.width + '"></iframe></div>');
22877 i.videoServices.push(c), s++
22883 embed: function(e) {
22884 var n = /((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi;
22885 return e.match(n) && (i.audio.url = t.trustAsResourceUrl(RegExp.$1)), e
22887 soundcloudEmbed: function(e, n) {
22888 var r = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
22889 o = e.match(r) ? e.match(r).getUnique() : null;
22891 for (var a = 0; a < o.length;) {
22892 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>');
22893 i.videoServices.push(s), a++
22897 spotifyEmbed: function(e) {
22898 var n = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
22899 r = e.match(n) ? e.match(n).getUnique() : null;
22901 for (var o = 0; o < r.length;) {
22902 var a = t.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + r[o].split("/")[2] + '" height="80"></iframe>');
22903 i.audioServices.push(a), o++
22909 embed: function(e) {
22910 var t = /((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi;
22911 return e.match(t) && (i.image.url = RegExp.$1), e
22915 getCode: function(e) {
22916 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
22918 i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
22920 return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
22925 embed: function(e) {
22926 var n = /((?:https?):\/\/\S*\.(?:pdf|PDF))/gi;
22927 return e.match(n) && (i.pdf.url = t.trustAsResourceUrl(RegExp.$1)), e
22931 embed: function(e, t) {
22934 twttr.widgets.load()
22937 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
22938 var a = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
22939 s = e.match(a) ? e.match(a).getUnique() : null;
22940 if (i.tweets = [], s)
22941 for (var c = 0; c < s.length;) {
22942 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;
22943 n.jsonp(l).success(function(e) {
22944 i.tweets.push(e.html), i.tweets.length == s.length && o()
22951 codepenEmbed: function(e, n) {
22952 var r = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
22953 o = e.match(r) ? e.match(r).getUnique() : null;
22955 for (var a = 0; a < o.length;) {
22956 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>');
22957 i.codeServices.push(s), a++
22961 jsfiddleEmbed: function(e, n) {
22962 var r = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
22963 o = e.match(r) ? e.match(r).getUnique() : null;
22965 for (var a = 0; a < o.length;) {
22966 var s = t.trustAsHtml('<iframe height="' + n.jsfiddleHeight + '" src="http://' + o[a] + '/embedded"></iframe>');
22967 i.codeServices.push(s), a++
22971 jsbinEmbed: function(e, n) {
22972 var r = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
22973 o = e.match(r) ? e.match(r).getUnique() : null;
22975 for (var a = 0; a < o.length;) {
22976 var s = t.trustAsHtml('<iframe height="' + n.jsbinHeight + '" class="jsbin-embed foo" src="http://' + o[a] + '/embed?html,js,output">Simple Animation Tests</iframe>');
22977 i.codeServices.push(s), a++
22981 plunkerEmbed: function(e, n) {
22982 var r = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
22983 o = e.match(r) ? e.match(r).getUnique() : null;
22985 for (var a = 0; a < o.length;) {
22986 var s = -1 === o[a].indexOf("?") ? o[a].split("/")[2] : o[a].split("/")[2].split("?")[0],
22987 c = t.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + s + '" height="' + n.jsbinHeight + '"></iframe>');
22988 i.codeServices.push(c), a++
22992 githubgistEmbed: function(e) {
22993 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
22994 n = e.match(t) ? e.match(t).getUnique() : null;
22996 for (var r = 0; r < n.length;) i.gist.push(n[r].split("/")[2]), r++;
22999 ideoneEmbed: function(e, n) {
23000 var r = /ideone.com\/[a-zA-Z0-9]{6}/gi,
23001 o = e.match(r) ? e.match(r).getUnique() : null;
23003 for (var a = 0; a < o.length;) {
23004 var s = t.trustAsHtml('<iframe src="http://ideone.com/embed/' + o[a].split("/")[1] + '" height="' + n.ideoneHeight + '"></iframe>');
23005 i.codeServices.push(s), a++
23010 if (u.code.highlight) {
23011 if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
23012 c = p.getCode(c), r(function() {
23013 u.code.lineNumbers && angular.element(".ne-code").each(function() {
23015 t = $(this).text().split("\n").length,
23016 n = $("<ul/>").addClass("pre-numbering");
23017 for (angular.element(this).addClass("has-numbering").parent().append(n), e; e <= t; e++) n.append(angular.element("<li/>").text(e))
23021 var b = e("embed")(c, u).$$unwrapTrustedValue();
23022 if (u.video.embed) {
23023 if (!u.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
23026 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)
23029 }]).directive("neGist", function() {
23033 template: "<div></div>",
23034 link: function(e, t, n) {
23036 i = document.createElement("iframe");
23037 i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
23038 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>',
23040 i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()
23048 function n(e, t, n) {
23049 if (!e) throw ce("areq", "Argument '{0}' is {1}", t || "?", n || "required");
23054 return e || t ? e ? t ? (W(e) && (e = e.join(" ")), W(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
23059 return e && (e.to || e.from) && (t.to = e.to, t.from = e.from), t
23062 function o(e, t, n) {
23064 return e = W(e) ? e : e && X(e) && e.length ? e.split(/\s+/) : [], B(e, function(e, i) {
23065 e && e.length > 0 && (r += i > 0 ? " " : "", r += n ? t + e : e + t)
23070 var n = e.indexOf(t);
23071 t >= 0 && e.splice(n, 1)
23075 if (e instanceof J) switch (e.length) {
23079 if (e[0].nodeType === j) return e;
23084 if (e.nodeType === j) return J(e)
23088 if (!e[0]) return e;
23089 for (var t = 0; t < e.length; t++) {
23091 if (n.nodeType === j) return n
23095 function l(e, t, n) {
23101 function u(e, t, n) {
23103 e.removeClass(t, n)
23108 return function(t, n) {
23109 n.addClass && (l(e, t, n.addClass), n.addClass = null), n.removeClass && (u(e, t, n.removeClass), n.removeClass = null)
23114 if (!(e = e || {}).$$prepared) {
23115 var t = e.domOperation || ee;
23116 e.domOperation = function() {
23117 e.$$domOperationFired = !0, t(), t = ee
23118 }, e.$$prepared = !0
23128 t.from && (e.css(t.from), t.from = null)
23132 t.to && (e.css(t.to), t.to = null)
23135 function g(e, t, n) {
23136 var r = t.options || {},
23137 i = n.options || {},
23138 o = (r.addClass || "") + " " + (i.addClass || ""),
23139 a = (r.removeClass || "") + " " + (i.removeClass || ""),
23140 s = v(e.attr("class"), o, a);
23141 i.preparationClasses && (r.preparationClasses = k(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
23142 var c = r.domOperation !== ee ? r.domOperation : null;
23143 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
23146 function v(e, t, n) {
23148 X(e) && (e = e.split(" "));
23150 return B(e, function(e) {
23151 e.length && (t[e] = !0)
23155 e = r(e), t = r(t), B(t, function(e, t) {
23157 }), n = r(n), B(n, function(e, t) {
23158 i[t] = 1 === i[t] ? null : -1
23164 return B(i, function(t, n) {
23166 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)
23171 return e instanceof J ? e[0] : e
23174 function y(e, t, n) {
23176 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))
23180 t.preparationClasses && (e.removeClass(t.preparationClasses), t.preparationClasses = null), t.activeClasses && (e.removeClass(t.activeClasses), t.activeClasses = null)
23184 var n = t ? "-" + t + "s" : "";
23185 return E(e, [ae, n]), [ae, n]
23189 var n = t ? "paused" : "",
23191 return E(e, [r, n]), [r, n]
23201 return e ? t ? e + " " + t : e : t
23205 return [oe, e + "s"]
23209 return [t ? ie : ae, e + "s"]
23212 function T(e, t, n) {
23213 var r = Object.create(null),
23214 i = e.getComputedStyle(t) || {};
23215 return B(n, function(e, t) {
23218 var o = n.charAt(0);
23219 ("-" === o || "+" === o || o >= 0) && (n = M(n)), 0 === n && (n = null), r[t] = n
23226 n = e.split(/\s*,\s*/);
23227 return B(n, function(e) {
23228 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
23233 return 0 === e || null != e
23239 return t ? n += te : r += " linear all", [n, r]
23243 var e = Object.create(null);
23245 flush: function() {
23246 e = Object.create(null)
23248 count: function(t) {
23250 return n ? n.total : 0
23254 return n && n.value
23256 put: function(t, n) {
23257 e[t] ? e[t].total++ : e[t] = {
23265 function D(e, t, n) {
23267 e[n] = Y(e[n]) ? e[n] : t.style.getPropertyValue(n)
23270 var N, I, R, P, j = 1,
23275 U = "$$ngAnimateChildren";
23276 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");
23277 var V, z, B, W, Y, G, K, Z, X, Q, J, ee, te = "Duration",
23278 ne = "TimingFunction",
23284 ce = t.$$minErr("ng"),
23285 le = ["$$rAF", function(e) {
23287 r = r.concat(e), n()
23292 for (var t = r.shift(), o = 0; o < t.length; o++) t[o]();
23293 i || e(function() {
23299 return r = t.queue = [], t.waitUntilQuiet = function(t) {
23300 i && i(), i = e(function() {
23305 ue = ["$interpolate", function(e) {
23307 link: function(t, n, r) {
23309 e = "on" === e || "true" === e, n.data(U, e)
23311 var o = r.ngAnimateChildren;
23312 X(o) && 0 === o.length ? n.data(U, !0) : (i(e(o)(t)), r.$observe("ngAnimateChildren", i))
23316 de = "$$animateCss",
23321 transitionDuration: se,
23322 transitionDelay: ae,
23323 transitionProperty: N + "Property",
23324 animationDuration: oe,
23325 animationDelay: ie,
23326 animationIterationCount: R + "IterationCount"
23329 transitionDuration: se,
23330 transitionDelay: ae,
23331 animationDuration: oe,
23334 ve = ["$animateProvider", function(e) {
23337 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(e, r, s, c, l, u, g, v) {
23339 var n = "$$ngAnimateParentKey",
23341 return (r[n] || (r[n] = ++q)) + "-" + e.getAttribute("class") + "-" + t
23344 function _(n, r, i, o) {
23346 return a || "infinite" === (a = T(e, n, o)).animationIterationCount && (a.animationIterationCount = 1), t.put(i, a), a
23349 function k(i, a, s, c) {
23351 if (t.count(s) > 0 && !(l = n.get(s))) {
23352 var u = o(a, "-stagger");
23353 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)
23359 U.push(e), g.waitUntilQuiet(function() {
23360 t.flush(), n.flush();
23361 for (var e = l(), r = 0; r < U.length; r++) U[r](e);
23366 function O(e, t, n) {
23367 var r = _(e, t, n, me),
23368 i = r.animationDelay,
23369 o = r.transitionDelay;
23370 return r.maxDelay = i && o ? Math.max(i, o) : i || o, r.maxDuration = Math.max(r.animationDuration * r.animationIterationCount, r.transitionDuration), r
23375 return function(e, n) {
23385 if (!(K || X && Z)) {
23386 K = !0, Z = !1, z.$$skipPreparationClasses || r.removeClass(e, ye), r.removeClass(e, $e), w(G, !1), $(G, !1), B(se, function(e) {
23388 }), j(e, z), h(e, z), Object.keys(Y).length && B(Y, function(e, t) {
23389 e ? G.style.setProperty(t, e) : G.style.removeProperty(t)
23390 }), z.onDone && z.onDone(), ue && ue.length && e.off(ue.join(" "), q);
23391 var n = e.data(de);
23392 n && (c.cancel(n[0].timer), e.removeData(de)), Q && Q.complete(!t)
23397 Ie.blockTransition && $(G, e), Ie.blockKeyframeAnimation && w(G, !!e)
23406 start: function() {
23414 e.stopPropagation();
23415 var t = e.originalEvent || e;
23416 if (t.target === G) {
23417 var n = t.$manualTimeStamp || Date.now(),
23418 r = parseFloat(t.elapsedTime.toFixed(he));
23419 Math.max(n - ae, 0) >= re && r >= ie && (X = !0, g())
23426 if (_(!1), B(se, function(e) {
23430 }), j(e, z), r.addClass(e, $e), Ie.recalculateTimingStyles) {
23431 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();
23432 Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0
23434 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) {
23435 var t, i = z.easing;
23436 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)
23438 De.transitionDuration && ue.push(I), De.animationDuration && ue.push(P), ae = Date.now();
23439 var o = re + pe * oe,
23441 s = e.data(de) || [],
23445 (l = a > u.expectedEndTime) ? c.cancel(u.timer): s.push(g)
23448 var d = c(n, o, !1);
23452 }, s.push(g), e.data(de, s)
23454 ue.length && e.on(ue.join(" "), q), z.to && (z.cleanupStyles && D(Y, G, Object.keys(z.to)), m(e, z))
23459 var t = e.data(de);
23461 for (var n = 1; n < t.length; n++) t[n]();
23466 if (G.parentNode) {
23467 var i = function(e) {
23468 if (X) Z && e && (Z = !1, g());
23469 else if (Z = !e, De.animationDuration) {
23471 Z ? se.push(t) : a(se, t)
23474 o = Se > 0 && (De.transitionDuration && 0 === ke.transitionDuration || De.animationDuration && 0 === ke.animationDuration) && Math.max(ke.animationDelay, ke.transitionDelay);
23475 o ? c(t, Math.floor(o * Se * fe), !1) : t(), J.resume = function() {
23477 }, J.pause = function() {
23483 z.$$prepared || (z = f(V(z)));
23486 if (!G || !G.parentNode || !v.enabled()) return T();
23487 var K, Z, X, Q, J, te, re, ie, oe, ae, se = [],
23488 ce = e.attr("class"),
23491 if (0 === z.duration || !u.animations && !u.transitions) return T();
23492 var me = z.event && W(z.event) ? z.event.join(" ") : z.event,
23495 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);
23496 var ye = [ve, be].join(" ").trim(),
23497 _e = ce + " " + ye,
23498 $e = o(ye, "-active"),
23499 we = le.to && Object.keys(le.to).length > 0;
23500 if (!((z.keyframeStyle || "").length > 0) && !we && !ye) return T();
23502 if (z.stagger > 0) {
23503 var Ce = parseFloat(z.stagger);
23505 transitionDelay: Ce,
23506 animationDelay: Ce,
23507 transitionDuration: 0,
23508 animationDuration: 0
23510 } else Ee = y(G, _e), ke = k(G, ye, Ee, ge);
23511 z.$$skipPreparationClasses || r.addClass(e, ye);
23513 if (z.transitionStyle) {
23514 var Te = [N, z.transitionStyle];
23515 E(G, Te), se.push(Te)
23517 if (z.duration >= 0) {
23518 xe = G.style[N].length > 0;
23519 var Me = S(z.duration, xe);
23520 E(G, Me), se.push(Me)
23522 if (z.keyframeStyle) {
23523 var Ae = [R, z.keyframeStyle];
23524 E(G, Ae), se.push(Ae)
23526 var Se = ke ? z.staggerIndex >= 0 ? z.staggerIndex : t.count(Ee) : 0,
23528 Oe && !z.skipBlocking && $(G, 9999);
23529 var De = O(G, _e, Ee),
23531 te = Math.max(Ne, 0), ie = De.maxDuration;
23533 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();
23534 if (null != z.delay) {
23536 "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))
23538 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), {
23541 start: function() {
23542 if (!K) return J = {
23547 }, Q = new s(J), M(U), Q
23553 be = ["$$animationProvider", function(e) {
23555 return e.parentNode && 11 === e.parentNode.nodeType
23557 e.drivers.push("$$animateCssDriver");
23558 var n = "ng-animate-shim",
23560 i = "ng-anchor-out",
23561 o = "ng-anchor-in";
23562 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(e, a, s, c, l, u, d) {
23564 return e.replace(/\bng-\S+\b/g, "")
23568 return X(e) && (e = e.split(" ")), X(t) && (t = t.split(" ")), e.filter(function(e) {
23569 return -1 === t.indexOf(e)
23573 function p(t, a, c) {
23576 n = b(e).getBoundingClientRect();
23577 return B(["width", "height", "top", "left"], function(e) {
23586 t[e] = Math.floor(r) + "px"
23591 return e.attr("class") || ""
23600 addClass: o + " " + n,
23601 removeClass: i + " " + r,
23604 return a.$$willAnimate ? a : null
23608 m.remove(), a.removeClass(n), c.removeClass(n)
23610 var m = J(b(a).cloneNode(!0)),
23612 a.addClass(n), c.addClass(n), m.addClass(r), _.append(m);
23613 var y, $ = function() {
23619 return t.$$willAnimate ? t : null
23621 if (!$ && !(y = d())) return p();
23624 start: function() {
23628 var t, n = w.start();
23629 return n.done(function() {
23630 if (n = null, !y && (y = d())) return (n = y.start()).done(function() {
23631 n = null, p(), t.complete()
23642 function m(e, t, n, r) {
23646 if (B(r, function(e) {
23651 }), i || o || 0 !== a.length) return {
23652 start: function() {
23659 i && t.push(i.start()), o && t.push(o.start()), B(a, function(e) {
23666 return s.all(t, function(e) {
23675 r = t.options || {};
23676 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));
23678 return i.$$willAnimate ? i : null
23680 if (!l.animations && !l.transitions) return ee;
23683 _ = J(t(y) || v.contains(y) ? y : v);
23684 return function(e) {
23685 return e.from && e.to ? m(e.from, e.to, e.classes, e.anchors) : g(e)
23689 ye = ["$animateProvider", function(e) {
23690 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(t, n, r) {
23692 n = W(n) ? n : n.split(" ");
23693 for (var r = [], i = {}, o = 0; o < n.length; o++) {
23695 s = e.$$registeredAnimations[a];
23696 s && !i[a] && (r.push(t.get(s)), i[a] = !0)
23701 return function(e, t, r, a) {
23703 a.domOperation(), o(e, a)
23707 p = !0, s(), h(e, a)
23710 function l(e, t, r, i, o) {
23714 a = [t, i.from, i.to, o];
23722 case "removeClass":
23729 var s = e.apply(e, a);
23731 if (K(s.start) && (s = s.start()), s instanceof n) s.done(o);
23732 else if (K(s)) return s;
23736 function u(e, t, r, i, o) {
23738 return B(i, function(i) {
23740 s && a.push(function() {
23743 a || (a = !0, (o || ee)(e), i.complete(!e))
23749 cancel: function() {
23752 }), o = l(s, e, t, r, function(e) {
23759 function d(e, t, r, i, o) {
23760 var a = u(e, t, r, i, o);
23761 if (0 === a.length) {
23763 "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))
23765 if (0 !== a.length) return function(e) {
23767 return a.length && B(a, function(e) {
23769 }), t.length ? n.all(t, e) : e(),
23772 e ? t.cancel() : t.end()
23778 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));
23779 var m, g, v = a.addClass,
23784 "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, _)
23791 return w ? w.end() : (c(), (w = new n).complete(!0)), w
23793 start: function() {
23795 c(e), w.complete(e)
23799 p || ((r || ee)(t), e(t))
23804 return m && i.push(function(e) {
23806 }), i.length ? i.push(function(e) {
23808 }) : s(), g && i.push(function(e) {
23814 cancel: function() {
23817 }), n.chain(i, e), w
23824 _e = ["$$animationProvider", function(e) {
23825 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(e, t) {
23831 return e(n, r, o, i)
23833 return function(e) {
23834 if (e.from && e.to) {
23837 if (!r && !i) return;
23839 start: function() {
23841 return function() {
23848 r && n.push(r.start()), i && n.push(i.start()), t.all(n, function(e) {
23863 $e = "data-ng-animate",
23864 we = "$ngAnimatePin",
23865 Ee = ["$animateProvider", function(t) {
23867 if (!e) return null;
23868 var t = e.split(p),
23869 n = Object.create(null);
23870 return B(t, function(e) {
23878 return e.split(p).some(function(e) {
23884 function o(e, t, n) {
23885 return m[e].some(function(e) {
23891 var n = (e.addClass || "").length > 0,
23892 r = (e.removeClass || "").length > 0;
23893 return t ? n && r : n || r
23903 m.join.push(function(e, t) {
23904 return !e.structural && a(e)
23905 }), m.skip.push(function(e, t) {
23906 return !e.structural && !a(e)
23907 }), m.skip.push(function(e, t) {
23908 return "leave" === t.event && e.structural
23909 }), m.skip.push(function(e, t) {
23910 return t.structural && t.state === u && !e.structural
23911 }), m.cancel.push(function(e, t) {
23912 return t.structural && e.structural
23913 }), m.cancel.push(function(e, t) {
23914 return t.state === u && e.structural
23915 }), m.cancel.push(function(e, t) {
23916 if (t.structural) return !1;
23917 var n = e.addClass,
23921 return !(Q(n) && Q(r) || Q(o) && Q(a)) && (i(n, a) || i(r, o))
23922 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(r, i, p, m, v, $, w, E, k, C, x) {
23925 return function(t) {
23926 e ? t() : i.$$postDigest(function() {
23936 function A(e, t, n) {
23939 return i && B(i, function(i) {
23940 ae.call(i.node, t) ? r.push(i.callback) : "leave" === n && ae.call(i.node, e) && r.push(i.callback)
23944 function S(e, t, n) {
23946 return e.filter(function(e) {
23947 return !(e.node === r && (!n || e.callback === n))
23952 "close" !== e || t.parentNode || se.off(t)
23955 function D(e, t, n) {
23956 function c(e, t, n, i) {
23958 var e = A(E, v, t);
23959 e.length ? r(function() {
23964 }), e.progress(t, n, i)
23968 _(m, p), oe(m, p), h(m, p), p.domOperation(), k.complete(!e)
23973 E = v && v.parentNode;
23977 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;
23978 var S = ["enter", "move", "leave"].indexOf(t) >= 0,
23981 q = !j && H.get(v) || {},
23983 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;
23989 addClass: p.addClass,
23990 removeClass: p.removeClass,
23996 if (o("skip", z, q)) return q.state === u ? (d(), k) : (g(m, q, z), q.runner);
23997 if (o("cancel", z, q))
23998 if (q.state === u) q.runner.end();
24000 if (!q.structural) return g(m, q, z), q.runner;
24003 else if (o("join", z, q)) {
24004 if (q.state !== u) return y(m, S ? t : null, p), t = z.event = q.event, p = g(m, q, z), q.runner;
24008 var Y = z.structural;
24009 if (Y || (Y = "animate" === z.event && Object.keys(z.options.to || {}).length > 0 || a(z)), !Y) return d(), I(v), k;
24010 var G = (q.counter || 0) + 1;
24011 return z.counter = G, P(v, l, z), i.$$postDigest(function() {
24016 var i = (m.parent() || []).length > 0 && ("animate" === n.event || n.structural || a(n));
24017 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));
24018 t = !n.structural && a(n, !0) ? "setClass" : n.event, P(v, u);
24019 var o = $(m, t, n.options);
24020 k.setHost(o), c(k, t, "start", {}), o.done(function(e) {
24023 n && n.counter === G && I(v), c(k, t, "close", {})
24029 var t = e.querySelectorAll("[" + $e + "]");
24031 var t = parseInt(e.getAttribute($e), 10),
24033 if (n) switch (t) {
24043 e.removeAttribute($e), H.delete(e)
24046 function R(e, t, n) {
24047 var r, i = m[0].body,
24049 a = e === i || "HTML" === e.nodeName,
24054 for (u && (t = b(u)); t && (s || (s = t === o), t.nodeType === j);) {
24055 var d = H.get(t) || {};
24058 if (!0 === f && !1 !== l) {
24061 }!1 === f && (l = !1), c = d.structural
24063 if (Q(r) || !0 === r) {
24064 var h = J.data(t, U);
24067 if (c && !1 === r) break;
24068 if (a || (a = t === i), a && s) break;
24069 t = s || !(u = J.data(t, we)) ? t.parentNode : b(u)
24071 return (!c || r) && !0 !== l && s && a
24074 function P(e, t, n) {
24075 (n = n || {}).state = t, e.setAttribute($e, t);
24077 i = r ? z(r, n) : n;
24083 q = i.$watch(function() {
24084 return 0 === E.totalPendingRequests
24086 e && (q(), i.$$postDigest(function() {
24087 i.$$postDigest(function() {
24088 null === F && (F = !0)
24092 K = Object.create(null),
24093 ee = t.customFilter(),
24094 te = t.classNameFilter(),
24099 ie = te ? function(e, t) {
24100 var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
24104 ae = e.Node.prototype.contains || function(e) {
24105 return this === e || !!(16 & this.compareDocumentPosition(e))
24108 on: function(e, t, n) {
24110 K[e] = K[e] || [], K[e].push({
24113 }), J(t).on("$destroy", function() {
24114 H.get(r) || se.off(e, t, n)
24117 off: function(e, t, n) {
24118 if (1 !== arguments.length || X(arguments[0])) {
24120 r && (K[e] = 1 === arguments.length ? null : S(r, t, n))
24123 for (var i in K) K[i] = S(K[i], t)
24126 pin: function(e, t) {
24127 n(G(e), "element", "not an element"), n(G(t), "parentElement", "not an element"), e.data(we, t)
24129 push: function(e, t, n, r) {
24130 return n = n || {}, n.domOperation = r, D(e, t, n)
24132 enabled: function(e, t) {
24133 var n = arguments.length;
24134 if (0 === n) t = !!F;
24137 1 === n ? t = !L.get(r) : L.set(r, !t)
24138 } else t = F = !!e;
24145 ke = ["$animateProvider", function(e) {
24157 var o = "ng-animate-ref",
24158 a = this.drivers = [],
24159 s = "$$animationRunner";
24160 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", function(e, s, c, l, u, p) {
24163 if (e.processed) return e;
24169 if (a = i.get(o)) {
24170 a.processed || (a = t(a));
24175 return (a || r).children.push(e), e
24181 for (n = 0; n < e.length; n++) {
24183 i.set(o.domNode, e[n] = {
24184 domNode: o.domNode,
24189 for (n = 0; n < e.length; n++) t(e[n]);
24190 return function(e) {
24193 for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
24197 for (t = 0; t < r.length; t++) {
24199 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s.fn), s.children.forEach(function(e) {
24203 return a.length && n.push(a), n
24208 return function(u, d, y) {
24210 var t = "[" + o + "]",
24211 n = e.hasAttribute(o) ? [e] : e.querySelectorAll(t),
24213 return B(n, function(e) {
24214 var t = e.getAttribute(o);
24215 t && t.length && r.push(e)
24222 B(e, function(e, r) {
24223 var i = b(e.element),
24225 s = ["enter", "move"].indexOf(a) >= 0,
24226 c = e.structural ? _(i) : [];
24228 var l = s ? "to" : "from";
24230 var t = e.getAttribute(o);
24231 n[t] = n[t] || {}, n[t][l] = {
24240 return B(n, function(n, o) {
24244 var c = e[a.animationID],
24245 l = e[s.animationID],
24246 u = a.animationID.toString();
24250 beforeStart: function() {
24251 c.beforeStart(), l.beforeStart()
24253 close: function() {
24254 c.close(), l.close()
24256 classes: w(c.classes, l.classes),
24261 d.classes.length ? t.push(d) : (t.push(c), t.push(l))
24263 i[u].anchors.push({
24268 var f = a ? a.animationID : s.animationID,
24270 r[h] || (r[h] = !0, t.push(e[f]))
24276 e = e.split(" "), t = t.split(" ");
24277 for (var n = [], r = 0; r < e.length; r++) {
24279 if ("ng-" !== i.substring(0, 3))
24280 for (var o = 0; o < t.length; o++)
24290 for (var t = a.length - 1; t >= 0; t--) {
24302 e.from && e.to ? (n(e.from.element), n(e.to.element)) : n(e.element)
24307 !e || "leave" === d && y.$$domOperationFired || e.end()
24311 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)
24314 var T = ["enter", "move", "leave"].indexOf(d) >= 0,
24319 cancel: function() {
24323 if (!a.length) return x(), M;
24325 var A = r(u.attr("class"), r(y.addClass, y.removeClass)),
24327 S && (A += " " + S, y.tempClasses = null);
24329 return T && (O = "ng-" + d + "-prepare", e.addClass(u, O)), g.push({
24335 beforeStart: function() {
24336 u.addClass(q), S && e.addClass(u, S), O && (e.removeClass(u, O), O = null)
24339 }), u.on("$destroy", C), g.length > 1 ? M : (s.$$postDigest(function() {
24342 i(t.element) ? e.push(t) : t.close()
24348 domNode: b(e.from ? e.from.element : e.element),
24351 var t, n = e.close;
24352 if (i(e.anchors ? e.from.element || e.to.element : e.element)) {
24358 o.done(function(e) {
24369 Ce = ["$animate", "$rootScope", function(e, t) {
24372 transclude: "element",
24375 link: function(t, n, r, i, o) {
24377 t.$watchCollection(r.ngAnimateSwap || r.for, function(r) {
24378 a && e.leave(a), s && (s.$destroy(), s = null), (r || 0 === r) && (s = t.$new(), o(s, function(t) {
24379 a = t, e.enter(t, null, n)
24385 t.module("ngAnimate", [], function() {
24386 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
24388 angularVersion: "1.6.8"
24389 }).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)
24390 }(window, window.angular),
24393 var n = t.module("ngAria", ["ng"]).info({
24394 angularVersion: "1.6.8"
24395 }).provider("$aria", function() {
24396 function e(e, t, r, o) {
24397 return function(a, s, c) {
24398 var l = c.$normalize(t);
24399 !n[l] || i(s, r) || c[l] || a.$watch(c[e], function(e) {
24400 e = o ? !e : !!e, s.attr(t, e)
24414 bindRoleForClick: !0
24416 this.config = function(e) {
24418 }, this.$get = function() {
24420 config: function(e) {
24427 r = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
24428 i = function(e, t) {
24429 if (-1 !== t.indexOf(e[0].nodeName)) return !0
24431 n.directive("ngShow", ["$aria", function(e) {
24432 return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
24433 }]).directive("ngHide", ["$aria", function(e) {
24434 return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
24435 }]).directive("ngValue", ["$aria", function(e) {
24436 return e.$$watchExpr("ngValue", "aria-checked", r, !1)
24437 }]).directive("ngChecked", ["$aria", function(e) {
24438 return e.$$watchExpr("ngChecked", "aria-checked", r, !1)
24439 }]).directive("ngReadonly", ["$aria", function(e) {
24440 return e.$$watchExpr("ngReadonly", "aria-readonly", r, !1)
24441 }]).directive("ngRequired", ["$aria", function(e) {
24442 return e.$$watchExpr("ngRequired", "aria-required", r, !1)
24443 }]).directive("ngModel", ["$aria", function(e) {
24444 function t(t, n, o, a) {
24445 return e.config(n) && !o.attr(t) && (a || !i(o, r))
24449 return !t.attr("role") && t.attr("type") === e && !i(t, r)
24455 return "checkbox" === (n || r) || "menuitemcheckbox" === r ? "checkbox" : "radio" === (n || r) || "menuitemradio" === r ? "radio" : "range" === n || "progressbar" === r || "slider" === r ? "range" : ""
24459 require: "ngModel",
24461 compile: function(r, i) {
24464 post: function(r, i, o, s) {
24466 return s.$modelValue
24468 var l = t("tabindex", "tabindex", i, !1);
24472 n(a, i) && i.attr("role", a), t("aria-checked", "ariaChecked", i, !1) && r.$watch(c, "radio" === a ? function(e) {
24473 var t = o.value == s.$viewValue;
24474 i.attr("aria-checked", t)
24476 i.attr("aria-checked", !s.$isEmpty(s.$viewValue))
24477 }), l && i.attr("tabindex", 0);
24480 if (n(a, i) && i.attr("role", "slider"), e.config("ariaValue")) {
24481 var u = !i.attr("aria-valuemin") && (o.hasOwnProperty("min") || o.hasOwnProperty("ngMin")),
24482 d = !i.attr("aria-valuemax") && (o.hasOwnProperty("max") || o.hasOwnProperty("ngMax")),
24483 f = !i.attr("aria-valuenow");
24484 u && o.$observe("min", function(e) {
24485 i.attr("aria-valuemin", e)
24486 }), d && o.$observe("max", function(e) {
24487 i.attr("aria-valuemax", e)
24488 }), f && r.$watch(c, function(e) {
24489 i.attr("aria-valuenow", e)
24492 l && i.attr("tabindex", 0)
24493 }!o.hasOwnProperty("ngRequired") && s.$validators.required && t("aria-required", "ariaRequired", i, !1) && o.$observe("required", function() {
24494 i.attr("aria-required", !!o.required)
24495 }), t("aria-invalid", "ariaInvalid", i, !0) && r.$watch(function() {
24498 i.attr("aria-invalid", !!e)
24504 }]).directive("ngDisabled", ["$aria", function(e) {
24505 return e.$$watchExpr("ngDisabled", "aria-disabled", r, !1)
24506 }]).directive("ngMessages", function() {
24509 require: "?ngMessages",
24510 link: function(e, t, n, r) {
24511 t.attr("aria-live") || t.attr("aria-live", "assertive")
24514 }).directive("ngClick", ["$aria", "$parse", function(e, t) {
24517 compile: function(n, o) {
24518 var a = t(o.ngClick);
24519 return function(t, n, o) {
24520 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) {
24521 var n = e.which || e.keyCode;
24522 32 !== n && 13 !== n || t.$apply(function() {
24531 }]).directive("ngDblclick", ["$aria", function(e) {
24532 return function(t, n, o) {
24533 !e.config("tabindex") || n.attr("tabindex") || i(n, r) || n.attr("tabindex", 0)
24536 }(window, window.angular),
24542 if (e) return i(e) ? e.indexOf(t) >= 0 : e.hasOwnProperty(t)
24544 return ["$animate", function(t) {
24547 transclude: "element",
24550 require: "^^ngMessages",
24551 link: function(n, r, o, a, s) {
24553 u = o.ngMessage || o.when,
24554 d = o.ngMessageExp || o.whenExp,
24556 c = e ? i(e) ? e : e.split(/[\s,]+/) : null, a.reRender()
24558 d ? (f(n.$eval(d)), n.$watchCollection(d, f)) : f(u);
24560 a.register(l, p = {
24561 test: function(t) {
24564 attach: function() {
24565 h || s(function(e, n) {
24566 t.enter(e, null, r);
24567 var i = (h = e).$$attachId = a.getAttachId();
24568 h.on("$destroy", function() {
24569 h && h.$$attachId === i && (a.deregister(l), p.detach()), n.$destroy()
24573 detach: function() {
24576 h = null, t.leave(e)
24585 t.module("ngMessages", [], function() {
24586 r = t.forEach, i = t.isArray, o = t.isString, a = t.element
24588 angularVersion: "1.6.8"
24589 }).directive("ngMessages", ["$animate", function(e) {
24591 return o(t) && 0 === t.length || n(e.$eval(t))
24595 return o(e) ? e.length : !!e
24598 require: "ngMessages",
24600 controller: ["$element", "$scope", "$attrs", function(i, o, a) {
24602 for (var n = t, r = []; n && n !== e;) {
24603 var i = n.$$ngMessageNode;
24604 if (i && i.length) return m[i];
24605 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))
24609 function c(e, t, n) {
24613 i ? (r.next = i.next, i.next = r) : (r.next = u.head, u.head = r)
24617 function l(e, t, n) {
24620 i ? i.next = r.next : u.head = r.next
24625 this.getAttachId = function() {
24628 var h, p, m = this.messages = {};
24629 this.render = function(s) {
24630 h = !1, p = s = s || {};
24631 for (var c = t(o, a.ngMessagesMultiple) || t(o, a.multiple), l = [], d = {}, f = u.head, m = !1, g = 0; null != f;) {
24635 m || r(s, function(e, t) {
24636 if (!b && n(e) && v.test(t)) {
24638 d[t] = !0, b = !0, v.attach()
24640 }), b ? m = !c : l.push(v), f = f.next
24644 }), l.length !== g ? e.setClass(i, "ng-active", "ng-inactive") : e.setClass(i, "ng-inactive", "ng-active")
24645 }, o.$watchCollection(a.ngMessages || a.for, u.render), i.on("$destroy", function() {
24649 }), this.reRender = function() {
24650 h || (h = !0, o.$evalAsync(function() {
24651 h && p && u.render(p)
24653 }, this.register = function(e, t) {
24654 var n = d.toString();
24657 }, c(i[0], e, n), e.$$ngMessageNode = n, d++, u.reRender()
24658 }, this.deregister = function(e) {
24659 var t = e.$$ngMessageNode;
24660 delete e.$$ngMessageNode, l(i[0], e, t), delete m[t], u.reRender()
24664 }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(e, t, n) {
24666 var i = n.$$createComment ? n.$$createComment("ngMessagesInclude", r) : t[0].createComment(" ngMessagesInclude: " + r + " "),
24668 e.after(o), e.remove()
24672 require: "^^ngMessages",
24673 link: function(t, i, a) {
24674 var s = a.ngMessagesInclude || a.src;
24675 e(s).then(function(e) {
24676 t.$$destroyed || (o(e) && !e.trim() ? r(i, s) : n(e)(t, function(e) {
24677 i.after(e), r(i, s)
24682 }]).directive("ngMessage", n()).directive("ngMessageExp", n())
24683 }(window, window.angular),
24684 function(e, t, n) {
24686 t.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.interaction", "material.core.gestures", "material.core.layout", "material.core.meta", "material.core.theming.palette", "material.core.theming", "material.core.animate", "material.components.autocomplete", "material.components.bottomSheet", "material.components.backdrop", "material.components.button", "material.components.card", "material.components.checkbox", "material.components.chips", "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.gridList", "material.components.icon", "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.switch", "material.components.swipe", "material.components.tabs", "material.components.toast", "material.components.toolbar", "material.components.truncate", "material.components.tooltip", "material.components.virtualRepeat", "material.components.whiteframe"]),
24689 if (t.has("$swipe")) {
24690 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!")
24695 e.decorator("$$rAF", ["$delegate", r]), e.decorator("$q", ["$delegate", i]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
24699 return e.throttle = function(t) {
24701 return function() {
24702 n = arguments, o = this, i = t, r || (r = !0, e(function() {
24703 i.apply(o, Array.prototype.slice.call(n)), r = !1
24710 return e.resolve || (e.resolve = e.when), e
24712 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)
24719 pre: function(n, r, i) {
24721 t.isUndefined(e) && (e = !0), r.toggleClass("md-autofocus", !!e)
24723 var a = i.mdAutoFocus || i.mdAutofocus || i.mdSidenavFocus;
24724 o(e(a)(n)), a && n.$watch(a, o)
24729 e.$inject = ["$parse"], t.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
24732 t.module("material.core").factory("$mdColorUtil", function() {
24734 rgbaToHex: function(e) {
24735 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()
24737 hexToRgba: function(e) {
24738 var t = "#" === e[0] ? e.substr(1) : e,
24740 r = t.substr(0, n),
24741 i = t.substr(n, n),
24742 o = t.substr(2 * n);
24743 return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
24745 rgbToRgba: function(e) {
24746 return e.replace(")", ", 0.1)").replace("(", "a(")
24748 rgbaToRgb: function(e) {
24749 return e ? e.replace("rgba", "rgb").replace(/,[^),]+\)/, ")") : "rgb(0,0,0)"
24755 t.module("material.core").factory("$mdConstant", function() {
24757 var t = r(o + "-" + e),
24758 a = t.charAt(0).toLowerCase() + t.substring(1);
24759 return n(i, e) ? e : n(i, t) ? t : n(i, a) ? a : e
24763 return t.isDefined(e.style[n])
24767 return e.replace(s, function(e, t, n, r) {
24768 return r ? n.toUpperCase() : n
24771 var i = document.createElement("div"),
24773 var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
24775 if (n = r.exec(t)) return n[0]
24777 a = /webkit/i.test(o),
24778 s = /([:\-_]+(.))/g,
24780 isInputKey: function(e) {
24781 return e.keyCode >= 31 && e.keyCode <= 90
24783 isNumPadKey: function(e) {
24784 return 3 === e.location && e.keyCode >= 97 && e.keyCode <= 105
24786 isMetaKey: function(e) {
24787 return e.keyCode >= 91 && e.keyCode <= 93
24789 isFnLockKey: function(e) {
24790 return e.keyCode >= 112 && e.keyCode <= 145
24792 isNavigationKey: function(e) {
24793 var t = c.KEY_CODE;
24794 return -1 != [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW].indexOf(e.keyCode)
24796 hasModifierKey: function(e) {
24797 return e.ctrlKey || e.metaKey || e.altKey
24799 ELEMENT_MAX_PIXELS: 1533917,
24800 BEFORE_NG_ARIA: 210,
24820 TRANSITIONEND: "transitionend" + (a ? " webkitTransitionEnd" : ""),
24821 ANIMATIONEND: "animationend" + (a ? " webkitAnimationEnd" : ""),
24822 TRANSFORM: e("transform"),
24823 TRANSFORM_ORIGIN: e("transformOrigin"),
24824 TRANSITION: e("transition"),
24825 TRANSITION_DURATION: e("transitionDuration"),
24826 ANIMATION_PLAY_STATE: e("animationPlayState"),
24827 ANIMATION_DURATION: e("animationDuration"),
24828 ANIMATION_NAME: e("animationName"),
24829 ANIMATION_TIMING: e("animationTimingFunction"),
24830 ANIMATION_DIRECTION: e("animationDirection")
24833 xs: "(max-width: 599px)",
24834 "gt-xs": "(min-width: 600px)",
24835 sm: "(min-width: 600px) and (max-width: 959px)",
24836 "gt-sm": "(min-width: 960px)",
24837 md: "(min-width: 960px) and (max-width: 1279px)",
24838 "gt-md": "(min-width: 1280px)",
24839 lg: "(min-width: 1280px) and (max-width: 1919px)",
24840 "gt-lg": "(min-width: 1920px)",
24841 xl: "(min-width: 1920px)",
24842 landscape: "(orientation: landscape)",
24843 portrait: "(orientation: portrait)",
24846 MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
24854 return u.length && e > -1 && e < u.length
24858 return u.indexOf(e)
24862 return e && i(e) > -1
24866 return u.length ? u[0] : null
24870 return u.length ? u[u.length - 1] : null
24873 function c(e, o, c, d) {
24875 for (var f = i(o);;) {
24876 if (!r(f)) return null;
24877 var h = f + (e ? -1 : 1),
24879 if (r(h) ? p = u[h] : n && (h = i(p = e ? s() : a())), null === p || h === d) return null;
24880 if (c(p)) return p;
24881 t.isUndefined(d) && (d = h), f = h
24884 var l = function() {
24887 e && !t.isArray(e) && (e = Array.prototype.slice.call(e)), n = !!n;
24890 items: function() {
24891 return [].concat(u)
24893 count: function() {
24899 itemAt: function(e) {
24900 return r(e) ? u[e] : null
24902 findBy: function(e, t) {
24903 return u.filter(function(n) {
24907 add: function(e, n) {
24908 return e ? (t.isNumber(n) || (n = u.length), u.splice(n, 0, e), i(e)) : -1
24910 remove: function(e) {
24911 o(e) && u.splice(i(e), 1)
24915 next: t.bind(null, c, !1),
24916 previous: t.bind(null, c, !0),
24917 hasPrevious: function(e) {
24918 return !!e && r(i(e) - 1)
24920 hasNext: function(e) {
24921 return !!e && r(i(e) + 1)
24925 t.module("material.core").config(["$provide", function(t) {
24926 t.decorator("$mdUtil", ["$delegate", function(t) {
24927 return t.iterator = e, t
24932 function e(e, n, r) {
24935 t.isUndefined(n) && (n = l[e] = o(e));
24937 return t.isUndefined(r) && (r = a(n)), r
24941 return e.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)
24946 return t || (t = u[e] = r.matchMedia(e)), t.addListener(s), d[t.media] = !!t.matches
24950 n.$evalAsync(function() {
24951 d[e.media] = !!e.matches
24956 return f[t] || (f[t] = e.$normalize(t))
24962 return i.getResponsiveAttribute = function(t, n) {
24963 for (var r = 0; r < e.MEDIA_PRIORITY.length; r++) {
24964 var i = e.MEDIA_PRIORITY[r];
24965 if (u[l[i]].matches) {
24966 var o = c(t, n + "-" + i);
24967 if (t[o]) return t[o]
24971 }, i.getQuery = function(e) {
24973 }, i.watchResponsiveAttributes = function(n, r, i) {
24975 return n.forEach(function(n) {
24977 t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, null)));
24978 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)))
24981 o.forEach(function(e) {
24987 e.$inject = ["$mdConstant", "$rootScope", "$window"], t.module("material.core").factory("$mdMedia", e)
24992 return (e = t.isArray(e) ? e : [e]).forEach(function(t) {
24993 a.forEach(function(n) {
24994 e.push(n + "-" + t)
25000 return e = t.isArray(e) ? e : [e], r(e).map(function(e) {
25001 return "[" + e + "]"
25006 if ((e = e[0] || e).nodeType) return e
25008 var a = ["data", "x"];
25009 return e ? n ? i(e) : r(e) : {
25012 hasAttribute: function(e, t) {
25013 if (!(e = o(e))) return !1;
25014 for (var n = r(t), i = 0; i < n.length; i++)
25015 if (e.hasAttribute(n[i])) return !0;
25018 removeAttribute: function(e, t) {
25019 (e = o(e)) && r(t).forEach(function(t) {
25020 e.removeAttribute(t)
25025 t.module("material.core").config(["$provide", function(t) {
25026 t.decorator("$mdUtil", ["$delegate", function(t) {
25027 return t.prefixer = e, t
25032 function r(r, o, a, s, c, l, u, d, f, h) {
25034 return e ? m(e) || g(e) ? e : e + "px" : "0"
25038 return String(e).indexOf("px") > -1
25042 return String(e).indexOf("%") > -1
25048 var b = l.startSymbol(),
25050 _ = "{{" === b && "}}" === y,
25051 $ = function(e, n, r) {
25053 if (e && e.length) {
25054 var o = f.getComputedStyle(e[0]);
25055 i = t.isDefined(o[n]) && (!r || o[n] == r)
25061 now: e.performance && e.performance.now ? t.bind(e.performance, e.performance.now) : Date.now || function() {
25062 return (new Date).getTime()
25064 getModelOption: function(e, t) {
25066 var n = e.$options;
25067 return n.getOption ? n.getOption(t) : n[t]
25070 bidi: function(e, n, i, o) {
25071 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir);
25072 if (0 == arguments.length) return a ? "ltr" : "rtl";
25073 var s = t.element(e);
25074 a && t.isDefined(i) ? s.css(n, p(i)) : !a && t.isDefined(o) && s.css(n, p(o))
25076 bidiProperty: function(e, n, i, o) {
25077 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir),
25079 a && t.isDefined(n) ? (s.css(n, p(o)), s.css(i, "")) : !a && t.isDefined(i) && (s.css(i, p(o)), s.css(n, ""))
25081 clientRect: function(e, t, n) {
25083 t = v(t || r.offsetParent || document.body);
25084 var i = r.getBoundingClientRect(),
25085 o = n ? t.getBoundingClientRect() : {
25092 left: i.left - o.left,
25093 top: i.top - o.top,
25098 offsetRect: function(e, t) {
25099 return w.clientRect(e, t, !0)
25101 nodesToArray: function(e) {
25103 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
25106 getViewportTop: function() {
25107 return e.scrollY || e.pageYOffset || 0
25109 findFocusTarget: function(e, n) {
25111 var r, i = e[0].querySelectorAll(n);
25112 return i && i.length && i.length && t.forEach(i, function(e) {
25113 (e = t.element(e)).hasClass("md-autofocus") && (r = e)
25116 var i, o = this.prefixer("md-autofocus", !0);
25117 return (i = r(e, n || o)) || n == o || (i = r(e, this.prefixer("md-auto-focus", !0))) || (i = r(e, o)), i
25119 disableScrollAround: function(e, n, i) {
25120 if (i = i || {}, w.disableScrollAround._count = Math.max(0, w.disableScrollAround._count || 0), w.disableScrollAround._count++, w.disableScrollAround._restoreScroll) return w.disableScrollAround._restoreScroll;
25123 var e = r[0].documentElement,
25124 n = e.style.cssText || "",
25125 i = o.style.cssText || "",
25126 a = w.getViewportTop(),
25128 c = o.scrollHeight > o.clientHeight + 1,
25129 l = e.scrollTop > 0 ? e : o;
25130 return c && t.element(o).css({
25134 }), o.clientWidth < s && (o.style.overflow = "hidden"), c && (e.style.overflowY = "scroll"),
25136 o.style.cssText = i, e.style.cssText = n, l.scrollTop = a
25143 e = t.element(e || o);
25145 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),
25147 r.off("wheel"), r.off("touchmove"), !i.disableScrollMask && r[0].parentNode && r[0].parentNode.removeChild(r[0])
25150 return w.disableScrollAround._restoreScroll = function() {
25151 --w.disableScrollAround._count <= 0 && (a(), s(), delete w.disableScrollAround._restoreScroll)
25154 enableScrolling: function() {
25155 var e = this.disableScrollAround._restoreScroll;
25158 floatingScrollbars: function() {
25159 if (this.floatingScrollbars.cached === n) {
25160 var e = t.element("<div><div></div></div>").css({
25163 position: "absolute",
25165 "overflow-y": "scroll"
25167 e.children().css("height", "60px"), r[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
25169 return this.floatingScrollbars.cached
25171 forceFocus: function(t) {
25173 document.addEventListener("click", function e(t) {
25174 t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
25176 var r = document.createEvent("MouseEvents");
25177 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)
25179 createBackdrop: function(e, t) {
25180 return a(w.supplant('<md-backdrop class="{0}">', [t]))(e)
25182 supplant: function(e, t, n) {
25183 return n = n || /\{([^{}]*)\}/g, e.replace(n, function(e, n) {
25184 var r = n.split("."),
25187 for (var o in r) r.hasOwnProperty(o) && (i = i[r[o]])
25191 return "string" == typeof i || "number" == typeof i ? i : e
25194 fakeNgModel: function() {
25197 $setTouched: t.noop,
25198 $setViewValue: function(e) {
25199 this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
25203 $isEmpty: function(e) {
25204 return 0 === ("" + e).length
25208 $viewChangeListeners: [],
25212 debounce: function(e, t, r, i) {
25214 return function() {
25216 c = Array.prototype.slice.call(arguments);
25217 o.cancel(a), a = o(function() {
25218 a = n, e.apply(s, c)
25222 throttle: function(e, t) {
25224 return function() {
25228 (!n || o - n > t) && (e.apply(r, i), n = o)
25231 time: function(e) {
25233 return e(), w.now() - t
25235 valueOnUse: function(e, t, n) {
25237 i = Array.prototype.slice.call(arguments),
25238 o = i.length > 3 ? i.slice(3) : [];
25239 Object.defineProperty(e, t, {
25241 return null === r && (r = n.apply(e, o)), r
25245 nextUid: function() {
25248 disconnectScope: function(e) {
25249 if (e && e.$root !== e && !e.$$destroyed) {
25251 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
25254 reconnectScope: function(e) {
25255 if (e && e.$root !== e && e.$$disconnected) {
25258 t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
25261 getClosest: function(e, n, r) {
25262 if (t.isString(n)) {
25263 var i = n.toUpperCase();
25265 return e.nodeName.toUpperCase() === i
25268 if (e instanceof t.element && (e = e[0]), r && (e = e.parentNode), !e) return null;
25271 } while (e = e.parentNode);
25274 elementContains: function(n, r) {
25275 return (e.Node && e.Node.prototype && Node.prototype.contains ? t.bind(n, n.contains) : t.bind(n, function(e) {
25276 return n === r || !!(16 & this.compareDocumentPosition(e))
25279 extractElementByName: function(e, n, r, i) {
25281 return a(e) || (r ? s(e) : null)
25286 for (var t = 0, r = e.length; t < r; t++)
25287 if (e[t].nodeName.toLowerCase() === n) return e[t];
25294 for (var n = 0, r = e.length; n < r; n++) {
25297 for (var a = 0, s = i.childNodes.length; a < s; a++) t = t || o([i.childNodes[a]])
25302 return !c && i && u.warn(w.supplant("Unable to find node '{0}' in element '{1}'.", [n, e[0].outerHTML])), t.element(c || e)
25304 initOptionalProperties: function(e, n, r) {
25305 r = r || {}, t.forEach(e.$$isolateBindings, function(i, o) {
25306 if (i.optional && t.isUndefined(e[o])) {
25307 var a = t.isDefined(n[i.attrName]);
25308 e[o] = t.isDefined(r[o]) ? r[o] : a
25312 nextTick: function(e, t, n) {
25313 var r = w.nextTick,
25319 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = a, i || (r.timeout = o(function() {
25322 r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
25323 e.scope && e.scope.$$destroyed || e.callback()
25324 }), t && s.$digest()
25327 processTemplate: function(e) {
25328 return _ ? e : e && t.isString(e) ? e.replace(/\{\{/g, b).replace(/}}/g, y) : e
25330 getParentWithPointerEvents: function(e) {
25331 for (var t = e.parent(); $(t, "pointer-events", "none");) t = t.parent();
25334 getNearestContentElement: function(e) {
25335 for (var t = e.parent()[0]; t && t !== d[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
25338 checkStickySupport: function() {
25339 var e, n = t.element("<div>");
25340 r[0].body.appendChild(n[0]);
25341 for (var i = ["sticky", "-webkit-sticky"], o = 0; o < i.length; ++o)
25346 }), n.css("position") == i[o]) {
25350 return n.remove(), e
25352 parseAttributeBoolean: function(e, t) {
25353 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
25355 hasComputedStyle: $,
25356 isParentFormSubmitted: function(e) {
25357 var n = w.getClosest(e, "form"),
25358 r = n ? t.element(n).controller("form") : null;
25359 return !!r && r.$submitted
25361 animateScrollTo: function(e, t, n) {
25364 e.scrollTop = n, (c ? n < t : n > t) && h(r)
25369 return o(w.now() - l, a, s, e)
25372 function o(e, t, n, r) {
25373 if (e > r) return t + n;
25374 var i = (e /= r) * e;
25375 return t + n * (-2 * (i * e) + 3 * i)
25377 var a = e.scrollTop,
25383 uniq: function(e) {
25384 if (e) return e.filter(function(e, t, n) {
25385 return n.indexOf(e) === t
25389 return w.dom.animator = c(w), w
25391 r.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
25393 t.module("material.core").factory("$mdUtil", r), t.element.prototype.focus = t.element.prototype.focus || function() {
25394 return this.length && this[0].focus(), this
25395 }, t.element.prototype.blur = t.element.prototype.blur || function() {
25396 return this.length && this[0].blur(), this
25402 return !i || ("function" == typeof e.preAssignBindingsEnabled ? e.preAssignBindingsEnabled() : 1 === t.version.major && t.version.minor < 6)
25405 function r(e, t, n, r, i) {
25406 this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
25409 this.respectPreAssignBindingsEnabled = function(e) {
25410 return t.isDefined(e) ? (i = e, this) : i
25411 }, this.$get = ["$q", "$templateRequest", "$injector", "$compile", "$controller", function(e, t, n, i, o) {
25412 return new r(e, t, n, i, o)
25413 }], r.prototype.compile = function(e) {
25414 return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
25415 }, r.prototype._prepareContentElement = function(e) {
25416 var t = this._fetchContentElement(e);
25417 return this.$q.resolve({
25418 element: t.element,
25419 cleanup: t.restore,
25425 }, r.prototype._compileTemplate = function(e) {
25428 i = e.template || "",
25429 o = t.extend({}, e.resolve),
25430 a = t.extend({}, e.locals),
25431 s = e.transformTemplate || t.identity;
25432 return t.forEach(o, function(e, r) {
25433 t.isString(e) ? o[r] = n.$injector.get(e) : o[r] = n.$injector.invoke(e)
25434 }), t.extend(o, a), o.$$ngTemplate = r ? this.$templateRequest(r) : this.$q.when(i), this.$q.all(o).then(function(r) {
25435 var i = s(r.$$ngTemplate, e),
25436 o = e.element || t.element("<div>").html(i.trim()).contents();
25437 return n._compileElement(r, o, e)
25439 }, r.prototype._compileElement = function(e, n, r) {
25441 o = this.$compile(n),
25444 cleanup: n.remove.bind(n),
25446 link: function(s) {
25447 if (e.$scope = s, r.controller) {
25448 var c = t.extend({}, e, {
25451 l = i._createController(r, c, e);
25452 n.data("$ngControllerController", l), n.children().data("$ngControllerController", l), a.controller = l
25458 }, r.prototype._createController = function(e, r, i) {
25459 var o = this.$controller(e.controller, r, !0, e.controllerAs);
25460 n() && e.bindToController && t.extend(o.instance, i);
25462 return !n() && e.bindToController && t.extend(a, i), t.isFunction(a.$onInit) && a.$onInit(), a
25463 }, r.prototype._fetchContentElement = function(e) {
25465 var t = e.parentNode,
25466 n = e.nextElementSibling;
25467 return function() {
25468 n ? t.insertBefore(e, n) : t.appendChild(e)
25471 var r = e.contentElement,
25473 return t.isString(r) ? i = n(r = document.querySelector(r)) : (r = r[0] || r, i = document.contains(r) ? n(r) : function() {
25474 r.parentNode && r.parentNode.removeChild(r)
25476 element: t.element(r),
25481 t.module("material.core").provider("$mdCompiler", e), e.$inject = ["$compileProvider"]
25484 function e(e, n, r, i) {
25485 function o(e, r, i) {
25486 var o = t.element(e)[0] || e;
25487 !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))
25490 function a(t, n, r) {
25498 for (var t, n = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, null, !1), r = ""; t = n.nextNode();)(function(t) {
25499 for (; t.parentNode && (t = t.parentNode) !== e;)
25500 if (t.getAttribute && "true" === t.getAttribute("aria-hidden")) return !0
25501 })(t) || (r += t.textContent);
25502 return r.trim() || ""
25507 if (e.hasChildNodes())
25508 for (var i = e.childNodes, o = 0; o < i.length; o++) {
25510 1 === a.nodeType && a.hasAttribute(t) && (function(e) {
25511 return "none" === (e.currentStyle ? e.currentStyle : r.getComputedStyle(e)).display
25518 var n = t.element(e)[0] || e;
25519 return !!n.hasAttribute && (n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby") || n.hasAttribute("aria-describedby"))
25524 var r = t.element(e)[0] || e;
25525 return !!r.parentNode && (!! function(e) {
25526 if (!l(e)) return !1;
25527 if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
25539 case "presentation":
25546 switch (e.tagName.toLowerCase()) {
25599 case "presentation":
25626 }(r.parentNode) || !!--n && u(r.parentNode, n))
25628 var d = this.showWarnings;
25632 expectWithText: function(e, t) {
25633 var n = s(e) || "";
25634 n.indexOf(i.startSymbol()) > -1 ? a(e, t, function() {
25638 expectWithoutText: function(e, t) {
25640 n.indexOf(i.startSymbol()) > -1 || n || o(e, t, n)
25644 parentHasAriaLabel: u
25647 e.$inject = ["$$rAF", "$log", "$window", "$interpolate"], t.module("material.core").provider("$mdAria", function() {
25652 disableWarnings: function() {
25653 t.showWarnings = !1
25655 $get: ["$$rAF", "$log", "$window", "$interpolate", function(n, r, i, o) {
25656 return e.apply(t, arguments)
25663 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 = {
25664 keydown: "keyboard",
25665 mousedown: "mouse",
25666 mouseenter: "mouse",
25667 touchstart: "touch",
25668 pointerdown: "pointer",
25669 MSPointerDown: "pointer"
25670 }, this.iePointerMap = {
25674 }, this.initializeEvents()
25676 n.$inject = ["$timeout", "$mdUtil"], t.module("material.core.interaction", []).service("$mdInteraction", n), n.prototype.initializeEvents = function() {
25677 var t = "MSPointerEvent" in e ? "MSPointerDown" : "PointerEvent" in e ? "pointerdown" : null;
25678 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))
25679 }, n.prototype.onInputEvent = function(e) {
25680 if (!this.isBuffering) {
25681 var t = this.inputEventMap[e.type];
25682 "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
25684 }, n.prototype.onBufferInputEvent = function(e) {
25685 this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
25686 this.isBuffering = !1
25687 }.bind(this), 650, !1)
25688 }, n.prototype.getLastInteractionType = function() {
25689 return this.lastInteractionType
25690 }, n.prototype.isUserInvoked = function(e) {
25691 var n = t.isNumber(e) ? e : 15;
25692 return this.lastInteractionTime >= this.$mdUtil.now() - n
25698 function r(n, r, i) {
25700 return function(t, n) {
25701 n.distance < this.state.options.maxDistance && this.dispatchEvent(t, e, n)
25704 var s = navigator.userAgent || navigator.vendor || e.opera,
25705 c = s.match(/ipad|iphone|ipod/i),
25706 u = s.match(/android/i),
25708 for (var e = document.createElement("div"), n = ["", "webkit", "Moz", "MS", "ms", "o"], r = 0; r < n.length; r++) {
25710 o = i ? i + "TouchAction" : "touchAction";
25711 if (t.isDefined(e.style[o])) return o
25714 h = void 0 !== e.jQuery && t.element === e.jQuery,
25716 handler: function(e, r) {
25718 return t.extend(i, r), p[e] = i, v
25720 register: function(e, t, n) {
25721 var r = p[t.replace(/^\$md./, "")];
25722 if (!r) throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(p).join(", "));
25723 return r.registerElement(e, n)
25727 isHijackingClicks: (c || u) && !h && !m
25729 return v.isHijackingClicks && (v.handler("click", {
25734 }), v.handler("focus", {
25738 onEnd: function(e, t) {
25739 t.distance < this.state.options.maxDistance && d(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
25741 }), v.handler("mouseup", {
25745 onEnd: o("mouseup")
25746 }), v.handler("mousedown", {
25747 onStart: function(e) {
25748 this.dispatchEvent(e, "mousedown")
25750 })), v.handler("press", {
25751 onStart: function(e, t) {
25752 this.dispatchEvent(e, "$md.pressdown")
25754 onEnd: function(e, t) {
25755 this.dispatchEvent(e, "$md.pressup")
25757 }).handler("hold", {
25762 onCancel: function() {
25763 i.cancel(this.state.timeout)
25765 onStart: function(e, n) {
25766 if (!this.state.registeredParent) return this.cancel();
25770 }, this.state.timeout = i(t.bind(this, function() {
25771 this.dispatchEvent(e, "$md.hold"), this.cancel()
25772 }), this.state.options.delay, !1)
25774 onMove: function(e, t) {
25775 f || "touchmove" !== e.type || e.preventDefault();
25776 var n = this.state.pos.x - t.x,
25777 r = this.state.pos.y - t.y;
25778 Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
25780 onEnd: function() {
25783 }).handler("drag", {
25787 cancelMultiplier: 1.5
25789 onSetup: function(e, t) {
25790 f && (this.oldTouchAction = e[0].style[f], e[0].style[f] = t.horizontal ? "pan-y" : "pan-x")
25792 onCleanup: function(e) {
25793 this.oldTouchAction && (e[0].style[f] = this.oldTouchAction)
25795 onStart: function(e) {
25796 this.state.registeredParent || this.cancel()
25798 onMove: function(e, t) {
25800 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())
25802 dispatchDragMove: r.throttle(function(e) {
25803 this.state.isRunning && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
25805 onEnd: function(e, t) {
25806 this.state.dragPointer && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
25808 }).handler("swipe", {
25813 onEnd: function(e, t) {
25815 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))
25821 this.name = e, this.state = {}
25826 !e.clientX && !e.clientY || e.$material || e.isIonicTap || c(e) || "mousedown" === e.type && (d(e.target) || d(document.activeElement)) || (e.preventDefault(), e.stopPropagation())
25831 for (var i in p)(r = p[i]) instanceof n && ("start" === e && r.cancel(), r[e](t, f))
25833 document.contains || (document.contains = function(e) {
25834 return document.body.contains(e)
25835 }), !b && e.isHijackingClicks && (document.addEventListener("click", function(e) {
25836 var t = 0 === e.clientX && 0 === e.clientY,
25837 n = e.target && "submit" === e.target.type;
25838 t || e.$material || e.isIonicTap || c(e) || n ? (v = null, "label" == e.target.tagName.toLowerCase() && (v = {
25841 })) : (e.preventDefault(), e.stopPropagation(), v = null)
25842 }, !0), document.addEventListener("mouseup", r, !0), document.addEventListener("mousedown", r, !0), document.addEventListener("focus", r, !0), b = !0);
25843 t.element(document).on("mousedown touchstart pointerdown", function(e) {
25845 var t = +Date.now();
25846 h && !s(e, h) && t - h.endTime < 1500 || (f = a(e), i("start", e))
25848 }).on("mousemove touchmove pointermove", function(e) {
25849 f && s(e, f) && (l(e, f), i("move", e))
25850 }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
25851 f && s(e, f) && (l(e, f), f.endTime = +Date.now(), "pointercancel" !== e.type && i("end", e), h = f, f = null)
25852 }).on("$$mdGestureReset", function() {
25860 startTime: +Date.now(),
25862 type: e.type.charAt(0)
25864 return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
25868 return e && t && e.type.charAt(0) === t.type
25872 return v && v.x == e.x && v.y == e.y
25879 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
25883 return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
25887 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))
25889 r.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"], o.$inject = ["$mdGesture", "$$MdGestureHandler"];
25895 t.module("material.core.gestures", []).provider("$mdGesture", n).factory("$$MdGestureHandler", function() {
25896 var n = void 0 !== e.jQuery && t.element === e.jQuery;
25897 return i.prototype = {
25899 dispatchEvent: n ? function(e, n, r) {
25901 var i = new t.element.Event(n);
25902 i.$material = !0, i.pointer = r, i.srcEvent = e, t.extend(i, {
25909 ctrlKey: e.ctrlKey,
25911 shiftKey: e.shiftKey,
25913 }), t.element(r.target).trigger(i)
25914 } : function(t, n, r) {
25917 "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)
25925 start: function(e, n) {
25926 if (!this.state.isRunning) {
25927 var r = this.getNearestParent(e.target),
25928 i = r && r.$mdGesture[this.name] || {};
25931 options: t.extend({}, this.options, i),
25932 registeredParent: r
25933 }, this.onStart(e, n)
25936 move: function(e, t) {
25937 this.state.isRunning && this.onMove(e, t)
25939 end: function(e, t) {
25940 this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
25942 cancel: function(e, t) {
25943 this.onCancel(e, t), this.state = {}
25945 getNearestParent: function(e) {
25946 for (var t = e; t;) {
25947 if ((t.$mdGesture || {})[this.name]) return t;
25952 registerElement: function(e, t) {
25954 delete e[0].$mdGesture[r.name], e.off("$destroy", n), r.onCleanup(e, t || {})
25957 return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", n), r.onSetup(e, t || {}), n
25960 }).run(o), n.prototype = {
25961 skipClickHijack: function() {
25964 setMaxClickDistance: function(e) {
25967 $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
25968 return new r(e, t, n)
25973 t.module("material.core").provider("$$interimElement", function() {
25978 return i[e] = u, r.invoke(t || function() {
25986 show: function(e) {
25987 return (e = e || {})._options && (e = e._options), l.show(t.extend({}, c, e))
25989 destroy: function(e) {
25990 return l.destroy(e)
25993 return s = o.methods || [], c = a(o.optionsFactory, {}), t.forEach(i, function(e, t) {
25995 }), t.forEach(o.presets, function(e, n) {
25997 this._options = t.extend({}, i, e)
25999 var i = a(e.optionsFactory, {}),
26000 o = (e.methods || []).concat(s);
26003 }), t.forEach(o, function(e) {
26004 r.prototype[e] = function(t) {
26005 return this._options[e] = t, this
26008 var c = "show" + n.charAt(0).toUpperCase() + n.slice(1);
26009 u[c] = function(e) {
26014 u[n] = function(n) {
26015 return arguments.length && e.argOption && !t.isObject(n) && !t.isArray(n) ? (new r)[e.argOption](n) : new r(n)
26019 n.$inject = ["$$interimElement", "$injector"];
26020 var r = ["onHide", "onShow", "onRemove"],
26026 setDefaults: function(e) {
26027 return o.optionsFactory = e.options, o.methods = (e.methods || []).concat(r), a
26029 addPreset: function(t, n) {
26030 if (n = n || {}, n.methods = n.methods || [], n.options = n.options || function() {
26032 }, /^cancel|hide|show$/.test(t)) throw new Error("Preset '" + t + "' in " + e + " is reserved!");
26033 if (n.methods.indexOf("_options") > -1) throw new Error("Method '_options' in " + e + " is reserved!");
26034 return o.presets[t] = {
26035 methods: n.methods.concat(r),
26036 optionsFactory: n.options,
26037 argOption: n.argOption
26040 addMethod: function(e, t) {
26045 return a.addPreset("build", {
26046 methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
26050 function r(e, r, i, o, a, s, c, l, u, d, f) {
26051 return function() {
26053 return function() {
26055 return y.length ? e.apply(m, t) : v.length ? v[0].finally(function() {
26056 return e.apply(m, t)
26057 }) : r.when("No interim elements currently showing up.")
26063 return (e.skipCompile ? null : l.compile(e)) || r(function(t) {
26074 t.extend(e.locals, n);
26075 var r = e.link(n.scope);
26076 return n.element = r, n.parent = p(r, n), n.themable && u(r), r
26081 if (!((i = t.isFunction(i) ? i(r.scope, n, r) : t.isString(i) ? t.element(e[0].querySelector(i)) : t.element(i)) || {}).length) {
26083 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)
26090 d.hideDelay && (e = o(m.hide, d.hideDelay), r = function() {
26092 }), d.cancelAutoHide = function() {
26093 r(), d.cancelAutoHide = n
26097 function v(e, n, i) {
26098 var o = n.onShowing || t.noop,
26099 a = n.onComplete || t.noop;
26101 o(n.scope, e, n, i)
26105 return r(function(t, o) {
26107 r.when(n.onShow(n.scope, e, n, i)).then(function() {
26108 a(n.scope, e, n), g(), t(e)
26117 var i = n.onRemoving || t.noop;
26118 return r(function(t, o) {
26120 var a = r.when(n.onRemove(n.scope, e, n) || !0);
26121 i(e, a), n.$destroy ? (t(e), !n.preserveScope && n.scope && a.then(function() {
26123 })) : a.then(function() {
26124 !n.preserveScope && n.scope && n.scope.$destroy(), t(e)
26131 var y, _, $ = r.when(!0);
26132 return d = function(e) {
26133 return (e = e || {}).template && (e.template = c.processTemplate(e.template)), t.extend({
26135 cancelAutoHide: t.noop,
26136 scope: e.scope || i.$new(e.isolateScope),
26137 onShow: function(e, t, n) {
26138 return s.enter(t, n.parent)
26140 onRemove: function(e, t) {
26141 return t && s.leave(t) || r.when()
26146 deferred: r.defer(),
26148 return r(function(e, t) {
26150 y.deferred.reject(e), t(e)
26152 d.onCompiling && d.onCompiling(d), f(d).then(function(t) {
26153 _ = h(t, d), d.cleanupElement = t.cleanup, $ = v(_, d, t.controller).then(e, n)
26157 remove: function(e, n, i) {
26159 y.deferred.resolve(e)
26163 y.deferred.reject(e)
26165 return _ ? ((d = t.extend(d || {}, i || {})).cancelAutoHide && d.cancelAutoHide(), d.element.triggerHandler("$mdInterimElementRemove"), !0 === d.$destroy ? b(d.element, d).then(function() {
26167 }) : (r.when($).finally(function() {
26168 b(d.element, d).then(function() {
26171 }), y.deferred.promise)) : r.when(!1)
26180 show: function(e) {
26181 var t = new p((e = e || {}) || {}),
26182 n = e.multiple ? r.resolve() : r.all(v);
26183 e.multiple || (n = n.then(function() {
26184 var e = b.concat(y.map(m.cancel));
26187 var i = n.then(function() {
26188 return t.show().catch(function(e) {
26190 }).finally(function() {
26191 v.splice(v.indexOf(i), 1), y.push(t)
26194 return v.push(i), t.deferred.promise.catch(function(e) {
26195 return e instanceof Error && f(e), e
26196 }), t.deferred.promise
26198 hide: h(function(e, t) {
26200 var r = n.remove(e, !1, t || {}).catch(function(e) {
26202 }).finally(function() {
26203 b.splice(b.indexOf(r), 1)
26205 return y.splice(y.indexOf(n), 1), b.push(r), n.deferred.promise
26207 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])
26209 cancel: h(function(e, n) {
26211 if (!i) return r.when(e);
26212 var o = i.remove(e, !0, n || {}).catch(function(e) {
26214 }).finally(function() {
26215 b.splice(b.indexOf(o), 1)
26217 return b.push(o), i.deferred.promise.catch(t.noop)
26219 destroy: function(e) {
26220 var n = e ? null : y.shift(),
26221 i = t.element(e).length && t.element(e)[0].parentNode;
26223 var o = y.filter(function(e) {
26224 return e.options.element[0] === i
26226 o.length && (n = o[0], y.splice(y.indexOf(n), 1))
26228 return n ? n.remove(g, !1, {
26236 return r.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = r, e
26241 var e = !!document.querySelector("[md-layouts-disabled]");
26246 return k.enabled = !1, {
26253 return ["$timeout", function(n) {
26257 compile: function(r) {
26258 return k.enabled ? (r.addClass(e), function(t, r) {
26269 function n(t, n, r) {
26271 o = r.$observe(r.$normalize(e), i);
26272 i(f(e, r, "")), t.$on("$destroy", function() {
26276 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
26277 return m = r, g = i, v = o, {
26279 compile: function(r, i) {
26281 return k.enabled && (c(e, i, r, v), l(e, f(e, i, ""), u(r, e, i)), o = n), o || t.noop
26291 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
26292 return m = r, g = i, v = o, {
26294 compile: function(r, i) {
26296 return k.enabled && (l(e, f(e, i, ""), u(r, e, i)), n(0, r), o = n), o || t.noop
26304 return function(i) {
26305 var o = l(n, i || "");
26306 t.isDefined(o) && (r && e.removeClass(r), r = o ? n + "-" + o.trim().replace(y, "-") : n, e.addClass(r))
26311 var n = e.split("-");
26312 return ["$log", function(r) {
26313 return r.warn(e + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), t.noop
26317 function c(e, t, n, r) {
26318 var i, o, a, s = n[0].nodeName.toLowerCase();
26319 switch (e.replace(b, "")) {
26321 "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])))
26325 function l(e, n, r) {
26327 switch (e.replace(b, "")) {
26329 h(n, $) || (n = $[0]);
26332 h(n, _) || isNaN(n) && (n = "");
26334 case "flex-offset":
26336 n && !isNaN(+n) || (n = "0");
26338 case "layout-align":
26340 n = m.supplant("{main}-{cross}", i);
26342 case "layout-padding":
26343 case "layout-margin":
26344 case "layout-fill":
26345 case "layout-wrap":
26346 case "layout-nowrap":
26349 void 0 != n && (r || t.noop)(n)
26351 return n ? n.trim() : ""
26354 function u(e, t, n) {
26355 return function(e) {
26356 d(e) || (n[n.$normalize(t)] = e)
26361 return (e || "").indexOf(g.startSymbol()) > -1
26364 function f(e, t, n) {
26365 var r = t.$normalize(e);
26366 return t[r] ? t[r].trim().replace(y, "-") : n || null
26369 function h(e, t, n) {
26371 return (e = n && e ? e.replace(y, n) : e) && t.forEach(function(t) {
26372 t = n ? t.replace(y, n) : t, r = r || t === e
26381 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
26383 var m, g, v, b = /(-gt)?-(sm|md|lg|print)/g,
26385 _ = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
26386 $ = ["row", "column"],
26387 w = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
26388 E = ["", "start", "center", "end", "stretch"],
26395 return e.replace(d, "").replace(f, function(e, t, n, r) {
26396 return r ? n.toUpperCase() : n
26399 var d = /^((?:x|data)[:\-_])/i,
26400 f = /([:\-_]+(.))/g,
26401 h = ["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"],
26402 p = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
26403 m = ["show", "hide", "layout-padding", "layout-margin"];
26404 t.forEach(h, function(e) {
26405 t.forEach(p, function(t) {
26406 var n = e ? t + "-" + e : t;
26407 a.directive(u(n), i(n))
26408 }), t.forEach(m, function(t) {
26409 var n = e ? t + "-" + e : t;
26410 a.directive(u(n), o(n))
26412 }), a.provider("$$mdLayout", function() {
26415 validateAttributeValue: l,
26416 validateAttributeUsage: c,
26417 disableLayouts: function(e) {
26418 k.enabled = !0 !== e
26421 }).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)
26422 }(t.module("material.core.layout", ["ng"]))
26426 this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
26428 e.$inject = ["$timeout"], t.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
26429 t || (t = "polite");
26431 n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
26432 n._liveElement.textContent = e
26433 }, n._announceTimeout, !1)
26434 }, e.prototype._createLiveElement = function() {
26435 var e = document.createElement("div");
26436 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
26438 }(), t.module("material.core.meta", []).provider("$$mdMeta", function() {
26440 if (r[e]) return !0;
26441 var n = document.getElementsByName(e)[0];
26442 return !!n && (r[e] = t.element(n), !0)
26444 var n = t.element(document.head),
26447 setMeta: function(i, o) {
26448 if (e(i), r[i]) r[i].attr("content", o);
26450 var a = t.element('<meta name="' + i + '" content="' + o + '"/>');
26451 n.append(a), r[i] = a
26453 return function() {
26454 r[i].attr("content", ""), r[i].remove(), delete r[i]
26457 getMeta: function(t) {
26458 if (!e(t)) throw Error("$$mdMeta: could not find a meta tag with the name '" + t + "'");
26459 return r[t].attr("content")
26462 return t.extend({}, i, {
26471 return e && "" !== e
26476 notFoundError: function(t, n) {
26477 e.error((n || "") + "No instance found for handle", t)
26479 getInstances: function() {
26483 if (!i(e)) return null;
26485 for (t = 0, n = a.length; t < n; t++)
26486 if ((r = a[t]).$$mdHandle === e) return r;
26489 register: function(e, n) {
26490 return n ? (e.$$mdHandle = n, a.push(e), function() {
26492 t && (t.forEach(function(t) {
26496 var t = a.indexOf(e); - 1 !== t && a.splice(t, 1)
26499 when: function(e) {
26503 return a ? t.resolve(a) : (s[e] === n && (s[e] = []), s[e].push(t)), t.promise
26505 return r.reject("Invalid `md-component-id` value.")
26509 e.$inject = ["$log", "$q"], t.module("material.core").factory("$mdComponentRegistry", e)
26510 }(), t.module("material.core.theming.palette", []).constant("$mdColorPalette", {
26526 contrastDefaultColor: "light",
26527 contrastDarkColors: "50 100 200 300 A100",
26528 contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
26545 contrastDefaultColor: "light",
26546 contrastDarkColors: "50 100 200 A100",
26547 contrastStrongLightColors: "500 600 A200 A400 A700"
26564 contrastDefaultColor: "light",
26565 contrastDarkColors: "50 100 200 A100",
26566 contrastStrongLightColors: "300 400 A200 A400 A700"
26583 contrastDefaultColor: "light",
26584 contrastDarkColors: "50 100 200 A100",
26585 contrastStrongLightColors: "300 400 A200"
26602 contrastDefaultColor: "light",
26603 contrastDarkColors: "50 100 200 A100",
26604 contrastStrongLightColors: "300 400 A200 A400"
26621 contrastDefaultColor: "light",
26622 contrastDarkColors: "50 100 200 300 400 A100",
26623 contrastStrongLightColors: "500 600 700 A200 A400 A700"
26640 contrastDefaultColor: "dark",
26641 contrastLightColors: "600 700 800 900 A700",
26642 contrastStrongLightColors: "600 700 800 A700"
26659 contrastDefaultColor: "dark",
26660 contrastLightColors: "700 800 900",
26661 contrastStrongLightColors: "700 800 900"
26678 contrastDefaultColor: "dark",
26679 contrastLightColors: "500 600 700 800 900",
26680 contrastStrongLightColors: "500 600 700"
26697 contrastDefaultColor: "dark",
26698 contrastLightColors: "500 600 700 800 900",
26699 contrastStrongLightColors: "500 600 700"
26716 contrastDefaultColor: "dark",
26717 contrastLightColors: "700 800 900",
26718 contrastStrongLightColors: "700 800 900"
26735 contrastDefaultColor: "dark",
26736 contrastLightColors: "900",
26737 contrastStrongLightColors: "900"
26754 contrastDefaultColor: "dark"
26771 contrastDefaultColor: "dark"
26788 contrastDefaultColor: "dark",
26789 contrastLightColors: "800 900",
26790 contrastStrongLightColors: "800 900"
26807 contrastDefaultColor: "light",
26808 contrastDarkColors: "50 100 200 300 400 A100 A200",
26809 contrastStrongLightColors: "500 600 700 800 900 A400 A700"
26826 contrastDefaultColor: "light",
26827 contrastDarkColors: "50 100 200 A100 A200",
26828 contrastStrongLightColors: "300 400"
26845 contrastDefaultColor: "dark",
26846 contrastLightColors: "600 700 800 900 A200 A400 A700"
26863 contrastDefaultColor: "light",
26864 contrastDarkColors: "50 100 200 300 A100 A200",
26865 contrastStrongLightColors: "400 500 700"
26870 var t = !!document.querySelector("[md-themes-disabled]");
26871 e.disableTheming(t)
26876 var n = C.filter(function(e) {
26879 if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
26884 if (h[t]) return h[t];
26885 var r = "string" == typeof(n = n || "default") ? h[n] : n,
26887 return r && e.forEach(r.colors, function(t, n) {
26890 hues: e.extend({}, t.hues)
26897 if ((t = 0 === arguments.length || !!t) !== r.isDark) {
26898 r.isDark = t, r.foregroundPalette = r.isDark ? m : p, r.foregroundShadow = r.isDark ? g : v;
26899 var n = r.isDark ? k : E,
26900 i = r.isDark ? E : k;
26901 return e.forEach(n, function(e, t) {
26902 var n = r.colors[t],
26905 for (var a in n.hues) n.hues[a] === o[a] && (n.hues[a] = e[a])
26910 r.name = t, r.colors = {}, r.dark = n, n(!1), $.forEach(function(t) {
26911 var n = (r.isDark ? k : E)[t];
26912 r[t + "Palette"] = function(i, o) {
26913 var a = r.colors[t] = {
26915 hues: e.extend({}, n, o)
26917 return Object.keys(a.hues).forEach(function(e) {
26918 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(", ")))
26919 }), Object.keys(a.hues).map(function(e) {
26921 }).forEach(function(e) {
26922 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(", ")))
26924 }, r[t + "Color"] = function() {
26925 var e = Array.prototype.slice.call(arguments);
26926 return console.warn("$mdThemingProviderTheme." + t + "Color() has been deprecated. Use $mdThemingProviderTheme." + t + "Palette() instead."), r[t + "Palette"].apply(r, e)
26931 function l(t, r, i, a) {
26933 return e === n || "" === e || l.THEMES[e] !== n
26935 var l = function(e, r) {
26936 r === n && (r = e, e = n), e === n && (e = t), l.inherit(r, r)
26938 return Object.defineProperty(l, "THEMES", {
26940 return e.extend({}, h)
26942 }), Object.defineProperty(l, "PALETTES", {
26944 return e.extend({}, f)
26946 }), Object.defineProperty(l, "ALWAYS_WATCH", {
26950 }), l.inherit = function(e, t) {
26953 s(t) || a.warn("Attempted to use unregistered theme '" + t + "'. Register it with $mdThemingProvider.theme().");
26954 var n = e.data("$mdThemeName");
26955 n && e.removeClass("md-" + n + "-theme"), e.addClass("md-" + t + "-theme"), e.data("$mdThemeName", t), i && e.data("$mdThemeController", i)
26958 var i = t.controller("mdTheme") || e.data("$mdThemeController");
26959 if (n(i && i.$mdTheme || ("default" == y ? "" : y)), i) var o = b || i.$shouldWatch || r.parseAttributeBoolean(e.attr("md-theme-watch")),
26960 c = i.registerChanges(function(t) {
26961 n(t), o ? e.on("$destroy", c) : c()
26963 }, l.registered = s, l.defaultTheme = function() {
26965 }, l.generateTheme = function(e) {
26966 c(h[e], e, x.nonce)
26967 }, l.defineTheme = function(e, t) {
26970 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)
26971 }, l.setBrowserColor = w, l
26973 l.$inject = ["$rootScope", "$mdUtil", "$q", "$log"], f = {};
26978 var _ = function(e) {
26979 var t = r.setMeta("theme-color", e),
26980 n = r.setMeta("msapplication-navbutton-color", e);
26981 return function() {
26986 var n = (t = e.isObject(t) ? t : {}).theme || "default",
26987 r = t.hue || "800",
26988 i = f[t.palette] || f[h[n].colors[t.palette || "primary"].name],
26989 o = e.isObject(i[r]) ? i[r].hex : i[r];
26993 definePalette: function(e, t) {
26994 return t = t || {}, f[e] = i(e, t), u
26996 extendPalette: function(t, n) {
26997 return i(t, e.extend({}, f[t] || {}, n))
27000 configuration: function() {
27001 return e.extend({}, x, {
27003 alwaysWatchTheme: b,
27004 registeredStyles: [].concat(x.registeredStyles)
27007 disableTheming: function(t) {
27008 x.disableTheming = e.isUndefined(t) || !!t
27010 registerStyles: function(e) {
27011 x.registeredStyles.push(e)
27013 setNonce: function(e) {
27016 generateThemesOnDemand: function(e) {
27017 x.generateOnDemand = e
27019 setDefaultTheme: function(e) {
27022 alwaysWatchTheme: function(e) {
27025 enableBrowserColor: w,
27027 _LIGHT_DEFAULT_HUES: E,
27028 _DARK_DEFAULT_HUES: k,
27036 function i(t, n, r, i, o, a) {
27040 pre: function(s, c, l) {
27042 d = n.startSymbol(),
27044 h = l.mdTheme.trim(),
27045 p = h.substr(0, d.length) === d && h.lastIndexOf(f) === h.length - f.length,
27046 m = "::" === l.mdTheme.split(d).join("").split(f).join("").trim().substr(0, "::".length),
27048 registerChanges: function(t, n) {
27049 return n && (t = e.bind(n, t)), u.push(t),
27051 var e = u.indexOf(t);
27052 e > -1 && u.splice(e, 1)
27055 $setTheme: function(e) {
27056 t.registered(e) || a.warn("attempted to use unregistered theme '" + e + "'"), g.$mdTheme = e;
27057 for (var n = u.length; n--;) u[n](e)
27059 $shouldWatch: i.parseAttributeBoolean(c.attr("md-theme-watch")) || t.ALWAYS_WATCH || p && !m
27061 c.data("$mdThemeController", g);
27062 var v = function() {
27063 var e = n(l.mdTheme)(s);
27064 return r(e)(s) || e
27067 if ("string" == typeof t) return g.$setTheme(t);
27068 o.when(e.isFunction(t) ? t() : t).then(function(e) {
27073 var y = s.$watch(v, function(e) {
27074 e && (b(e), g.$shouldWatch || y())
27085 function a(t, n, r) {
27086 l(t, n), r = r.replace(/THEME_NAME/g, t.name);
27087 var i = new RegExp("\\.md-" + t.name + "-theme", "g"),
27088 o = /'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g;
27089 r = r.replace(o, function(e, n, r, i, o) {
27090 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))
27092 var a = new RegExp("('|\")?{{\\s*([a-zA-Z]+)-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
27094 return e.forEach(["default", "hue-1", "hue-2", "hue-3"], function(e) {
27095 var n = r.replace(a, function(n, r, i, o, a) {
27096 var s = t.colors[i];
27097 return d(f[s.name][s.hues[e]]["color" === o ? "value" : "contrast"], a)
27099 if ("default" !== e && (n = n.replace(i, ".md-" + t.name + "-theme.md-" + e)), "default" == t.name) {
27100 var o = /((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g;
27101 n = n.replace(o, function(e, t, n) {
27102 return e + ", " + t + n
27110 var r = document.head,
27111 i = r ? r.firstElementChild : null,
27112 o = !x.disableTheming && t.has("$MD_THEME_CSS") ? t.get("$MD_THEME_CSS") : "";
27113 if (o += x.registeredStyles.join(""), i && 0 !== o.length) {
27114 e.forEach(f, function(t, n) {
27115 var r = t.contrastDefaultColor,
27116 i = t.contrastLightColors || [],
27117 o = t.contrastStrongLightColors || [],
27118 a = t.contrastDarkColors || [];
27119 "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) {
27120 if (!e.isObject(n)) {
27122 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));
27126 contrast: "light" === r ? a.indexOf(s) > -1 ? b : o.indexOf(s) > -1 ? _ : y : i.indexOf(s) > -1 ? o.indexOf(s) > -1 ? _ : y : b
27131 var a = o.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
27132 return e && e.trim().length
27133 }).map(function(e) {
27134 return e.trim() + "}"
27136 $.forEach(function(e) {
27138 }), a.forEach(function(e) {
27139 for (var t, n = 0; t = $[n]; n++)
27140 if (e.indexOf(".md-" + t) > -1) return T[t] += e;
27141 for (n = 0; t = $[n]; n++)
27142 if (e.indexOf(t) > -1) return T[t] += e;
27144 }), x.generateOnDemand || e.forEach(n.THEMES, function(e) {
27145 h[e.name] || "default" !== n.defaultTheme() && "default" === e.name || c(e, e.name, x.nonce)
27150 function c(e, t, n) {
27151 var r = document.head,
27152 i = r ? r.firstElementChild : null;
27153 h[t] || ($.forEach(function(t) {
27154 for (var o = a(e, t, T[t]); o.length;) {
27157 var c = document.createElement("style");
27158 c.setAttribute("md-theme-style", ""), n && c.setAttribute("nonce", n), c.appendChild(document.createTextNode(s)), r.insertBefore(c, i)
27161 }), h[e.name] = !0)
27165 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(", ")))
27169 if (e.isArray(t) && 3 == t.length) return t;
27170 if (/^rgb/.test(t)) return t.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
27171 return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
27173 if ("#" == t.charAt(0) && (t = t.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(t)) {
27174 var n = t.length / 3,
27175 r = t.substr(0, n),
27176 i = t.substr(n, n),
27177 o = t.substr(2 * n);
27178 return 1 === n && (r += r, i += i, o += o), [parseInt(r, 16), parseInt(i, 16), parseInt(o, 16)]
27183 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')"
27185 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() {
27186 return x.disableTheming = !0, {
27190 }).provider("$mdTheming", r).config(t).run(s);
27194 1: "rgba(0,0,0,0.87)",
27195 2: "rgba(0,0,0,0.54)",
27196 3: "rgba(0,0,0,0.38)",
27197 4: "rgba(0,0,0,0.12)"
27201 1: "rgba(255,255,255,1.0)",
27202 2: "rgba(255,255,255,0.7)",
27203 3: "rgba(255,255,255,0.5)",
27204 4: "rgba(255,255,255,0.12)"
27206 g = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
27208 b = u("rgba(0,0,0,0.87)"),
27209 y = u("rgba(255,255,255,0.87)"),
27210 _ = u("rgb(255,255,255)"),
27211 $ = ["primary", "accent", "warn", "background"],
27235 $.forEach(function(e) {
27242 E[e] || (E[e] = t), k[e] || (k[e] = t)
27244 var C = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
27246 disableTheming: !1,
27247 generateOnDemand: !1,
27248 registeredStyles: [],
27256 return e.hasClass("md-icon-button") ? {
27257 isMenuItem: e.hasClass("md-menu-item"),
27261 isMenuItem: e.hasClass("md-menu-item"),
27266 attach: function(r, i, o) {
27267 return o = t.extend(n(i), o), e.attach(r, i, o)
27271 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdButtonInkRipple", e)
27276 attach: function(n, r, i) {
27277 return e.attach(n, r, t.extend({
27285 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdCheckboxInkRipple", e)
27290 attach: function(n, r, i) {
27291 return e.attach(n, r, t.extend({
27300 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdListInkRipple", e)
27305 controller: t.noop,
27306 link: function(t, r, i) {
27307 i.hasOwnProperty("mdInkRippleCheckbox") ? n.attach(t, r) : e.attach(t, r)
27312 function n(e, n, r, i, o, a, s) {
27313 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()
27317 (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(t.bind(e, n), !1))
27325 n.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], t.module("material.core").provider("$mdInkRipple", function() {
27328 disableInkRipple: function() {
27331 $get: ["$injector", function(r) {
27333 attach: function(i, o, a) {
27334 return e || o.controller("mdNoInk") ? t.noop : r.instantiate(n, {
27343 }).directive("mdInkRipple", e).directive("mdNoInk", i).directive("mdNoBar", i).directive("mdNoStretch", i);
27344 n.prototype.color = function(e) {
27346 return t.isDefined(e) && (n._color = n._parseColor(e)), n._color || n._parseColor(n.inkRipple()) || n._parseColor(function() {
27347 var e = n.options && n.options.colorElement ? n.options.colorElement : [],
27348 t = e.length ? e[0] : n.$element[0];
27349 return t ? n.$window.getComputedStyle(t).color : "rgb(0,0,0)"
27351 }, n.prototype.calculateColor = function() {
27352 return this.color()
27353 }, n.prototype._parseColor = function(e, t) {
27355 var n = this.$mdColorUtil;
27356 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
27357 }, n.prototype.bindEvents = function() {
27358 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))
27359 }, n.prototype.handleMousedown = function(e) {
27360 if (!this.mousedown)
27361 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);
27362 else if (e.srcElement !== this.$element[0]) {
27363 var t = this.$element[0].getBoundingClientRect(),
27364 n = e.clientX - t.left,
27365 r = e.clientY - t.top;
27366 this.createRipple(n, r)
27367 } else this.createRipple(e.offsetX, e.offsetY)
27368 }, n.prototype.handleMouseup = function() {
27369 r(this, this.clearRipples)
27370 }, n.prototype.handleTouchmove = function() {
27371 r(this, this.deleteRipples)
27372 }, n.prototype.deleteRipples = function() {
27373 for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
27374 }, n.prototype.clearRipples = function() {
27375 for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
27376 }, n.prototype.createContainer = function() {
27377 var e = t.element('<div class="md-ripple-container"></div>');
27378 return this.$element.append(e), e
27379 }, n.prototype.clearTimeout = function() {
27380 this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
27381 }, n.prototype.isRippleAllowed = function() {
27382 var e = this.$element[0];
27384 if (!e.tagName || "BODY" === e.tagName) break;
27385 if (e && t.isFunction(e.hasAttribute)) {
27386 if (e.hasAttribute("disabled")) return !1;
27387 if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
27389 } while (e = e.parentNode);
27391 }, n.prototype.inkRipple = function() {
27392 return this.$element.attr("md-ink-ripple")
27393 }, n.prototype.createRipple = function(e, n) {
27394 if (this.isRippleAllowed()) {
27396 i = r.$mdColorUtil,
27397 o = t.element('<div class="md-ripple"></div>'),
27398 a = this.$element.prop("clientWidth"),
27399 s = this.$element.prop("clientHeight"),
27400 c = 2 * Math.max(Math.abs(a - e), e),
27401 l = 2 * Math.max(Math.abs(s - n), n),
27402 u = function(e, t, n) {
27403 return e ? Math.max(t, n) : Math.sqrt(Math.pow(t, 2) + Math.pow(n, 2))
27404 }(this.options.fitRipple, c, l),
27405 d = this.calculateColor();
27409 background: "black",
27412 backgroundColor: i.rgbaToRgb(d),
27413 borderColor: i.rgbaToRgb(d)
27414 }), this.lastRipple = o, this.clearTimeout(), this.timeout = this.$timeout(function() {
27415 r.clearTimeout(), r.mousedown || r.fadeInComplete(o)
27416 }, 157.5, !1), this.options.dimBackground && this.container.css({
27418 }), this.container.append(o), this.ripples.push(o), o.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
27419 o.addClass("md-ripple-scaled md-ripple-active"), r.$timeout(function() {
27424 }, n.prototype.fadeInComplete = function(e) {
27425 this.lastRipple === e ? this.timeout || this.mousedown || this.removeRipple(e) : this.removeRipple(e)
27426 }, n.prototype.removeRipple = function(e) {
27428 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({
27429 backgroundColor: ""
27430 }), this.$timeout(function() {
27431 t.fadeOutComplete(e)
27433 }, n.prototype.fadeOutComplete = function(e) {
27434 e.remove(), this.lastRipple = null
27440 attach: function(n, r, i) {
27441 return e.attach(n, r, t.extend({
27450 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdTabInkRipple", e)
27453 function n(n, r, i, o, a) {
27456 translate3d: function(e, t, n, r) {
27460 addClass: r.transitionOutClass,
27461 removeClass: r.transitionInClass,
27462 duration: r.duration
27468 addClass: r.transitionInClass,
27469 removeClass: r.transitionOutClass,
27470 duration: r.duration
27471 }).start().then(function() {
27475 waitTransitionEnd: function(t, n) {
27477 return r(function(r, s) {
27479 e && e.target !== t[0] || (e && i.cancel(l), t.off(o.CSS.TRANSITIONEND, c), r())
27481 return "0s" == (n = n || e.getComputedStyle(t[0])).transitionDuration || !n.transition && !n.transitionProperty
27482 })((n = n || {}).cachedTransitionStyles) && (a = 0);
27483 var l = i(c, n.timeout || a);
27484 t.on(o.CSS.TRANSITIONEND, c)
27487 calculateTransformValues: function(e, t) {
27491 var i = n ? s.clientRect(n) || function() {
27492 var t = e ? e.parent() : null,
27493 n = t ? t.parent() : null;
27494 return n ? s.clientRect(n) : null
27495 }() : s.copyRect(r),
27496 o = s.copyRect(e[0].getBoundingClientRect()),
27497 a = s.centerPointFor(o),
27498 c = s.centerPointFor(i);
27500 centerX: c.x - a.x,
27501 centerY: c.y - a.y,
27502 scaleX: Math.round(100 * Math.min(.5, i.width / o.width)) / 100,
27503 scaleY: Math.round(100 * Math.min(.5, i.height / o.height)) / 100
27513 calculateZoomToOrigin: function(e, r) {
27514 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )")(s.calculateTransformValues(e, r))
27516 calculateSlideToOrigin: function(e, r) {
27517 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 )")(s.calculateTransformValues(e, r))
27519 toCss: function(e) {
27520 function n(e, n, i) {
27521 t.forEach(n.split(" "), function(e) {
27526 return t.forEach(e, function(e, i) {
27527 if (!t.isUndefined(e))
27528 if ("left top right bottom width height x y min-width min-height max-width max-height".indexOf(i) >= 0) r[i] = e + "px";
27531 n(0, o.CSS.TRANSITION, e);
27534 n(0, o.CSS.TRANSFORM, e);
27536 case "transformOrigin":
27537 n(0, o.CSS.TRANSFORM_ORIGIN, e);
27544 toTransformCss: function(e, n, r) {
27546 return t.forEach(o.CSS.TRANSFORM.split(" "), function(t) {
27548 }), n && (r = r || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", i.transition = r), i
27550 copyRect: function(e, n) {
27551 return e ? (n = n || {}, t.forEach("left top right bottom width height".split(" "), function(t) {
27552 n[t] = Math.round(e[t])
27553 }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
27555 clientRect: function(e) {
27556 var n = t.element(e)[0].getBoundingClientRect();
27557 return function(e) {
27558 return e && e.width > 0 && e.height > 0
27559 }(n) ? s.copyRect(n) : null
27561 centerPointFor: function(e) {
27563 x: Math.round(e.left + e.width / 2),
27564 y: Math.round(e.top + e.height / 2)
27572 t.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(e, t, r, i) {
27573 return function(o) {
27574 return n(o, e, t, r, i)
27577 }(), t.version.minor >= 4 ? t.module("material.core.animate", []) : function() {
27579 return e.replace(/-[a-z]/g, function(e) {
27580 return e.charAt(1).toUpperCase()
27584 r = t.isDefined(document.documentElement.style.WebkitAppearance),
27585 i = r ? "-webkit-" : "",
27586 o = (r ? "webkitTransitionEnd " : "") + "transitionend",
27587 a = (r ? "webkitAnimationEnd " : "") + "animationend",
27588 s = ["$document", function(e) {
27589 return function() {
27590 return e[0].body.clientWidth + 1
27593 c = ["$$rAF", function(e) {
27594 return function() {
27596 return e(function() {
27604 l = ["$q", "$$rAFMutex", function(e, r) {
27606 this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = r(), this._state = 0
27608 return i.prototype = {
27609 setHost: function(e) {
27610 this.host = e || {}
27612 done: function(e) {
27613 2 === this._state ? e() : this._doneCallbacks.push(e)
27616 getPromise: function() {
27617 if (!this.promise) {
27619 this.promise = e(function(e, n) {
27620 t.done(function(t) {
27621 !1 === t ? n() : e()
27625 return this.promise
27627 then: function(e, t) {
27628 return this.getPromise().then(e, t)
27630 catch: function(e) {
27631 return this.getPromise().catch(e)
27633 finally: function(e) {
27634 return this.getPromise().finally(e)
27636 pause: function() {
27637 this.host.pause && this.host.pause()
27639 resume: function() {
27640 this.host.resume && this.host.resume()
27643 this.host.end && this.host.end(), this._resolve(!0)
27645 cancel: function() {
27646 this.host.cancel && this.host.cancel(), this._resolve(!1)
27648 complete: function(e) {
27650 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
27654 _resolve: function(e) {
27655 2 !== this._state && (n(this._doneCallbacks, function(t) {
27657 }), this._doneCallbacks.length = 0, this._state = 2)
27659 }, i.all = function(e, t) {
27661 o = o && n, ++i === e.length && t(o)
27670 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) {
27672 t.addClass && (u.addClass(e, t.addClass), t.addClass = null), t.removeClass && (u.removeClass(e, t.removeClass), t.removeClass = null)
27677 return r ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
27680 o = t.getComputedStyle(i),
27681 a = m(o[n("transitionDuration")]),
27682 s = m(o[n("animationDuration")]),
27683 c = m(o[n("transitionDelay")]),
27684 l = m(o[n("animationDelay")]);
27685 return s *= parseInt(o[n("animationIterationCount")], 10) || 1, {
27686 duration: Math.max(s, a),
27687 delay: Math.max(l, c),
27688 animationDuration: s,
27689 transitionDuration: a,
27697 r = (e || "").split(/\s*,\s*/);
27698 return n(r, function(e) {
27699 "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
27704 w && w(), E.push(e), w = s(function() {
27706 for (var e = l(), t = 0; t < E.length; t++) E[t](e);
27716 t.from && (e.css(t.from), t.from = null)
27720 t.to && (e.css(t.to), t.to = null)
27724 for (var t = 0; t < e.length; t++)
27725 if (1 === e[t].nodeType) return e[t]
27730 o = e(i + "transition-delay");
27731 r.style[o] = n ? "-9999s" : ""
27734 return function(r, s) {
27737 m = u && f.enabled(),
27740 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));
27741 var k = m && (w || E);
27746 start: function() {
27748 if (!T) return T = !0, C && x && r.off(C, x), h(r, s), v(r, s), n(l, function(t) {
27749 u.style[e(t[0])] = ""
27750 }), f.complete(!0), f
27753 return g(function() {
27754 if ($(r, !1), !k) return t();
27761 if (0 === c.duration) return t();
27763 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) {
27766 u.style[e(n)] = r, l.push(t)
27768 var m = 1e3 * c.delay,
27772 C = [], c.transitionDuration && C.push(o), c.animationDuration && C.push(a), C = C.join(" "), x = function(e) {
27773 e.stopPropagation();
27774 var n = e.originalEvent || e,
27775 r = n.timeStamp || Date.now(),
27776 i = parseFloat(n.elapsedTime.toFixed(3));
27777 Math.max(r - b, 0) >= m && i >= g && t()
27778 }, r.on(C, x), y(r, s), d(t, m + 1.5 * v, !1)
27784 }(), t.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
27789 link: function(t, n) {
27790 n.addClass("_md"), t.$on("$destroy", function() {
27798 function n(e, n, o, a, s, c, l, u) {
27801 e.css(n.CSS.TRANSITION_DURATION, "0ms")
27805 var r = t.pointer.distanceY;
27806 r < 5 && (r = Math.max(-i, r / 2)), e.css(n.CSS.TRANSFORM, "translate3d(0," + (i + r) + "px,0)")
27810 if (t.pointer.distanceY > 0 && (t.pointer.distanceY > 20 || Math.abs(t.pointer.velocityY) > r)) {
27811 var i = e.prop("offsetHeight") - t.pointer.distanceY,
27812 a = Math.min(i / t.pointer.velocityY * .75, 500);
27813 e.css(n.CSS.TRANSITION_DURATION, a + "ms"), o.nextTick(s.cancel, !0)
27814 } else e.css(n.CSS.TRANSITION_DURATION, ""), e.css(n.CSS.TRANSFORM, "")
27816 var d = l.register(t, "drag", {
27819 return t.on("$md.dragstart", a).on("$md.drag", c).on("$md.dragend", u), {
27821 cleanup: function() {
27822 d(), t.off("$md.dragstart", a), t.off("$md.drag", c), t.off("$md.dragend", u)
27829 onShow: function(r, i, l, h) {
27830 (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]);
27831 l.disableBackdrop || ((f = o.createBackdrop(r, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, l.clickOutsideToClose && f.on("click", function() {
27832 o.nextTick(s.cancel, !0)
27833 }), a.inherit(f, l.parent), e.enter(f, l.parent, null));
27834 var p = new d(i, l.parent);
27835 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() {
27836 var e = o.findFocusTarget(i) || t.element(i[0].querySelector("button") || i[0].querySelector("a") || i[0].querySelector(o.prefixer("ng-click", !0))) || f;
27837 l.escapeToClose && (l.rootElementKeyupCallback = function(e) {
27838 e.keyCode === n.KEY_CODE.ESCAPE && o.nextTick(s.cancel, !0)
27839 }, c.on("keyup", l.rootElementKeyupCallback), e && e.focus())
27842 onRemove: function(t, n, r) {
27843 var i = r.bottomSheet;
27844 return r.disableBackdrop || e.leave(f), e.leave(i.element).then(function() {
27845 r.disableParentScroll && (r.restoreScroll(), delete r.restoreScroll), i.cleanup()
27848 disableBackdrop: !1,
27850 clickOutsideToClose: !0,
27851 disableParentScroll: !0
27854 n.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
27857 return e("$mdBottomSheet").setDefaults({
27858 methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
27862 e.$inject = ["$mdBottomSheet"], n.$inject = ["$$interimElementProvider"], t.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", n)
27863 }(), 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) {
27864 var l = "<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";
27867 link: function(u, d, f) {
27869 var e = parseInt(p.height, 10) + Math.abs(parseInt(p.top, 10));
27870 d.css("height", e + "px")
27872 r.pin && r.pin(d, i);
27875 if ("fixed" === (p = o.getComputedStyle(c[0].body)).position) {
27876 var r = n.debounce(function() {
27877 p = o.getComputedStyle(c[0].body), h()
27879 h(), t.element(o).on("resize", r), u.$on("$destroy", function() {
27880 t.element(o).off("resize", r)
27883 var i = d.parent();
27884 i.length && ("BODY" === i[0].nodeName && d.css("position", "fixed"), "static" === o.getComputedStyle(i[0]).position && a.warn(l), e.inherit(d, i))
27893 link: function(t, n) {
27899 function n(e, n, r, i) {
27901 return t.isDefined(e.href) || t.isDefined(e.ngHref) || t.isDefined(e.ngLink) || t.isDefined(e.uiSref)
27907 template: function(e, t) {
27908 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>'
27910 link: function(a, s, c) {
27911 n(s), e.attach(a, s), r.expectWithoutText(s, "aria-label"), o(c) && t.isDefined(c.ngDisabled) && a.$watch(c.ngDisabled, function(e) {
27912 s.attr("tabindex", e ? -1 : 0)
27913 }), s.on("click", function(e) {
27914 !0 === c.disabled && (e.preventDefault(), e.stopImmediatePropagation())
27915 }), s.hasClass("md-no-focus") || (s.on("focus", function() {
27916 i.isUserInvoked() && "keyboard" !== i.getLastInteractionType() || s.addClass("md-focused")
27917 }), s.on("blur", function() {
27918 s.removeClass("md-focused")
27923 n.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], t.module("material.components.button", ["material.core"]).directive("mdButton", n).directive("a", e)
27929 link: function(t, n, r) {
27930 n.addClass("_md"), e(n)
27934 e.$inject = ["$mdTheming"], t.module("material.components.card", ["material.core"]).directive("mdCard", e)
27937 function e(e, n, r, i, o, a) {
27941 require: ["^?mdInputContainer", "?ngModel", "?^form"],
27942 priority: r.BEFORE_NG_ARIA,
27943 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>',
27944 compile: function(s, c) {
27945 return c.$set("tabindex", c.tabindex || "0"), c.$set("type", "checkbox"), c.$set("role", c.type), {
27946 pre: function(e, t) {
27947 t.on("click", function(e) {
27948 this.hasAttribute("disabled") && e.stopImmediatePropagation()
27951 post: function(s, c, l, u) {
27953 c[0].hasAttribute("disabled") || s.skipToggle || s.$apply(function() {
27954 var t = l.ngChecked && l.ngClick ? l.checked : !m.$viewValue;
27955 m.$setViewValue(t, e && e.type), m.$render()
27960 (h = !1 !== e) && c.attr("aria-checked", "mixed"), c.toggleClass("md-indeterminate", h)
27963 m = u[1] || o.fakeNgModel(),
27966 var v = p.isErrorGetter || function() {
27967 return m.$invalid && (m.$touched || g && g.$submitted)
27969 p.input = c, s.$watch(v, p.setInvalid)
27971 i(c), c.children().on("focus", function() {
27973 }), o.parseAttributeBoolean(l.mdIndeterminate) && (f(), s.$watch(l.mdIndeterminate, f)), l.ngChecked && s.$watch(s.$eval.bind(s, l.ngChecked), function(e) {
27974 m.$setViewValue(e), m.$render()
27976 function(e, t, n) {
27977 l[e] && s.$watch(l[e], function(e) {
27978 n[e] && c.attr(t, n[e])
27980 }("ngDisabled", "tabindex", {
27983 }), n.expectWithText(c, "aria-label"), e.link.pre(s, {
27986 }, l, [m]), c.on("click", d).on("keypress", function(e) {
27987 var t = e.which || e.keyCode;
27988 t !== r.KEY_CODE.SPACE && t !== r.KEY_CODE.ENTER || (e.preventDefault(), c.addClass("md-focused"), d(e))
27989 }).on("focus", function() {
27990 "keyboard" === a.getLastInteractionType() && c.addClass("md-focused")
27991 }).on("blur", function() {
27992 c.removeClass("md-focused")
27993 }), m.$render = function() {
27994 c.toggleClass("md-checked", !!m.$viewValue && !h)
28001 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], t.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
28002 }(), t.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
28004 function e(e, n, r) {
28007 var i = e.PALETTES[t.palette][t.hue];
28008 return i = r ? i.contrast : i.value, n.supplant("rgba({0}, {1}, {2}, {3})", [i[0], i[1], i[2], i[3] || t.opacity])
28013 r = e.hasOwnProperty("color");
28014 return t.forEach(e, function(e, t) {
28016 a = t.indexOf("background") > -1;
28017 n[t] = o(i), a && !r && (n.color = o(i, !0))
28022 var r = n.split("-"),
28023 i = t.isDefined(e.THEMES[r[0]]) ? r.splice(0, 1)[0] : e.defaultTheme();
28033 var o = t.length > 1 && -1 !== i.indexOf(t[1]),
28034 a = t[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
28035 if (o && (a = t[0] + "-" + t.splice(1, 1)), -1 === i.indexOf(a)) {
28036 var s = e.THEMES[r].colors[a];
28037 if (!s) throw new Error(n.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
28046 var i = e.THEMES[r].colors;
28047 if ("hue" === t[1]) {
28048 var o = parseInt(t.splice(2, 1)[0], 10);
28049 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'", {
28052 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}'", {
28053 availableThemes: Object.keys(i).join(", "),
28056 return i[t[0]].hues[t[1]]
28058 return t[1] || i[t[0] in i ? t[0] : "primary"].hues.default
28060 return i = i || Object.keys(e.PALETTES), {
28061 applyThemeColors: function(e, t) {
28068 getThemeColor: function(e) {
28071 hasTheme: function(n) {
28072 return t.isDefined(e.THEMES[n.split("-")[0]])
28077 function n(e, n, i, o) {
28080 require: ["^?mdTheme"],
28081 compile: function(a, s) {
28082 var c = function() {
28083 var e = s.mdColors,
28084 i = e.indexOf("::") > -1,
28085 o = !!i || r.test(s.mdColors);
28086 s.mdColors = e.replace("::", "");
28087 var a = t.isDefined(s.mdColorsWatch);
28088 return !i && !o && (!a || n.parseAttributeBoolean(s.mdColorsWatch))
28090 return function(n, r, a, s) {
28094 "string" != typeof t && (t = ""), a.mdColors || (a.mdColors = "{}");
28095 var r = o(a.mdColors)(n);
28096 return l && Object.keys(r).forEach(function(n) {
28098 e.hasTheme(i) || (r[n] = (t || l.$mdTheme) + "-" + i)
28102 if (!t.equals(e, u)) {
28103 var n = Object.keys(u);
28104 u.background && !n.color && n.push("color"), n.forEach(function(e) {
28111 l && (h = l.registerChanges(function(t) {
28112 e.applyThemeColors(r, d(t))
28113 })), n.$on("$destroy", function() {
28117 c ? n.$watch(d, t.bind(this, e.applyThemeColors, r), !0) : e.applyThemeColors(r, d())
28125 n.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
28126 var r = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
28128 t.module("material.components.colors", ["material.core"]).directive("mdColors", n).service("$mdColors", e)
28134 controller: ["$scope", "$element", function(e, t) {
28135 this.$scope = e, this.$element = t
28137 link: function(t, r) {
28138 r.addClass("_md"), e(r), t.$broadcast("$mdContentLoaded", r), n(r[0])
28144 t.element(e).on("$md.pressdown", function(t) {
28145 "t" === t.pointer.type && (t.$materialScrollFixed || (t.$materialScrollFixed = !0, 0 === e.scrollTop ? e.scrollTop = 1 : e.scrollHeight === e.scrollTop + e.offsetHeight && (e.scrollTop -= 1)))
28148 e.$inject = ["$mdTheming"], t.module("material.components.content", ["material.core"]).directive("mdContent", e)
28149 }(), t.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
28151 function e(e, n, r) {
28154 link: function(i, o) {
28155 o.addClass("_md"), n(o), e(function() {
28157 o.toggleClass("md-content-overflow", a.scrollHeight > a.clientHeight)
28159 var n, a = o[0].querySelector("md-dialog-content");
28160 a && (n = a.getElementsByTagName("img"), e(), t.element(n).on("load", e)), i.$on("$destroy", function() {
28171 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, ""),
28173 controllerAs: "dialog",
28174 bindToController: !0
28179 this.$onInit = function() {
28180 var n = "prompt" == this.$type;
28181 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
28182 e.hide(!n || this.result)
28183 }, this.abort = function() {
28185 }, this.keypress = function(n) {
28186 n.keyCode === t.KEY_CODE.ENTER && e.hide(this.result)
28191 function o(e, r, i, o, c, l, u, d, f, h, p, m, g) {
28194 e.targetEvent && e.targetEvent.target && (n = t.element(e.targetEvent.target));
28195 var r = n && n.controller("mdTheme");
28197 e.themeWatch = r.$shouldWatch;
28198 var i = e.theme || r.$mdTheme;
28199 i && (e.scope.theme = i);
28200 var o = r.registerChanges(function(t) {
28201 e.scope.theme = t, e.themeWatch || o()
28208 var i = t.element(e || {});
28209 if (i && i.length) {
28216 a = t.isFunction(i[0].getBoundingClientRect);
28217 return t.extend(r || {}, {
28218 element: a ? i : n,
28219 bounds: a ? i[0].getBoundingClientRect() : t.extend({}, o, i[0]),
28220 focus: t.bind(i, i.focus)
28226 return t.isString(e) && (e = l[0].querySelector(e)), t.element(e || n)
28228 e.origin = t.extend({
28232 }, 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())
28236 var a = t.element(u),
28237 s = i.debounce(function() {
28242 var t = "alert" == r.$type ? e.hide : e.cancel;
28245 if (r.escapeToClose) {
28248 e.keyCode === o.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), l())
28250 n.on("keydown", f), d.on("keydown", f), c.push(function() {
28251 n.off("keydown", f), d.off("keydown", f)
28254 if (a.on("resize", s), c.push(function() {
28256 }), r.clickOutsideToClose) {
28262 h === p[0] && e.target === p[0] && (e.stopPropagation(), e.preventDefault(), l())
28264 p.on("mousedown", m), p.on("mouseup", g), c.push(function() {
28265 p.off("mousedown", m), p.off("mouseup", g)
28268 r.deactivateListeners = function() {
28269 c.forEach(function(e) {
28271 }), r.deactivateListeners = null
28275 function _(e, t, n) {
28276 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) {
28277 n.backdrop && (e ? n.backdrop.remove() : c.leave(n.backdrop)), n.disableParentScroll && (n.restoreScroll && n.restoreScroll(), delete n.restoreScroll), n.hideBackdrop = null
28282 var n = "alert" === t.$type ? "alertdialog" : "dialog",
28283 o = e.find("md-dialog-content"),
28285 l = "dialogContent_" + (c || i.nextUid());
28289 }), 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() {
28290 if (t.title) return t.title;
28291 var e = o.text().split(/\s+/);
28292 return e.length > 3 && (e = e.slice(0, 3).concat("...")), e.join(" ")
28293 }), (a = document.createElement("div")).classList.add("md-dialog-focus-trap"), a.tabIndex = 0, s = a.cloneNode(!1);
28294 var u = function() {
28297 a.addEventListener("focus", u), s.addEventListener("focus", u), e[0].parentNode.insertBefore(a, e[0]), e.after(s)
28302 for (; e.parentNode;) {
28303 if (e === document.body) return;
28304 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);
28305 n(e = e.parentNode)
28309 n(e[0]), t.unlockScreenReader = function() {
28310 r = !1, n(e[0]), t.unlockScreenReader = null
28315 var n = "fixed" == u.getComputedStyle(l[0].body).position,
28316 r = t.backdrop ? u.getComputedStyle(t.backdrop[0]) : null,
28317 i = r ? Math.min(l[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
28320 height: e.css("height")
28322 a = Math.abs(t.parent[0].getBoundingClientRect().top);
28324 top: (n ? a : 0) + "px",
28325 height: i ? i + "px" : "100%"
28333 t.parent.append(e), t.reverseContainerStretch = E(e, t);
28334 var n = e.find("md-dialog"),
28335 r = i.dom.animator,
28336 o = r.calculateZoomToOrigin,
28338 transitionInClass: "md-transition-in",
28339 transitionOutClass: "md-transition-out"
28341 s = r.toTransformCss(o(n, t.openFrom || t.origin)),
28342 c = r.toTransformCss("");
28343 return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, s, c, a).then(function(e) {
28344 return t.reverseAnimate = function() {
28345 return delete t.reverseAnimate, t.closeTo ? (a = {
28346 transitionInClass: "md-transition-out",
28347 transitionOutClass: "md-transition-in"
28348 }, s = c, c = r.toTransformCss(o(n, t.closeTo)), r.translate3d(n, s, c, a)) : e(c = r.toTransformCss(o(n, t.origin)))
28349 }, t.clearAnimate = function() {
28350 return delete t.clearAnimate, n.removeClass([a.transitionOutClass, a.transitionInClass].join(" ")), r.translate3d(n, c, r.toTransformCss(""), {})
28356 return t.reverseAnimate().then(function() {
28357 t.contentElement && t.clearAnimate()
28362 if (-1 !== t.indexOf(e.nodeName)) return !0
28367 onCompiling: function(e) {
28368 e.defaultTheme = p.defaultTheme(), v(e)
28370 onShow: function(e, n, r, o) {
28372 n[0].querySelector(".md-actions") && f.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>.")
28376 r.focusOnOpen && (i.findFocusTarget(n) || n[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || c).focus()
28378 t.element(l[0].body).addClass("md-dialog-is-showing");
28379 var c = n.find("md-dialog");
28380 c.hasClass("ng-cloak") && f.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", n[0]);
28381 return b(r), $(c, r), _(e, n, r), y(n, r), k(n, r).then(function() {
28385 onShowing: function(e, t, n, r) {
28387 var i = r.htmlContent || n.htmlContent || "",
28388 o = r.textContent || n.textContent || r.content || n.content || "";
28389 if (i && !h.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
28390 if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
28391 r.mdHtmlContent = i, r.mdTextContent = o
28394 onRemove: function(e, n, r) {
28396 t.element(l[0].body).removeClass("md-dialog-is-showing"), r.contentElement && r.reverseContainerStretch(), r.cleanupElement(), r.$destroy || "keyboard" !== r.originInteraction || r.origin.focus()
28398 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)
28400 clickOutsideToClose: !1,
28406 disableParentScroll: !0,
28409 transformTemplate: function(e, t) {
28410 var n = m.startSymbol(),
28412 return '<div class="md-dialog-container" tabindex="-1" md-theme="' + (n + (t.themeWatch ? "" : "::") + "theme" + r) + '">' + function(e) {
28413 return t.autoWrap && !/<\/md-dialog>/g.test(e) ? "<md-dialog>" + (e || "") + "</md-dialog>" : e || ""
28418 i.$inject = ["$mdDialog", "$mdConstant"], o.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"];
28420 return e("$mdDialog").setDefaults({
28421 methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
28423 }).addPreset("alert", {
28424 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
28426 }).addPreset("confirm", {
28427 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
28429 }).addPreset("prompt", {
28430 methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css", "required"],
28434 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], r.$inject = ["$$interimElementProvider"], t.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", r)
28443 e.$inject = ["$mdTheming"], t.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
28449 require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
28450 compile: function(t, n) {
28451 var r = t.children();
28452 e.prefixer().hasAttribute(r, "ng-repeat") ? r.addClass("md-fab-action-item") : r.wrap('<div class="md-fab-action-item">')
28456 e.$inject = ["$mdUtil"], t.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
28459 function e(e, n, r, i, o, a) {
28461 S.direction = S.direction || "down", S.isOpen = S.isOpen || !1, u(), n.addClass("md-animations-waiting")
28465 var r = ["click", "focusin", "focusout"];
28466 t.forEach(r, function(e) {
28468 }), e.$on("$destroy", function() {
28469 t.forEach(r, function(e) {
28476 "click" == e.type && T(e), "focusout" != e.type || D || (D = a(function() {
28478 }, 100, !1)), "focusin" == e.type && D && (a.cancel(D), D = null)
28482 S.currentActionIndex = -1
28486 e.$watch("vm.direction", function(e, t) {
28487 r.removeClass(n, "md-" + t), r.addClass(n, "md-" + e), u()
28490 e.$watch("vm.isOpen", function(e) {
28491 u(), t && i || (t = M(), i = A()), e ? h() : p();
28492 var o = e ? "md-is-open" : "",
28493 a = e ? "" : "md-is-open";
28494 t.attr("aria-haspopup", !0), t.attr("aria-expanded", e), i.attr("aria-hidden", !e), r.setClass(n, o, a)
28499 n[0].scrollHeight > 0 ? r.addClass(n, "_md-animations-ready").then(function() {
28500 n.removeClass("md-animations-waiting")
28501 }) : O < 10 && (a(f, 100), O += 1)
28505 n.on("keydown", g), i.nextTick(function() {
28506 t.element(document).on("click touchend", m)
28511 n.off("keydown", g), t.element(document).off("click touchend", m)
28516 var t = i.getClosest(e.target, "md-fab-trigger"),
28517 n = i.getClosest(e.target, "md-fab-actions");
28518 t || n || S.close()
28524 case o.KEY_CODE.ESCAPE:
28525 return S.close(), e.preventDefault(), !1;
28526 case o.KEY_CODE.LEFT_ARROW:
28528 case o.KEY_CODE.UP_ARROW:
28530 case o.KEY_CODE.RIGHT_ARROW:
28532 case o.KEY_CODE.DOWN_ARROW:
28547 S.currentActionIndex = S.currentActionIndex + n, S.currentActionIndex = Math.min(r.length - 1, S.currentActionIndex), S.currentActionIndex = Math.max(0, S.currentActionIndex);
28548 var i = t.element(r[S.currentActionIndex]).children()[0];
28549 t.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
28553 var e = A()[0].querySelectorAll(".md-fab-action-item");
28554 return t.forEach(e, function(e) {
28555 t.element(t.element(e).children()[0]).attr("tabindex", -1)
28560 "left" === S.direction ? b(e) : v(e)
28564 "down" === S.direction ? v(e) : b(e)
28568 "left" === S.direction ? v(e) : b(e)
28572 "up" === S.direction ? v(e) : b(e)
28576 return i.getClosest(e, "md-fab-trigger")
28580 return i.getClosest(e, "md-fab-actions")
28584 C(e.target) && S.toggle(), x(e.target) && S.close()
28588 return n.find("md-fab-trigger")
28592 return n.find("md-fab-actions")
28596 S.open = function() {
28597 e.$evalAsync("vm.isOpen = true")
28598 }, S.close = function() {
28599 e.$evalAsync("vm.isOpen = false"), n.find("md-fab-trigger")[0].focus()
28600 }, S.toggle = function() {
28601 e.$evalAsync("vm.isOpen = !vm.isOpen")
28602 }, S.$onInit = function() {
28604 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit();
28607 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], t.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
28616 if (!n.hasClass("md-animations-waiting") || n.hasClass("_md-animations-ready")) {
28618 i = n.controller("mdFabSpeedDial"),
28619 o = r.querySelectorAll(".md-fab-action-item"),
28620 a = r.querySelector("md-fab-trigger"),
28621 s = r.querySelector("._md-css-variables"),
28622 c = parseInt(e.getComputedStyle(s).zIndex);
28623 t.forEach(o, function(e, t) {
28625 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = o.length - t + c
28626 }), a.style.zIndex = c + o.length + 1, i.isOpen || t.forEach(o, function(e, t) {
28627 var n, r, o = e.style,
28628 s = (a.clientHeight - e.clientHeight) / 2,
28629 c = (a.clientWidth - e.clientWidth) / 2;
28630 switch (i.direction) {
28632 n = e.scrollHeight * (t + 1) + s, r = "Y";
28635 n = -(e.scrollHeight * (t + 1) + s), r = "Y";
28638 n = e.scrollWidth * (t + 1) + c, r = "X";
28641 n = -(e.scrollWidth * (t + 1) + c), r = "X"
28643 var l = "translate" + r + "(" + n + "px)";
28644 o.transform = o.webkitTransform = l
28649 addClass: function(e, t, n) {
28650 e.hasClass("md-fling") ? (o(e), r(n)) : n()
28652 removeClass: function(e, t, n) {
28665 i = n.controller("mdFabSpeedDial"),
28666 o = r.querySelectorAll(".md-fab-action-item"),
28667 s = r.querySelector("._md-css-variables"),
28668 c = parseInt(e.getComputedStyle(s).zIndex);
28669 t.forEach(o, function(e, t) {
28672 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
28677 addClass: function(e, t, n) {
28680 removeClass: function(e, t, n) {
28685 n.$inject = ["$timeout"], r.$inject = ["$timeout"];
28687 t.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
28691 direction: "@?mdDirection",
28694 bindToController: !0,
28695 controller: "MdFabController",
28696 controllerAs: "vm",
28697 link: function(e, t) {
28698 t.prepend('<div class="_md-css-variables"></div>')
28701 }).animation(".md-fling", n).animation(".md-scale", r).service("mdFabSpeedDialFlingAnimation", n).service("mdFabSpeedDialScaleAnimation", r)
28705 function n(n, r, i) {
28708 a = n.controller("mdFabToolbar"),
28709 s = o.querySelector(".md-fab-toolbar-background"),
28710 c = o.querySelector("md-fab-trigger button"),
28711 l = o.querySelector("md-toolbar"),
28712 u = o.querySelector("md-fab-trigger button md-icon"),
28713 d = n.find("md-fab-actions").children();
28715 var f = e.getComputedStyle(c).getPropertyValue("background-color"),
28717 p = (o.offsetHeight, h / c.offsetWidth * 2);
28718 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) {
28719 e.style.transitionDelay = 25 * (d.length - t) + "ms"
28720 })) : (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) {
28721 e.style.transitionDelay = 200 + 25 * t + "ms"
28727 addClass: function(e, t, r) {
28730 removeClass: function(e, t, r) {
28735 t.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
28739 template: '<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',
28741 direction: "@?mdDirection",
28744 bindToController: !0,
28745 controller: "MdFabController",
28746 controllerAs: "vm",
28747 link: function(e, t, n) {
28748 t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
28751 }).animation(".md-fab-toolbar", n).service("mdFabToolbarAnimation", n)
28754 function e(e, r, i, o) {
28761 link: function(n, a, s, c) {
28763 null == e ? c.invalidateLayout() : o(e) && c.invalidateLayout()
28770 function d(e, t, n, r, i, o, a) {
28771 var s = 1 / n * 100,
28778 u = "rtl" != document.dir && "rtl" != document.body.dir ? {
28832 }), u.marginTop = x({
28840 share: d = 1 / r * 100,
28841 gutterShare: (r - 1) / r,
28856 function f(e, t, n, r, i) {
28864 }), o.paddingBottom = "";
28868 share: 1 / e * 100 * (1 / i),
28869 gutterShare: 1 === e ? 0 : (e - 1) / e,
28872 o.height = "", o.paddingBottom = T({
28882 return [].filter.call(a.children(), function(e) {
28883 return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
28888 return [].map.call(e, function(e) {
28889 var n = t.element(e).controller("mdGridTile");
28891 row: parseInt(o.getResponsiveAttribute(n.$attrs, "md-rowspan"), 10) || 1,
28892 col: parseInt(o.getResponsiveAttribute(n.$attrs, "md-colspan"), 10) || 1
28898 var e = parseInt(o.getResponsiveAttribute(s, "md-cols"), 10);
28899 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
28904 return y(o.getResponsiveAttribute(s, "md-gutter") || 1)
28908 var e = o.getResponsiveAttribute(s, "md-row-height");
28909 if (!e) throw "md-grid-list: md-row-height attribute was not found";
28914 var t = e.split(":");
28915 return parseFloat(t[0]) / parseFloat(t[1]);
28922 var e = o.getResponsiveAttribute(s, "md-row-height");
28923 if (!e) throw "md-grid-list: md-row-height attribute was not found";
28924 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
28928 return /\D$/.test(e) ? e : e + "px"
28930 a.addClass("_md"), a.attr("role", "list"), c.layoutDelegate = function(e) {
28939 if (e || !t.equals(o, w)) {
28940 var s = i(o.colCount, o.tileSpans, r).map(function(e, n) {
28944 style: f(o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
28946 tiles: e.map(function(e, i) {
28948 element: t.element(r[i]),
28949 style: d(e.position, e.spans, o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
28953 }).reflow().performance();
28961 var _ = t.bind(c, c.invalidateLayout),
28963 for (var e in r.MEDIA) o(e), o.getQuery(r.MEDIA[e]).addListener(_);
28964 return o.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], s, l)
28966 n.$on("$destroy", function() {
28967 c.layoutDelegate = t.noop, $();
28968 for (var e in r.MEDIA) o.getQuery(r.MEDIA[e]).removeListener(_)
28970 var w, E = e.startSymbol(),
28972 C = e(u("share") + "% - (" + u("gutter") + " * " + u("gutterShare") + ")"),
28973 x = e("calc((" + u("unit") + " + " + u("gutter") + ") * " + u("offset") + ")"),
28974 T = e("calc((" + u("unit") + ") * " + u("span") + " + (" + u("span") + " - 1) * " + u("gutter") + ")")
28980 this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = t.noop
28985 var r, a, s, c, l, u;
28986 return c = e.time(function() {
28989 layoutInfo: function() {
28993 return l = e.time(function() {
28994 var e = r.layoutInfo();
28995 s = t(e.positioning, e.rowCount)
28998 reflow: function(t) {
28999 return u = e.time(function() {
29000 (t || o)(s.grid, s.tiles)
29003 performance: function() {
29005 tileCount: n.length,
29009 totalTime: c + l + u
29016 e.element.css(e.style), t.forEach(function(e) {
29017 e.element.css(e.style)
29023 if (t.col > e) throw "md-grid-list: Tile at position " + n + " has a colspan (" + t.col + ") that exceeds the column count (" + e + ")";
29024 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());
29025 return i(l, t.col, t.row), a = l + t.col, {
29032 a = 0, s++, i(0, e, -1)
29035 function i(e, t, n) {
29036 for (var r = e; r < e + t; r++) c[r] = Math.max(c[r] + n, 0)
29041 for (t = e; t < c.length; t++)
29042 if (0 !== c[t]) return t;
29043 if (t === c.length) return t
29048 for (var t = [], n = 0; n < e; n++) t.push(0);
29052 positioning: t.map(function(e, t) {
29058 rowCount: s + Math.max.apply(Math, c)
29062 return n.animateWith = function(e) {
29063 o = t.isFunction(e) ? e : r
29070 require: "^mdGridList",
29071 template: "<figure ng-transclude></figure>",
29074 controller: ["$attrs", function(e) {
29077 link: function(n, r, i, o) {
29078 r.attr("role", "listitem");
29079 var a = e.watchResponsiveAttributes(["md-colspan", "md-rowspan"], i, t.bind(o, o.invalidateLayout));
29080 o.invalidateTiles(), n.$on("$destroy", function() {
29081 r[0].$$mdDestroyed = !0, a(), o.invalidateLayout()
29082 }), t.isDefined(n.$parent.$index) && n.$watch(function() {
29083 return n.$parent.$index
29084 }, function(e, t) {
29085 e !== t && o.invalidateTiles()
29093 template: "<figcaption ng-transclude></figcaption>",
29097 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 = {
29098 invalidateTiles: function() {
29099 this.tilesInvalidated = !0, this.invalidateLayout()
29101 invalidateLayout: function() {
29102 this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(t.bind(this, this.layout)))
29104 layout: function() {
29106 this.layoutDelegate(this.tilesInvalidated)
29108 this.layoutInvalidated = !1, this.tilesInvalidated = !1
29112 }(), t.module("material.components.icon", ["material.core"]),
29115 function n(e, n, r, i) {
29117 o.isErrorGetter = r.mdIsError && t(r.mdIsError), o.delegateClick = function() {
29119 }, o.element = n, o.setFocused = function(e) {
29120 n.toggleClass("md-input-focused", !!e)
29121 }, o.setHasValue = function(e) {
29122 n.toggleClass("md-input-has-value", !!e)
29123 }, o.setHasPlaceholder = function(e) {
29124 n.toggleClass("md-input-has-placeholder", !!e)
29125 }, o.setInvalid = function(e) {
29126 e ? i.addClass(n, "md-input-invalid") : i.removeClass(n, "md-input-invalid")
29127 }, e.$watch(function() {
29128 return o.label && o.input
29130 e && !o.label.attr("for") && o.label.attr("for", o.input.attr("id"))
29133 n.$inject = ["$scope", "$element", "$attrs", "$animate"];
29134 var r = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
29135 i = r.reduce(function(e, t) {
29136 return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
29138 o = r.reduce(function(e, t) {
29139 return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
29143 compile: function(t) {
29144 var n = t[0].querySelector(i),
29145 r = t[0].querySelector(o);
29146 return n && t.addClass("md-icon-left"), r && t.addClass("md-icon-right"),
29155 function r(e, n, r, i, o) {
29158 require: ["^?mdInputContainer", "?ngModel", "?^form"],
29159 link: function(a, s, c, l) {
29161 return f.setHasValue(!p.$isEmpty(e)), e
29165 f.setHasValue(s.val().length > 0 || (s[0].validity || {}).badInput)
29169 p = l[1] || e.fakeNgModel(),
29171 g = t.isDefined(c.readonly),
29172 v = e.parseAttributeBoolean(c.mdNoAsterisk),
29173 b = s[0].tagName.toLowerCase();
29175 if ("hidden" !== c.type) {
29177 if (f.input[0].contains(s[0])) return;
29178 throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
29180 f.input = s, f.label && c.$observe("required", function(e) {
29181 f.label.toggleClass("md-required", e && !v)
29183 var y = t.element('<div class="md-errors-spacer">');
29185 var _ = t.isString(c.placeholder) ? c.placeholder.trim() : "";
29186 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() {
29188 s.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
29191 var t = s[0].style.padding || "";
29192 y = s.css("padding", 0).prop("offsetHeight"), s[0].style.padding = t
29194 if (g && y && (e = Math.max(e, y * g)), v && y) {
29196 n < e ? (s.attr("md-no-autogrow", ""), e = n) : s.removeAttr("md-no-autogrow")
29198 y && s.attr("rows", Math.round(e / y)), s.css("height", e + "px").removeClass("md-no-flex")
29202 var e = _.offsetHeight,
29203 t = _.scrollHeight - e;
29204 return e + Math.max(t, 0)
29208 return e.nextTick(r), t
29212 if (m && (m = !1, t.element(n).off("resize", r), b && b(), s.attr("md-no-autogrow", "").off("input", r), h)) {
29213 var e = p.$formatters.indexOf(u);
29214 e > -1 && p.$formatters.splice(e, 1)
29217 var m = !c.hasOwnProperty("mdNoAutogrow");
29220 e.preventDefault(), u = !0, h = e.clientY, p = parseFloat(s.css("height")) || s.prop("offsetHeight")
29224 u && (e.preventDefault(), d(), m.addClass("md-input-resized"))
29228 u && s.css("height", p + e.pointer.distanceY + "px")
29232 u && (u = !1, m.removeClass("md-input-resized"))
29234 if (!c.hasOwnProperty("mdNoResize")) {
29235 var l = t.element('<div class="md-resize-handle"></div>'),
29240 g = o.register(l, "drag", {
29243 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() {
29244 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
29248 var g = c.hasOwnProperty("rows") ? parseInt(c.rows) : NaN,
29249 v = c.hasOwnProperty("maxRows") ? parseInt(c.maxRows) : NaN,
29250 b = a.$on("md-resize-textarea", r),
29255 }, 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")) {
29256 var $ = function() {
29258 return function() {
29259 var t = 0 === _.offsetHeight;
29260 !1 === t && !0 === e && r(), e = t
29263 a.$watch(function() {
29264 return e.nextTick($, !1), !0
29269 var $ = f.isErrorGetter || function() {
29270 return p.$invalid && (p.$touched || m && m.$submitted)
29272 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) {
29273 e.nextTick(function() {
29276 }).on("blur", function(t) {
29277 e.nextTick(function() {
29278 f.setFocused(!1), d()
29280 }), a.$on("$destroy", function() {
29281 f.setFocused(!1), f.setHasValue(!1), f.input = null
29283 } else s.attr("aria-hidden", "true")
29291 require: ["ngModel", "^mdInputContainer"],
29292 link: function(r, i, o, a) {
29294 return l.parent ? (l.text(String(i.val() || e || "").length + " / " + c), e) : e
29296 var c, l, u, d = a[0],
29298 n.nextTick(function() {
29299 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) {
29300 c = n, t.isNumber(n) && n > 0 ? (l.parent().length || e.enter(l, u), s()) : e.leave(l)
29301 }), d.$validators["md-maxlength"] = function(e, n) {
29302 return !t.isNumber(c) || c < 0 || (s(), (e || i.val() || n || "").length <= c)
29312 require: "^^?mdInputContainer",
29315 pre: function(n, r, i, o) {
29317 var a = o.element.find("label"),
29318 s = o.element.attr("md-no-float");
29319 if (a && a.length || "" === s || n.$eval(s)) o.setHasPlaceholder(!0);
29320 else if ("MD-SELECT" != r[0].nodeName) {
29321 var c = t.element('<label ng-click="delegateClick()" tabindex="-1">' + i.placeholder + "</label>");
29322 i.$set("placeholder", null), o.element.addClass("md-icon-float").prepend(c), e(c)(n)
29333 link: function(t, n, r) {
29335 a = !0, e(function() {
29336 n[0].select(), a = !1
29341 a && e.preventDefault()
29343 if ("INPUT" === n[0].nodeName || "TEXTAREA" === n[0].nodeName) {
29345 n.on("focus", i).on("mouseup", o), t.$on("$destroy", function() {
29346 n.off("focus", i).off("mouseup", o)
29356 compile: function(t) {
29358 return !!e.getClosest(t, "md-input-container")
29362 e.toggleClass("md-input-message-animation", !0)
29365 else if (function() {
29366 for (var e = t[0]; e = e.parentNode;)
29367 if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
29369 }()) return function(e, i) {
29377 function c(e, t, n, r) {
29378 return v(e, t, n, r), {
29379 addClass: function(e, t, n) {
29385 function l(e, t, n, r) {
29386 return v(e, t, n, r), {
29387 enter: function(e, t) {
29390 leave: function(e, t) {
29393 addClass: function(e, t, n) {
29394 "ng-hide" == t ? f(e, n) : n()
29396 removeClass: function(e, t, n) {
29397 "ng-hide" == t ? d(e, n) : n()
29402 function u(e, t, n, r) {
29403 return v(e, t, n, r), {
29404 enter: function(e, t) {
29405 h(e).start().done(t)
29407 leave: function(e, t) {
29408 p(e).start().done(t)
29417 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages show animation called on invalid messages element: ", e), void n();
29418 t.forEach(a, function(e) {
29419 r = h(t.element(e)), i.push(r.start())
29427 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages hide animation called on invalid messages element: ", e), void n();
29428 t.forEach(a, function(e) {
29429 r = p(t.element(e)), i.push(r.start())
29434 var n = parseInt(e.getComputedStyle(t[0]).height),
29435 r = parseInt(e.getComputedStyle(t[0]).marginTop),
29438 return r > -n || i.hasClass("md-auto-hide") && !o.hasClass("md-input-invalid") ? _(t, {}) : _(t, {
29443 "margin-top": -n + "px"
29454 var n = t[0].offsetHeight,
29455 r = e.getComputedStyle(t[0]);
29456 return 0 === parseInt(r.opacity) ? _(t, {}) : _(t, {
29465 "margin-top": -n + "px"
29472 return e.controller("mdInputContainer").element
29476 return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? t.element($.getClosest(e, function(e) {
29477 return e.classList.contains("md-input-messages-animation")
29478 })) : t.element(e[0].querySelector(".md-input-messages-animation"))
29481 function v(e, t, n, r) {
29482 y = e, _ = t, $ = n, w = r
29484 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"];
29485 var b = t.module("material.components.input", ["material.core"]).directive("mdInputContainer", n).directive("label", function() {
29488 require: "^?mdInputContainer",
29489 link: function(e, t, n, r) {
29490 !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
29495 }).directive("input", r).directive("textarea", r).directive("mdMaxlength", i).directive("placeholder", o).directive("ngMessages", function() {
29497 return E.some(function(t) {
29503 link: function(t, n, r, i) {
29504 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))
29506 require: "^^?mdInputContainer"
29508 }).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);
29509 e._mdMocksIncluded && b.service("$$mdInput", function() {
29517 }).service("mdInputInvalidAnimation", c).service("mdInputMessagesAnimation", l).service("mdInputMessageAnimation", u);
29518 var y, _, $, w, E = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"]
29524 compile: function(t) {
29525 return t[0].setAttribute("role", "list"), e
29530 function n(e, n, r, i) {
29531 var o = ["md-checkbox", "md-switch", "md-menu"];
29534 controller: "MdListController",
29535 compile: function(a, s) {
29537 if ("div" == n)(v = t.element('<div class="md-no-style md-list-item-inner">')).append(a.contents()), a.addClass("md-proxy-focus");
29539 v = t.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');
29540 var r = t.element('<md-button class="md-no-style"></md-button>');
29541 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")
29543 a[0].setAttribute("tabindex", "-1"), a.append(v)
29547 if (n && !f(n) && n.hasAttribute("ng-click")) {
29548 e.expect(n, "aria-label");
29549 var i = t.element('<md-button class="md-secondary md-icon-button">');
29550 u(n, i[0], ["ng-if", "ng-hide", "ng-show"]), n.setAttribute("tabindex", "-1"), i.append(n), n = i[0]
29552 n && (!h(n) || !s.ngClick && d(n)) && t.element(n).removeClass("md-secondary"), a.addClass("md-with-secondary"), r.append(n)
29555 function u(e, n, i) {
29556 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", "download"]);
29557 i && (o = o.concat(r.prefixer(i))), t.forEach(o, function(t) {
29558 e.hasAttribute(t) && (n.setAttribute(t, e.getAttribute(t)), e.removeAttribute(t))
29563 return -1 != o.indexOf(e.nodeName.toLowerCase())
29567 var t = e.nodeName.toUpperCase();
29568 return "MD-BUTTON" == t || "BUTTON" == t
29572 for (var t = e.attributes, n = 0; n < t.length; n++)
29573 if ("ngClick" === s.$normalize(t[n].name)) return !0;
29576 var p, m, g = a[0].querySelectorAll(".md-secondary"),
29578 if (a[0].setAttribute("role", "listitem"), s.ngClick || s.ngDblclick || s.ngHref || s.href || s.uiSref || s.ngAttrUiSref) c("button");
29579 else if (!a.hasClass("md-no-proxy")) {
29580 for (var b, y = 0; b = o[y]; ++y)
29581 if (m = a[0].querySelector(b)) {
29585 p ? c("div") : a.addClass("md-no-proxy")
29587 return function() {
29588 var e = t.element('<div class="md-secondary-container">');
29589 t.forEach(g, function(t) {
29594 for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
29595 if ((e = a.find(t)[0]) && !e.hasAttribute("aria-label")) {
29596 var i = a.find("p")[0];
29598 e.setAttribute("aria-label", "Toggle " + i.textContent)
29600 }(), p && "MD-MENU" === m.nodeName && function() {
29601 var e = t.element(m),
29603 (e.parent().hasClass("md-secondary-container") || m.parentNode.firstElementChild !== m) && (n = "right"), e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
29604 var r = e.children().eq(0);
29605 h(r[0]) || r.attr("ng-click", "$mdMenu.open($event)"), r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
29607 function(e, a, s, c) {
29609 var t = ["md-slider"];
29610 if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
29611 for (var n = e.path.indexOf(a.children()[0]), r = 0; r < n; r++)
29612 if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
29616 d = a[0].firstElementChild,
29617 f = a.hasClass("_md-button-wrap") ? d.firstElementChild : d,
29619 m = a.hasClass("md-no-proxy");
29620 d && d.children && !p && !m && t.forEach(o, function(e) {
29621 t.forEach(d.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
29624 }), (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) {
29625 n = t.element(n), e.mouseActive = !1, n.on("mousedown", function() {
29626 e.mouseActive = !0, i(function() {
29629 }).on("focus", function() {
29630 !1 === e.mouseActive && a.addClass("md-focused"), n.on("blur", function e() {
29631 a.removeClass("md-focused"), n.off("blur", e)
29635 var g = function(e) {
29636 "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())
29638 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) {
29639 l(e) || !r.getClosest(e.target, "BUTTON") && f.contains(e.target) && t.forEach(u, function(n) {
29640 e.target === n || n.contains(e.target) || ("MD-MENU" === n.nodeName && (n = n.children[0]), t.element(n).triggerHandler("click"))
29642 }), e.$on("$destroy", function() {
29643 f && f.removeEventListener("keypress", g)
29650 function r(e, t, n) {
29651 this.attachRipple = function(e, t) {
29656 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)
29657 }(), t.module("material.components.menu", ["material.core", "material.components.backdrop"]), t.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
29664 controllerAs: "ctrl",
29665 bindToController: !0,
29667 mdSelectedNavItem: "=?",
29669 navBarAriaLabel: "@?"
29671 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>',
29672 link: function(r, i, o, a) {
29673 n(i), a.navBarAriaLabel || e.expectAsync(i, "aria-label", t.noop)
29678 function r(e, t, n, r) {
29679 this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
29681 o = this._$scope.$watch(function() {
29682 return i._navBarEl.querySelectorAll("._md-nav-button").length
29684 e > 0 && (i._initTabs(), o())
29691 require: ["mdNavItem", "^mdNavBar"],
29693 bindToController: !0,
29694 controllerAs: "ctrl",
29697 template: function(e, t) {
29698 var n, r, i, o = t.mdNavClick,
29702 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.");
29703 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>"
29712 link: function(r, i, o, a) {
29716 s = t.element(i[0].querySelector("._md-nav-button"));
29717 n.name || (n.name = t.element(i[0].querySelector("._md-nav-button-text")).text().trim()), s.on("click", function() {
29718 o.mdSelectedNavItem = n.name, r.$apply()
29719 }), e.expectWithText(i, "aria-label")
29726 this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this._selected = !1, this._focused = !1
29728 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() {
29729 this._inkbar = t.element(this._navBarEl.querySelector("md-nav-ink-bar"));
29731 this._$timeout(function() {
29732 e._updateTabs(e.mdSelectedNavItem, n)
29733 }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(t, n) {
29734 e._$timeout(function() {
29735 e._updateTabs(t, n)
29738 }, r.prototype._updateTabs = function(e, t) {
29740 r = this._getTabs();
29744 a = this._getTabByName(e),
29745 s = this._getTabByName(t);
29746 s && (s.setSelected(!1), i = r.indexOf(s)), a && (a.setSelected(!0), o = r.indexOf(a)), this._$timeout(function() {
29747 n._updateInkBarStyles(a, o, i)
29750 }, r.prototype._updateInkBarStyles = function(e, t, n) {
29751 if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", t > n), this._inkbar.css({
29752 display: t < 0 ? "none" : ""
29754 var r = e.getButtonEl(),
29758 width: r.offsetWidth + "px"
29761 }, r.prototype._getTabs = function() {
29762 var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
29763 return t.element(e).controller("mdNavItem")
29765 return e.indexOf(n) ? e : null
29766 }, r.prototype._getTabByName = function(e) {
29767 return this._findTab(function(t) {
29768 return t.getName() == e
29770 }, r.prototype._getSelectedTab = function() {
29771 return this._findTab(function(e) {
29772 return e.isSelected()
29774 }, r.prototype.getFocusedTab = function() {
29775 return this._findTab(function(e) {
29776 return e.hasFocus()
29778 }, r.prototype._findTab = function(e) {
29779 for (var t = this._getTabs(), n = 0; n < t.length; n++)
29780 if (e(t[n])) return t[n];
29782 }, r.prototype.onFocus = function() {
29783 var e = this._getSelectedTab();
29784 e && e.setFocused(!0)
29785 }, r.prototype._moveFocus = function(e, t) {
29786 e.setFocused(!1), t.setFocused(!0)
29787 }, r.prototype.onKeydown = function(e) {
29788 var t = this._$mdConstant.KEY_CODE,
29789 n = this._getTabs(),
29790 r = this.getFocusedTab();
29792 var i = n.indexOf(r);
29793 switch (e.keyCode) {
29796 i > 0 && this._moveFocus(r, n[i - 1]);
29799 case t.RIGHT_ARROW:
29800 i < n.length - 1 && this._moveFocus(r, n[i + 1]);
29804 this._$timeout(function() {
29805 r.getButtonEl().click()
29809 }, o.prototype.getNgClassMap = function() {
29811 "md-active": this._selected,
29812 "md-primary": this._selected,
29813 "md-unselected": !this._selected,
29814 "md-focused": this._focused
29816 }, o.prototype.getName = function() {
29818 }, o.prototype.getButtonEl = function() {
29819 return this._$element[0].querySelector("._md-nav-button")
29820 }, o.prototype.setSelected = function(e) {
29822 }, o.prototype.isSelected = function() {
29823 return this._selected
29824 }, o.prototype.setFocused = function(e) {
29825 this._focused = e, e && this.getButtonEl().focus()
29826 }, o.prototype.hasFocus = function() {
29827 return this._focused
29832 if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
29833 if (p.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
29834 delete t.id, delete t.position, delete t.animation, p[e] = t
29846 return ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
29847 return new a(p, e, t, n, r)
29851 function a(e, n, r, i, o) {
29852 this._defaultConfigOptions = {
29853 bindToController: !0,
29854 clickOutsideToClose: !1,
29855 disableParentScroll: !1,
29860 propagateContainerEvents: !1,
29861 transformTemplate: t.bind(this, this._wrapTemplate),
29864 }, 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
29868 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 = {
29875 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
29879 this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
29883 var n = t.isString(e) ? document.querySelector(e) : e;
29884 return t.element(n)
29888 var n = getComputedStyle(e[0] || e)[t],
29889 r = n.indexOf("("),
29890 i = n.lastIndexOf(")"),
29895 if (r > -1 && i > -1) {
29896 var a = n.substring(r + 1, i).split(", ").slice(-2);
29897 o.x = parseInt(a[0]), o.y = parseInt(a[1])
29901 a.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], t.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
29910 h = t.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
29912 a.prototype.create = function(e, n) {
29913 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]) {
29914 var r = this._trackedPanels[n.id];
29915 return t.extend(r.config, n), r
29917 this._config = t.extend({
29918 id: n.id || "panel_" + this._$mdUtil.nextUid(),
29919 scope: this._$rootScope.$new(!0),
29920 attachTo: this._$rootElement
29921 }, this._defaultConfigOptions, n, e);
29922 var i = new s(this._config, this._$injector);
29923 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) {
29925 })), this._config.scope.$on("$destroy", t.bind(i, i.detach)), i
29926 }, a.prototype.open = function(e, t) {
29927 var n = this.create(e, t);
29928 return n.open().then(function() {
29931 }, a.prototype._getPresetByName = function(e) {
29932 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.");
29933 return this._presets[e]
29934 }, a.prototype.newPanelPosition = function() {
29935 return new c(this._$injector)
29936 }, a.prototype.newPanelAnimation = function() {
29937 return new l(this._$injector)
29938 }, a.prototype.newPanelGroup = function(e, t) {
29939 if (!this._groups[e]) {
29943 maxOpen: (t = t || {}).maxOpen > 0 ? t.maxOpen : 1 / 0
29945 this._groups[e] = n
29947 return this._groups[e]
29948 }, a.prototype.setGroupMaxOpen = function(e, t) {
29949 if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
29950 this._groups[e].maxOpen = t
29951 }, a.prototype._openCountExceedsMaxOpen = function(e) {
29952 if (this._groups[e]) {
29953 var t = this._groups[e];
29954 return t.maxOpen > 0 && t.openPanels.length > t.maxOpen
29957 }, a.prototype._closeFirstOpenedPanel = function(e) {
29958 this._groups[e].openPanels[0].close()
29959 }, a.prototype._wrapTemplate = function(e) {
29960 return '<div class="md-panel-outer-wrapper"> <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
29961 }, a.prototype._wrapContentElement = function(e) {
29962 var n = t.element('<div class="md-panel-outer-wrapper">');
29963 return e.addClass("md-panel _md-panel-offscreen"), n.append(e), n
29964 }, s.interceptorTypes = {
29966 }, s.prototype.open = function() {
29968 return this._$q(function(n, r) {
29969 var i = e._done(n, e),
29970 o = e._simpleBind(e.show, e);
29971 e.attach().then(o).then(function() {
29972 e.config.groupName && t.forEach(e.config.groupName, function(t) {
29973 e._$mdPanel._openCountExceedsMaxOpen(t) && e._$mdPanel._closeFirstOpenedPanel(t)
29975 }).then(i).catch(r)
29977 }, s.prototype.close = function(e) {
29979 return this._$q(function(r, i) {
29980 n._callInterceptors(s.interceptorTypes.CLOSE).then(function() {
29981 var o = n._done(r, n),
29982 a = n._simpleBind(n.detach, n),
29983 s = n.config.onCloseSuccess || t.noop;
29984 s = t.bind(n, s, n, e), n.hide().then(a).then(o).then(s).catch(i)
29987 }, s.prototype.attach = function() {
29988 if (this.isAttached && this.panelEl) return this._$q.when(this);
29990 return this._$q(function(n, r) {
29991 var i = e._done(n, e),
29992 o = e.config.onDomAdded || t.noop;
29993 e._$q.all([e._createBackdrop(), e._createPanel().then(function(t) {
29994 return e.isAttached = !0, e._addEventListeners(), t
29995 }).catch(r)]).then(o).then(i).catch(r)
29997 }, s.prototype.detach = function() {
29998 if (!this.isAttached) return this._$q.when(this);
30000 n = e.config.onDomRemoved || t.noop,
30002 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)
30004 return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(t, i) {
30005 var o = e._done(t, e);
30006 e._$q.all([r(), !e._backdropRef || e._backdropRef.detach()]).then(n).then(o).catch(i)
30008 }, s.prototype.destroy = function() {
30010 this.config.groupName && t.forEach(this.config.groupName, function(t) {
30011 e.removeFromGroup(t)
30012 }), this.config.scope.$destroy(), this.config.locals = null, this._interceptors = null
30013 }, s.prototype.show = function() {
30014 if (!this.panelContainer) return this._$q(function(e, t) {
30015 t("mdPanel: Panel does not exist yet. Call open() or attach().")
30017 if (!this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
30020 return e.panelContainer.removeClass("_md-panel-hidden"), e._animateOpen()
30022 return this._$q(function(r, i) {
30023 var o = e._done(r, e),
30024 a = e.config.onOpenComplete || t.noop;
30025 e._$q.all([e._backdropRef ? e._backdropRef.show() : e, n().then(function() {
30027 }, i)]).then(a).then(function() {
30028 e.config.groupName && t.forEach(e.config.groupName, function(t) {
30029 e._$mdPanel._groups[t].openPanels.push(e)
30031 }).then(o).catch(i)
30033 }, s.prototype.hide = function() {
30034 if (!this.panelContainer) return this._$q(function(e, t) {
30035 t("mdPanel: Panel does not exist yet. Call open() or attach().")
30037 if (this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
30039 return this._$q(function(n, r) {
30040 var i = e._done(n, e),
30041 o = e.config.onRemoving || t.noop;
30042 e._$q.all([e._backdropRef ? e._backdropRef.hide() : e, e._animateClose().then(o).then(function() {
30043 e.panelContainer.addClass("_md-panel-hidden")
30044 }).then(function() {
30045 if (e.config.groupName) {
30047 t.forEach(e.config.groupName, function(t) {
30048 t = e._$mdPanel._groups[t], (n = t.openPanels.indexOf(e)) > -1 && t.openPanels.splice(n, 1)
30051 }).then(function() {
30052 var t = e.config.origin;
30054 }).catch(r)]).then(i, r)
30056 }, s.prototype.addClass = function(e, t) {
30057 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().");
30058 t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
30059 }, s.prototype.removeClass = function(e, t) {
30060 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().");
30061 !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
30062 }, s.prototype.toggleClass = function(e, t) {
30063 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().");
30064 t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
30065 }, s.prototype._compile = function() {
30067 return e._$mdCompiler.compile(e.config).then(function(n) {
30069 if (r.contentElement) {
30071 e._restoreCache.styles = i[0].style.cssText, e._restoreCache.classes = i[0].className, e.panelContainer = e._$mdPanel._wrapContentElement(i), e.panelEl = i
30072 } else e.panelContainer = n.link(r.scope), e.panelEl = t.element(e.panelContainer[0].querySelector(".md-panel"));
30073 return e._compilerCleanup = n.cleanup, u(e.config.attachTo).append(e.panelContainer), e
30075 }, s.prototype._createPanel = function() {
30077 return this._$q(function(t, n) {
30078 e.config.locals || (e.config.locals = {}), e.config.locals.mdPanelRef = e, e._compile().then(function() {
30079 e.config.disableParentScroll && (e._restoreScroll = e._$mdUtil.disableScrollAround(null, e.panelContainer, {
30080 disableScrollMask: !0
30081 })), 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() {
30086 }, s.prototype._addStyles = function() {
30088 return this._$q(function(t) {
30089 e.panelContainer.css("z-index", e.config.zIndex), e.panelEl.css("z-index", e.config.zIndex + 1);
30090 var n = function() {
30091 e._setTheming(), e.panelEl.removeClass("_md-panel-offscreen"), e.panelContainer.addClass("_md-panel-hidden"), t(e)
30093 if (e.config.fullscreen) return e.panelEl.addClass("_md-panel-fullscreen"), void n();
30094 e.config.position ? e._$rootScope.$$postDigest(function() {
30095 e._updatePosition(!0), e._setTheming(), t(e)
30098 }, s.prototype._setTheming = function() {
30099 this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
30100 }, s.prototype.updatePosition = function(e) {
30101 if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
30102 this.config.position = e, this._updatePosition()
30103 }, s.prototype._updatePosition = function(e) {
30104 var t = this.config.position;
30105 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()))
30106 }, s.prototype._focusOnOpen = function() {
30107 if (this.config.focusOnOpen) {
30109 this._$rootScope.$$postDigest(function() {
30110 (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
30113 }, s.prototype._createBackdrop = function() {
30114 if (this.config.hasBackdrop) {
30115 if (!this._backdropRef) {
30116 var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
30117 open: "_md-opaque-enter",
30118 close: "_md-opaque-leave"
30120 this.config.animation && e.duration(this.config.animation._rawDuration);
30123 attachTo: this.config.attachTo,
30125 panelClass: "_md-panel-backdrop",
30126 zIndex: this.config.zIndex - 1
30128 this._backdropRef = this._$mdPanel.create(t)
30130 if (!this._backdropRef.isAttached) return this._backdropRef.attach()
30132 }, s.prototype._addEventListeners = function() {
30133 this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
30134 }, s.prototype._removeEventListeners = function() {
30135 this._removeListeners && this._removeListeners.forEach(function(e) {
30137 }), this._removeListeners = []
30138 }, s.prototype._configureEscapeToClose = function() {
30139 if (this.config.escapeToClose) {
30140 var e = u(this.config.attachTo),
30143 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(s.closeReasons.ESCAPE))
30145 this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
30146 t.panelContainer.off("keydown", n), e.off("keydown", n)
30149 }, s.prototype._configureClickOutsideToClose = function() {
30150 if (this.config.clickOutsideToClose) {
30151 var e, n = this.config.propagateContainerEvents ? t.element(document.body) : this.panelContainer,
30157 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))
30159 n.on("mousedown", r), n.on("mouseup", o), this._removeListeners.push(function() {
30160 n.off("mousedown", r), n.off("mouseup", o)
30163 }, s.prototype._configureScrollListener = function() {
30164 if (!this.config.disableParentScroll) {
30165 var e = t.bind(this, this._updatePosition),
30166 n = this._$$rAF.throttle(e),
30171 this._$window.addEventListener("scroll", i, !0), this._removeListeners.push(function() {
30172 r._$window.removeEventListener("scroll", i, !0)
30175 }, s.prototype._configureTrapFocus = function() {
30176 if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
30177 var e = this.panelEl;
30178 this._topFocusTrap = h.clone()[0], this._bottomFocusTrap = h.clone()[0];
30179 var t = function() {
30182 this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
30183 this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
30184 }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
30186 }, s.prototype.updateAnimation = function(e) {
30187 this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
30188 }, s.prototype._animateOpen = function() {
30189 this.panelContainer.addClass("md-panel-is-showing");
30190 var e = this.config.animation;
30191 if (!e) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
30193 return this._$q(function(n) {
30194 var r = t._done(n, t);
30195 e.animateOpen(t.panelEl).then(r, function() {
30196 t._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), r()
30199 }, s.prototype._animateClose = function() {
30200 var e = this.config.animation;
30201 if (!e) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
30203 return this._$q(function(n) {
30204 var r = function() {
30205 t.panelContainer.removeClass("md-panel-is-showing"), n(t)
30207 e.animateClose(t.panelEl).then(r, function() {
30208 t._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), r()
30211 }, s.prototype.registerInterceptor = function(e, n) {
30213 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);
30214 var i = this._interceptors[e] = this._interceptors[e] || [];
30215 return -1 === i.indexOf(n) && i.push(n), this
30216 }, s.prototype.removeInterceptor = function(e, t) {
30217 var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
30218 return n > -1 && this._interceptors[e].splice(n, 1), this
30219 }, s.prototype.removeAllInterceptors = function(e) {
30220 return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
30221 }, s.prototype._callInterceptors = function(e) {
30224 return (n._interceptors && n._interceptors[e] || []).reduceRight(function(e, i) {
30225 var o = i && t.isFunction(i.then) ? i : null;
30226 return e.then(function() {
30235 }, s.prototype._simpleBind = function(e, t) {
30236 return function(n) {
30237 return e.apply(t, n)
30239 }, s.prototype._done = function(e, t) {
30240 return function() {
30243 }, s.prototype.addToGroup = function(e) {
30244 this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
30245 var t = this._$mdPanel._groups[e];
30246 t.panels.indexOf(this) < 0 && t.panels.push(this)
30247 }, s.prototype.removeFromGroup = function(e) {
30248 if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
30249 var t = this._$mdPanel._groups[e],
30250 n = t.panels.indexOf(this);
30251 n > -1 && t.panels.splice(n, 1)
30252 }, s.closeReasons = {
30253 CLICK_OUTSIDE: "clickOutsideToClose",
30254 ESCAPE: "escapeToClose"
30257 ALIGN_START: "align-start",
30258 ALIGN_END: "align-end",
30259 OFFSET_START: "offset-start",
30260 OFFSET_END: "offset-end"
30263 ALIGN_TOPS: "align-tops",
30264 ALIGN_BOTTOMS: "align-bottoms",
30267 }, c.absPosition = {
30272 }, c.viewportMargin = 8, c.prototype.absolute = function() {
30273 return this._absolute = !0, this
30274 }, c.prototype._setPosition = function(e, n) {
30275 if (e === c.absPosition.RIGHT || e === c.absPosition.LEFT) this._left = this._right = "";
30277 if (e !== c.absPosition.BOTTOM && e !== c.absPosition.TOP) {
30278 var r = Object.keys(c.absPosition).join().toLowerCase();
30279 throw new Error("mdPanel: Position must be one of " + r + ".")
30281 this._top = this._bottom = ""
30283 return this["_" + e] = t.isString(n) ? n : "0", this
30284 }, c.prototype.top = function(e) {
30285 return this._setPosition(c.absPosition.TOP, e)
30286 }, c.prototype.bottom = function(e) {
30287 return this._setPosition(c.absPosition.BOTTOM, e)
30288 }, c.prototype.start = function(e) {
30289 var t = this._isRTL ? c.absPosition.RIGHT : c.absPosition.LEFT;
30290 return this._setPosition(t, e)
30291 }, c.prototype.end = function(e) {
30292 var t = this._isRTL ? c.absPosition.LEFT : c.absPosition.RIGHT;
30293 return this._setPosition(t, e)
30294 }, c.prototype.left = function(e) {
30295 return this._setPosition(c.absPosition.LEFT, e)
30296 }, c.prototype.right = function(e) {
30297 return this._setPosition(c.absPosition.RIGHT, e)
30298 }, c.prototype.centerHorizontally = function() {
30299 return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
30300 }, c.prototype.centerVertically = function() {
30301 return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
30302 }, c.prototype.center = function() {
30303 return this.centerHorizontally().centerVertically()
30304 }, c.prototype.relativeTo = function(e) {
30305 return this._absolute = !1, this._relativeToEl = u(e), this
30306 }, c.prototype.addPanelPosition = function(e, t) {
30307 if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
30308 return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
30312 }, c.prototype._validateYPosition = function(e) {
30314 for (var t, n = Object.keys(c.yPosition), r = [], i = 0; t = n[i]; i++) {
30315 var o = c.yPosition[t];
30316 if (r.push(o), o === e) return
30318 throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
30320 }, c.prototype._validateXPosition = function(e) {
30322 for (var t, n = Object.keys(c.xPosition), r = [], i = 0; t = n[i]; i++) {
30323 var o = c.xPosition[t];
30324 if (r.push(o), o === e) return
30326 throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
30328 }, c.prototype.withOffsetX = function(e) {
30329 return this._translateX.push(e), this
30330 }, c.prototype.withOffsetY = function(e) {
30331 return this._translateY.push(e), this
30332 }, c.prototype.getTop = function() {
30334 }, c.prototype.getBottom = function() {
30335 return this._bottom
30336 }, c.prototype.getLeft = function() {
30338 }, c.prototype.getRight = function() {
30340 }, c.prototype.getTransform = function() {
30341 return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
30342 }, c.prototype._setTransform = function(e) {
30343 return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
30344 }, c.prototype._isOnscreen = function(e) {
30345 var t = parseInt(this.getLeft()),
30346 n = parseInt(this.getTop());
30347 if (this._translateX.length || this._translateY.length) {
30348 var r = d(e, this._$mdConstant.CSS.TRANSFORM);
30351 var i = t + e[0].offsetWidth,
30352 o = n + e[0].offsetHeight;
30353 return t >= 0 && n >= 0 && o <= this._$window.innerHeight && i <= this._$window.innerWidth
30354 }, c.prototype.getActualPosition = function() {
30355 return this._actualPosition
30356 }, c.prototype._reduceTranslateValues = function(e, n) {
30357 return n.map(function(n) {
30358 var r = t.isFunction(n) ? n(this) : n;
30359 return e + "(" + r + ")"
30361 }, c.prototype._setPanelPosition = function(e) {
30362 if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
30364 if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
30365 for (var t = 0; t < this._positions.length; t++)
30366 if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
30367 this._constrainToViewport(e)
30369 }, c.prototype._constrainToViewport = function(e) {
30370 var t = c.viewportMargin,
30373 if (this.getTop()) {
30374 var i = parseInt(this.getTop()),
30375 o = e[0].offsetHeight + i,
30376 a = this._$window.innerHeight;
30377 i < t ? this._top = t + "px" : o > a && (this._top = i - (o - a + t) + "px")
30379 if (this.getLeft()) {
30380 var s = parseInt(this.getLeft()),
30381 l = e[0].offsetWidth + s,
30382 u = this._$window.innerWidth;
30383 s < t ? this._left = t + "px" : l > u && (this._left = s - (l - u + t) + "px")
30385 e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
30386 }, c.prototype._reverseXPosition = function(e) {
30387 if (e === c.xPosition.CENTER) return e;
30388 return e.indexOf("start") > -1 ? e.replace("start", "end") : e.replace("end", "start")
30389 }, c.prototype._bidi = function(e) {
30390 return this._isRTL ? this._reverseXPosition(e) : e
30391 }, c.prototype._calculatePanelPosition = function(e, t) {
30392 var n = e[0].getBoundingClientRect(),
30395 o = this._relativeToEl[0].getBoundingClientRect(),
30399 switch (this._bidi(t.x)) {
30400 case c.xPosition.OFFSET_START:
30401 this._left = a - r + "px";
30403 case c.xPosition.ALIGN_END:
30404 this._left = s - r + "px";
30406 case c.xPosition.CENTER:
30407 var u = a + .5 * l - .5 * r;
30408 this._left = u + "px";
30410 case c.xPosition.ALIGN_START:
30411 this._left = a + "px";
30413 case c.xPosition.OFFSET_END:
30414 this._left = s + "px"
30420 case c.yPosition.ABOVE:
30421 this._top = d - i + "px";
30423 case c.yPosition.ALIGN_BOTTOMS:
30424 this._top = f - i + "px";
30426 case c.yPosition.CENTER:
30427 var p = d + .5 * h - .5 * i;
30428 this._top = p + "px";
30430 case c.yPosition.ALIGN_TOPS:
30431 this._top = d + "px";
30433 case c.yPosition.BELOW:
30434 this._top = f + "px"
30437 SLIDE: "md-panel-animate-slide",
30438 SCALE: "md-panel-animate-scale",
30439 FADE: "md-panel-animate-fade"
30440 }, l.prototype.openFrom = function(e) {
30441 return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
30442 }, l.prototype.closeTo = function(e) {
30443 return this._closeTo = this._getPanelAnimationTarget(e), this
30444 }, l.prototype.duration = function(e) {
30446 if (t.isNumber(e)) return e / 1e3
30448 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
30449 }, l.prototype._getPanelAnimationTarget = function(e) {
30450 return t.isDefined(e.top) || t.isDefined(e.left) ? {
30456 } : this._getBoundingClientRect(u(e))
30457 }, l.prototype.withAnimation = function(e) {
30458 return this._animationClass = e, this
30459 }, l.prototype.animateOpen = function(e) {
30460 var n = this._$mdUtil.dom.animator;
30461 this._fixBounds(e);
30463 i = e[0].style.transform || "",
30464 o = n.toTransformCss(i),
30465 a = n.toTransformCss(i);
30466 switch (this._animationClass) {
30467 case l.animation.SLIDE:
30468 e.css("opacity", "1"), r = {
30469 transitionInClass: "_md-panel-animate-enter"
30471 var s = n.calculateSlideToOrigin(e, this._openFrom) || "";
30472 o = n.toTransformCss(s + " " + i);
30474 case l.animation.SCALE:
30476 transitionInClass: "_md-panel-animate-enter"
30478 var c = n.calculateZoomToOrigin(e, this._openFrom) || "";
30479 o = n.toTransformCss(c + " " + i);
30481 case l.animation.FADE:
30483 transitionInClass: "_md-panel-animate-enter"
30487 r = t.isString(this._animationClass) ? {
30488 transitionInClass: this._animationClass
30490 transitionInClass: this._animationClass.open,
30491 transitionOutClass: this._animationClass.close
30494 return r.duration = this._openDuration, n.translate3d(e, o, a, r)
30495 }, l.prototype.animateClose = function(e) {
30496 var n = this._$mdUtil.dom.animator,
30498 i = e[0].style.transform || "",
30499 o = n.toTransformCss(i),
30500 a = n.toTransformCss(i);
30501 switch (this._animationClass) {
30502 case l.animation.SLIDE:
30503 e.css("opacity", "1"), r = {
30504 transitionInClass: "_md-panel-animate-leave"
30506 var s = n.calculateSlideToOrigin(e, this._closeTo) || "";
30507 a = n.toTransformCss(s + " " + i);
30509 case l.animation.SCALE:
30511 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
30513 var c = n.calculateZoomToOrigin(e, this._closeTo) || "";
30514 a = n.toTransformCss(c + " " + i);
30516 case l.animation.FADE:
30518 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
30522 r = t.isString(this._animationClass) ? {
30523 transitionOutClass: this._animationClass
30525 transitionInClass: this._animationClass.close,
30526 transitionOutClass: this._animationClass.open
30529 return r.duration = this._closeDuration, n.translate3d(e, o, a, r)
30530 }, l.prototype._fixBounds = function(e) {
30531 var t = e[0].offsetWidth,
30532 n = e[0].offsetHeight;
30533 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)
30534 }, l.prototype._getBoundingClientRect = function(e) {
30535 if (e instanceof t.element) return {
30537 bounds: e[0].getBoundingClientRect()
30540 }(), t.module("material.components.progressCircular", ["material.core"]),
30542 function e(e, n, r) {
30543 function i(r, i, d) {
30545 var e = (d.mdMode || "").trim();
30546 if (e) switch (e) {
30560 var i = n.supplant("translateX({0}%) scale({1},1)", [(r - 100) / 2, r / 100]),
30564 t.element(e).css(o)
30568 var p, m = d.hasOwnProperty("disabled"),
30569 g = n.dom.animator.toCss,
30570 v = t.element(i[0].querySelector(".md-bar1")),
30571 b = t.element(i[0].querySelector(".md-bar2")),
30572 y = t.element(i[0].querySelector(".md-container"));
30573 i.attr("md-mode", f()).toggleClass(u, m),
30575 if (t.isUndefined(d.mdMode)) {
30576 var e = t.isDefined(d.value) ? a : s;
30577 i.attr("md-mode", e), d.mdMode = e
30579 }(), d.$observe("value", function(e) {
30581 i.attr("aria-valuenow", t), f() != l && h(b, t)
30582 }), d.$observe("mdBufferValue", function(e) {
30584 }), d.$observe("disabled", function(e) {
30585 m = !0 === e || !1 === e ? !!e : t.isDefined(e), i.toggleClass(u, m), y.toggleClass(p, !m)
30586 }), d.$observe("mdMode", function(e) {
30587 switch (p && y.removeClass(p), e) {
30592 y.addClass(p = "md-mode-" + e);
30595 y.addClass(p = "md-mode-" + s)
30601 return Math.max(0, Math.min(e || 0, 100))
30603 var a = "determinate",
30604 s = "indeterminate",
30607 u = "_md-progress-linear-disabled";
30610 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>',
30611 compile: function(e, t, n) {
30612 return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), i
30616 e.$inject = ["$mdTheming", "$mdUtil", "$log"], t.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
30619 function e(e, n, r, i) {
30621 this._radioButtonRenderFns = [], this.$element = e
30625 var i = e.iterator(n[0].querySelectorAll("md-radio-button"), !0);
30627 var o = n[0].querySelector("md-radio-button.md-checked"),
30628 a = i[r < 0 ? "previous" : "next"](o, function(e) {
30629 return !t.element(e).attr("disabled")
30631 t.element(a).triggerHandler("click")
30634 return o.prototype = {
30635 init: function(e) {
30636 this._ngModelCtrl = e, this._ngModelCtrl.$render = t.bind(this, this.render)
30639 this._radioButtonRenderFns.push(e)
30641 remove: function(e) {
30642 var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
30644 render: function() {
30645 this._radioButtonRenderFns.forEach(function(e) {
30649 setViewValue: function(e, t) {
30650 this._ngModelCtrl.$setViewValue(e, t), this.render()
30652 getViewValue: function() {
30653 return this._ngModelCtrl.$viewValue
30655 selectNext: function() {
30656 return a(this.$element, 1)
30658 selectPrevious: function() {
30659 return a(this.$element, -1)
30661 setActiveDescendant: function(e) {
30662 this.$element.attr("aria-activedescendant", e)
30664 isDisabled: function() {
30665 return this.$element[0].hasAttribute("disabled")
30669 controller: ["$element", o],
30670 require: ["mdRadioGroup", "?ngModel"],
30672 pre: function(o, a, s, c) {
30674 a.hasClass("md-focused") || a.addClass("md-focused")
30676 a.addClass("_md"), r(a);
30678 d = c[1] || e.fakeNgModel();
30679 u.init(d), o.mouseActive = !1, a.attr({
30680 role: "radiogroup",
30681 tabIndex: a.attr("tabindex") || "0"
30682 }).on("keydown", function(r) {
30683 var i = r.which || r.keyCode;
30684 if (i == n.KEY_CODE.ENTER || r.currentTarget == r.target) switch (i) {
30685 case n.KEY_CODE.LEFT_ARROW:
30686 case n.KEY_CODE.UP_ARROW:
30687 r.preventDefault(), u.selectPrevious(), l();
30689 case n.KEY_CODE.RIGHT_ARROW:
30690 case n.KEY_CODE.DOWN_ARROW:
30691 r.preventDefault(), u.selectNext(), l();
30693 case n.KEY_CODE.ENTER:
30694 var o = t.element(e.getClosest(a[0], "form"));
30695 o.length > 0 && o.triggerHandler("submit")
30697 }).on("mousedown", function(e) {
30698 o.mouseActive = !0, i(function() {
30701 }).on("focus", function() {
30702 !1 === o.mouseActive && u.$element.addClass("md-focused")
30703 }).on("blur", function() {
30704 u.$element.removeClass("md-focused")
30711 function n(e, t, n) {
30712 var r = "md-checked";
30715 require: "^mdRadioGroup",
30717 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>',
30718 link: function(i, o, a, s) {
30720 if (!s) throw "RadioButton: No RadioGroupController could be found.";
30721 s.add(u), a.$observe("value", u), o.on("click", l).on("$destroy", function() {
30727 o[0].hasAttribute("disabled") || s.isDisabled() || i.$apply(function() {
30728 s.setViewValue(a.value, e && e.type)
30733 var e = s.getViewValue() == a.value;
30734 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))
30740 id: a.id || "radio_" + t.nextUid(),
30742 "aria-checked": "false"
30743 }), e.expectWithText(n, "aria-label")
30744 }(o), a.ngValue ? t.nextTick(c, !1) : c()
30748 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], n.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], t.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", n)
30751 function r(e, r, i, o, a, c, l, u) {
30752 var d = i.KEY_CODE;
30753 d.SPACE, d.ENTER, d.UP_ARROW, d.DOWN_ARROW;
30756 require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
30757 compile: function(u, d) {
30758 var f = t.element("<md-select-value><span></span></md-select-value>");
30759 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());
30760 var h = u.find("md-content");
30761 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) {
30762 var p = t.element('<select class="md-visually-hidden"></select>');
30765 "aria-hidden": "true",
30768 var m = u.find("md-option");
30769 t.forEach(m, function(e) {
30770 var n = t.element("<option>" + e.innerHTML + "</option>");
30771 e.hasAttribute("ng-value") ? n.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && n.attr("value", e.getAttribute("value")), p.append(n)
30772 }), p.append('<option ng-value="' + d.ngModel + '" selected></option>'), u.parent().append(p)
30774 var g = r.parseAttributeBoolean(d.multiple),
30775 v = g ? "multiple" : "",
30776 b = '<div class="md-select-menu-container" aria-hidden="true" role="presentation"><md-select-menu role="presentation" {0}>{1}</md-select-menu></div>';
30777 return b = r.supplant(b, [v, u.html()]), u.empty().append(f), u.append(b), d.tabindex || d.$set("tabindex", 0),
30778 function(u, d, f, h) {
30780 var e = d.attr("aria-label") || d.attr("placeholder");
30781 !e && k && k.label && (e = k.label.text()), w = e, a.expect(d, "aria-label", e)
30785 D && (I = I || D.find("md-select-menu").controller("mdSelectMenu"), C.setLabelText(I.selectedLabels()))
30790 var e = I.selectedLabels({
30793 d.attr("aria-label", e.length ? w + ": " + e : w)
30798 k && k.setHasValue(I.selectedLabels().length > 0 || (d[0].validity || {}).badInput)
30802 if (i.isNavigationKey(e)) e.preventDefault(), _();
30803 else if (s(e, i)) {
30804 e.preventDefault();
30805 var n = I.optNodeForKeyboardSearch(e);
30806 if (!n || n.hasAttribute("disabled")) return;
30807 var r = t.element(n).controller("mdOption");
30808 I.isMultiple || I.deselect(Object.keys(I.selected)[0]), I.select(r.hashKey, r.value), I.refreshViewValue()
30813 N._mdSelectIsOpen = !0, d.attr("aria-expanded", "true"), e.show({
30820 preserveElement: !0,
30822 loadingAsync: !!f.mdOnOpen && (u.$eval(f.mdOnOpen) || !0)
30823 }).finally(function() {
30824 N._mdSelectIsOpen = !1, d.focus(), d.attr("aria-expanded", "false"), x.$setTouched()
30832 M = d.find("md-select-value"),
30833 A = t.isDefined(f.readonly),
30834 S = r.parseAttributeBoolean(f.mdNoAsterisk);
30835 if (S && d.addClass("md-no-asterisk"), k) {
30836 var O = k.isErrorGetter || function() {
30837 return x.$invalid && (x.$touched || T && T.$submitted)
30839 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!");
30840 k.input = d, k.label || a.expect(d, "aria-label", d.attr("placeholder")), u.$watch(O, k.setInvalid)
30844 if (D = t.element(d[0].querySelector(".md-select-menu-container")), N = u, f.mdContainerClass) {
30845 var e = D[0].getAttribute("class") + " " + f.mdContainerClass;
30846 D[0].setAttribute("class", e)
30847 }(I = D.find("md-select-menu").controller("mdSelectMenu")).init(x, f.ngModel), d.on("$destroy", function() {
30850 }(), o(d), T && t.isDefined(f.multiple) && r.nextTick(function() {
30851 (x.$modelValue || x.$viewValue) && T.$setPristine()
30854 x.$render = function() {
30856 }, f.$observe("placeholder", x.$render), k && k.label && f.$observe("required", function(e) {
30857 k.label.toggleClass("md-required", e && !S)
30858 }), C.setLabelText = function(e) {
30859 C.setIsPlaceholder(!e);
30861 if (f.mdSelectedText && f.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
30862 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);
30863 var n = M.children().eq(0);
30864 f.mdSelectedHtml ? n.html(l.getTrustedHtml(e)) : t ? n.text(e) : n.html(e)
30865 }, C.setIsPlaceholder = function(e) {
30866 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"))
30867 }, A || (d.on("focus", function(e) {
30868 k && k.setFocused(!0)
30869 }), d.on("blur", function(e) {
30870 E && (E = !1, N._mdSelectIsOpen && e.stopImmediatePropagation()), N._mdSelectIsOpen || (k && k.setFocused(!1), b())
30871 })), C.triggerClose = function() {
30873 }, u.$$postDigest(function() {
30875 }), u.$watch(function() {
30876 return I.selectedLabels()
30879 f.$observe("ngMultiple", function(e) {
30882 P = u.$watch(function() {
30884 }, function(e, t) {
30885 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() {
30889 }), f.$observe("disabled", function(e) {
30890 t.isString(e) && (e = !0), $ !== n && $ === e || ($ = e, e ? d.attr({
30891 "aria-disabled": "true"
30892 }).removeAttr("tabindex").off("click", _).off("keydown", y) : d.attr({
30893 tabindex: f.tabindex,
30894 "aria-disabled": "false"
30895 }).on("click", _).on("keydown", y))
30896 }), f.hasOwnProperty("disabled") || f.hasOwnProperty("ngDisabled") || (d.attr({
30897 "aria-disabled": "false"
30898 }), d.on("click", _), d.on("keydown", y));
30901 "aria-expanded": "false",
30902 "aria-multiselectable": g && !f.ngMultiple ? "true" : "false"
30904 d[0].hasAttribute("id") || (j.id = "select_" + r.nextUid());
30905 var H = "select_container_" + r.nextUid();
30906 D.attr("id", H), d.find("md-select-menu").length || (j["aria-owns"] = H), d.attr(j), u.$on("$destroy", function() {
30907 e.destroy().finally(function() {
30908 k && (k.setFocused(!1), k.setHasValue(!1), k.input = null), x.$setTouched()
30913 controller: function() {}
30917 function i(e, r, i, o) {
30918 function a(o, a, s) {
30920 var e = d.ngModel.$modelValue || d.ngModel.$viewValue || [];
30921 if (t.isArray(e)) {
30922 var n = Object.keys(d.selected),
30923 r = e.map(d.hashGetter);
30924 n.filter(function(e) {
30925 return -1 === r.indexOf(e)
30926 }).forEach(d.deselect), r.forEach(function(t, n) {
30933 var e = d.ngModel.$viewValue || d.ngModel.$modelValue;
30934 Object.keys(d.selected).forEach(d.deselect), d.select(d.hashGetter(e), e)
30937 d.isMultiple = t.isDefined(a.multiple), d.selected = {}, d.options = {}, o.$watchCollection(function() {
30940 d.ngModel.$render()
30943 d.setMultiple = function(e) {
30945 return t.isArray(e || n || [])
30948 f = f || r.$isEmpty, d.isMultiple = e, d.isMultiple ? (r.$validators["md-multiple"] = n, r.$render = c, o.$watchCollection(d.modelBinding, function(e) {
30950 }), r.$isEmpty = function(e) {
30951 return !e || 0 === e.length
30952 }) : (delete r.$validators["md-multiple"], r.$render = u)
30954 var h, p, m, g = "";
30955 d.optNodeForKeyboardSearch = function(e) {
30956 h && clearTimeout(h), h = setTimeout(function() {
30957 h = n, g = "", m = n, p = n
30959 var r = e.keyCode - (i.isNumPadKey(e) ? 48 : 0);
30960 g += String.fromCharCode(r);
30961 var o = new RegExp("^" + g, "i");
30962 p || (p = s.find("md-option"), m = new Array(p.length), t.forEach(p, function(e, t) {
30963 m[t] = e.textContent.trim()
30965 for (var a = 0; a < m.length; ++a)
30966 if (o.test(m[a])) return p[a]
30967 }, d.init = function(n, i) {
30968 d.ngModel = n, d.modelBinding = i, d.ngModel.$isEmpty = function(e) {
30969 return !d.options[d.hashGetter(e)]
30971 var a = r.getModelOption(n, "trackBy");
30975 d.hashGetter = function(e, t) {
30976 return s.$value = e, c(t || o, s)
30978 } else d.hashGetter = function(e) {
30979 return t.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++l)) : e
30981 d.setMultiple(d.isMultiple)
30982 }, d.selectedLabels = function(e) {
30983 var t = (e = e || {}).mode || "html",
30984 n = r.nodesToArray(s[0].querySelectorAll("md-option[selected]"));
30987 return "html" == t ? i = function(e) {
30988 if (e.hasAttribute("md-option-empty")) return "";
30989 var t = e.innerHTML,
30990 n = e.querySelector(".md-ripple-container");
30991 n && (t = t.replace(n.outerHTML, ""));
30992 var r = e.querySelector(".md-container");
30993 return r && (t = t.replace(r.outerHTML, "")), t
30994 } : "aria" == t && (i = function(e) {
30995 return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
30996 }), r.uniq(n.map(i)).join(", ")
30999 }, d.select = function(e, t) {
31000 var n = d.options[e];
31001 n && n.setSelected(!0), d.selected[e] = t
31002 }, d.deselect = function(e) {
31003 var t = d.options[e];
31004 t && t.setSelected(!1), delete d.selected[e]
31005 }, d.addOption = function(e, n) {
31006 if (t.isDefined(d.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + n.value + '" found.');
31007 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())
31008 }, d.removeOption = function(e) {
31009 delete d.options[e]
31010 }, d.refreshViewValue = function() {
31012 for (var i in d.selected)(e = d.options[i]) ? n.push(e.value) : n.push(d.selected[i]);
31013 var o = r.getModelOption(d.ngModel, "trackBy"),
31014 a = d.isMultiple ? n : n[0],
31015 s = d.ngModel.$modelValue;
31016 (o ? t.equals(s, a) : s + "" === a) || (d.ngModel.$setViewValue(a), d.ngModel.$render())
31019 return a.$inject = ["$scope", "$attrs", "$element"], {
31021 require: ["mdSelectMenu"],
31025 pre: function(e, n, i, a) {
31027 var i = r.getClosest(n.target, "md-option"),
31028 o = i && t.element(i).data("$mdOptionController");
31030 if (i.hasAttribute("disabled")) return n.stopImmediatePropagation(), !1;
31031 var a = c.hashGetter(o.value),
31032 s = t.isDefined(c.selected[a]);
31033 e.$apply(function() {
31034 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()
31039 n.addClass("_md"), o(n), n.on("click", s), n.on("keypress", function(e) {
31040 13 != e.keyCode && 32 != e.keyCode || s(e)
31047 function o(e, n, r) {
31054 function o(i, o, a, s) {
31055 function c(e, t, n) {
31056 if (d.hashGetter) {
31057 var r = d.hashGetter(t, i),
31058 o = d.hashGetter(e, i);
31059 l.hashKey = o, l.value = e, d.removeOption(r, l), d.addOption(o, l)
31060 } else n || i.$$postDigest(function() {
31066 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() {
31067 return o.text().trim()
31068 }, c), a.$observe("disabled", function(e) {
31069 e ? o.attr("tabindex", "-1") : o.attr("tabindex", "0")
31070 }), i.$$postDigest(function() {
31071 a.$observe("selected", function(e) {
31072 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())
31074 }), e.attach(i, o),
31078 "aria-selected": "false"
31080 o[0].hasAttribute("id") || (e.id = "select_option_" + n.nextUid()), o.attr(e)
31081 }(), i.$on("$destroy", function() {
31082 d.removeOption(l.hashKey, l)
31087 this.selected = !1, this.setSelected = function(t) {
31088 t && !this.selected ? e.attr({
31089 selected: "selected",
31090 "aria-selected": "true"
31091 }) : !t && this.selected && (e.removeAttr("selected"), e.attr("aria-selected", "false")), this.selected = t
31094 return a.$inject = ["$element"], {
31096 require: ["mdOption", "^^mdSelectMenu"],
31098 compile: function(e, n) {
31099 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
31105 function i(r, i, d, f, h, p, m, g, v) {
31107 var t = e.selectCtrl;
31109 var n = e.selectEl.controller("mdSelectMenu");
31110 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
31114 function y(n, r, i) {
31116 p = i.target[0].children[0],
31119 b = i.contentEl[0],
31120 y = m.getBoundingClientRect(),
31121 _ = p.getBoundingClientRect(),
31125 bottom: y.height - c,
31126 right: y.width - c - (d.floatingScrollbars() ? 16 : 0)
31129 top: _.top - $.top,
31130 left: _.left - $.left,
31131 right: $.right - (_.left + _.width),
31132 bottom: $.bottom - (_.top + _.height)
31134 E = y.width - 2 * c,
31135 k = g.querySelector("md-option[selected]"),
31136 C = g.getElementsByTagName("md-option"),
31137 x = g.getElementsByTagName("md-optgroup"),
31139 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");
31141 "MD-OPTGROUP" === (M.tagName || "").toUpperCase() && (s = M = C[0] || b.firstElementChild || b), i.focusedNode = M, h.style.display = "block";
31142 var A = g.getBoundingClientRect(),
31145 var O = f.getComputedStyle(s);
31146 S.paddingLeft = parseInt(O.paddingLeft, 10) || 0, S.paddingRight = parseInt(O.paddingRight, 10) || 0
31149 var D = b.offsetHeight / 2;
31150 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))
31153 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"];
31154 var H = h.getBoundingClientRect(),
31155 L = Math.round(100 * Math.min(_.width / A.width, 1)) / 100,
31156 F = Math.round(100 * Math.min(_.height / A.height, 1)) / 100;
31159 element: t.element(h),
31161 left: Math.floor(a($.left, N, $.right - H.width)),
31162 top: Math.floor(a($.top, I, $.bottom - H.height)),
31168 element: t.element(g),
31170 transformOrigin: R,
31171 transform: i.alreadyOpen ? "" : d.supplant("scale({0},{1})", [L, F])
31176 var _ = "$mdSelect.show() expected a target element in options.target but got '{0}'!",
31177 $ = d.dom.animator,
31182 onShow: function(e, o, a) {
31184 return h(function(e) {
31185 if (a.isRemoved) return h.reject(!1);
31186 var t = y(0, o, a);
31187 t.container.element.css($.toCss(t.container.styles)), t.dropDown.element.css($.toCss(t.dropDown.styles)), p(function() {
31188 o.addClass("md-active"), t.dropDown.element.css($.toCss({
31196 e && !e.hasAttribute("disabled") && e.focus()
31200 var e = function(e, t, n) {
31201 return function() {
31202 if (!n.isRemoved) {
31203 var e = y(0, t, n),
31206 r.element.css($.toCss(r.styles)), i.element.css($.toCss(i.styles))
31211 return n.on("resize", e), n.on("orientationchange", e),
31213 n.off("resize", e), n.off("orientationchange", e)
31219 e.preventDefault(), e.stopPropagation(), a.restoreFocus = !1, d.nextTick(r.hide, !0)
31223 switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
31230 var t = d.getClosest(e.target, "md-option");
31231 t && (h.triggerHandler({
31234 }), e.preventDefault()), f(e);
31238 e.stopPropagation(), e.preventDefault(), a.restoreFocus = !0, d.nextTick(r.hide, !0);
31242 var n = h.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
31243 a.focusedNode = n || a.focusedNode, n && n.focus()
31249 var t, r = d.nodesToArray(a.optionNodes),
31250 i = r.indexOf(a.focusedNode);
31252 -1 === i ? i = 0 : "next" === e && i < r.length - 1 ? i++ : "prev" === e && i > 0 && i--, (t = r[i]).hasAttribute("disabled") && (t = n)
31253 } while (!t && i < r.length - 1 && i > 0);
31254 t && t.focus(), a.focusedNode = t
31266 if (!(e && "click" == e.type && e.currentTarget != h[0] || function() {
31268 if (e && e.currentTarget.children.length > 0) {
31269 var n = e.currentTarget.children[0];
31270 n.scrollHeight > n.clientHeight && n.children.length > 0 && e.pageX - e.currentTarget.getBoundingClientRect().left > n.querySelector("md-option").offsetWidth && (t = !0)
31274 var t = d.getClosest(e.target, "md-option");
31275 t && t.hasAttribute && !t.hasAttribute("disabled") && (e.preventDefault(), e.stopPropagation(), p.isMultiple || (a.restoreFocus = !0, d.nextTick(function() {
31276 r.hide(p.ngModel.$viewValue)
31280 if (!a.isRemoved) {
31281 var h = a.selectEl,
31282 p = h.controller("mdSelectMenu") || {};
31283 return o.addClass("md-clickable"), a.backdrop && a.backdrop.on("click", e), h.on("keydown", t), h.on("click", f),
31285 a.backdrop && a.backdrop.off("click", e), h.off("keydown", t), h.off("click", f), o.removeClass("md-clickable"), a.isRemoved = !0
31289 return a.loadingAsync && !a.isRemoved && (e.$$loadingAsyncDone = !1, h.when(a.loadingAsync).then(function() {
31290 e.$$loadingAsyncDone = !0, delete a.loadingAsync
31291 }).then(function() {
31295 var r = o.find("md-select-menu");
31296 if (!n.target) throw new Error(d.supplant(_, [n.target]));
31299 target: t.element(n.target),
31300 parent: t.element(n.parent),
31302 contentEl: o.find("md-content"),
31303 optionNodes: r[0].getElementsByTagName("md-option")
31305 }(0, a), a.hideBackdrop = function(e, t, n) {
31306 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, {
31310 n.backdrop && n.backdrop.remove(), n.disableParentScroll && n.restoreScroll(), delete n.restoreScroll
31313 function(e, t, n) {
31314 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) {
31317 removeClass: "md-leave",
31319 }).start().then(c).then(e)
31324 }(0, o, a).then(function(e) {
31325 return o.attr("aria-hidden", "false"), a.alreadyOpen = !0, a.cleanupInteraction = b(), a.cleanupResizing = u(), l(a.focusedNode), e
31328 onRemove: function(e, t, n) {
31330 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()
31333 o = e.$on("$destroy", function() {
31336 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? r() : (i = m(t, {
31337 addClass: "md-leave"
31338 })).start().then(r)
31341 disableParentScroll: !0
31346 return e && t.isFunction(e.then)
31349 function a(e, t, n) {
31350 return Math.max(e, Math.min(t, n))
31355 left: e.offsetLeft,
31357 width: e.offsetWidth,
31358 height: e.offsetHeight
31370 var r = e[0].style.display;
31371 e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
31375 return i.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], r("$mdSelect").setDefaults({
31376 methods: ["target"],
31382 var n = String.fromCharCode(e.keyCode),
31383 r = e.keyCode <= 31;
31384 return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
31386 r.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], i.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], o.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], a.$inject = ["$$interimElementProvider"];
31389 u = t.element('<div class="md-container"><div class="md-icon"></div></div>');
31390 t.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", r).directive("mdSelectMenu", i).directive("mdOption", o).directive("mdOptgroup", function() {
31393 compile: function(e, n) {
31394 e.parent().find("md-select-header").length || function() {
31395 var r = e.find("label");
31396 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)
31400 }).directive("mdSelectHeader", function() {
31404 }).provider("$mdSelect", a)
31408 return ["$mdUtil", "$window", function(n, r) {
31412 link: function(i, o, a) {
31413 var s = i.$on("$md-resize-enable", function() {
31416 l = c.nodeType === r.Node.ELEMENT_NODE ? r.getComputedStyle(c) : {};
31417 i.$watch(a[e], function(e) {
31419 n.nextTick(function() {
31420 i.$broadcast("$md-resize")
31423 cachedTransitionStyles: l
31425 n.dom.animator.waitTransitionEnd(o, r).then(function() {
31426 i.$broadcast("$md-resize")
31435 t.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
31438 function e(e, r, i, o) {
31440 var o = function() {
31444 return i.when(r.supplant(c, [n || ""]))
31453 then: function(e) {
31454 return s(n).then(e || t.noop)
31460 return e.when(t).catch(o.error)
31462 var c = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
31464 find: function(t, i) {
31466 return a || i ? a : (o.error(r.supplant(c, [t || ""])), n)
31470 return function(e, n) {
31471 if (t.isUndefined(e)) return l;
31474 return !i && r ? l.waitFor(e) : !i && t.isUndefined(n) ? a(l, e) : i
31478 function r(e, r, i, o, a, s, c, l, u, d, f, h, p) {
31479 function m(c, m, g, v) {
31482 r = e[0].scrollTop;
31486 bottom: n.style.bottom,
31487 height: n.style.height
31492 height: e[0].clientHeight + "px"
31496 if (!t && C) return function() {
31497 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
31502 e && !w ? (w = x.css("overflow"), x.css("overflow", "hidden")) : t.isDefined(w) && (x.css("overflow", w), w = n)
31506 return e.keyCode === i.KEY_CODE.ESCAPE ? $(e) : d.when(!0)
31510 return e.preventDefault(), v.close()
31512 var w, E, k, C, x = null,
31515 A = l(g.mdIsLockedOpen),
31517 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.', {
31518 selector: g.mdDisableScrollTarget
31519 }))), 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() {
31520 E && E.remove(), v.destroy()
31521 }), c.$on("$destroy", function() {
31523 }), c.$watch(function() {
31524 return A(c.$parent, {
31525 $media: function(t) {
31526 return u.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), e(t)
31530 }, function(e, t) {
31531 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)
31532 }), c.$watch("isOpen", function(e) {
31533 var t = r.findFocusTarget(m) || r.findFocusTarget(m, "[md-sidenav-focus]") || m,
31535 n[e ? "on" : "off"]("keydown", _), E && E[e ? "on" : "off"]("click", $);
31537 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() {
31538 c.isOpen && (p(function() {
31539 S.triggerHandler("resize")
31540 }), t && t.focus()), i && i()
31542 }), v.$toggleOpen = function(e) {
31543 return c.isOpen == e ? d.when(!0) : (c.isOpen && v.onCloseCb && v.onCloseCb(), d(function(t) {
31544 c.isOpen = e, r.nextTick(function() {
31545 M.then(function(e) {
31546 !c.isOpen && T && "keyboard" === k && (T.focus(), T = null), t(e)
31555 isOpen: "=?mdIsOpen"
31557 controller: "$mdSidenavController",
31558 compile: function(e) {
31559 return e.addClass("md-closed").attr("tabIndex", "-1"), m
31564 function i(e, t, n, r, i) {
31566 o.isOpen = function() {
31568 }, o.isLockedOpen = function() {
31569 return !!e.isLockedOpen
31570 }, o.onClose = function(e) {
31571 return o.onCloseCb = e, o
31572 }, o.open = function() {
31573 return o.$toggleOpen(!0)
31574 }, o.close = function() {
31575 return o.$toggleOpen(!1)
31576 }, o.toggle = function() {
31577 return o.$toggleOpen(!e.isOpen)
31578 }, o.$toggleOpen = function(t) {
31579 return r.when(e.isOpen = t)
31581 var a = t.mdComponentId,
31582 s = a && a.indexOf(i.startSymbol()) > -1,
31583 c = s ? i(a)(e.$parent) : a;
31584 o.destroy = n.register(o, c), s && t.$observe("mdComponentId", function(e) {
31585 e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
31588 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() {
31591 require: "^mdSidenav",
31592 link: function(e, t, n, r) {}
31594 }).controller("$mdSidenavController", i)
31597 function e(e, n, r, i, o, a, s, c, l, u) {
31598 function d(r, d, f, h) {
31604 Z = parseFloat(e), d.attr("aria-valuemin", e), p()
31608 X = parseFloat(e), d.attr("aria-valuemax", e), p()
31616 J = C(parseInt(e), 0, 6)
31620 if (Y && !j() && !t.isUndefined(Q)) {
31622 var e = "Slider step value must be greater than zero when in discrete mode";
31623 throw l.error(e), new Error(e)
31625 var r = Math.floor((X - Z) / Q);
31626 ee || (ee = t.element("<canvas>").css("position", "absolute"), V.append(ee), te = ee[0].getContext("2d"));
31628 !i || i.height || i.width || ($(), i = ne), ee[0].width = i.width, ee[0].height = i.height;
31629 for (var o, a = 0; a <= r; a++) {
31630 var s = n.getComputedStyle(V[0]);
31631 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)
31639 te.clearRect(0, 0, e.width, e.height)
31644 ne = q[0].getBoundingClientRect()
31652 R.$setViewValue(C(x(e)))
31656 isNaN(R.$viewValue) && (R.$viewValue = R.$modelValue), R.$viewValue = C(R.$viewValue);
31657 var e = I(R.$viewValue);
31658 r.modelValue = R.$viewValue, d.attr("aria-valuenow", R.$viewValue), T(e), L.text(R.$viewValue)
31661 function C(e, n, r) {
31662 if (t.isNumber(e)) return n = t.isNumber(n) ? n : Z, r = t.isNumber(r) ? r : X, Math.max(n, Math.min(r, e))
31666 if (t.isNumber(e)) {
31667 var n = Math.round((e - Z) / Q) * Q + Z;
31668 return n = Math.round(n * Math.pow(10, J)) / Math.pow(10, J), P && P.fitInputWidthToTextLength && i.debounce(function() {
31669 P.fitInputWidthToTextLength(n.toString().length)
31675 var t = 100 * (e = O(e)) + "%",
31676 n = G ? 100 * (1 - e) + "%" : t;
31677 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)
31681 Y ? S(W ? e.pointer.y : e.pointer.x) : A(W ? e.pointer.y : e.pointer.x)
31685 r.$evalAsync(function() {
31691 var t = C(x(N(D(e))));
31696 return Math.max(0, Math.min(e || 0, 1))
31700 var t = (e - (W ? ne.top : ne.left)) / (W ? ne.height : ne.width);
31701 return W || "rtl" !== i.bidi() || (t = 1 - t), Math.max(0, Math.min(1, W ? 1 - t : t))
31705 return Z + (G ? 1 - e : e) * (X - Z)
31709 var t = (e - Z) / (X - Z);
31710 return G ? 1 - t : t
31714 $setViewValue: function(e) {
31715 this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
31721 $viewChangeListeners: []
31724 j = (t.element(i.getClosest(d, "_md-slider-container", !0)), f.ngDisabled ? t.bind(null, c(f.ngDisabled), r.$parent) : function() {
31725 return d[0].hasAttribute("disabled")
31727 H = t.element(d[0].querySelector(".md-thumb")),
31728 L = t.element(d[0].querySelector(".md-thumb-text")),
31730 q = t.element(d[0].querySelector(".md-track-container")),
31731 U = t.element(d[0].querySelector(".md-track-fill")),
31732 V = t.element(d[0].querySelector(".md-track-ticks")),
31733 z = t.element(d[0].getElementsByClassName("md-slider-wrapper")),
31734 B = (t.element(d[0].getElementsByClassName("md-slider-content")), i.throttle($, 5e3)),
31735 W = t.isDefined(f.mdVertical),
31736 Y = t.isDefined(f.mdDiscrete),
31737 G = t.isDefined(f.mdInvert);
31738 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);
31740 f.ngDisabled && r.$parent.$watch(f.ngDisabled, function() {
31741 d.attr("aria-disabled", !!j())
31742 }), s.register(z, "drag", {
31744 }), r.mouseActive = !1, z.on("keydown", function(e) {
31747 (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() {
31748 E(R.$viewValue + t)
31751 }).on("mousedown", function() {
31752 y(), r.mouseActive = !0, z.removeClass("md-focused"), u(function() {
31755 }).on("focus", function() {
31756 !1 === r.mouseActive && z.addClass("md-focused")
31757 }).on("blur", function() {
31758 z.removeClass("md-focused"), d.removeClass("md-active"), _()
31759 }).on("$md.pressdown", function(e) {
31761 d.addClass("md-active"), d[0].focus(), $();
31762 var t = C(x(N(D(W ? e.pointer.y : e.pointer.x))));
31763 r.$apply(function() {
31767 }).on("$md.pressup", function(e) {
31769 d.removeClass("md-dragging");
31770 var t = C(x(N(D(W ? e.pointer.y : e.pointer.x))));
31771 r.$apply(function() {
31775 }).on("$md.dragstart", function(e) {
31776 j() || (re = !0, e.stopPropagation(), d.addClass("md-dragging"), M(e))
31777 }).on("$md.drag", function(e) {
31778 re && (e.stopPropagation(), M(e))
31779 }).on("$md.dragend", function(e) {
31780 re && (e.stopPropagation(), re = !1)
31781 }), setTimeout(p, 0);
31782 var K = e.throttle(p);
31783 t.element(n).on("resize", K), r.$on("$destroy", function() {
31784 t.element(n).off("resize", K)
31785 }), R.$render = k, R.$viewChangeListeners.push(k), R.$formatters.push(C), R.$formatters.push(x);
31786 var Z, X, Q, J, ee, te, ne = {};
31792 require: ["?ngModel", "?^mdSliderContainer"],
31793 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>',
31794 compile: function(e, n) {
31795 var i = t.element(e[0].getElementsByClassName("md-slider-wrapper")),
31796 o = n.tabindex || 0;
31797 return i.attr("tabindex", o), (n.disabled || n.ngDisabled) && i.attr("tabindex", -1), e.attr("role", "slider"), r.expect(e, "aria-label"), d
31801 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() {
31803 controller: function() {},
31804 compile: function(e) {
31805 var r = e.find("md-slider");
31806 if (r) return r.attr("md-vertical") !== n && e.attr("md-vertical", ""), r.attr("flex") || r.attr("flex", ""),
31807 function(e, n, r, i) {
31809 n.children().attr("disabled", e), n.find("input").attr("disabled", e)
31813 r.disabled ? o(!0) : r.ngDisabled && (a = e.$watch(r.ngDisabled, function(e) {
31815 })), e.$on("$destroy", function() {
31819 i.fitInputWidthToTextLength = function(e) {
31820 var t = n[0].querySelector("md-input-container");
31822 var r = getComputedStyle(t),
31823 i = parseInt(r.minWidth),
31824 o = 2 * parseInt(r.padding);
31825 s = s || parseInt(r.maxWidth);
31826 var a = Math.max(s, i + o + i / 2 * e);
31827 t.style.maxWidth = a + "px"
31836 function e(e, t, r, i) {
31839 p.items.forEach(s), p.items = p.items.sort(function(e, t) {
31840 return e.top < t.top ? -1 : 1
31842 for (var e, t = f.prop("scrollTop"), n = p.items.length - 1; n >= 0; n--)
31843 if (t > p.items[n].top) {
31851 var t = e.element[0];
31852 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;
31853 e.height = e.element.prop("offsetHeight");
31854 var i = r.floatingScrollbars() ? "0" : n;
31855 r.bidi(e.clone, "margin-left", e.left, i), r.bidi(e.clone, "margin-right", i, e.right)
31859 var e = f.prop("scrollTop"),
31860 t = e > (c.prevScrollTop || 0);
31861 if (c.prevScrollTop = e, 0 !== e) {
31863 if (p.next && p.next.top <= e) return void l(p.next);
31864 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))
31867 if (p.current && p.prev && e < p.current.top) return void l(p.prev);
31868 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))
31870 p.current && d(p.current, e)
31875 if (p.current !== e) {
31876 p.current && (d(p.current, null), u(p.current, null)), e && u(e, "active"), p.current = e;
31877 var t = p.items.indexOf(e);
31878 p.next = p.items[t + 1], p.prev = p.items[t - 1], u(p.next, "next"), u(p.prev, "prev")
31883 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)
31887 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)")))
31889 var f = i.$element,
31891 a(f), f.on("$scrollstart", h), f.on("$scroll", c);
31898 add: function(e, t) {
31899 t.addClass("md-sticky-clone");
31904 return p.items.push(n), r.nextTick(function() {
31908 p.items.forEach(function(t, n) {
31909 t.element[0] === e[0] && (p.items.splice(n, 1), t.clone.remove())
31919 +r.now() - o > a ? (i = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), t.throttle(n))
31922 e.on("scroll touchmove", function() {
31923 i || (i = !0, t.throttle(n), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), o = +r.now()
31926 var s = r.checkStickySupport();
31927 return function(e, t, n) {
31928 var r = t.controller("mdContent");
31936 var a = r.$element.data("$$sticky");
31937 a || (a = o(r), r.$element.data("$$sticky", a));
31938 var c = n || i(t.clone())(e),
31940 e.$on("$destroy", l)
31944 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], t.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
31947 function e(e, n, r, i, o) {
31952 template: '<div class="md-subheader _md"> <div class="md-subheader-inner"> <div class="md-subheader-content"></div> </div></div>',
31953 link: function(a, s, c, l, u) {
31955 return t.element(e[0].querySelector(".md-subheader-content"))
31957 r(s), s.addClass("_md"), i.prefixer().removeAttribute(s, "ng-repeat");
31958 var f = s[0].outerHTML;
31959 c.$set("role", "heading"), o.expect(s, "aria-level", "2"), u(a, function(e) {
31961 }), s.hasClass("md-no-sticky") || u(a, function(t) {
31962 var r = n('<div class="md-subheader-wrapper" aria-hidden="true">' + f + "</div>")(a);
31963 i.nextTick(function() {
31970 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], t.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
31973 function e(e, n, r, i, o, a, s) {
31977 priority: r.BEFORE_NG_ARIA,
31979 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>',
31980 require: ["^?mdInputContainer", "?ngModel", "?^form"],
31981 compile: function(e, l) {
31982 var u = c.compile(e, l).post;
31983 return e.addClass("md-dragging"),
31984 function(e, c, l, d) {
31986 e.$apply(function() {
31987 h.$setViewValue(t), h.$render()
31991 var h = d[1] || n.fakeNgModel(),
31993 null != l.disabled ? p = function() {
31995 } : l.ngDisabled && (p = i(l.ngDisabled));
31996 var m = t.element(c[0].querySelector(".md-thumb-container")),
31997 g = t.element(c[0].querySelector(".md-container")),
31998 v = t.element(c[0].querySelector(".md-label"));
32000 c.removeClass("md-dragging")
32001 }), u(e, c, l, d), p && e.$watch(p, function(e) {
32002 c.attr("tabindex", e ? -1 : 0)
32003 }), l.$observe("mdInvert", function(e) {
32004 var t = n.parseAttributeBoolean(e);
32005 t ? c.prepend(v) : c.prepend(g), c.toggleClass("md-inverted", t)
32006 }), a.register(g, "drag"), g.on("$md.dragstart", function(t) {
32007 p && p(e) || (t.stopPropagation(), c.addClass("md-dragging"), b = {
32008 width: m.prop("offsetWidth")
32010 }).on("$md.drag", function(e) {
32012 e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
32013 var t = e.pointer.distanceX / b.width,
32014 n = h.$viewValue ? 1 + t : t;
32015 n = Math.max(0, Math.min(1, n)), m.css(r.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), b.translate = n
32017 }).on("$md.dragend", function(t) {
32018 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() {
32027 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], t.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
32034 link: function(t, i, o) {
32036 i.on(r, function(e) {
32037 t.$applyAsync(function() {
32046 t.$inject = ["$parse"];
32048 r = "$md." + e.toLowerCase();
32051 t.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
32052 }(), t.module("material.components.tabs", ["material.core", "material.components.icon"]),
32054 t.module("material.components.tabs").service("MdTabsPaginationService", function() {
32058 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], i.push(r), r += n.offsetWidth;
32064 for (t = 0; t < e.tabs.length; t++) n += e.tabs[t].offsetWidth;
32068 decreasePageOffset: function(t, n) {
32069 var r, i, o = t.canvas,
32071 for (r = 0; r < a.length; r++)
32076 return Math.max(0, i - o.clientWidth)
32078 increasePageOffset: function(n, r) {
32079 var i, o, a = n.canvas,
32080 s = t(n) - a.clientWidth,
32082 for (i = 0; c.length, c[i] <= r + a.clientWidth; i++) o = c[i];
32083 return Math.min(s, o)
32086 getTotalTabsWidth: t
32094 link: function(t, n) {
32095 n.addClass("_md"), t.$on("$destroy", function() {
32108 this.$onInit = function() {
32110 n.highlightAction && (t.highlightClasses = ["md-highlight", n.highlightClass]), t.$watch(function() {
32114 }), this.resolve = function() {
32120 function i(e, n, r, i) {
32122 return i("gt-xs") ? "md-toast-open-" + (e.indexOf("top") > -1 ? "top" : "bottom") : "md-toast-open-bottom"
32124 var s = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
32126 onShow: function(t, c, l) {
32127 o = l.textContent || l.content;
32128 var u = !i("gt-sm");
32129 return c = r.extractElementByName(c, "md-toast", !0), l.element = c, l.onSwipe = function(e, t) {
32130 var i = e.type.replace("$md.", ""),
32131 o = i.replace("swipe", "");
32132 "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))
32133 }, 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) {
32135 }).join(" ")), l.parent && l.parent.addClass("md-toast-animating"), e.enter(c, l.parent).then(function() {
32136 l.parent && l.parent.removeClass("md-toast-animating")
32139 onRemove: function(t, n, i) {
32140 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() {
32141 i.parent && i.parent.removeClass("md-toast-animating"), r.hasComputedStyle(i.parent, "position", "static") && i.parent.css("position", "")
32145 position: "bottom left",
32149 transformTemplate: function(e, n) {
32150 if (n.autoWrap && e && !/md-toast-content/g.test(e)) {
32151 var r = document.createElement("md-template");
32153 for (var i = 0; i < r.children.length; i++)
32154 if ("MD-TOAST" === r.children[i].nodeName) {
32155 var o = t.element('<div class="md-toast-content">');
32156 o.append(t.element(r.children[i].childNodes)), r.children[i].appendChild(o[0])
32164 r.$inject = ["$mdToast", "$scope"], i.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia"];
32166 return e("$mdToast").setDefaults({
32167 methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
32169 }).addPreset("simple", {
32170 argOption: "textContent",
32171 methods: ["textContent", "content", "action", "highlightAction", "highlightClass", "theme", "parent"],
32172 options: ["$mdToast", "$mdTheming", function(e, t) {
32174 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>',
32176 theme: t.defaultTheme(),
32177 controllerAs: "toast",
32178 bindToController: !0
32181 }).addMethod("updateTextContent", n).addMethod("updateContent", n)
32183 e.$inject = ["$mdToast"], n.$inject = ["$$interimElementProvider"], t.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", n)
32186 function e(e, n, r, i, o) {
32187 var a = t.bind(null, r.supplant, "translate3d(0,{0}px,0)");
32191 link: function(s, c, l) {
32192 c.addClass("_md"), i(c), r.nextTick(function() {
32193 c.addClass("_md-toolbar-transitions")
32194 }, !1), t.isDefined(l.mdScrollShrink) && function() {
32196 t && c.parent()[0] === t.parent()[0] && (p && p.off("scroll", y), p = t, m = d())
32200 var t = e ? e.target.scrollTop : v;
32201 _(), 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() {
32202 var e = c.hasClass("md-whiteframe-z1");
32203 e && !g ? o.removeClass(c, "md-whiteframe-z1") : !e && g && o.addClass(c, "md-whiteframe-z1")
32208 return p ? (p.on("scroll", y), p.attr("scroll-shrink", "true"), r.nextTick(f, !1), function() {
32209 p.off("scroll", y), p.attr("scroll-shrink", "false"), f()
32214 var e = -(h = c.prop("offsetHeight")) * b + "px";
32220 var h, p, m = t.noop,
32223 b = l.mdShrinkSpeedFactor || .5,
32225 _ = r.debounce(f, 5e3);
32226 s.$on("$mdContentLoaded", i), l.$observe("mdScrollShrink", function(e) {
32227 var t = c.parent().find("md-content");
32228 !p && t.length && i(0, t), !1 === (e = s.$eval(e)) ? m() : m = d()
32229 }), l.ngShow && s.$watch(l.ngShow, f), l.ngHide && s.$watch(l.ngHide, f), s.$on("$destroy", m)
32234 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], t.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
32238 e.addClass("md-truncate")
32240 e.$inject = ["$element"], t.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
32248 function n(e, n, r, i, o, a, s, c) {
32249 var l = "focus touchstart mouseenter",
32250 u = "blur touchcancel mouseleave",
32256 x: s.xPosition.CENTER,
32257 y: s.yPosition.ABOVE
32260 x: s.xPosition.OFFSET_END,
32261 y: s.yPosition.CENTER
32264 x: s.xPosition.CENTER,
32265 y: s.yPosition.BELOW
32268 x: s.xPosition.OFFSET_START,
32269 y: s.yPosition.CENTER
32276 mdZIndex: "=?mdZIndex",
32277 mdDelay: "=?mdDelay",
32278 mdVisible: "=?mdVisible",
32279 mdAutohide: "=?mdAutohide",
32280 mdDirection: "@?mdDirection"
32282 link: function(m, g, v) {
32284 m.mdZIndex = m.mdZIndex || d, m.mdDelay = m.mdDelay || f, p[m.mdDirection] || (m.mdDirection = h)
32288 var t = e || o(g.text().trim())(m.$parent);
32289 (!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))
32293 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))
32297 $.queued && $.value === !!t || !$.queued && m.mdVisible === !!t || ($.value = !!t, $.queued || (t ? ($.queued = !0, S = e(function() {
32298 m.mdVisible = $.value, $.queued = !1, S = null, m.visibleWatcher || w(m.mdVisible)
32299 }, m.mdDelay)) : a.nextTick(function() {
32300 m.mdVisible = !1, m.visibleWatcher || w(!1)
32309 if (!g[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
32311 var e = t.element(document.body),
32312 n = s.newPanelAnimation().openFrom(D).closeTo(D).withAnimation({
32320 propagateContainerEvents: !0,
32321 panelClass: "md-tooltip " + C,
32324 zIndex: m.mdZIndex,
32329 M.open().then(function() {
32330 M.panelEl.attr("role", "tooltip")
32337 var C, x, T, M, A, S, O = "md-tooltip-" + a.nextUid(),
32338 D = a.getParentWithPointerEvents(g),
32342 b(), y(), g.detach(), _(),
32345 return e.some(function(e) {
32346 return "disabled" === e.attributeName && D[0].disabled
32355 R = document.activeElement === D[0]
32359 "focus" === e.type && R ? R = !1 : m.mdVisible || (D.on(u, d), $(!0), "touchstart" === e.type && D.one("touchend", function() {
32360 a.nextTick(function() {
32361 i.one("touchend", d)
32367 ((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
32373 if (D[0] && "MutationObserver" in n) {
32374 var h = new MutationObserver(function(e) {
32375 t(e) && a.nextTick(function() {
32383 R = !1, c.register("scroll", r, !0), c.register("blur", o), c.register("resize", N), m.$on("$destroy", function() {
32384 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()
32385 }), D.on("mousedown", f), D.on(l, s)
32391 if (g[0] && "MutationObserver" in n) {
32392 var t = new MutationObserver(function(e) {
32393 e.forEach(function(e) {
32394 "md-visible" !== e.attributeName || m.visibleWatcher || (m.visibleWatcher = m.$watch("mdVisible", w))
32399 }), v.hasOwnProperty("mdVisible") && (m.visibleWatcher = m.$watch("mdVisible", w))
32400 } else m.visibleWatcher = m.$watch("mdVisible", w);
32401 m.$watch("mdDirection", _), g.one("$destroy", e), D.one("$destroy", e), m.$on("$destroy", function() {
32402 $(!1), M && M.destroy(), t && t.disconnect(), g.remove()
32403 }), g.text().indexOf(o.startSymbol()) > -1 && m.$watch(function() {
32404 return g.text().trim()
32410 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() {
32412 r[e.type] && r[e.type].forEach(function(t) {
32419 register: function(t, o, a) {
32420 var s = r[t] = r[t] || [];
32421 s.length || (a ? e.addEventListener(t, n, !0) : i.on(t, n)), -1 === s.indexOf(o) && s.push(o)
32423 deregister: function(t, o, a) {
32425 c = s ? s.indexOf(o) : -1;
32426 c > -1 && (s.splice(c, 1), 0 === s.length && (a ? e.removeEventListener(t, n, !0) : i.off(t, n)))
32433 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>"
32436 function n(e, n, r, i, o, a, s, c, l) {
32437 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) {
32438 e !== this.topIndex && this.scrollToIndex(e)
32439 }))) : 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");
32440 var u = t.bind(this, this.updateSize);
32441 e(t.bind(this, function() {
32443 var e = n.debounce(u, 10, null, !1),
32445 this.size || e(), r.on("resize", e), s.$on("$destroy", function() {
32447 }), s.$emit("$md-resize-enable"), s.$on("$md-resize", u)
32455 require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
32458 transclude: "element",
32459 compile: function(t, n) {
32460 var r = n.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
32463 a = n.mdExtraName && e(n.mdExtraName);
32464 return function(e, t, n, r, s) {
32465 r[0].link_(r[1], s, i, o, a)
32471 function i(e, n, r, i, o, a, s, c) {
32472 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_))
32476 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() ");
32483 link: function(e, t, n) {
32484 var r = e.$eval(n.mdForceHeight) || null;
32485 r && t && (t[0].style.height = r)
32489 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() {
32493 compile: function(e, t) {
32494 e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
32497 }).directive("mdVirtualRepeat", r).directive("mdForceHeight", a);
32498 n.prototype.register = function(e) {
32499 this.repeater = e, t.element(this.scroller).on("scroll wheel touchmove touchend", t.bind(this, this.handleScroll_))
32500 }, n.prototype.isHorizontal = function() {
32501 return this.horizontal
32502 }, n.prototype.getSize = function() {
32504 }, n.prototype.setSize_ = function(e) {
32505 var t = this.getDimensionName_();
32506 this.size = e, this.$element[0].style[t] = e + "px"
32507 }, n.prototype.unsetSize_ = function() {
32508 this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
32509 }, n.prototype.updateSize = function() {
32510 this.originalSize || (this.size = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight, this.handleScroll_(), this.repeater && this.repeater.containerUpdated())
32511 }, n.prototype.getScrollSize = function() {
32512 return this.scrollSize
32513 }, n.prototype.getDimensionName_ = function() {
32514 return this.isHorizontal() ? "width" : "height"
32515 }, n.prototype.sizeScroller_ = function(e) {
32516 var t = this.getDimensionName_(),
32517 n = this.isHorizontal() ? "height" : "width";
32518 if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
32520 this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
32521 var r = Math.floor(e / this.maxElementPixels),
32522 i = document.createElement("div");
32523 i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
32524 for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
32525 i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
32527 }, n.prototype.autoShrink_ = function(e) {
32528 var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
32529 if (this.autoShrink && t !== this.size) {
32530 null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
32531 var n = this.originalSize || this.size;
32532 if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
32533 else if (null !== this.originalSize) {
32535 var r = this.originalSize;
32536 this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
32538 this.repeater.containerUpdated()
32540 }, n.prototype.setScrollSize = function(e) {
32541 var t = e + this.offsetSize;
32542 this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
32543 }, n.prototype.getScrollOffset = function() {
32544 return this.scrollOffset
32545 }, n.prototype.scrollTo = function(e) {
32546 this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
32547 }, n.prototype.scrollToIndex = function(e) {
32548 var t = this.repeater.getItemSize(),
32549 n = this.repeater.itemsLength;
32550 e > n && (e = n - 1), this.scrollTo(t * e)
32551 }, n.prototype.resetScroll = function() {
32553 }, n.prototype.handleScroll_ = function() {
32554 var e = "rtl" != document.dir && "rtl" != document.body.dir;
32555 e || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
32556 var t = this.isHorizontal() ? e ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
32557 if (!(t === this.scrollOffset || t > this.scrollSize - this.size)) {
32558 var n = this.repeater.getItemSize();
32560 var r = Math.max(0, Math.floor(t / n) - 3),
32561 i = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || e ? r * n : -r * n) + "px)";
32562 if (this.scrollOffset = t, this.offsetter.style.webkitTransform = i, this.offsetter.style.transform = i, this.bindTopIndex) {
32563 var o = Math.floor(t / n);
32564 o !== this.topIndex && o < this.repeater.getItemCount() && (this.topIndex = o, this.bindTopIndex.assign(this.$scope, o), this.$rootScope.$$phase || this.$scope.$digest())
32566 this.repeater.containerUpdated()
32569 }, i.prototype.link_ = function(e, n, r, i, o) {
32570 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)
32571 }, i.prototype.cleanupBlocks_ = function() {
32572 t.forEach(this.pooledBlocks, function(e) {
32575 }, i.prototype.readItemSize_ = function() {
32576 if (!this.itemSize) {
32577 this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
32578 var e = this.getBlock_(0);
32579 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()
32581 }, i.prototype.repeatListExpression_ = function(e) {
32582 var t = this.rawRepeatListExpression(e);
32583 if (this.onDemand && t) {
32585 return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
32588 }, i.prototype.containerUpdated = function() {
32589 if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== t.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e) {
32590 e && e.length && this.readItemSize_()
32591 })), void(this.$rootScope.$$phase || this.$scope.$digest());
32592 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) {
32593 this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
32594 }))), 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))
32595 }, i.prototype.getItemSize = function() {
32596 return this.itemSize
32597 }, i.prototype.getItemCount = function() {
32598 return this.itemsLength
32599 }, i.prototype.virtualRepeatUpdate_ = function(e, n) {
32600 this.isVirtualRepeatUpdating_ = !0;
32601 var r = e && e.length || 0,
32603 if (this.items && r < this.items.length && 0 !== this.container.getScrollOffset()) {
32605 var o = this.container.getScrollOffset();
32606 this.container.resetScroll(), this.container.scrollTo(o)
32608 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) {
32609 var t = parseInt(e, 10);
32610 (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
32611 }, this), this.$browser.$$checkUrlChange = t.noop;
32614 for (a = this.newStartIndex; a < this.newEndIndex && null == this.blocks[a]; a++) s = this.getBlock_(a), this.updateBlock_(s, a), c.push(s);
32615 for (; null != this.blocks[a]; a++) this.updateBlock_(this.blocks[a], a);
32616 for (var u = a - 1; a < this.newEndIndex; a++) s = this.getBlock_(a), this.updateBlock_(s, a), l.push(s);
32617 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) {
32618 this.isFirstRender = !1;
32619 var d = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex;
32620 this.$mdUtil.nextTick(function() {
32621 this.container.scrollToIndex(d)
32624 this.isVirtualRepeatUpdating_ = !1
32625 }, i.prototype.getBlock_ = function(e) {
32626 if (this.pooledBlocks.length) return this.pooledBlocks.pop();
32628 return this.transclude(t.bind(this, function(t, r) {
32633 }, this.updateScope_(r, e), this.parentNode.appendChild(t[0])
32635 }, i.prototype.updateBlock_ = function(e, t) {
32636 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())
32637 }, i.prototype.updateScope_ = function(e, t) {
32638 e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
32639 }, i.prototype.poolBlock_ = function(e) {
32640 this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
32641 }, i.prototype.domFragmentFromBlocks_ = function(e) {
32642 var t = this.$document[0].createDocumentFragment();
32643 return e.forEach(function(e) {
32644 t.appendChild(e.element[0])
32646 }, i.prototype.updateIndexes_ = function() {
32647 var e = this.items ? this.items.length : 0,
32648 t = Math.ceil(this.container.getSize() / this.itemSize);
32649 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)
32650 }, o.prototype.$$includeIndexes = function(e, t) {
32651 for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
32652 this.length = this.model.getLength()
32653 }, a.$inject = ["$mdUtil"]
32662 link: function(o, a, s) {
32664 s.$observe("mdWhiteframe", function(o) {
32665 (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);
32666 var l = o == t ? "" : "md-whiteframe-" + o + "dp";
32667 s.$updateClass(l, c), c = l
32672 e.$inject = ["$log"], t.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
32675 function e(e, s, c, l, u, d, f, h, p, m, g, v) {
32677 e.requireMatch && ye && ye.$setValidity("md-require-match", !!e.selectedItem || !e.searchText)
32681 if (!fe) return c.nextTick(y, !1, e);
32682 var t, n = (e.dropdownItems || i) * r,
32683 l = fe.wrap.getBoundingClientRect(),
32684 u = fe.snap.getBoundingClientRect(),
32685 d = fe.root.getBoundingClientRect(),
32686 f = u.bottom - d.top,
32687 h = d.bottom - u.top,
32688 m = l.left - d.left,
32692 t = s.find("md-input-container");
32694 var n = t.find("input");
32695 e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
32699 b = e.dropdownPosition;
32700 if (b || (b = f > h && d.height - f - o < n ? "top" : "bottom"), p.mdFloatingLabel && (m += a, g -= 2 * a), t = {
32702 minWidth: g + "px",
32703 maxWidth: Math.max(l.right - d.left, d.right - l.left) - o + "px"
32704 }, "top" === b) t.top = "auto", t.bottom = h + "px", t.maxHeight = Math.min(n, l.top - d.top - o) + "px";
32706 var _ = d.bottom - l.bottom - o + c.getViewportTop();
32707 t.top = f - v + "px", t.bottom = "auto", t.maxHeight = Math.min(n, _) + "px"
32709 fe.$.scrollContainer.css(t), c.nextTick(function() {
32710 var e = fe.scrollContainer.getBoundingClientRect(),
32712 e.right > d.right - o && (t.left = l.right - e.width + "px"), fe.$.scrollContainer.css(t)
32717 fe.$.root.length && (u(fe.$.scrollContainer), fe.$.scrollContainer.detach(), fe.$.root.append(fe.$.scrollContainer), f.pin && f.pin(fe.$.scrollContainer, h))
32725 var n = parseInt(e.delay, 10) || 0;
32726 p.$observe("disabled", function(e) {
32727 le.isDisabled = c.parseAttributeBoolean(e, !1)
32728 }), p.$observe("required", function(e) {
32729 le.isRequired = c.parseAttributeBoolean(e, !1)
32730 }), p.$observe("readonly", function(e) {
32731 le.isReadonly = c.parseAttributeBoolean(e, !1)
32732 }), e.$watch("searchText", n ? c.debounce(N, n) : N), e.$watch("selectedItem", A), t.element(d).on("resize", _e), e.$on("$destroy", E)
32736 if (le.hidden || c.enableScrolling(), t.element(d).off("resize", _e), fe) {
32737 var e = ["ul", "scroller", "scrollContainer", "input"];
32738 t.forEach(e, function(e) {
32748 scrollContainer: s[0].querySelector(".md-virtual-repeat-container"),
32749 scroller: s[0].querySelector(".md-virtual-repeat-scroller"),
32750 ul: s.find("ul")[0],
32751 input: s.find("input")[0],
32754 root: document.body
32755 }).li = fe.ul.getElementsByTagName("li"), fe.$ = x(fe), ye = fe.$.input.controller("ngModel")
32760 for (e = s; e.length && (n = e.attr("md-autocomplete-snap"), !t.isDefined(n)); e = e.parent());
32761 if (e.length) return {
32763 wrap: "width" === n.toLowerCase() ? e[0] : s.find("md-autocomplete-wrap")[0]
32765 var r = s.find("md-autocomplete-wrap")[0];
32774 for (var r in e) e.hasOwnProperty(r) && (n[r] = t.element(e[r]));
32782 return e.on("wheel", t), e.on("touchmove", t),
32784 e.off("wheel", t), e.off("touchmove", t)
32789 ge || le.hidden || fe.input.focus(), pe = !1, le.hidden = F()
32793 b(), n ? P(n).then(function(t) {
32794 e.searchText = t, D(n, r)
32795 }) : r && e.searchText && P(r).then(function(n) {
32796 t.isString(e.searchText) && n.toString().toLowerCase() === e.searchText.toLowerCase() && (e.searchText = "")
32801 t.isFunction(e.itemChange) && e.itemChange(j(e.selectedItem))
32805 t.isFunction(e.textChange) && e.textChange()
32809 me.forEach(function(n) {
32815 le.index = H(), t !== n && (b(), P(e.selectedItem).then(function(r) {
32816 t !== r && (e.selectedItem = null, t !== n && O(), G() ? oe() : (le.matches = [], L(!1), J(!1, $e.Count)))
32821 e && (pe = !1, ge = !1), fe.input.blur()
32825 return t.isNumber(e.minLength) ? e.minLength : 1
32829 return m.when(function(t) {
32830 return t && e.itemText ? e.itemText(j(t)) : null
32831 }(n) || n).then(function(e) {
32832 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
32839 return le.itemName && (t[le.itemName] = e), t
32843 return e.autoselect ? 0 : -1
32847 le.loading != e && (le.loading = e), le.hidden = F()
32851 return !q() || !z()
32855 return !(le.loading && !B()) && (!W() && !!ge)
32859 return V("blur") || !le.hidden || le.loading || V("clear") && e.searchText
32863 return !e.escapeOptions || -1 !== e.escapeOptions.toLowerCase().indexOf(t)
32867 return G() && B() || ie()
32871 return !!le.matches.length
32875 return !!le.scope.selectedItem
32879 return P(le.matches[le.index])
32883 return (e.searchText || "").length >= R()
32887 c.nextTick(function() {
32888 P(le.matches[t]).then(function(e) {
32889 var t = fe.$.input.controller("ngModel");
32890 t.$setViewValue(e), t.$render()
32891 }).finally(function() {
32892 e.selectedItem = le.matches[t], L(!1)
32898 le.index = 0, le.matches = []
32902 L(!0), e.searchText = "";
32903 var t = document.createEvent("CustomEvent");
32904 t.initCustomEvent("change", !0, !0, {
32906 }), fe.input.dispatchEvent(t), fe.input.blur(), e.searchText = "", fe.input.focus()
32911 he[o] = t, (n || "") === (e.searchText || "") && ae(t)
32913 var i = e.$parent.$eval(de),
32914 o = n.toLowerCase(),
32917 a ? r(i) : s && function(t) {
32918 t && (t = m.when(t), ve++, L(!0), c.nextTick(function() {
32919 t.then(r).finally(function() {
32927 var n = e ? "polite" : "assertive",
32929 t & $e.Selected && -1 !== le.index && r.push(Y()), t & $e.Count && r.push(m.resolve(ee())), m.all(r).then(function(e) {
32930 v.announce(e.join(" "), n)
32935 switch (le.matches.length) {
32937 return "There are no matches available.";
32939 return "There is 1 match available.";
32941 return "There are " + le.matches.length + " matches available."
32947 var e = fe.li[0].offsetHeight,
32950 r = fe.scroller.clientHeight,
32951 i = fe.scroller.scrollTop;
32952 t < i ? re(t) : n > i + r && re(n - r)
32961 fe.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
32965 var e = (le.scope.searchText || "").length;
32966 return le.hasNotFound && !B() && (!le.loading || ne()) && e >= R() && (ge || pe) && !W()
32970 var t = e.searchText || "",
32971 n = t.toLowerCase();
32972 !e.noCache && he[n] ? ae(he[n]) : Q(t), le.hidden = F()
32976 le.matches = t, le.hidden = F(), le.loading && L(!1), e.selectOnMatch && se(), y(), J(!0, $e.Count)
32980 var t = e.searchText,
32983 1 === n.length && P(r).then(function(n) {
32985 e.matchInsensitive && !r && (r = t.toLowerCase() == n.toLowerCase()), r && K(0)
32989 function ce(t, n) {
32990 p[t] && e.$parent.$eval(p[t], n || {})
32993 ue = e.itemsExpr.split(/ in /i),
33003 _e = c.debounce(function() {
33006 ! function(e, t, n) {
33007 Object.defineProperty(le, e, {
33016 }("hidden", function(e, n) {
33017 !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))
33018 }, !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) {
33019 switch (t.keyCode) {
33020 case l.KEY_CODE.DOWN_ARROW:
33021 if (le.loading) return;
33022 t.stopPropagation(), t.preventDefault(), le.index = Math.min(le.index + 1, le.matches.length - 1), te(), J(!1, $e.Selected);
33024 case l.KEY_CODE.UP_ARROW:
33025 if (le.loading) return;
33026 t.stopPropagation(), t.preventDefault(), le.index = le.index < 0 ? le.matches.length - 1 : Math.max(0, le.index - 1), te(), J(!1, $e.Selected);
33028 case l.KEY_CODE.TAB:
33029 if (M(), le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
33032 case l.KEY_CODE.ENTER:
33033 if (le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
33035 t.stopPropagation(), t.preventDefault(), K(le.index);
33037 case l.KEY_CODE.ESCAPE:
33038 if (t.preventDefault(), !U()) return;
33039 t.stopPropagation(), Z(), e.searchText && V("clear") && X(), le.hidden = !0, V("blur") && I(!0)
33041 }, le.blur = function(e) {
33042 ge = !1, pe || (le.hidden = F(), ce("ngBlur", {
33045 }, le.focus = function(e) {
33046 ge = !0, q() && G() && oe(), le.hidden = F(), ce("ngFocus", {
33049 }, le.clear = function() {
33051 }, le.select = K, le.listEnter = function() {
33053 }, le.listLeave = M, le.mouseUp = function() {
33055 }, le.getCurrentDisplayValue = Y, le.registerSelectedItemWatcher = function(e) {
33056 -1 == me.indexOf(e) && me.push(e)
33057 }, le.unregisterSelectedItemWatcher = function(e) {
33058 var t = me.indexOf(e); - 1 != t && me.splice(t, 1)
33059 }, le.notFoundVisible = ie, le.loadingIsVisible = function() {
33060 return le.loading && !W()
33061 }, le.positionDropdown = y;
33066 return c.initOptionalProperties(e, p, {
33068 selectedItem: null,
33070 }), u(s), w(), void c.nextTick(function() {
33071 k(), _(), e.autofocus && s.on("focus", $)
33074 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], t.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
33083 controller: "MdAutocompleteCtrl",
33084 controllerAs: "$mdAutocompleteCtrl",
33086 inputName: "@mdInputName",
33087 inputMinlength: "@mdInputMinlength",
33088 inputMaxlength: "@mdInputMaxlength",
33089 searchText: "=?mdSearchText",
33090 selectedItem: "=?mdSelectedItem",
33091 itemsExpr: "@mdItems",
33092 itemText: "&mdItemText",
33093 placeholder: "@placeholder",
33094 noCache: "=?mdNoCache",
33095 requireMatch: "=?mdRequireMatch",
33096 selectOnMatch: "=?mdSelectOnMatch",
33097 matchInsensitive: "=?mdMatchCaseInsensitive",
33098 itemChange: "&?mdSelectedItemChange",
33099 textChange: "&?mdSearchTextChange",
33100 minLength: "=?mdMinLength",
33101 delay: "=?mdDelay",
33102 autofocus: "=?mdAutofocus",
33103 floatingLabel: "@?mdFloatingLabel",
33104 autoselect: "=?mdAutoselect",
33105 menuClass: "@?mdMenuClass",
33106 inputId: "@?mdInputId",
33107 escapeOptions: "@?mdEscapeOptions",
33108 dropdownItems: "=?mdDropdownItems",
33109 dropdownPosition: "@?mdDropdownPosition",
33110 clearButton: "=?mdClearButton"
33112 compile: function(e, n) {
33113 var r = ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"],
33114 i = e.find("input");
33115 return r.forEach(function(e) {
33116 var t = n[n.$normalize(e)];
33117 null !== t && i.attr(e, t)
33119 function(e, n, r, i) {
33120 i.hasNotFound = !!n.attr("md-has-not-found"), t.isDefined(r.mdClearButton) || e.floatingLabel || (e.clearButton = !0)
33123 template: function(t, n) {
33124 var r = function() {
33125 var e = t.find("md-not-found").detach(),
33126 n = e.length ? e.html() : "";
33127 return n ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" md-autocomplete-parent-scope>' + n + "</li>" : ""
33130 var e = t.find("md-item-template").detach(),
33131 n = e.length ? e.html() : t.html();
33132 return e.length || t.empty(), "<md-autocomplete-parent-scope md-autocomplete-replace>" + n + "</md-autocomplete-parent-scope>"
33136 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>"
33140 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.autocomplete").directive("mdAutocomplete", e)
33146 compile: function(e, n, r) {
33147 return function(e, n, i) {
33149 s[r] = e[n], e.$watch(n, function(e) {
33150 t.nextTick(function() {
33155 var a = e.$mdAutocompleteCtrl,
33156 s = a.parent.$new(),
33158 o("$index", "$index"), o("item", c),
33162 e.$watch(function() {
33163 n || t || (t = !0, e.$$postDigest(function() {
33164 n || s.$digest(), t = n = !1
33166 }), s.$watch(function() {
33169 }(), r(s, function(e) {
33175 transclude: "element"
33178 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
33181 function e(e, t, n) {
33182 this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
33184 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(e, t) {
33185 this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(n) {
33190 }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
33191 }, e.prototype.onRender = function(e, t) {
33192 var n = e.contentText;
33193 null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
33194 }, e.prototype.applyRegex = function(e) {
33195 var n = this.resolveTokens(e);
33196 this.$element.empty(), n.forEach(function(e) {
33198 var n = t.element('<span class="highlight">').text(e.text);
33199 this.$element.append(n)
33200 } else this.$element.append(document.createTextNode(e))
33202 }, e.prototype.resolveTokens = function(e) {
33204 var i = e.slice(t, r);
33209 return e.replace(this.regex, function(e, i) {
33213 }), r = i + e.length
33215 }, e.prototype.createRegex = function(e, t) {
33218 i = this.sanitizeRegex(e);
33219 return t.indexOf("^") >= 0 && (n = "^"), t.indexOf("$") >= 0 && (r = "$"), new RegExp(n + i + r, t.replace(/[$^]/g, ""))
33220 }, e.prototype.sanitizeRegex = function(e) {
33221 return e && e.toString().replace(/[\\^$*+?.()|{}[\]]/g, "\\$&")
33228 controller: "MdHighlightCtrl",
33229 compile: function(n, r) {
33230 var i = t(r.mdHighlightText),
33232 return function(e, t, n, r) {
33238 e.$inject = ["$interpolate", "$parse"], t.module("material.components.autocomplete").directive("mdHighlightText", e)
33241 function r(e, t, r, i, o) {
33242 this.$scope = e, this.$element = t, this.$mdConstant = r, this.$timeout = i, this.$mdUtil = o, this.isEditting = !1, this.parentController = n, this.enableChipEdit = !1
33244 r.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], t.module("material.components.chips").controller("MdChipCtrl", r), r.prototype.init = function(e) {
33245 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"))
33246 }, r.prototype.getChipContent = function() {
33247 var e = this.$element[0].getElementsByClassName("md-chip-content");
33248 return t.element(e[0])
33249 }, r.prototype.getContentElement = function() {
33250 return t.element(this.getChipContent().children()[0])
33251 }, r.prototype.getChipIndex = function() {
33252 return parseInt(this.$element.attr("index"))
33253 }, r.prototype.goOutOfEditMode = function() {
33254 if (this.isEditting) {
33255 this.isEditting = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
33256 var e = this.getChipIndex();
33257 this.getContentElement().text() ? (this.parentController.updateChipContents(e, this.getContentElement().text()), this.$mdUtil.nextTick(function() {
33258 this.parentController.selectedChip === e && this.parentController.focusChip(e)
33259 }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
33261 }, r.prototype.selectNodeContents = function(t) {
33263 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))
33264 }, r.prototype.goInEditMode = function() {
33265 this.isEditting = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
33266 this.goOutOfEditMode()
33267 }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
33268 }, r.prototype.chipKeyDown = function(e) {
33269 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())
33270 }, r.prototype.chipMouseDown = function() {
33271 this.getChipIndex() == this.parentController.selectedChip && this.enableChipEdit && !this.isEditting && this.goInEditMode()
33275 function e(e, r, i, o) {
33276 var a = r.processTemplate(n);
33279 require: ["^?mdChips", "mdChip"],
33280 link: function(n, r, s, c) {
33283 d = t.element(r[0].querySelector(".md-chip-content"));
33284 e(r), l && (u.init(l), d.append(i(a)(n)), d.on("blur", function() {
33285 l.resetSelectedChip(), l.$scope.$applyAsync()
33286 })), o(function() {
33287 l && l.shouldFocusLastChip && l.focusLastChipThenInput()
33290 controller: "MdChipCtrl"
33293 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], t.module("material.components.chips").directive("mdChip", e);
33294 var n = ' <span ng-if="!$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.deleteHint}} </span>'
33300 require: "^mdChips",
33302 link: function(t, n, r, i) {
33303 n.on("click", function(e) {
33304 t.$apply(function() {
33305 i.removeChip(t.$$replacedScope.$index)
33311 }), n.find("button").attr("tabindex", "-1")
33316 e.$inject = ["$timeout"], t.module("material.components.chips").directive("mdChipRemove", e)
33323 link: function(t, n, r) {
33324 var i = t.$parent.$mdChipsCtrl,
33325 o = i.parent.$new(!1, i.parent);
33326 o.$$replacedScope = t, o.$chip = t.$chip, o.$index = t.$index, o.$mdChipsCtrl = i;
33327 var a = i.$scope.$eval(r.mdChipTransclude);
33328 n.html(a), e(n.contents())(o)
33333 e.$inject = ["$compile"], t.module("material.components.chips").directive("mdChipTransclude", e)
33336 function e(e, t, r, i, o, a, s) {
33337 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()
33339 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil"];
33341 t.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
33343 e.wrapperId = "_md-chips-wrapper-" + e.$mdUtil.nextUid(), e.$scope.$watchCollection("$mdChipsCtrl.items", function() {
33344 e.setupInputAria(), e.setupWrapperAria()
33345 }), e.$attrs.$observe("mdChipAppendDelay", function(t) {
33346 e.chipAppendDelay = parseInt(t) || n
33348 }, e.prototype.setupInputAria = function() {
33349 var e = this.$element.find("input");
33350 e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0))
33351 }, e.prototype.setupWrapperAria = function() {
33353 t = this.$element.find("md-chips-wrap");
33354 this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
33355 return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
33356 }), t.attr("aria-owns", this.contentIds.join(" "))) : (t.removeAttr("role"), t.removeAttr("aria-owns"))
33357 }, e.prototype.inputKeydown = function(e) {
33358 var t = this.getChipBuffer();
33359 if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
33360 if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
33361 if (0 !== this.getCursorPosition(e.target)) return;
33362 return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
33364 if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
33365 if (this.autocompleteCtrl && this.requireMatch || !t) return;
33366 if (e.preventDefault(), this.hasMaxChipsReached()) return;
33367 return this.appendChip(t.trim()), this.resetChipBuffer(), !1
33370 }, e.prototype.getCursorPosition = function(e) {
33372 if (e.selectionStart === e.selectionEnd) return e.selectionStart
33374 if (!e.value) return 0
33376 }, e.prototype.updateChipContents = function(e, t) {
33377 e >= 0 && e < this.items.length && (this.items[e] = t, this.ngModelCtrl.$setDirty())
33378 }, e.prototype.isEditingChip = function() {
33379 return !!this.$element[0].querySelector("._md-chip-editing")
33380 }, e.prototype.isRemovable = function() {
33381 return !!this.ngModelCtrl && (this.readonly ? this.removable : !t.isDefined(this.removable) || this.removable)
33382 }, e.prototype.chipKeydown = function(e) {
33383 if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
33384 case this.$mdConstant.KEY_CODE.BACKSPACE:
33385 case this.$mdConstant.KEY_CODE.DELETE:
33386 if (this.selectedChip < 0) return;
33387 if (e.preventDefault(), !this.isRemovable()) return;
33388 this.removeAndSelectAdjacentChip(this.selectedChip);
33390 case this.$mdConstant.KEY_CODE.LEFT_ARROW:
33391 e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 == this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
33393 case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
33394 e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
33396 case this.$mdConstant.KEY_CODE.ESCAPE:
33397 case this.$mdConstant.KEY_CODE.TAB:
33398 if (this.selectedChip < 0) return;
33399 e.preventDefault(), this.onFocus()
33401 }, e.prototype.getPlaceholder = function() {
33402 return this.items && this.items.length && ("" == this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
33403 }, e.prototype.removeAndSelectAdjacentChip = function(e) {
33405 n = t.getAdjacentChipIndex(e);
33406 this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
33407 t.removeChip(e), t.$timeout(function() {
33408 t.$timeout(function() {
33409 t.selectAndFocusChipSafe(n)
33412 }, e.prototype.resetSelectedChip = function() {
33413 this.selectedChip = -1, this.ariaTabIndex = null
33414 }, e.prototype.getAdjacentChipIndex = function(e) {
33415 var t = this.items.length - 1;
33416 return 0 == t ? -1 : e == t ? e - 1 : e
33417 }, e.prototype.appendChip = function(e) {
33418 if (this.shouldFocusLastChip = !0, this.useTransformChip && this.transformChip) {
33419 var n = this.transformChip({
33422 t.isDefined(n) && (e = n)
33424 if (!(t.isObject(e) && this.items.some(function(n) {
33425 return t.equals(e, n)
33426 }) || null == e || this.items.indexOf(e) + 1)) {
33427 var r = this.items.push(e) - 1;
33428 this.ngModelCtrl.$setDirty(), this.validateModel(), this.useOnAdd && this.onAdd && this.onAdd({
33433 }, e.prototype.useTransformChipExpression = function() {
33434 this.useTransformChip = !0
33435 }, e.prototype.useOnAddExpression = function() {
33437 }, e.prototype.useOnRemoveExpression = function() {
33438 this.useOnRemove = !0
33439 }, e.prototype.useOnSelectExpression = function() {
33440 this.useOnSelect = !0
33441 }, e.prototype.getChipBuffer = function() {
33442 var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
33443 return t.isString(e) ? e : ""
33444 }, e.prototype.resetChipBuffer = function() {
33445 this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
33446 }, e.prototype.hasMaxChipsReached = function() {
33447 return t.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), this.maxChips > 0 && this.items.length >= this.maxChips
33448 }, e.prototype.validateModel = function() {
33449 this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached())
33450 }, e.prototype.removeChip = function(e) {
33451 var t = this.items.splice(e, 1);
33452 this.ngModelCtrl.$setDirty(), this.validateModel(), t && t.length && this.useOnRemove && this.onRemove && this.onRemove({
33456 }, e.prototype.removeChipAndFocusInput = function(e) {
33457 this.removeChip(e), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
33458 }, e.prototype.selectAndFocusChipSafe = function(e) {
33459 if (!this.items.length || -1 === e) return this.focusInput();
33460 if (e >= this.items.length) {
33461 if (!this.readonly) return this.onFocus();
33464 e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
33465 }, e.prototype.focusLastChipThenInput = function() {
33467 e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
33469 }, e.chipAppendDelay)
33470 }, e.prototype.focusInput = function() {
33471 this.selectChip(-1), this.onFocus()
33472 }, e.prototype.selectChip = function(e) {
33473 e >= -1 && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
33474 $chip: this.items[e]
33475 })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
33476 }, e.prototype.selectAndFocusChip = function(e) {
33477 this.selectChip(e), -1 != e && this.focusChip(e)
33478 }, e.prototype.focusChip = function(e) {
33479 var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
33480 this.ariaTabIndex = e, t.focus()
33481 }, e.prototype.configureNgModel = function(e) {
33482 this.ngModelCtrl = e;
33484 e.$render = function() {
33485 t.items = t.ngModelCtrl.$viewValue
33487 }, e.prototype.onFocus = function() {
33488 var e = this.$element[0].querySelector("input");
33489 e && e.focus(), this.resetSelectedChip()
33490 }, e.prototype.onInputFocus = function() {
33491 this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
33492 }, e.prototype.onInputBlur = function() {
33493 this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
33494 }, e.prototype.configureUserInput = function(e) {
33495 this.userInputElement = e;
33496 var n = e.controller("ngModel");
33497 n != this.ngModelCtrl && (this.userInputNgModelCtrl = n);
33498 var r = this.$scope,
33500 o = function(e, n) {
33501 r.$evalAsync(t.bind(i, n, e))
33505 }).on("keydown", function(e) {
33506 o(e, i.inputKeydown)
33507 }).on("focus", function(e) {
33508 o(e, i.onInputFocus)
33509 }).on("blur", function(e) {
33510 o(e, i.onInputBlur)
33512 }, e.prototype.configureAutocomplete = function(e) {
33513 e && (this.autocompleteCtrl = e, e.registerSelectedItemWatcher(t.bind(this, function(e) {
33515 if (this.hasMaxChipsReached()) return;
33516 this.appendChip(e), this.resetChipBuffer()
33518 })), this.$element.find("input").on("focus", t.bind(this, this.onInputFocus)).on("blur", t.bind(this, this.onInputBlur)))
33519 }, e.prototype.shouldAddOnBlur = function() {
33520 this.validateModel();
33521 var e = this.getChipBuffer().trim(),
33522 t = this.ngModelCtrl.$valid,
33523 n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
33524 return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
33525 }, e.prototype.hasFocus = function() {
33526 return this.inputHasFocus || this.selectedChip >= 0
33527 }, e.prototype.contentIdFor = function(e) {
33528 return this.contentIds[e]
33532 function e(e, t, a, s, c, l) {
33534 chips: t.processTemplate(n),
33535 input: t.processTemplate(r),
33536 default: t.processTemplate(i),
33537 remove: t.processTemplate(o)
33540 template: function(e, t) {
33541 return t.$mdUserTemplate = e.clone(), u.chips
33543 require: ["mdChips"],
33545 controller: "MdChipsCtrl",
33546 controllerAs: "$mdChipsCtrl",
33547 bindToController: !0,
33548 compile: function(n, r) {
33551 var t = o[0].querySelector(e);
33552 return t && t.outerHTML
33555 var o = r.$mdUserTemplate;
33556 r.$mdUserTemplate = null;
33557 var d = i("md-chips>md-chip-template"),
33558 f = i(t.prefixer().buildList("md-chip-remove").map(function(e) {
33559 return "md-chips>*[" + e + "]"
33560 }).join(",")) || u.remove,
33561 h = d || u.default,
33562 p = i("md-chips>md-autocomplete") || i("md-chips>input") || u.input,
33563 m = o.find("md-chip");
33564 return o[0].querySelector("md-chip-template>*[md-chip-remove]") && s.warn("invalid placement of md-chip-remove within md-chip-template."),
33565 function(n, i, o, s) {
33566 t.initOptionalProperties(n, r), e(i);
33568 if (d && (g.enableChipEdit = !1), g.chipContentsTemplate = h, g.chipRemoveTemplate = f, g.chipInputTemplate = p, g.mdCloseIcon = l.mdClose, i.attr({
33570 }).on("focus", function() {
33572 }), 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) {
33573 e || t.nextTick(function() {
33574 if (0 === p.indexOf("<md-autocomplete")) {
33575 var e = i.find("md-autocomplete");
33576 g.configureAutocomplete(e.controller("mdAutocomplete"))
33578 g.configureUserInput(i.find("input"))
33580 }), t.nextTick(function() {
33581 var e = i.find("input");
33582 e && e.toggleClass("md-input", !0)
33583 })), m.length > 0) {
33584 var v = a(m.clone())(n.$parent);
33586 i.find("md-chips-wrap").prepend(v)
33592 readonly: "=readonly",
33593 removable: "=mdRemovable",
33595 secondaryPlaceholder: "@",
33596 maxChips: "@mdMaxChips",
33597 transformChip: "&mdTransformChip",
33598 onAppend: "&mdOnAppend",
33600 onRemove: "&mdOnRemove",
33601 onSelect: "&mdOnSelect",
33602 inputAriaLabel: "@",
33603 containerHint: "@",
33605 deleteButtonLabel: "@",
33606 separatorKeys: "=?mdSeparatorKeys",
33607 requireMatch: "=?mdRequireMatch",
33608 chipAppendDelayString: "@?mdChipAppendDelay"
33612 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], t.module("material.components.chips").directive("mdChips", e);
33613 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>',
33614 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)">',
33615 i = " <span>{{$chip}}</span>",
33616 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>'
33620 this.selectedItem = null, this.searchText = ""
33622 t.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.queryContact = function(e) {
33623 return this.contactQuery({
33626 }, e.prototype.itemName = function(e) {
33627 return e[this.contactName]
33633 template: function(e, t) {
33637 controller: "MdContactChipsCtrl",
33638 controllerAs: "$mdContactChipsCtrl",
33639 bindToController: !0,
33640 compile: function(n, r) {
33641 return function(n, i, o, a) {
33643 t.initOptionalProperties(n, r), e(i), i.attr("tabindex", "-1"), o.$observe("mdChipAppendDelay", function(e) {
33644 s.chipAppendDelay = e
33649 contactQuery: "&mdContacts",
33651 secondaryPlaceholder: "@",
33652 contactName: "@mdContactName",
33653 contactImage: "@mdContactImage",
33654 contactEmail: "@mdContactEmail",
33655 contacts: "=ngModel",
33656 requireMatch: "=?mdRequireMatch",
33657 minLength: "=?mdMinLength",
33658 highlightFlags: "@?mdHighlightFlags",
33659 chipAppendDelay: "@?mdChipAppendDelay"
33663 e.$inject = ["$mdTheming", "$mdUtil"], t.module("material.components.chips").directive("mdContactChips", e);
33664 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>'
33667 function e(e, n, i, o, a, s, c, l, u) {
33668 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");
33669 var d, f = t.bind(this, this.handleKeyEvent);
33670 (d = e.parent().hasClass("md-datepicker-calendar") ? t.element(document.body) : e).on("keydown", f), n.$on("$destroy", function() {
33671 d.off("keydown", f)
33672 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
33674 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendar", function() {
33676 template: function(e, t) {
33677 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>'
33680 minDate: "=mdMinDate",
33681 maxDate: "=mdMaxDate",
33682 dateFilter: "=mdDateFilter",
33684 _currentView: "@mdCurrentView"
33686 require: ["ngModel", "mdCalendar"],
33688 controllerAs: "calendarCtrl",
33689 bindToController: !0,
33690 link: function(e, t, n, r) {
33692 r[1].configureNgModel(i)
33702 e.prototype.$onInit = function() {
33703 this._mode && i.hasOwnProperty(this._mode) ? (this.currentView = i[this._mode], this.mode = this._mode) : (this.currentView = this._currentView || "month", this.mode = null);
33704 var e = this.$mdDateLocale;
33705 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
33706 }, e.prototype.configureNgModel = function(e) {
33708 t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
33709 t.isInitialized = !0
33710 }), e.$render = function() {
33711 var e = this.$viewValue;
33712 t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
33714 }, e.prototype.setNgModelValue = function(e) {
33715 var t = this.dateUtil.createDateAtMidnight(e);
33716 return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
33717 }, e.prototype.setCurrentView = function(e, n) {
33719 r.$mdUtil.nextTick(function() {
33720 r.currentView = e, n && (r.displayDate = t.isDate(n) ? n : new Date(n))
33722 }, e.prototype.focus = function(e) {
33723 if (this.dateUtil.isValidDate(e)) {
33724 var t = this.$element[0].querySelector("." + this.FOCUSED_DATE_CLASS);
33725 t && t.classList.remove(this.FOCUSED_DATE_CLASS);
33726 var n = this.getDateId(e, this.currentView),
33727 r = document.getElementById(n);
33728 r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
33730 var i = this.$element[0].querySelector("[ng-switch]");
33733 }, e.prototype.changeSelectedDate = function(e) {
33734 var t = this.SELECTED_DATE_CLASS,
33735 n = this.$element[0].querySelector("." + t);
33736 if (n && (n.classList.remove(t), n.setAttribute("aria-selected", "false")), e) {
33737 var r = document.getElementById(this.getDateId(e, this.currentView));
33738 r && (r.classList.add(t), r.setAttribute("aria-selected", "true"))
33740 this.selectedDate = e
33741 }, e.prototype.getActionFromKeyEvent = function(e) {
33742 var t = this.keyCode;
33746 case t.RIGHT_ARROW:
33747 return "move-right";
33749 return "move-left";
33751 return e.metaKey ? "move-page-down" : "move-row-down";
33753 return e.metaKey ? "move-page-up" : "move-row-up";
33755 return "move-page-down";
33757 return "move-page-up";
33765 }, e.prototype.handleKeyEvent = function(e) {
33767 this.$scope.$apply(function() {
33768 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());
33769 var n = t.getActionFromKeyEvent(e);
33770 n && (e.preventDefault(), e.stopPropagation(), t.$scope.$broadcast("md-calendar-parent-action", n))
33772 }, e.prototype.hideVerticalScrollbar = function(e) {
33774 var t = r.width || n,
33775 i = r.scrollbarWidth,
33776 a = e.calendarScroller;
33777 o.style.width = t + "px", a.style.width = t + i + "px", a.style.paddingRight = i + "px"
33781 o = i.querySelector(".md-calendar-scroll-mask");
33782 r.width > 0 ? t() : r.$$rAF(function() {
33783 var n = e.calendarScroller;
33784 r.scrollbarWidth = n.offsetWidth - n.clientWidth, r.width = i.querySelector("table").offsetWidth, t()
33786 }, e.prototype.getDateId = function(e, t) {
33787 if (!t) throw new Error("A namespace for the date id has to be specified.");
33788 return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
33789 }, e.prototype.updateVirtualRepeat = function() {
33790 var e = this.$scope,
33791 t = e.$on("$md-resize-enable", function() {
33792 e.$$phase || e.$apply(), t()
33797 function e(e, t, n, r, i, o) {
33798 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;
33800 this.cellClickHandler = function() {
33801 var e = i.getTimestampFromNode(this);
33802 a.$scope.$apply(function() {
33803 a.calendarCtrl.setNgModelValue(e)
33805 }, this.headerClickHandler = function() {
33806 a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
33809 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonth", function() {
33811 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>",
33812 require: ["^^mdCalendar", "mdCalendarMonth"],
33814 controllerAs: "monthCtrl",
33815 bindToController: !0,
33816 link: function(e, t, n, r) {
33824 e.prototype.initialize = function(e) {
33826 length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
33827 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
33828 }, e.prototype.getSelectedMonthIndex = function() {
33829 var e = this.calendarCtrl;
33830 return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
33831 }, e.prototype.changeDisplayDate = function(e) {
33832 if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
33833 if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
33834 this.isMonthTransitionInProgress = !0;
33835 var t = this.animateDateChange(e);
33836 this.calendarCtrl.displayDate = e;
33838 return t.then(function() {
33839 n.isMonthTransitionInProgress = !1
33841 }, e.prototype.animateDateChange = function(e) {
33842 if (this.dateUtil.isValidDate(e)) {
33843 var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
33844 this.calendarScroller.scrollTop = t * n
33846 return this.$q.when()
33847 }, e.prototype.buildWeekHeader = function() {
33848 for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
33849 var i = document.createElement("th");
33850 i.textContent = t[(r + e) % 7], n.appendChild(i)
33852 this.$element.find("thead").append(n)
33853 }, e.prototype.attachScopeListeners = function() {
33855 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
33856 e.calendarCtrl.changeSelectedDate(n), e.changeDisplayDate(n)
33857 }), e.$scope.$on("md-calendar-parent-action", t.bind(this, this.handleKeyEvent))
33858 }, e.prototype.handleKeyEvent = function(e, t) {
33859 var n = this.calendarCtrl,
33861 if ("select" === t) n.setNgModelValue(r);
33867 i = o.incrementDays(r, 1);
33870 i = o.incrementDays(r, -1);
33872 case "move-page-down":
33873 i = o.incrementMonths(r, 1);
33875 case "move-page-up":
33876 i = o.incrementMonths(r, -1);
33878 case "move-row-down":
33879 i = o.incrementDays(r, 7);
33881 case "move-row-up":
33882 i = o.incrementDays(r, -7);
33885 i = o.getFirstDateOfMonth(r);
33888 i = o.getLastDateOfMonth(r)
33890 i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
33898 var i = e('<md-icon md-svg-src="' + r.mdTabsArrow + '"></md-icon>')({})[0];
33900 require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
33902 offset: "=mdMonthOffset"
33905 controllerAs: "mdMonthBodyCtrl",
33906 bindToController: !0,
33907 link: function(e, n, r, o) {
33911 c.calendarCtrl = a, c.monthCtrl = s, c.arrowIcon = i.cloneNode(!0), e.$watch(function() {
33914 t.isNumber(e) && c.generateContent()
33920 function n(e, t, n) {
33921 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
33923 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
33924 var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
33925 this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
33926 }, n.prototype.buildDateCell = function(e) {
33927 var t = this.monthCtrl,
33928 n = this.calendarCtrl,
33929 r = document.createElement("td");
33930 if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
33931 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"));
33932 var i = this.dateLocale.dates[e.getDate()];
33933 if (this.isDateEnabled(e)) {
33934 var o = document.createElement("span");
33935 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)
33936 } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
33939 }, n.prototype.isDateEnabled = function(e) {
33940 return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!t.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
33941 }, n.prototype.buildDateRow = function(e) {
33942 var t = document.createElement("tr");
33943 return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
33944 }, n.prototype.buildCalendarForMonth = function(e) {
33945 var t = this.dateUtil.isValidDate(e) ? e : new Date,
33946 n = this.dateUtil.getFirstDateOfMonth(t),
33947 r = this.getLocaleDay_(n),
33948 i = this.dateUtil.getNumberOfDaysInMonth(t),
33949 o = document.createDocumentFragment(),
33951 s = this.buildDateRow(a);
33953 var c = this.offset === this.monthCtrl.items.length - 1,
33955 u = document.createElement("td"),
33956 d = document.createElement("span"),
33957 f = this.calendarCtrl;
33958 if (d.textContent = this.dateLocale.monthHeaderFormatter(t), u.appendChild(d), u.classList.add("md-calendar-month-label"), f.maxDate && n > f.maxDate ? u.classList.add("md-calendar-month-label-disabled") : f.mode || (u.addEventListener("click", this.monthCtrl.headerClickHandler), u.setAttribute("data-timestamp", n.getTime()), u.setAttribute("aria-label", this.dateLocale.monthFormatter(t)), u.classList.add("md-calendar-label-clickable"), u.appendChild(this.arrowIcon.cloneNode(!0))), r <= 2) {
33959 u.setAttribute("colspan", "7");
33960 var h = this.buildDateRow();
33961 if (h.appendChild(u), o.insertBefore(h, s), c) return o
33962 } else l = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
33963 for (var p = l; p < r; p++) s.appendChild(this.buildDateCell());
33964 for (var m = r, g = n, v = 1; v <= i; v++) {
33967 m = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
33970 var b = this.buildDateCell(g);
33971 s.appendChild(b), m++
33973 for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
33974 for (; o.childNodes.length < 6;) {
33975 for (var y = this.buildDateRow(), _ = 0; _ < 7; _++) y.appendChild(this.buildDateCell());
33979 }, n.prototype.getLocaleDay_ = function(e) {
33980 return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
33984 function e(e, t, n, r, i, o) {
33985 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, this.$mdUtil = o;
33987 this.cellClickHandler = function() {
33988 a.onTimestampSelected(i.getTimestampFromNode(this))
33991 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdUtil"], t.module("material.components.datepicker").directive("mdCalendarYear", function() {
33993 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>",
33994 require: ["^^mdCalendar", "mdCalendarYear"],
33996 controllerAs: "yearCtrl",
33997 bindToController: !0,
33998 link: function(e, t, n, r) {
34005 e.prototype.initialize = function(e) {
34007 length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
34008 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
34009 }, e.prototype.getFocusedYearIndex = function() {
34010 var e = this.calendarCtrl;
34011 return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
34012 }, e.prototype.changeDate = function(e) {
34013 if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
34014 if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
34016 n = this.animateDateChange(e);
34017 return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
34018 t.isMonthTransitionInProgress = !1
34021 }, e.prototype.animateDateChange = function(e) {
34022 if (this.dateUtil.isValidDate(e)) {
34023 var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
34024 this.calendarScroller.scrollTop = t * n
34026 return this.$q.when()
34027 }, e.prototype.handleKeyEvent = function(e, t) {
34029 r = n.calendarCtrl,
34031 if ("select" === t) n.changeDate(i).then(function() {
34032 n.onTimestampSelected(i)
34039 o = a.incrementMonths(i, 1);
34042 o = a.incrementMonths(i, -1);
34044 case "move-row-down":
34045 o = a.incrementMonths(i, 6);
34047 case "move-row-up":
34048 o = a.incrementMonths(i, -6)
34051 var s = r.minDate ? a.getFirstDateOfMonth(r.minDate) : null,
34052 c = r.maxDate ? a.getFirstDateOfMonth(r.maxDate) : null;
34053 o = a.getFirstDateOfMonth(n.dateUtil.clampDate(o, s, c)), n.changeDate(o).then(function() {
34058 }, e.prototype.attachScopeListeners = function() {
34060 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
34061 e.calendarCtrl.changeSelectedDate(n ? e.dateUtil.getFirstDateOfMonth(n) : n), e.changeDate(n)
34062 }), e.$scope.$on("md-calendar-parent-action", t.bind(e, e.handleKeyEvent))
34063 }, e.prototype.onTimestampSelected = function(e) {
34064 var t = this.calendarCtrl;
34065 t.mode ? this.$mdUtil.nextTick(function() {
34066 t.setNgModelValue(e)
34067 }) : t.setCurrentView("month", e)
34071 function e(e, t, n) {
34072 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
34074 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
34076 require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
34078 offset: "=mdYearOffset"
34081 controllerAs: "mdYearBodyCtrl",
34082 bindToController: !0,
34083 link: function(e, n, r, i) {
34087 s.calendarCtrl = o, s.yearCtrl = a, e.$watch(function() {
34090 t.isNumber(e) && s.generateContent()
34094 }), e.prototype.generateContent = function() {
34095 var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
34096 this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
34097 }, e.prototype.buildMonthCell = function(e, t) {
34098 var n = this.calendarCtrl,
34100 i = this.buildBlankCell(),
34101 o = new Date(e, t, 1);
34102 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"));
34103 var a = this.dateLocale.shortMonths[t];
34104 if (this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate)) {
34105 var s = document.createElement("span");
34106 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)
34107 } else i.classList.add("md-calendar-date-disabled"), i.textContent = a;
34109 }, e.prototype.buildBlankCell = function() {
34110 var e = document.createElement("td");
34111 return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
34112 }, e.prototype.buildCalendarForYear = function(e) {
34113 var t, n = e.getFullYear(),
34114 r = document.createDocumentFragment(),
34115 i = document.createElement("tr"),
34116 o = document.createElement("td");
34117 for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
34119 var a = document.createElement("tr");
34120 for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
34121 return r.appendChild(a), r
34123 }(), t.module("material.components.datepicker").config(["$provide", function(e) {
34125 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 = ""
34127 t.prototype.$get = function(e, t) {
34128 for (var n = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
34129 return e.substring(0, 1)
34130 }), r = Array(32), i = 1; i <= 31; i++) r[i] = i;
34131 var o = new Date(1880, 0, 1),
34132 a = new Date(o.getFullYear() + 250, 0, 1),
34134 months: this.months || e.DATETIME_FORMATS.MONTH,
34135 shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
34136 days: this.days || e.DATETIME_FORMATS.DAY,
34137 shortDays: this.shortDays || n,
34138 dates: this.dates || r,
34139 firstDayOfWeek: this.firstDayOfWeek || 0,
34140 formatDate: this.formatDate || function(e, n) {
34142 var r = e.toLocaleTimeString(),
34144 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)
34146 parseDate: this.parseDate || function(e) {
34149 isDateComplete: this.isDateComplete || function(e) {
34150 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ .,]+|[/-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
34152 monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
34153 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
34155 monthFormatter: this.monthFormatter || function(e) {
34156 return s.months[e.getMonth()] + " " + e.getFullYear()
34158 weekNumberFormatter: this.weekNumberFormatter || function(e) {
34161 longDateFormatter: this.longDateFormatter || function(e) {
34162 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
34164 msgCalendar: this.msgCalendar || "Calendar",
34165 msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
34166 firstRenderableDate: this.firstRenderableDate || o,
34167 lastRenderableDate: this.lastRenderableDate || a
34170 }, t.prototype.$get.$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
34171 }]), t.module("material.components.datepicker").factory("$$mdDateUtil", function() {
34173 return new Date(e.getFullYear(), e.getMonth(), 1)
34177 return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
34181 return new Date(e.getFullYear(), e.getMonth() + 1, 1)
34185 return new Date(e.getFullYear(), e.getMonth() - 1, 1)
34189 return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
34193 var r = new Date(e.getFullYear(), e.getMonth() + t, 1),
34195 return i < e.getDate() ? r.setDate(i) : r.setDate(e.getDate()), r
34199 return e && e.getTime && !isNaN(e.getTime())
34203 s(e) && e.setHours(0, 0, 0, 0)
34208 return n = t.isUndefined(e) ? new Date : new Date(e), c(n), n
34211 getFirstDateOfMonth: e,
34212 getNumberOfDaysInMonth: n,
34213 getDateInNextMonth: r,
34214 getDateInPreviousMonth: i,
34215 isInNextMonth: function(e, t) {
34218 isInPreviousMonth: function(e, t) {
34221 getDateMidpoint: function(e, t) {
34222 return l((e.getTime() + t.getTime()) / 2)
34224 isSameMonthAndYear: o,
34225 getWeekOfMonth: function(t) {
34227 return Math.floor((n.getDay() + t.getDate() - 1) / 7)
34229 incrementDays: function(e, t) {
34230 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
34232 incrementMonths: a,
34233 getLastDateOfMonth: function(e) {
34234 return new Date(e.getFullYear(), e.getMonth(), n(e))
34236 isSameDay: function(e, t) {
34237 return e.getDate() == t.getDate() && o(e, t)
34239 getMonthDistance: function(e, t) {
34240 return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
34243 setDateTimeToMidnight: c,
34244 createDateAtMidnight: l,
34245 isDateWithinRange: function(e, t, n) {
34247 i = s(t) ? l(t) : null,
34248 o = s(n) ? l(n) : null;
34249 return (!i || i <= r) && (!o || o >= r)
34251 incrementYears: function(e, t) {
34252 return a(e, 12 * t)
34254 getYearDistance: function(e, t) {
34255 return t.getFullYear() - e.getFullYear()
34257 clampDate: function(e, t, n) {
34259 return t && e < t && (r = new Date(t.getTime())), n && e > n && (r = new Date(n.getTime())), r
34261 getTimestampFromNode: function(e) {
34262 if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
34264 isMonthWithinRange: function(e, t, n) {
34265 var r = e.getMonth(),
34266 i = e.getFullYear();
34267 return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
34272 function n(e, n, i, c) {
34274 template: function(t, n) {
34275 var r = n.mdHideIcons,
34276 i = n.ariaLabel || n.mdPlaceholder,
34277 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>',
34279 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-mode="{{::ctrl.mode}}"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>'
34281 require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
34283 minDate: "=mdMinDate",
34284 maxDate: "=mdMaxDate",
34285 placeholder: "@mdPlaceholder",
34286 currentView: "@mdCurrentView",
34288 dateFilter: "=mdDateFilter",
34289 isOpen: "=?mdIsOpen",
34290 debounceInterval: "=mdDebounceInterval",
34291 dateLocale: "=mdDateLocale"
34294 controllerAs: "ctrl",
34295 bindToController: !0,
34296 link: function(e, r, s, l) {
34301 p = n.parseAttributeBoolean(s.mdNoAsterisk);
34302 if (d.configureNgModel(u, f, c), f) {
34303 var m = r[0].querySelector(".md-errors-spacer");
34304 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) {
34305 f.label.toggleClass("md-required", !!e)
34306 }) : i.expect(r, "aria-label", s.mdPlaceholder), e.$watch(f.isErrorGetter || function() {
34307 return u.$invalid && (u.$touched || h && h.$submitted)
34309 } else if (h) var g = e.$watch(function() {
34310 return h.$submitted
34312 e && (d.updateErrorState(), g())
34318 function r(n, r, i, o, a, s, l, u, d, f, h) {
34319 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));
34321 n.$on("$destroy", function() {
34322 p.detachCalendarPane()
34323 }), i.mdIsOpen && n.$watch("ctrl.isOpen", function(e) {
34324 e ? p.openCalendarPane({
34325 target: p.inputElement
34326 }) : p.closeCalendarPane()
34327 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
34329 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);
34330 var i = "md-datepicker-open",
34331 o = "_md-datepicker-floating-label",
34332 a = "_md-datepicker-has-calendar-icon",
34333 s = "_md-datepicker-has-triangle-icon",
34334 c = /ipad|iphone|ipod|android/i;
34335 r.prototype.$onInit = function() {
34336 this.locale = this.dateLocale ? t.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
34337 }, r.prototype.configureNgModel = function(e, n, r) {
34338 this.ngModelCtrl = e, this.mdInputContainer = n, this.$attrs.$set("type", "date"), r[0].link.pre(this.$scope, {
34342 }, this.$attrs, [e]);
34344 i.ngModelCtrl.$formatters.push(function(e) {
34345 var n = t.isDefined(e) ? Date.parse(e) : null;
34346 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);
34347 return i.onExternalChange(e), e
34348 }), e.$viewChangeListeners.unshift(t.bind(this, this.updateErrorState));
34349 var o = i.$mdUtil.getModelOption(e, "updateOn");
34350 o && this.ngInputElement.on(o, t.bind(this.$element, this.$element.triggerHandler, o))
34351 }, r.prototype.attachChangeListeners = function() {
34353 e.$scope.$on("md-calendar-change", function(t, n) {
34354 e.setModelValue(n), e.onExternalChange(n), e.closeCalendarPane()
34355 }), e.ngInputElement.on("input", t.bind(e, e.resizeInputElement));
34356 var n = t.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
34357 e.ngInputElement.on("input", e.$mdUtil.debounce(e.handleInputEvent, n, e))
34358 }, r.prototype.attachInteractionListeners = function() {
34361 r = this.$mdConstant.KEY_CODE;
34362 e.ngInputElement.on("keydown", function(t) {
34363 t.altKey && t.keyCode == r.DOWN_ARROW && (e.openCalendarPane(t), n.$digest())
34364 }), e.openOnFocus && (e.ngInputElement.on("focus", t.bind(e, e.openCalendarPane)), t.element(e.$window).on("blur", e.windowBlurHandler), n.$on("$destroy", function() {
34365 t.element(e.$window).off("blur", e.windowBlurHandler)
34366 })), n.$on("md-calendar-close", function() {
34367 e.closeCalendarPane()
34369 }, r.prototype.installPropertyInterceptors = function() {
34371 if (this.$attrs.ngDisabled) {
34372 var t = this.$scope.$parent;
34373 t && t.$watch(this.$attrs.ngDisabled, function(t) {
34377 Object.defineProperty(this, "placeholder", {
34379 return e.inputElement.placeholder
34382 e.inputElement.placeholder = t || ""
34385 }, r.prototype.setDisabled = function(e) {
34386 this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
34387 }, r.prototype.updateErrorState = function(e) {
34388 var n = e || this.date;
34389 if (this.clearErrorState(), this.dateUtil.isValidDate(n)) {
34390 if (n = this.dateUtil.createDateAtMidnight(n), this.dateUtil.isValidDate(this.minDate)) {
34391 var r = this.dateUtil.createDateAtMidnight(this.minDate);
34392 this.ngModelCtrl.$setValidity("mindate", n >= r)
34394 if (this.dateUtil.isValidDate(this.maxDate)) {
34395 var i = this.dateUtil.createDateAtMidnight(this.maxDate);
34396 this.ngModelCtrl.$setValidity("maxdate", n <= i)
34398 t.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(n))
34399 } else this.ngModelCtrl.$setValidity("valid", null == n);
34400 t.element(this.inputContainer).toggleClass("md-datepicker-invalid", !this.ngModelCtrl.$valid)
34401 }, r.prototype.clearErrorState = function() {
34402 this.inputContainer.classList.remove("md-datepicker-invalid"), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
34403 this.ngModelCtrl.$setValidity(e, !0)
34405 }, r.prototype.resizeInputElement = function() {
34406 this.inputElement.size = this.inputElement.value.length + 3
34407 }, r.prototype.handleInputEvent = function() {
34408 var e = this.inputElement.value,
34409 t = e ? this.locale.parseDate(e) : null;
34410 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)
34411 }, r.prototype.isDateEnabled = function(e) {
34412 return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!t.isFunction(this.dateFilter) || this.dateFilter(e))
34413 }, r.prototype.attachCalendarPane = function() {
34414 var e = this.calendarPane,
34416 e.style.transform = "", this.$element.addClass(i), this.mdInputContainer && this.mdInputContainer.element.addClass(i), t.element(n).addClass("md-datepicker-is-showing");
34417 var r = this.inputContainer.getBoundingClientRect(),
34418 o = n.getBoundingClientRect();
34419 (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
34420 var a = r.top - o.top - this.topMargin,
34421 s = r.left - o.left - this.leftMargin,
34422 c = o.top < 0 && 0 == document.body.scrollTop ? -o.top : document.body.scrollTop,
34423 l = o.left < 0 && 0 == document.body.scrollLeft ? -o.left : document.body.scrollLeft,
34424 u = c + this.$window.innerHeight,
34425 d = l + this.$window.innerWidth;
34426 if (this.inputMask.css({
34427 position: "absolute",
34428 left: this.leftMargin + "px",
34429 top: this.topMargin + "px",
34430 width: r.width - 1 + "px",
34431 height: r.height - 2 + "px"
34433 if (d - 360 > 0) s = d - 360;
34436 var f = this.$window.innerWidth / 360;
34437 e.style.transform = "scale(" + f + ")"
34439 e.classList.add("md-datepicker-pos-adjusted")
34441 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() {
34442 e.classList.add("md-pane-open")
34444 }, r.prototype.detachCalendarPane = function() {
34445 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)
34446 }, r.prototype.openCalendarPane = function(t) {
34447 if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
34448 this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = t.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
34450 this.$mdUtil.nextTick(function() {
34451 n.documentElement.on("click touchstart", n.bodyClickHandler)
34452 }, !1), e.addEventListener(this.windowEventName, this.windowEventHandler)
34454 }, r.prototype.closeCalendarPane = function() {
34456 n.isCalendarOpen = n.isOpen = !1
34458 if (this.isCalendarOpen) {
34460 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()
34462 }, r.prototype.getCalendarCtrl = function() {
34463 return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
34464 }, r.prototype.focusCalendar = function() {
34466 this.$mdUtil.nextTick(function() {
34467 e.getCalendarCtrl().focus()
34469 }, r.prototype.setFocused = function(e) {
34470 e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
34471 }, r.prototype.handleBodyClick = function(e) {
34472 this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
34473 }, r.prototype.handleWindowBlur = function() {
34474 this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
34475 }, r.prototype.evalAttr = function(e) {
34476 this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
34477 }, r.prototype.setModelValue = function(e) {
34478 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
34479 this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
34480 }, r.prototype.onExternalChange = function(e) {
34481 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
34482 this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
34486 t.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(e, t, n, r) {
34489 link: function(r, i, o) {
34491 if (!o.mdSvgIcon && !o.mdSvgSrc) {
34492 o.mdFontIcon && (i.removeClass(s), i.addClass(o.mdFontIcon), s = o.mdFontIcon);
34493 var t = e.fontSet(o.mdFontSet);
34494 c !== t && (i.removeClass(c), i.addClass(t), c = t)
34498 var s = o.mdFontIcon,
34499 c = e.fontSet(o.mdFontSet);
34500 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);
34501 var l = o.$normalize(o.$attr.mdSvgIcon || o.$attr.mdSvgSrc || "");
34502 if (o.role || (n.expect(i, "role", "img"), o.role = "img"), "img" === o.role && !o.ariaHidden && !n.hasAriaLabel(i)) {
34504 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")
34506 l && o.$observe(l, function(t) {
34507 i.empty(), t && e(t).then(function(e) {
34508 i.empty(), i.append(e)
34519 this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
34522 function i(n, r, i, o, a, s) {
34524 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)))
34529 r = "_cache" + a.nextUid();
34530 return n.id && (n.id += r), t.forEach(n.querySelectorAll("[id]"), function(e) {
34536 return function(t) {
34537 return g[e] = p(t) ? t : new m(t, n[e]), g[e].clone()
34543 return h(t.url).then(function(e) {
34550 var t = "icon " + e + " not found";
34551 return o.warn(t), i.reject(t || e)
34553 var r = e.substring(0, e.lastIndexOf(":")) || "$default",
34555 return a ? h(a.url).then(function(n) {
34556 var r = e.slice(e.lastIndexOf(":") + 1),
34557 i = n.querySelector("#" + r);
34558 return i ? new m(i, a) : t(e)
34563 return y.test(n) ? function(n) {
34565 o = /base64/i.test(n) ? e.atob(r[2]) : r[2];
34566 return i.when(t.element(o)[0])
34567 }(n) : function(e) {
34568 return i(function(n, i) {
34569 r(e, !0).then(function(r) {
34570 v[e] || (v[e] = t.element("<div>").append(r)[0].querySelector("svg")), n(v[e])
34572 var n = t.isString(e) ? e : e.message || e.data || e.statusText;
34580 return t.isDefined(e.element) && t.isDefined(e.config)
34584 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()
34588 b = /[-\w@:%+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%+.~#?&//=]*)?/i,
34589 y = /^data:image\/svg\+xml[\s*;\w\-=]*?(base64)?,(.*)$/i;
34590 return m.prototype = {
34591 clone: function() {
34592 return this.element.cloneNode(!0)
34594 prepare: function() {
34595 var e = this.config ? this.config.viewBoxSize : n.defaultViewBoxSize;
34600 preserveAspectRatio: "xMidYMid meet",
34601 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
34603 }, function(e, t) {
34604 this.element.setAttribute(t, e)
34607 }, c.fontSet = function(e) {
34608 if (t.isUndefined(e) || !e || !e.length) return n.defaultFontSet;
34610 return t.forEach(n.fontSets, function(t) {
34611 t.alias == e && (r = t.fontSet || r)
34615 i.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], t.module("material.components.icon").constant("$$mdSvgRegistry", {
34616 mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
34617 mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
34618 mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
34619 mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
34620 mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
34621 mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
34622 mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
34623 }).provider("$mdIcon", n);
34625 defaultViewBoxSize: 24,
34626 defaultFontSet: "material-icons",
34630 icon: function(e, t, n) {
34631 return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
34633 iconSet: function(e, t, n) {
34634 return o[e] = new r(t, n), this
34636 defaultIconSet: function(e, t) {
34637 return o.$default || (o.$default = new r(e, t)), o.$default.viewBoxSize = t || o.defaultViewBoxSize, this
34639 defaultViewBoxSize: function(e) {
34640 return o.defaultViewBoxSize = e, this
34642 fontSet: function(e, t) {
34643 return o.fontSets.push({
34648 defaultFontSet: function(e) {
34649 return o.defaultFontSet = e || "", this
34651 defaultIconSize: function(e) {
34652 return o.defaultIconSize = e, this
34654 $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, a) {
34655 return i(o, e, t, n, r, a)
34660 function e(e, r, i, o, a, s, c, l, u) {
34661 var d, f, h = a.prefixer(),
34663 this.nestLevel = parseInt(r.mdNestLevel, 10) || 0, this.init = function(n, r) {
34664 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() {
34665 p.isOpen = !1, a.nextTick(function() {
34666 p.onIsOpenChanged(p.isOpen)
34668 }), a.nextTick(function() {
34669 p.onIsOpenChanged(p.isOpen)
34671 var s = "menu_container_" + a.nextUid();
34672 d.attr("id", s), t.element(f).attr({
34674 "aria-haspopup": "true"
34675 }), o.$on("$destroy", t.bind(this, function() {
34676 this.disableHoverListener(), e.destroy()
34677 })), d.on("$destroy", function() {
34682 this.enableHoverListener = function() {
34683 v.push(c.$on("$mdMenuOpen", function(e, t) {
34684 d[0].contains(t[0]) && (p.currentlyOpenMenu = t.controller("mdMenu"), p.isAlreadyOpening = !1, p.currentlyOpenMenu.registerContainerProxy(p.triggerContainerProxy.bind(p)))
34685 })), v.push(c.$on("$mdMenuClose", function(e, t) {
34686 d[0].contains(t[0]) && (p.currentlyOpenMenu = n)
34687 })), (g = t.element(a.nodesToArray(d[0].children[0].children))).on("mouseenter", p.handleMenuItemHover), g.on("mouseleave", p.handleMenuItemMouseLeave)
34688 }, this.disableHoverListener = function() {
34689 for (; v.length;) v.shift()();
34690 g && g.off("mouseenter", p.handleMenuItemHover), g && g.off("mouseleave", p.handleMenuItemMouseLeave)
34691 }, this.handleMenuItemHover = function(e) {
34692 if (!p.isAlreadyOpening) {
34693 var n = e.target.querySelector("md-menu") || a.getClosest(e.target, "MD-MENU");
34695 if (n && (n = t.element(n).controller("mdMenu")), p.currentlyOpenMenu && p.currentlyOpenMenu != n) {
34696 var e = p.nestLevel + 1;
34697 p.currentlyOpenMenu.close(!0, {
34699 }), p.isAlreadyOpening = !!n, n && n.open()
34700 } else n && !n.isOpen && n.open && (p.isAlreadyOpening = !!n, n && n.open())
34702 var r = e.currentTarget.querySelector(".md-button:not([disabled])");
34705 }, this.handleMenuItemMouseLeave = function() {
34706 m && (s.cancel(m), m = n)
34707 }, this.open = function(t) {
34708 t && t.stopPropagation(), t && t.preventDefault(), p.isOpen || (p.enableHoverListener(), p.isOpen = !0, a.nextTick(function() {
34709 p.onIsOpenChanged(p.isOpen)
34710 }), (f = f || (t ? t.target : i[0])).setAttribute("aria-expanded", "true"), o.$emit("$mdMenuOpen", i), e.show({
34713 nestLevel: p.nestLevel,
34716 preserveElement: !0,
34718 }).finally(function() {
34719 f.setAttribute("aria-expanded", "false"), p.disableHoverListener()
34721 }, this.onIsOpenChanged = function(e) {
34722 e ? (d.attr("aria-hidden", "false"), i[0].classList.add("md-open"), t.forEach(p.nestedMenus, function(e) {
34723 e.classList.remove("md-open")
34724 })) : (d.attr("aria-hidden", "true"), i[0].classList.remove("md-open")), o.$mdMenuIsOpen = p.isOpen
34725 }, this.focusMenuContainer = function() {
34726 var e = d[0].querySelector(h.buildSelector(["md-menu-focus-target", "md-autofocus"]));
34727 e || (e = d[0].querySelector(".md-button:not([disabled])")), e.focus()
34728 }, this.registerContainerProxy = function(e) {
34729 this.containerProxy = e
34730 }, this.triggerContainerProxy = function(e) {
34731 this.containerProxy && this.containerProxy(e)
34732 }, this.destroy = function() {
34733 return p.isOpen ? e.destroy() : l.when(!1)
34734 }, this.close = function(n, r) {
34736 p.isOpen = !1, a.nextTick(function() {
34737 p.onIsOpenChanged(p.isOpen)
34739 var s = t.extend({}, r, {
34742 if (o.$emit("$mdMenuClose", i, s), e.hide(null, r), !n) {
34743 var c = p.restoreFocusTo || i.find("button")[0];
34744 c instanceof t.element && (c = c[0]), c && c.focus()
34747 }, this.positionMode = function() {
34748 var e = (r.mdPositionMode || "target").split(" ");
34749 return 1 == e.length && e.push(e[0]), {
34753 }, this.offsets = function() {
34754 var e = (r.mdOffset || "0 0").split(" ").map(parseFloat);
34755 if (2 == e.length) return {
34759 if (1 == e.length) return {
34763 throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
34767 }, o.$mdOpenMenu = t.bind(this, function() {
34768 return u.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
34771 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], t.module("material.components.menu").controller("mdMenuCtrl", e)
34775 function n(e, n, r, i) {
34778 s = t.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
34779 c = n.children()[1];
34780 n.addClass("_md"), c.hasAttribute("role") || c.setAttribute("role", "menu"), s.append(c), n.on("$destroy", function() {
34782 }), n.append(s), s[0].style.display = "none", o.init(s, {
34786 var r = "Invalid HTML for md-menu: ";
34789 require: ["mdMenu", "?^mdMenuBar"],
34790 controller: "mdMenuCtrl",
34792 compile: function(i) {
34793 i.addClass("md-menu");
34794 var o = i.children()[0],
34795 a = i.children()[1],
34797 s.hasAttribute(o, "ng-click") || (o = o.querySelector(s.buildSelector(["ng-click", "ng-mouseenter"])) || o);
34798 var c = "MD-BUTTON" === o.nodeName || "BUTTON" === o.nodeName;
34799 if (o && c && !o.hasAttribute("type") && o.setAttribute("type", "button"), !o) throw Error(r + "Expected the menu to have a trigger element.");
34800 if (!a || "MD-MENU-CONTENT" !== a.nodeName) throw Error(r + "Expected the menu to contain a `md-menu-content` element.");
34801 o && o.setAttribute("aria-haspopup", "true");
34802 var l = i[0].querySelectorAll("md-menu"),
34803 u = parseInt(i[0].getAttribute("md-nest-level"), 10) || 0;
34804 return l && t.forEach(e.nodesToArray(l), function(e) {
34805 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", u + 1)
34810 e.$inject = ["$mdUtil"], t.module("material.components.menu").directive("mdMenu", e)
34814 function r(e, r, a, s, c, l, u, d, f, h) {
34815 function p(n, r, i) {
34816 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() {
34817 i.backdrop && i.backdrop.remove(), i.disableParentScroll && i.restoreScroll()
34821 function m(t, n, r, i) {
34822 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);
34827 if (e && -1 != e.getAttribute("tabindex")) return e.focus(), s[0].activeElement == e
34831 t.preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e))
34836 l = t[0].firstElementChild,
34837 u = l.getBoundingClientRect(),
34838 d = s[0].body.getBoundingClientRect(),
34839 f = c.getComputedStyle(l),
34840 h = r.target[0].querySelector(y.buildSelector("md-menu-origin")) || r.target[0],
34841 p = h.getBoundingClientRect(),
34844 top: Math.max(d.top, 0) + o,
34845 bottom: Math.max(d.bottom, Math.max(d.top, 0) + d.height) - o,
34860 b = r.mdMenuCtrl.positionMode();
34861 "target" != b.top && "target" != b.left && "target-right" != b.left || (i = function() {
34862 for (var e = 0; e < l.children.length; ++e)
34863 if ("none" != c.getComputedStyle(l.children[e]).display) return l.children[e]
34864 }()) && (g = (i = (i = i.firstElementChild || i).querySelector(y.buildSelector("md-menu-align-target")) || i).getBoundingClientRect(), v = {
34865 top: parseFloat(a.style.top || 0),
34866 left: parseFloat(a.style.left || 0)
34872 _.top = v.top + p.top - g.top;
34875 _.top = p.top - parseFloat(f.paddingTop) - h.style.top;
34878 _.top = p.top + p.height;
34881 throw new Error('Invalid target mode "' + b.top + '" specified for md-menu on Y axis.')
34883 var w = "rtl" == e.bidi();
34886 _.left = v.left + p.left - g.left, $ += w ? "right" : "left";
34888 case "target-left":
34889 _.left = p.left, $ += "left";
34891 case "target-right":
34892 _.left = p.right - u.width + (u.right - g.right), $ += "right";
34895 var E = w ? p.left - u.width < m.left : p.right + u.width < m.right;
34896 _.left = E ? p.right - h.style.left : p.left - h.style.left - u.width, $ += E ? "left" : "right";
34899 w ? (_.left = p.right - p.width, $ += "left") : (_.left = p.right - u.width, $ += "right");
34902 w ? (_.left = p.right - u.width, $ += "right") : (_.left = p.left, $ += "left");
34905 throw new Error('Invalid target mode "' + b.left + '" specified for md-menu on X axis.')
34907 var k = r.mdMenuCtrl.offsets();
34908 _.top += k.top, _.left += k.left,
34910 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)
34912 var C = Math.round(100 * Math.min(p.width / a.offsetWidth, 1)) / 100,
34913 x = Math.round(100 * Math.min(p.height / a.offsetHeight, 1)) / 100;
34915 top: Math.round(_.top),
34916 left: Math.round(_.left),
34917 transform: r.alreadyOpen ? n : e.supplant("scale({0},{1})", [C, x]),
34921 var y = e.prefixer(),
34922 _ = e.dom.animator;
34925 onShow: function(n, i, o) {
34927 return o.backdrop ? (o.backdrop.on("click", f), function() {
34928 o.backdrop.off("click", f)
34933 e.preventDefault(), e.stopPropagation(), n.$apply(function() {
34934 o.mdMenuCtrl.close(!0, {
34943 switch (t.keyCode) {
34944 case a.KEY_CODE.ESCAPE:
34945 o.mdMenuCtrl.close(!1, {
34949 case a.KEY_CODE.UP_ARROW:
34950 m(t, o.menuContentEl, 0, -1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
34952 case a.KEY_CODE.DOWN_ARROW:
34953 m(t, o.menuContentEl, 0, 1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
34955 case a.KEY_CODE.LEFT_ARROW:
34956 o.nestLevel ? o.mdMenuCtrl.close() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
34958 case a.KEY_CODE.RIGHT_ARROW:
34959 var r = e.getClosest(t.target, "MD-MENU");
34960 r && r != o.parent[0] ? t.target.click() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0
34962 n && (t.preventDefault(), t.stopImmediatePropagation())
34968 for (var n, r = 0; n = t[r]; ++r)
34969 if (y.hasAttribute(e, n)) return !0;
34974 if (i == o.menuContentEl[0]) return;
34975 if ((r(i, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == i.nodeName || "MD-BUTTON" == i.nodeName) && !r(i, ["md-prevent-menu-close"])) {
34976 var a = e.getClosest(i, "MD-MENU");
34977 i.hasAttribute("disabled") || a && a != o.parent[0] || n.$apply(function() {
34978 o.mdMenuCtrl.close(!0, {
34984 } while (i = i.parentNode)
34986 if (!o.menuContentEl[0]) return t.noop;
34987 o.menuContentEl.on("keydown", r), o.menuContentEl[0].addEventListener("click", i, !0);
34988 var s = o.menuContentEl[0].querySelector(y.buildSelector(["md-menu-focus-target", "md-autofocus"]));
34990 for (var c = o.menuContentEl[0].children.length, l = 0; l < c; l++) {
34991 var u = o.menuContentEl[0].children[l];
34992 if (s = u.querySelector(".md-button:not([disabled])")) break;
34993 if (u.firstElementChild && !u.firstElementChild.disabled) {
34994 s = u.firstElementChild;
34998 return s && s.focus(),
35000 o.menuContentEl.off("keydown", r), o.menuContentEl[0].removeEventListener("click", i, !0)
35003 return function() {
35004 if (!o.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
35008 target: t.element(o.target),
35009 parent: t.element(o.parent),
35010 menuContentEl: t.element(i[0].querySelector("md-menu-content"))
35012 }(), 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() {
35013 var e = function(e, t) {
35014 return u.throttle(function() {
35015 if (!o.isRemoved) {
35021 return c.addEventListener("resize", e), c.addEventListener("orientationchange", e),
35023 c.removeEventListener("resize", e), c.removeEventListener("orientationchange", e)
35025 }(), o.hideBackdrop = p(n, i, o), (o.parent.append(i), i[0].style.display = "", l(function(e) {
35027 i.removeClass("md-leave"), d(i, {
35028 addClass: "md-active",
35034 })).then(function(e) {
35035 return o.alreadyOpen = !0, o.cleanupInteraction = g(), o.cleanupBackdrop = s(), i.addClass("md-clickable"), e
35038 onRemove: function(e, t, n) {
35040 t.removeClass("md-active"), v(t, n), n.alreadyOpen = !1
35042 return n.cleanupInteraction(), n.cleanupBackdrop(), n.cleanupResizing(), n.hideBackdrop(), t.removeClass("md-clickable"), !0 === n.$destroy ? r() : d(t, {
35043 addClass: "md-leave"
35047 disableParentScroll: !0,
35056 return e instanceof t.element && (e = e[0]), e
35058 r.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
35060 return e("$mdMenu").setDefaults({
35061 methods: ["target"],
35065 e.$inject = ["$$interimElementProvider"], t.module("material.components.menu").provider("$mdMenu", e)
35068 function e(e, n, i, o, a, s, c, l) {
35069 this.$element = i, this.$attrs = o, this.$mdConstant = a, this.$mdUtil = c, this.$document = s, this.$scope = e, this.$rootScope = n, this.$timeout = l;
35071 t.forEach(r, function(e) {
35072 u[e] = t.bind(u, u[e])
35075 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], t.module("material.components.menuBar").controller("MenuBarController", e);
35076 var r = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
35077 e.prototype.init = function() {
35078 var e = this.$element,
35083 e.on("keydown", this.handleKeyDown), this.parentToolbar = t.getClosest(e, "MD-TOOLBAR"), o.push(this.$rootScope.$on("$mdMenuOpen", function(t, n) {
35084 -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())
35085 })), o.push(this.$rootScope.$on("$mdMenuClose", function(r, o, a) {
35086 var s = i.getMenus();
35087 if (-1 != s.indexOf(o[0]) && (e[0].classList.remove("md-open"), o[0].classList.remove("md-open")), e[0].contains(o[0])) {
35088 for (var c = o[0]; c && -1 == s.indexOf(c);) c = t.getClosest(c, "MD-MENU", !0);
35089 c && (a.skipFocus || c.querySelector("button:not([disabled])").focus(), i.currentlyOpenMenu = n, i.disableOpenOnHover(), i.setKeyboardMode(!0))
35091 })), r.$on("$destroy", function() {
35092 for (i.disableOpenOnHover(); o.length;) o.shift()()
35093 }), this.setKeyboardMode(!0)
35094 }, e.prototype.setKeyboardMode = function(e) {
35095 e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
35096 }, e.prototype.enableOpenOnHover = function() {
35097 if (!this.openOnHoverEnabled) {
35099 e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
35100 t.element(e.parentToolbar).on("click", e.handleParentClick)
35101 }, !1)), t.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
35103 }, e.prototype.handleMenuHover = function(e) {
35104 this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
35105 }, e.prototype.disableOpenOnHover = function() {
35106 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))
35107 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
35108 var n = t.element(e.currentTarget).controller("mdMenu");
35109 this.setKeyboardMode(!1), this.scheduleOpenMenu(n)
35110 }, e.prototype.scheduleOpenMenu = function(e) {
35113 e != t.currentlyOpenMenu && (r.cancel(t.pendingMenuOpen), t.pendingMenuOpen = r(function() {
35114 t.pendingMenuOpen = n, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
35118 }, e.prototype.handleKeyDown = function(e) {
35119 var n = this.$mdConstant.KEY_CODE,
35120 r = this.currentlyOpenMenu,
35122 this.setKeyboardMode(!0);
35124 switch (e.keyCode) {
35126 r ? r.focusMenuContainer() : this.openFocusedMenu(), o = !0;
35129 r && r.close(), o = !0;
35132 a = this.focusMenu(-1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0;
35134 case n.RIGHT_ARROW:
35135 a = this.focusMenu(1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0
35137 o && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
35138 }, e.prototype.focusMenu = function(e) {
35139 var t = this.getMenus(),
35140 n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
35142 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]
35143 }, e.prototype.openFocusedMenu = function() {
35144 var e = this.getFocusedMenu();
35145 e && t.element(e).controller("mdMenu").open()
35146 }, e.prototype.getMenus = function() {
35147 var e = this.$element;
35148 return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
35149 return "MD-MENU" == e.nodeName
35151 }, e.prototype.getFocusedMenu = function() {
35152 return this.getMenus()[this.getFocusedMenuIndex()]
35153 }, e.prototype.getFocusedMenuIndex = function() {
35154 var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
35155 return e ? this.getMenus().indexOf(e) : -1
35156 }, e.prototype.getOpenMenuIndex = function() {
35157 for (var e = this.getMenus(), t = 0; t < e.length; ++t)
35158 if (e[t].classList.contains("md-open")) return t;
35160 }, e.prototype.handleParentClick = function(e) {
35161 var n = this.querySelector("md-menu.md-open");
35162 n && !n.contains(e.target) && t.element(n).controller("mdMenu").close(!0, {
35171 require: "mdMenuBar",
35172 controller: "MenuBarController",
35173 compile: function(r, i) {
35174 return i.ariaRole || r[0].setAttribute("role", "menubar"), t.forEach(r[0].children, function(n) {
35175 if ("MD-MENU" == n.nodeName) {
35176 n.hasAttribute("md-position-mode") || (n.setAttribute("md-position-mode", "left bottom"), n.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
35177 var r = e.nodesToArray(n.querySelectorAll("md-menu-content"));
35178 t.forEach(r, function(e) {
35179 e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
35182 }), r.find("md-menu-item").addClass("md-in-menu-bar"),
35183 function(e, t, r, i) {
35184 t.addClass("_md"), n(e, t), i.init()
35189 e.$inject = ["$mdUtil", "$mdTheming"], t.module("material.components.menuBar").directive("mdMenuBar", e)
35192 t.module("material.components.menuBar").directive("mdMenuDivider", function() {
35195 compile: function(e, t) {
35196 t.role || e[0].setAttribute("role", "separator")
35202 function e(e, t, n) {
35203 this.$element = t, this.$attrs = n, this.$scope = e
35205 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
35206 var t = this.$element,
35208 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())
35209 }, e.prototype.clearNgAria = function() {
35210 var e = this.$element[0],
35211 n = ["role", "tabindex", "aria-invalid", "aria-checked"];
35212 t.forEach(n, function(t) {
35213 e.removeAttribute(t)
35215 }, e.prototype.initClickListeners = function() {
35217 if ("radio" == s) {
35218 var e = a.ngValue ? o.$eval(a.ngValue) : a.value;
35219 return i.$modelValue == e
35221 return i.$modelValue
35225 e ? l.off("click", u) : l.on("click", u)
35231 s = (this.$element, this.mode);
35232 this.handleClick = t.bind(this, this.handleClick);
35233 var c = this.iconEl,
35234 l = t.element(this.buttonEl),
35235 u = this.handleClick;
35236 a.$observe("disabled", n), n(a.disabled), i.$render = function() {
35237 r.clearNgAria(), e() ? (c.style.display = "", l.attr("aria-checked", "true")) : (c.style.display = "none", l.attr("aria-checked", "false"))
35238 }, o.$$postDigest(i.$render)
35239 }, e.prototype.handleClick = function(e) {
35240 var t, n = this.mode,
35243 "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
35247 function e(e, n, r) {
35249 controller: "MenuItemController",
35250 require: ["mdMenuItem", "?ngModel"],
35251 priority: n.BEFORE_NG_ARIA,
35252 compile: function(n, i) {
35253 function o(e, r, i) {
35254 (i = i || n) instanceof t.element && (i = i[0]), i.hasAttribute(e) || i.setAttribute(e, r)
35257 if ("checkbox" != a && "radio" != a || !n.hasClass("md-in-menu-bar")) o("role", "menuitem", n[0].querySelector("md-button, button, a"));
35259 var s = n[0].textContent,
35260 c = t.element('<md-button type="button"></md-button>'),
35261 l = '<md-icon md-svg-src="' + r.mdChecked + '"></md-icon>';
35262 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),
35264 var i = e.prefixer(r);
35265 t.forEach(i, function(e) {
35266 if (n[0].hasAttribute(e)) {
35267 var t = n[0].getAttribute(e);
35268 c[0].setAttribute(e, t), n[0].removeAttribute(e)
35273 return function(e, t, n, r) {
35281 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], t.module("material.components.menuBar").directive("mdMenuItem", e)
35284 function e(e, n, r, i, o, a) {
35285 function s(a, s, y) {
35286 function _(t, r, o, s, c, u) {
35288 M.attr("stroke-dashoffset", l(b, y, e, E)), M.attr("transform", "rotate(" + w + " " + b / 2 + " " + b / 2 + ")")
35293 b = d(a.mdDiameter),
35296 $ = s || n.duration,
35297 w = -90 * (c || 0),
35299 r === t ? p(r) : k = h(function n() {
35300 var r = e.Math.max(0, e.Math.min(i.now() - g, $));
35301 p(_(r, t, v, $)), m === D && r < $ && (k = h(n))
35306 _(A, S, n.easeFnIndeterminate, n.durationIndeterminate, O, 75), O = ++O % 4
35310 C || (C = o($, n.durationIndeterminate, 0, !1), $(), s.addClass(b).removeAttr("aria-valuenow"))
35314 C && (o.cancel(C), C = null, s.removeClass(b))
35316 var k, C, x = s[0],
35317 T = t.element(x.querySelector("svg")),
35318 M = t.element(x.querySelector("path")),
35319 A = n.startIndeterminate,
35320 S = n.endIndeterminate,
35323 r(s), s.toggleClass(v, y.hasOwnProperty("disabled")), a.mdMode === g && w(), a.$on("$destroy", function() {
35325 }), a.$watchGroup(["value", "mdMode", function() {
35326 var e = x.disabled;
35327 return !0 === e || !1 === e ? e : t.isDefined(s.attr("disabled"))
35328 }], function(e, t) {
35331 if (r !== t[2] && s.toggleClass(v, !!r), r) E();
35332 else if (n !== m && n !== g && (n = g, y.$set("mdMode", n)), n === g) w();
35335 E(), s.attr("aria-valuenow", i), _(u(t[0]), i)
35337 }), a.$watch("mdDiameter", function(t) {
35346 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))
35350 function c(e, t, n) {
35355 return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
35358 function l(t, n, r, i) {
35359 return (t - n) * e.Math.PI * (3 * (i || 100) / 100 - r / 100)
35363 return e.Math.max(0, e.Math.min(t || 0, 100))
35367 var t = n.progressSize;
35369 var r = parseFloat(e);
35370 return e.lastIndexOf("%") === e.length - 1 && (r = r / 100 * t), r
35376 return n.strokeWidth / 100 * e
35378 var h = e.requestAnimationFrame || e.webkitRequestAnimationFrame || t.noop,
35379 p = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame || t.noop,
35381 g = "indeterminate",
35382 v = "_md-progress-circular-disabled",
35383 b = "md-mode-indeterminate";
35391 template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
35392 compile: function(e, n) {
35394 "aria-valuemin": 0,
35395 "aria-valuemax": 100,
35396 role: "progressbar"
35397 }), t.isUndefined(n.mdMode)) {
35398 var r = n.hasOwnProperty("value") ? m : g;
35399 n.$set("mdMode", r)
35400 } else n.$set("mdMode", n.mdMode.trim());
35405 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], t.module("material.components.progressCircular").directive("mdProgressCircular", e)
35408 t.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
35409 function e(e, t, n, r) {
35410 return n * e / r + t
35413 function n(e, t, n, r) {
35414 var i = (e /= r) * e,
35416 return t + n * (6 * o * i + -15 * i * i + 10 * o)
35423 durationIndeterminate: 1333,
35424 startIndeterminate: 1,
35425 endIndeterminate: 149,
35426 easeFnIndeterminate: n,
35433 configure: function(e) {
35434 return r = t.extend(r, e || {})
35443 t.module("material.components.tabs").directive("mdTab", function() {
35444 function e(e, r, i, o) {
35446 var a = o.getTabElementIndex(r),
35447 s = n(r, "md-tab-body").remove(),
35448 c = n(r, "md-tab-label").remove(),
35454 template: s.html(),
35457 e.select = e.select || t.noop, e.deselect = e.deselect || t.noop, e.$watch("active", function(e) {
35458 e && o.select(l.getIndex(), !0)
35459 }), e.$watch("disabled", function() {
35461 }), e.$watch(function() {
35462 return o.getTabElementIndex(r)
35464 l.index = e, o.updateTabOrder()
35465 }), e.$on("$destroy", function() {
35472 for (var r = e[0].children, i = 0, o = r.length; i < o; i++) {
35474 if (a.tagName === n.toUpperCase()) return t.element(a)
35479 require: "^?mdTabs",
35481 compile: function(r, i) {
35482 var o = n(r, "md-tab-label"),
35483 a = n(r, "md-tab-body");
35484 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)) {
35485 var s = r.contents().detach();
35486 (a = t.element("<md-tab-body></md-tab-body>")).append(s)
35488 return r.append(o), a.html() && r.append(a), e
35491 active: "=?mdActive",
35492 disabled: "=?ngDisabled",
35493 select: "&?mdOnSelect",
35494 deselect: "&?mdOnDeselect"
35500 t.module("material.components.tabs").directive("mdTabItem", function() {
35502 require: "^?mdTabs",
35503 link: function(e, t, n, r) {
35504 r && r.attachRipple(e, t)
35510 t.module("material.components.tabs").directive("mdTabLabel", function() {
35520 compile: function(t, n) {
35521 var r = e(n.mdTabScroll, null, !0);
35522 return function(e, t) {
35523 t.on("mousewheel", function(t) {
35524 e.$apply(function() {
35534 e.$inject = ["$parse"], t.module("material.components.tabs").directive("mdTabScroll", e)
35537 function e(e, r, i, o, a, s, c, l, u, d, f, h) {
35539 te.selectedIndex = te.selectedIndex || 0, m(), v(), g(), d(r), s.nextTick(function() {
35540 re = I(), K(), B(), Z(), te.tabs[te.selectedIndex] && te.tabs[te.selectedIndex].scope.select(), ae = !0, F()
35545 var e = l.$mdTabsTemplate,
35546 n = t.element(r[0].querySelector("md-tab-data"));
35547 n.html(e), u(n.contents())(te.parent), delete l.$mdTabsTemplate
35551 t.element(i).on("resize", O), e.$on("$destroy", _)
35555 e.$watch("$mdTabsCtrl.selectedIndex", M)
35559 var n = l.$normalize("md-" + e);
35560 t && L(e, t), l.$observe(n, function(t) {
35567 te[e] = "false" !== t
35569 var r = l.$normalize("md-" + e);
35570 t && L(e, t), l.hasOwnProperty(r) && n(l[r]), l.$observe(r, n)
35574 oe = !0, t.element(i).off("resize", O)
35579 t.element(n.wrapper).toggleClass("md-stretch-tabs", R()), Z()
35583 te.shouldCenterTabs = P()
35589 t.forEach(r.tabs, function(t) {
35590 t.style.maxWidth = e + "px"
35591 }), t.forEach(r.dummies, function(t) {
35592 t.style.maxWidth = e + "px"
35593 }), s.nextTick(te.updateInkBarStyles)
35598 e !== t && (te.maxTabWidth = U(), te.shouldCenterTabs = P(), s.nextTick(function() {
35599 te.maxTabWidth = U(), B(te.selectedIndex)
35604 r[e ? "removeClass" : "addClass"]("md-no-tab-content")
35609 i = (te.shouldCenterTabs || ee() ? "" : "-") + n + "px";
35610 i = i.replace("--", ""), t.element(r.paging).css(o.CSS.TRANSFORM, "translate3d(" + i + ", 0, 0)"), e.$broadcast("$mdTabsPaginationChanged")
35614 e !== t && I().tabs[e] && (B(), z())
35618 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())
35622 A.watcher || (A.watcher = e.$watch(function() {
35623 s.nextTick(function() {
35624 A.watcher && r.prop("offsetParent") && (A.watcher(), A.watcher = null, O())
35630 ne || (te.focusIndex = te.selectedIndex = e), t && te.noSelectClick || s.nextTick(function() {
35631 te.tabs[e].element.triggerHandler("click")
35636 te.lastSelectedIndex = te.selectedIndex, te.offsetLeft = Q(te.offsetLeft), s.nextTick(function() {
35637 te.updateInkBarStyles(), F()
35642 t.element(I().inkBar).toggleClass("ng-hide", e)
35646 r.toggleClass("md-dynamic-height", e)
35652 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
35656 switch (te.stretchTabs) {
35662 return !te.shouldPaginate && i.matchMedia("(max-width: 600px)").matches
35667 return te.centerTabs && !te.shouldPaginate
35671 if (te.noPagination || !ae) return !1;
35672 var e = r.prop("clientWidth");
35673 return t.forEach(I().tabs, function(t) {
35679 if (-1 === e) return -1;
35680 var t, n, r = Math.max(te.tabs.length - e, e);
35681 for (t = 0; t <= r; t++) {
35682 if ((n = te.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
35683 if ((n = te.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
35688 function L(e, t, n) {
35689 Object.defineProperty(te, e, {
35695 n = e, t && t(e, r)
35701 te.maxTabWidth = U(), te.shouldPaginate = j()
35706 return t.forEach(e, function(e) {
35707 n += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
35712 var e = I().canvas.clientWidth;
35713 return Math.max(0, Math.min(e - 1, 264))
35717 var n, r = t ? "focusIndex" : "selectedIndex",
35719 for (n = i + e; te.tabs[n] && te.tabs[n].scope.disabled; n += e);
35720 n = (i + e + te.tabs.length) % te.tabs.length, te.tabs[n] && (te[r] = n)
35724 te.styleTabItemFocus = "keyboard" === f.getLastInteractionType(), I().tabs[te.focusIndex].focus()
35729 if (t.isNumber(e) || (e = te.focusIndex), n.tabs[e] && !te.shouldCenterTabs) {
35732 o = r.offsetWidth + i;
35735 var a = q(Array.prototype.slice.call(n.tabs, 0, e)),
35736 s = q(Array.prototype.slice.call(n.tabs, 0, e + 1));
35737 te.offsetLeft = Math.min(te.offsetLeft, Q(a)), te.offsetLeft = Math.max(te.offsetLeft, Q(s - n.canvas.clientWidth))
35738 } else te.offsetLeft = Math.max(te.offsetLeft, Q(o - n.canvas.clientWidth + 32)), te.offsetLeft = Math.min(te.offsetLeft, Q(i));
35739 else te.offsetLeft = 0
35744 ie.forEach(function(e) {
35750 for (var e = !1, t = 0; t < te.tabs.length; t++)
35751 if (te.tabs[t].hasContent) {
35759 te.selectedIndex = H(te.selectedIndex), te.focusIndex = H(te.focusIndex)
35763 if (!te.dynamicHeight) return r.css("height", "");
35764 if (!te.tabs.length) return ie.push(K);
35766 t = e.contents[te.selectedIndex],
35767 i = t ? t.offsetHeight : 0,
35768 o = e.wrapper.offsetHeight,
35770 l = r.prop("clientHeight");
35772 "bottom" === r.attr("md-align-tabs") && (l -= o, a -= o, r.attr("md-border-bottom") !== n && ++l), ne = !0;
35782 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
35784 }).start().done(function() {
35786 transition: "none",
35788 }), s.nextTick(function() {
35789 r.css("transition", "")
35797 if (e.tabs[te.selectedIndex]) {
35798 if (!te.tabs.length) return ie.push(te.updateInkBarStyles);
35799 if (!r.prop("offsetParent")) return A();
35800 var n = te.selectedIndex,
35801 i = e.paging.offsetWidth,
35804 c = i - a - o.offsetWidth;
35805 te.shouldCenterTabs && i > q(e.tabs) && s.nextTick(Z, !1), X(), t.element(e.inkBar).css({
35809 } else t.element(e.inkBar).css({
35817 n = te.selectedIndex,
35818 r = te.lastSelectedIndex,
35819 i = t.element(e.inkBar);
35820 t.isNumber(r) && i.toggleClass("md-left", n < r).toggleClass("md-right", n > r)
35825 if (!t.tabs.length || !te.shouldPaginate) return 0;
35826 var n = t.tabs[t.tabs.length - 1],
35827 r = n.offsetLeft + n.offsetWidth;
35828 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
35832 if (e.hasContent) {
35833 var n = r[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
35834 t.element(n).attr("aria-controls", te.tabContentPrefix + e.id)
35839 return "rtl" == s.bidi()
35847 te.$onInit = function() {
35848 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()
35849 }, te.updatePagination = s.debounce(F, 100), te.redirectFocus = z, te.attachRipple = function(e, n) {
35852 colorElement: t.element(r.inkBar)
35855 }, te.insertTab = function(e, n) {
35858 getIndex: function() {
35859 return te.tabs.indexOf(o)
35861 isActive: function() {
35862 return this.getIndex() === te.selectedIndex
35864 isLeft: function() {
35865 return this.getIndex() < te.selectedIndex
35867 isRight: function() {
35868 return this.getIndex() > te.selectedIndex
35870 shouldRender: function() {
35871 return !te.noDisconnect || this.isActive()
35873 hasFocus: function() {
35874 return te.styleTabItemFocus && te.hasFocus && this.getIndex() === te.focusIndex
35877 hasContent: !(!e.template || !e.template.trim())
35879 o = t.extend(i, e);
35880 return t.isDefined(n) ? te.tabs.splice(n, 0, o) : te.tabs.push(o), W(), Y(), s.nextTick(function() {
35881 F(), J(o), r && te.autoselect && s.nextTick(function() {
35882 s.nextTick(function() {
35883 S(te.tabs.indexOf(o))
35887 }, te.removeTab = function(e) {
35889 var t = te.selectedIndex,
35890 n = te.tabs.splice(e.getIndex(), 1)[0];
35891 G(), te.selectedIndex === t && (n.scope.deselect(), te.tabs[te.selectedIndex] && te.tabs[te.selectedIndex].scope.select()), s.nextTick(function() {
35892 F(), te.offsetLeft = Q(te.offsetLeft)
35895 }, te.select = S, te.scroll = function(e) {
35896 te.shouldPaginate && (e.preventDefault(), te.offsetLeft = Q(te.offsetLeft - e.wheelDelta))
35897 }, te.nextPage = function() {
35898 if (te.canPageForward()) {
35899 var e = h.increasePageOffset(I(), te.offsetLeft);
35900 te.offsetLeft = Q(e)
35902 }, te.previousPage = function() {
35903 if (te.canPageBack()) {
35904 var e = h.decreasePageOffset(I(), te.offsetLeft);
35905 te.offsetLeft = Q(e)
35907 }, te.keydown = function(e) {
35908 switch (e.keyCode) {
35909 case o.KEY_CODE.LEFT_ARROW:
35910 e.preventDefault(), V(-1, !0);
35912 case o.KEY_CODE.RIGHT_ARROW:
35913 e.preventDefault(), V(1, !0);
35915 case o.KEY_CODE.SPACE:
35916 case o.KEY_CODE.ENTER:
35917 e.preventDefault(), ne || S(te.focusIndex);
35919 case o.KEY_CODE.TAB:
35920 te.focusIndex !== te.selectedIndex && (te.focusIndex = te.selectedIndex)
35922 }, te.canPageForward = function() {
35924 t = e.tabs[e.tabs.length - 1];
35925 return ee() ? te.offsetLeft < e.paging.offsetWidth - e.canvas.offsetWidth : t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + te.offsetLeft
35926 }, te.canPageBack = function() {
35927 return te.offsetLeft > 0
35928 }, te.refreshIndex = G, te.incrementIndex = V, te.getTabElementIndex = function(e) {
35929 var t = r[0].getElementsByTagName("md-tab");
35930 return Array.prototype.indexOf.call(t, e[0])
35931 }, te.updateInkBarStyles = s.debounce(Z, 100), te.updateTabOrder = s.debounce(function() {
35932 var e = te.tabs[te.selectedIndex],
35933 t = te.tabs[te.focusIndex];
35934 te.tabs = te.tabs.sort(function(e, t) {
35935 return e.index - t.index
35936 }), te.selectedIndex = te.tabs.indexOf(e), te.focusIndex = te.tabs.indexOf(t)
35937 }, 100), te.getFocusedTabId = function() {
35938 var e = te.tabs[te.focusIndex];
35939 return e && e.id ? "tab-item-" + e.id : null
35940 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
35942 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction", "MdTabsPaginationService"], t.module("material.components.tabs").controller("MdTabsController", e)
35948 selectedIndex: "=?mdSelected"
35950 template: function(t, n) {
35951 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>'
35953 controller: "MdTabsController",
35954 controllerAs: "$mdTabsCtrl",
35955 bindToController: !0
35958 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.tabs").directive("mdTabs", e)
35963 require: "^?mdTabs",
35964 link: function(n, r, i, o) {
35966 var a, s, c = function() {
35967 o.updatePagination(), o.updateInkBarStyles()
35969 if ("MutationObserver" in t) {
35975 (a = new MutationObserver(c)).observe(r[0], l), s = a.disconnect.bind(a)
35977 var u = e.debounce(c, 15, null, !1);
35978 r.on("DOMSubtreeModified", u), s = r.off.bind(r, "DOMSubtreeModified", u)
35980 n.$on("$destroy", function() {
35987 e.$inject = ["$mdUtil", "$window"], t.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
35993 link: function(n, r, i, o) {
35995 o.enableDisconnect && t.disconnectScope(c)
35999 o.enableDisconnect && t.reconnectScope(c)
36002 var c = o.enableDisconnect ? n.compileScope.$new() : n.compileScope;
36003 return r.html(n.template), e(r.contents())(c), t.nextTick(function() {
36004 n.$watch("connected", function(e) {
36005 !1 === e ? a() : s()
36006 }), n.$on("$destroy", s)
36011 template: "=mdTabsTemplate",
36012 connected: "=?mdConnectedIf",
36013 compileScope: "=mdScope"
36015 require: "^?mdTabs"
36018 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.tabs").directive("mdTabsTemplate", e)
36019 }(), 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-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-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}.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-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-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-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-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}}"}')
36020 }(window, window.angular), window.ngMaterial = {
36026 angular.module("ngCsv.config", []).value("ngCsv.config", {
36028 }).config(["$compileProvider", function(e) {
36029 angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
36030 }]), 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) {
36039 this.stringifyField = function(e, t) {
36040 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
36041 }, this.isFloat = function(e) {
36042 return +e === e && (!isFinite(e) || Boolean(e % 1))
36043 }, this.stringify = function(n, r) {
36048 c = e.when(n).then(function(e) {
36049 if (angular.isDefined(r.header) && r.header) {
36051 n = [], angular.forEach(r.header, function(e, t) {
36052 this.push(o.stringifyField(e, r))
36053 }, n), c = n.join(r.fieldSep ? r.fieldSep : ","), s += c + t
36056 if (angular.isArray(e) ? l = e : angular.isFunction(e) && (l = e()), angular.isDefined(r.label) && r.label && "boolean" == typeof r.label) {
36059 var f = r.columnOrder ? r.columnOrder : l[0];
36060 angular.forEach(f, function(e, t) {
36061 var n = r.columnOrder ? e : t;
36062 this.push(o.stringifyField(n, r))
36063 }, u), d = u.join(r.fieldSep ? r.fieldSep : ","), s += d + t
36065 angular.forEach(l, function(e, n) {
36066 var i, a, c = angular.copy(l[n]);
36068 var u = r.columnOrder ? r.columnOrder : c;
36069 angular.forEach(u, function(e, t) {
36070 var n = r.columnOrder ? c[e] : e;
36071 this.push(o.stringifyField(n, r))
36072 }, a), i = a.join(r.fieldSep ? r.fieldSep : ","), s += n < l.length ? i + t : i
36073 }), r.addByteOrderMarker && (a += "\ufeff"), a += s, i.resolve(a)
36075 return "function" == typeof c.catch && c.catch(function(e) {
36078 }, this.isSpecialChar = function(e) {
36079 return void 0 !== n[e]
36080 }, this.getSpecialChar = function(e) {
36083 }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(t, n, r, i, o) {
36088 filename: "@filename",
36089 header: "&csvHeader",
36090 columnOrder: "&csvColumnOrder",
36091 txtDelim: "@textDelimiter",
36092 decimalSep: "@decimalSeparator",
36093 quoteStrings: "@quoteStrings",
36094 fieldSep: "@fieldSeparator",
36095 lazyLoad: "@lazyLoad",
36096 addByteOrderMarker: "@addBom",
36098 charset: "@charset",
36101 controller: ["$scope", "$element", "$attrs", "$transclude", function(e, t, i, o) {
36104 txtDelim: e.txtDelim ? e.txtDelim : '"',
36105 decimalSep: e.decimalSep ? e.decimalSep : ".",
36106 quoteStrings: e.quoteStrings,
36107 addByteOrderMarker: e.addByteOrderMarker
36109 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
36111 e.csv = "", angular.isDefined(e.lazyLoad) && "true" == e.lazyLoad || angular.isArray(e.data) && e.$watch("data", function(t) {
36113 }, !0), e.getFilename = function() {
36114 return e.filename || "download.csv"
36115 }, e.buildCSV = function() {
36118 return t.addClass(i.ngCsvLoadingClass || "ng-csv-loading"), s = e.data(), angular.isFunction(s) && (s = s()), r.stringify(s, a()).then(function(n) {
36119 e.csv = n, t.removeClass(i.ngCsvLoadingClass || "ng-csv-loading"), o.resolve(n)
36120 }), e.$apply(), o.promise
36123 link: function(t, n, r) {
36125 var n = t.charset || "utf-8",
36126 r = new Blob([t.csv], {
36127 type: "text/csv;charset=" + n + ";"
36129 if (e.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(r, t.getFilename());
36131 var a = angular.element('<div data-tap-disabled="true"><a></a></div>'),
36132 s = angular.element(a.children()[0]);
36133 s.attr("href", e.URL.createObjectURL(r)), s.attr("download", t.getFilename()), i.find("body").append(a), o(function() {
36134 s[0].click(), s.remove()
36138 n.bind("click", function(e) {
36139 t.buildCSV().then(function(e) {
36146 }(window, document),
36148 if ("function" == typeof define && define.amd) define(["jquery"], e);
36149 else if ("object" == typeof module && module.exports) {
36150 var t = require("jquery");
36151 module.exports = e(t)
36154 if (void 0 === e) throw new Error("jQuery.textcomplete requires jQuery");
36155 return function(e) {
36157 var t = function(e) {
36158 console.warn && console.warn(e)
36161 e.fn.textcomplete = function(r, i) {
36162 var o = Array.prototype.slice.call(arguments);
36163 return this.each(function() {
36166 c = s.data("textComplete");
36167 if (c || (i || (i = {}), i._oid = n++, c = new e.fn.textcomplete.Completer(this, i), s.data("textComplete", c)), "string" == typeof r) {
36169 o.shift(), c[r].apply(c, o), "destroy" === r && s.removeData("textComplete")
36170 } else e.each(r, function(n) {
36171 e.each(["header", "footer", "placement", "maxCount"], function(e) {
36172 n[e] && (c.option[e] = n[e], t(e + "as a strategy param is deprecated. Use option."), delete n[e])
36174 }), c.register(e.fn.textcomplete.Strategy.parse(r, {
36185 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.");
36186 if (n === n.ownerDocument.activeElement) this.initialize();
36189 this.$el.one("focus." + this.id, function() {
36191 }), this.option.adapter && "CKEditor" != this.option.adapter || "undefined" == typeof CKEDITOR || !this.$el.is("textarea") || CKEDITOR.on("instanceReady", function(t) {
36192 -1 == e.inArray(t.editor.id, i) && (i.push(t.editor.id), t.editor.on("focus", function(n) {
36193 a.$el = e(t.editor.editable().$), a.option.adapter || (a.option.adapter = e.fn.textcomplete.CKEditor), a.option.ckeditor_instance = t.editor, a.initialize()
36198 var n = function(e) {
36199 return "[object String]" === Object.prototype.toString.call(e)
36206 dropdownClassName: "dropdown-menu textcomplete-dropdown",
36209 rightEdgeOffset: 30
36210 }, e.extend(t.prototype, {
36218 initialize: function() {
36219 var t = this.$el.get(0);
36220 if (this.$el.prop("ownerDocument") !== document && window.frames.length)
36221 for (var n = 0; n < window.frames.length; n++)
36222 if (this.$el.prop("ownerDocument") === window.frames[n].document) {
36223 this.$iframe = e(window.frames[n].frameElement);
36226 this.dropdown = new e.fn.textcomplete.Dropdown(t, this, this.option);
36228 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)
36230 destroy: function() {
36231 this.$el.off("." + this.id), this.adapter && this.adapter.destroy(), this.dropdown && this.dropdown.destroy(), this.$el = this.adapter = this.dropdown = null
36233 deactivate: function() {
36234 this.dropdown && this.dropdown.deactivate()
36236 trigger: function(e, t) {
36237 this.dropdown || this.initialize(), null != e || (e = this.adapter.getTextFromHeadToCaret());
36238 var n = this._extractSearchQuery(e);
36241 if (t && this._term === r && "" !== r) return;
36242 this._term = r, this._search.apply(this, n)
36243 } else this._term = null, this.dropdown.deactivate()
36245 fire: function(e) {
36246 var t = Array.prototype.slice.call(arguments, 1);
36247 return this.$el.trigger(e, t), this
36249 register: function(e) {
36250 Array.prototype.push.apply(this.strategies, e)
36252 select: function(e, t, n) {
36253 this._term = null, this.adapter.select(e, t, n), this.fire("change").fire("textComplete:select", e, t), this.adapter.focus()
36257 _extractSearchQuery: function(t) {
36258 for (var r = 0; r < this.strategies.length; r++) {
36259 var i = this.strategies[r],
36261 if (o || "" === o) {
36262 var a = e.isFunction(i.match) ? i.match(t) : i.match;
36264 var s = t.match(a);
36265 if (s) return [i, s[i.index], s]
36270 _search: function(e) {
36272 return function() {
36273 var r = Array.prototype.slice.call(arguments);
36278 r.unshift(function r() {
36281 n = void 0, o.unshift(r), e.apply(i, o)
36283 }), e.apply(this, r)
36286 }(function(e, t, n, r) {
36288 t.search(n, function(r, o) {
36289 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)
36292 _zip: function(t, n, r) {
36293 return e.map(t, function(e) {
36301 }), e.fn.textcomplete.Completer = t
36306 function t(n, r, o) {
36307 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);
36309 e.each(["maxCount", "placement", "footer", "header", "noResultsMessage", "className"], function(e, t) {
36310 null != o[t] && (a[t] = o[t])
36311 }), this._bindEvents(n), i[this.id] = this
36314 r = function(e, t) {
36315 var n, r, i = t.strategy.idProperty;
36316 for (n = 0; n < e.length; n++)
36317 if ((r = e[n]).strategy === t.strategy)
36319 if (r.value[i] === t.value[i]) return !0
36320 } else if (r.value === t.value) return !0;
36324 e(document).on("click", function(t) {
36325 var n = t.originalEvent && t.originalEvent.keepTextCompleteDropdown;
36326 e.each(i, function(e, t) {
36327 e !== n && t.deactivate()
36340 createElement: function(t) {
36341 var n = t.appendTo;
36342 return n instanceof e || (n = e(n)), e("<ul></ul>").addClass(t.dropdownClassName).attr("id", "textcomplete-dropdown-" + t._oid).css({
36345 position: "absolute",
36349 }), e.extend(t.prototype, {
36361 destroy: function() {
36362 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]
36364 render: function(t) {
36365 var n = this._buildContents(t),
36366 r = e.map(t, function(e) {
36370 var i = t[0].strategy;
36371 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()
36372 } else this.noResultsMessage ? this._renderNoResultsMessage(r) : this.shown && this.deactivate()
36374 setPosition: function(t) {
36375 var r = "absolute";
36376 return this.$inputEl.add(this.$inputEl.parents()).each(function() {
36377 return "absolute" !== e(this).css("position") && ("fixed" === e(this).css("position") ? (t.top -= n.scrollTop(), t.left -= n.scrollLeft(), r = "fixed", !1) : void 0)
36378 }), this.$el.css(this._applyPlacement(t)), this.$el.css({
36382 clear: function() {
36383 this.$el.html(""), this.data = [], this._index = 0, this._$header = this._$footer = this._$noResultsMessage = null
36385 activate: function() {
36386 return this.shown || (this.clear(), this.$el.show(), this.className && this.$el.addClass(this.className), this.completer.fire("textComplete:show"), this.shown = !0), this
36388 deactivate: function() {
36389 return this.shown && (this.$el.hide(), this.className && this.$el.removeClass(this.className), this.completer.fire("textComplete:hide"), this.shown = !1), this
36391 isUp: function(e) {
36392 return 38 === e.keyCode || e.ctrlKey && 80 === e.keyCode
36394 isDown: function(e) {
36395 return 40 === e.keyCode || e.ctrlKey && 78 === e.keyCode
36397 isEnter: function(e) {
36398 return !(e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) && (13 === e.keyCode || 9 === e.keyCode || !0 === this.option.completeOnSpace && 32 === e.keyCode)
36400 isPageup: function(e) {
36401 return 33 === e.keyCode
36403 isPagedown: function(e) {
36404 return 34 === e.keyCode
36406 isEscape: function(e) {
36407 return 27 === e.keyCode
36412 _$noResultsMessage: null,
36414 _bindEvents: function() {
36415 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))
36417 _onClick: function(t) {
36418 var n = e(t.target);
36419 t.preventDefault(), t.originalEvent.keepTextCompleteDropdown = this.id, n.hasClass("textcomplete-item") || (n = n.closest(".textcomplete-item"));
36420 var r = this.data[parseInt(n.data("index"), 10)];
36421 this.completer.select(r.value, r.strategy, t);
36423 setTimeout(function() {
36424 i.deactivate(), "touchstart" === t.type && i.$inputEl.focus()
36427 _onMouseover: function(t) {
36428 var n = e(t.target);
36429 t.preventDefault(), n.hasClass("textcomplete-item") || (n = n.closest(".textcomplete-item")), this._index = parseInt(n.data("index"), 10), this._activateIndexedItem()
36431 _onKeydown: function(t) {
36434 switch (e.isFunction(this.option.onKeydown) && (n = this.option.onKeydown(t, o)), null == n && (n = this._defaultKeydown(t)), n) {
36436 t.preventDefault(), this._up();
36439 t.preventDefault(), this._down();
36442 t.preventDefault(), this._enter(t);
36445 t.preventDefault(), this._pageup();
36447 case o.KEY_PAGEDOWN:
36448 t.preventDefault(), this._pagedown();
36451 t.preventDefault(), this.deactivate()
36455 _defaultKeydown: function(e) {
36456 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
36459 0 === this._index ? this._index = this.data.length - 1 : this._index -= 1, this._activateIndexedItem(), this._setScroll()
36461 _down: function() {
36462 this._index === this.data.length - 1 ? this._index = 0 : this._index += 1, this._activateIndexedItem(), this._setScroll()
36464 _enter: function(e) {
36465 var t = this.data[parseInt(this._getActiveElement().data("index"), 10)];
36466 this.completer.select(t.value, t.strategy, e), this.deactivate()
36468 _pageup: function() {
36470 n = this._getActiveElement().position().top - this.$el.innerHeight();
36471 this.$el.children().each(function(r) {
36472 if (e(this).position().top + e(this).outerHeight() > n) return t = r, !1
36473 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36475 _pagedown: function() {
36476 var t = this.data.length - 1,
36477 n = this._getActiveElement().position().top + this.$el.innerHeight();
36478 this.$el.children().each(function(r) {
36479 if (e(this).position().top > n) return t = r, !1
36480 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36482 _activateIndexedItem: function() {
36483 this.$el.find(".textcomplete-item.active").removeClass("active"), this._getActiveElement().addClass("active")
36485 _getActiveElement: function() {
36486 return this.$el.children(".textcomplete-item:nth(" + this._index + ")")
36488 _setScroll: function() {
36489 var e = this._getActiveElement(),
36490 t = e.position().top,
36491 n = e.outerHeight(),
36492 r = this.$el.innerHeight(),
36493 i = this.$el.scrollTop();
36494 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)
36496 _buildContents: function(e) {
36497 var t, n, i, o = "";
36498 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>");
36501 _renderHeader: function(t) {
36503 this._$header || (this._$header = e('<li class="textcomplete-header"></li>').prependTo(this.$el));
36504 var n = e.isFunction(this.header) ? this.header(t) : this.header;
36505 this._$header.html(n)
36508 _renderFooter: function(t) {
36510 this._$footer || (this._$footer = e('<li class="textcomplete-footer"></li>').appendTo(this.$el));
36511 var n = e.isFunction(this.footer) ? this.footer(t) : this.footer;
36512 this._$footer.html(n)
36515 _renderNoResultsMessage: function(t) {
36516 if (this.noResultsMessage) {
36517 this._$noResultsMessage || (this._$noResultsMessage = e('<li class="textcomplete-no-results-message"></li>').appendTo(this.$el));
36518 var n = e.isFunction(this.noResultsMessage) ? this.noResultsMessage(t) : this.noResultsMessage;
36519 this._$noResultsMessage.html(n)
36522 _renderContents: function(e) {
36523 this._$footer ? this._$footer.before(e) : this.$el.append(e)
36525 _fitToBottom: function() {
36526 var e = n.scrollTop() + n.height(),
36527 t = this.$el.height();
36528 this.$el.position().top + t > e && (this.completer.$iframe || this.$el.offset({
36532 _fitToRight: function() {
36533 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({
36535 }), !((e = this.$el.offset().left) >= r));) r = e
36537 _applyPlacement: function(e) {
36538 return -1 !== this.placement.indexOf("top") ? e = {
36540 bottom: this.$el.parent().height() - e.top + e.lineHeight,
36542 } : (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
36544 }), e.fn.textcomplete.Dropdown = t, e.extend(e.fn.textcomplete, o)
36550 e.extend(this, t), this.cache && (this.search = n(this.search))
36552 var n = function(e) {
36554 return function(n, r) {
36555 t[n] ? r(t[n]) : e.call(this, n, function(e) {
36556 t[n] = (t[n] || []).concat(e), r.apply(null, arguments)
36560 t.parse = function(n, r) {
36561 return e.map(n, function(e) {
36563 return n.el = r.el, n.$el = r.$el, n
36565 }, e.extend(t.prototype, {
36571 context: function() {
36575 template: function(e) {
36579 }), e.fn.textcomplete.Strategy = t
36585 var n = Date.now || function() {
36586 return (new Date).getTime()
36588 r = function(e, t) {
36589 var r, i, o, a, s, c = function() {
36591 l < t ? r = setTimeout(c, t - l) : (r = null, s = e.apply(o, i), o = i = null)
36593 return function() {
36594 return o = this, i = arguments, a = n(), r || (r = setTimeout(c, t)), s
36597 e.extend(t.prototype, {
36603 initialize: function(t, n, i) {
36604 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()
36606 destroy: function() {
36607 this.$el.off("." + this.id), this.$el = this.el = this.completer = null
36609 select: function() {
36610 throw new Error("Not implemented")
36612 getCaretPosition: function() {
36613 var t = this._getCaretRelativePosition(),
36614 n = this.$el.offset(),
36615 r = this.option.appendTo;
36617 r instanceof e || (r = e(r));
36618 var i = r.offsetParent().offset();
36619 n.top -= i.top, n.left -= i.left
36621 return t.top += n.top, t.left += n.left, t
36623 focus: function() {
36626 _bindEvents: function() {
36627 this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36629 _onKeyup: function(e) {
36630 this._skipSearch(e) || this.completer.trigger(this.getTextFromHeadToCaret(), !0)
36632 _skipSearch: function(e) {
36633 switch (e.keyCode) {
36646 if (e.ctrlKey) switch (e.keyCode) {
36652 }), e.fn.textcomplete.Adapter = t
36657 function t(e, t, n) {
36658 this.initialize(e, t, n)
36660 e.extend(t.prototype, e.fn.textcomplete.Adapter.prototype, {
36661 select: function(t, n, r) {
36662 var i, o = this.getTextFromHeadToCaret(),
36663 a = this.el.value.substring(this.el.selectionEnd),
36664 s = n.replace(t, r);
36665 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)
36667 getTextFromHeadToCaret: function() {
36668 return this.el.value.substring(0, this.el.selectionEnd)
36670 _getCaretRelativePosition: function() {
36671 var t = e.fn.textcomplete.getCaretCoordinates(this.el, this.el.selectionStart);
36673 top: t.top + this._calculateLineHeight() - this.$el.scrollTop(),
36674 left: t.left - this.$el.scrollLeft(),
36675 lineHeight: this._calculateLineHeight()
36678 _calculateLineHeight: function() {
36679 var e = parseInt(this.$el.css("line-height"), 10);
36681 var t = this.el.parentNode,
36682 n = document.createElement(this.el.nodeName),
36684 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)
36688 }), e.fn.textcomplete.Textarea = t
36693 function t(t, r, i) {
36694 this.initialize(t, r, i), e("<span>" + n + "</span>").css({
36695 position: "absolute",
36701 e.extend(t.prototype, e.fn.textcomplete.Textarea.prototype, {
36702 select: function(t, n, r) {
36703 var i, o = this.getTextFromHeadToCaret(),
36704 a = this.el.value.substring(o.length),
36705 s = n.replace(t, r);
36706 if (void 0 !== s) {
36707 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();
36708 var c = this.el.createTextRange();
36709 c.collapse(!0), c.moveEnd("character", o.length), c.moveStart("character", o.length), c.select()
36712 getTextFromHeadToCaret: function() {
36714 var e = document.selection.createRange();
36715 e.moveStart("character", -this.el.value.length);
36716 var t = e.text.split(n);
36717 return 1 === t.length ? t[0] : t[1]
36719 }), e.fn.textcomplete.IETextarea = t
36724 function t(e, t, n) {
36725 this.initialize(e, t, n)
36727 e.extend(t.prototype, e.fn.textcomplete.Adapter.prototype, {
36728 select: function(t, n, r) {
36729 var i = this.getTextFromHeadToCaret(),
36730 o = this.el.ownerDocument.getSelection(),
36731 a = o.getRangeAt(0),
36732 s = a.cloneRange();
36733 s.selectNodeContents(a.startContainer);
36734 var c, l = s.toString().substring(a.startOffset),
36735 u = n.replace(t, r);
36736 if (void 0 !== u) {
36737 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();
36738 var d = this.el.ownerDocument.createElement("div");
36740 var f = this.el.ownerDocument.createElement("div");
36742 for (var h, p, m = this.el.ownerDocument.createDocumentFragment(); h = d.firstChild;) p = m.appendChild(h);
36743 for (; h = f.firstChild;) m.appendChild(h);
36744 a.insertNode(m), a.setStartAfter(p), a.collapse(!0), o.removeAllRanges(), o.addRange(a)
36747 _getCaretRelativePosition: function() {
36748 var t = this.el.ownerDocument.getSelection().getRangeAt(0).cloneRange(),
36749 n = t.endContainer.parentNode,
36750 r = this.el.ownerDocument.createElement("span");
36751 t.insertNode(r), t.selectNodeContents(r), t.deleteContents(), setTimeout(function() {
36756 if (o.left -= this.$el.offset().left, o.top += i.height() - this.$el.offset().top, o.lineHeight = i.height(), this.completer.$iframe) {
36757 var a = this.completer.$iframe.offset();
36758 o.top += a.top, o.left += a.left, o.top -= e(this.completer.$iframe[0].contentWindow.document).scrollTop()
36760 return i.remove(), o
36762 getTextFromHeadToCaret: function() {
36763 var e = this.el.ownerDocument.getSelection().getRangeAt(0),
36764 t = e.cloneRange();
36765 return t.selectNodeContents(e.startContainer), t.toString().substring(0, e.startOffset)
36767 }), e.fn.textcomplete.ContentEditable = t
36772 function t(e, t, n) {
36773 this.initialize(e, t, n)
36775 e.extend(t.prototype, e.fn.textcomplete.ContentEditable.prototype, {
36776 _bindEvents: function() {
36778 this.option.ckeditor_instance.on("key", function(e) {
36780 if (t._onKeyup(n), t.completer.dropdown.shown && t._skipSearch(n)) return !1
36781 }, null, null, 1), this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36783 }), e.fn.textcomplete.CKEditor = t
36786 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"],
36787 n = "undefined" != typeof window,
36788 r = n && null != window.mozInnerScreenX;
36789 e.fn.textcomplete.getCaretCoordinates = function(e, i, o) {
36790 if (!n) throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");
36791 var a = o && o.debug || !1;
36793 var s = document.querySelector("#input-textarea-caret-position-mirror-div");
36794 s && s.parentNode.removeChild(s)
36796 var c = document.createElement("div");
36797 c.id = "input-textarea-caret-position-mirror-div", document.body.appendChild(c);
36799 u = window.getComputedStyle ? getComputedStyle(e) : e.currentStyle;
36800 l.whiteSpace = "pre-wrap", "INPUT" !== e.nodeName && (l.wordWrap = "break-word"), l.position = "absolute", a || (l.visibility = "hidden"), t.forEach(function(e) {
36802 }), 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, " "));
36803 var d = document.createElement("span");
36804 d.textContent = e.value.substring(i) || ".", c.appendChild(d);
36806 top: d.offsetTop + parseInt(u.borderTopWidth),
36807 left: d.offsetLeft + parseInt(u.borderLeftWidth)
36809 return a ? d.style.backgroundColor = "#aaa" : document.body.removeChild(c), f
36812 }), window = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, document = window.document || {},
36814 "function" == typeof require && "object" == typeof exports && "object" == typeof module ? e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(t.jQuery)
36819 S ? e() : O.push(e)
36822 function n(t, n, r) {
36826 n = n.toLowerCase();
36828 var a = 1 == o ? "@" + n : n;
36829 M[t.id][a] && M[t.id][a].length && e.each(M[t.id][a], function(e, n) {
36830 return i = !1 !== n.apply(t, r || [])
36837 function r(t, n, r, i) {
36838 i = i || function(t, n) {
36839 return e(n.currentTarget)
36840 }, e.each(r, function(o, a) {
36841 o = e.isArray(r) ? a : o, (A[t.id][a] || (A[t.id][a] = [])).push([n, o, i])
36845 function i(e, t, n) {
36846 var r, i = S.imageType;
36847 r = "svg" == i ? S.imagePathSVG : S.imagePathPNG;
36849 n && (o = n.substr(1, n.length - 2).replace(/_/g, " ").replace(/\w\S*/g, function(e) {
36850 return e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()
36853 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))
36856 function o(e, t, n) {
36857 return e.replace(/:?\+?[\w_\-]+:?/g, function(e) {
36858 e = ":" + e.replace(/:$/, "").replace(/^:/, "") + ":";
36859 var r = S.emojioneList[e];
36860 return r ? R > 4 ? i(t, r, e) : (R > 3 && (r = r.unicode), i(t, r[r.length - 1], e)) : n ? "" : e
36866 if (window.getSelection) {
36867 if ((t = window.getSelection()).getRangeAt && t.rangeCount) {
36868 (n = t.getRangeAt(0)).deleteContents();
36869 var r = document.createElement("div");
36871 for (var i, o, a = document.createDocumentFragment(); i = r.firstChild;) o = a.appendChild(i);
36872 n.insertNode(a), o && ((n = n.cloneRange()).setStartAfter(o), n.collapse(!0), t.removeAllRanges(), t.addRange(n))
36874 } else document.selection && "Control" != document.selection.type && document.selection.createRange().pasteHTML(e)
36878 return "object" == typeof e
36883 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
36917 if (t && t.filters) {
36919 e.each(t.filters, function(t, n) {
36920 return !s(n) || e.isEmptyObject(n) ? void delete r[t] : void e.each(n, function(e, n) {
36925 return e.extend({}, n, t)
36929 return e.replace(L, function(e) {
36930 var n = S[0 === R ? "jsecapeMap" : "jsEscapeMap"];
36931 return void 0 !== e && e in n ? i(t, n[e]) : e
36936 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, " ")
36940 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) {
36942 e = d(e, t.emojiTemplate);
36952 t = e.editor[0].offsetWidth - e.editor[0].clientWidth,
36953 n = parseInt(e.button.css("marginRight"));
36954 n !== t && (e.button.css({
36956 }), e.floatingPicker && e.picker.css({
36957 right: parseInt(e.picker.css("right")) - n + t
36963 if (!t.sprite && t.lasyEmoji[0]) {
36964 var n = t.picker.offset().top,
36965 r = n + t.picker.height() + 20;
36966 t.lasyEmoji.each(function() {
36968 i = t.offset().top;
36969 i > n && r > i && t.attr("src", t.data("src")).removeClass("lazy-emoji")
36970 }), t.lasyEmoji = t.lasyEmoji.filter(".lazy-emoji")
36975 return (t ? "" : ".") + I + (e ? "-" + e : "")
36979 var n = e("<div/>", s(t) ? t : {
36982 return e.each(N.call(arguments).slice(1), function(t, r) {
36983 e.isFunction(r) && (r = r.call(n)), r && e(r).appendTo(n)
36988 return localStorage.getItem("recent_emojis") || ""
36993 if (!t.recent || t.recent !== r || n) {
36995 var i, a, s = t.scrollArea.is(".skinnable");
36996 s || (i = t.scrollArea.scrollTop(), n && t.recentCategory.show(), a = t.recentCategory.is(":visible") ? t.recentCategory.height() : 0);
36997 var c = o(r, t.emojiBtnTemplate, !0).split("|").join("");
36998 if (t.recentCategory.children(".emojibtn").remove(), e(c).insertAfter(t.recentCategory.children(".emojionearea-category-title")), t.recentCategory.children(".emojibtn").on("click", function() {
36999 t.trigger("emojibtn.click", e(this))
37000 }), t.recentFilter.show(), !s) {
37001 t.recentCategory.show();
37002 var l = t.recentCategory.height();
37003 a !== l && t.scrollArea.scrollTop(i + l - a)
37005 } else t.recentFilter.hasClass("active") && t.recentFilter.removeClass("active").next().addClass("active"), t.recentCategory.hide(), t.recentFilter.hide();
37011 var n = b().split("|"),
37012 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)
37018 return localStorage.setItem(e, e), localStorage.removeItem(e), !0
37024 function w(t, i, c) {
37025 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 && $();
37026 var l = c.pickerPosition;
37027 t.floatingPicker = "top" === l || "bottom" === l, t.source = i, (i.is(":disabled") || i.is(".disabled")) && t.disable();
37028 var d, w, E, k, T, M, A, O, N, j, H = i.is("TEXTAREA") || i.is("INPUT") ? "val" : "text",
37030 class: I + (t.standalone ? " " + I + "-standalone " : " ") + (i.attr("class") || ""),
37031 role: "application"
37032 }, d = t.editor = v("editor").attr({
37033 contenteditable: !t.standalone,
37034 placeholder: c.placeholder || i.data("placeholder") || i.attr("placeholder") || "",
37036 }), 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() {
37037 t.search = e("<input/>", {
37038 placeholder: "SEARCH",
37041 }), this.append(t.search)
37042 } : null), k = v("tones", function() {
37044 this.addClass(g("tones-" + c.tonesStyle, !0));
37045 for (var t = 0; 5 >= t; t++) this.append(e("<i/>", {
37046 class: "btn-tone btn-tone-" + t + (t ? "" : " active"),
37051 }), j = v("scroll-area", O = v("emojis-list")))).addClass(g("picker-position-" + c.pickerPosition, !0)).addClass(g("filters-position-" + c.filtersPosition, !0)).addClass("hidden"));
37052 if (t.searchSel = null, d.data(i.data()), e.each(c.attributes, function(e, t) {
37054 }), v("category").attr({
37056 }).appendTo(O), e.each(c.filters, function(n, r) {
37058 if ("recent" !== n || t.recentEmojis) {
37059 if ("tones" !== n) e("<i/>", {
37060 class: g("filter", !0) + " " + g("filter-" + n, !0),
37063 }).wrapInner(o(r.icon, t.emojiTemplateAlt)).appendTo(T);
37065 if (!c.tones) return;
37073 0 === i ? (a = O.children('[data-tone="0"]'), s["data-sub-category"] = !0) : a = O;
37074 var l = v("category").attr(s).appendTo(a),
37075 u = r.emoji.replace(/[\s,;]+/g, "|");
37076 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)
37079 }), 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) {
37080 var F = e(i).data("emoji-placeholder") || c.emojiPlaceholder;
37081 t.setText(F), d.addClass("has-placeholder")
37083 r(t, O.find(".emojibtn"), {
37084 click: "emojibtn.click"
37087 }), r(t, k.children(), {
37088 click: "tone.click"
37090 mousedown: "!mousedown"
37092 click: "button.click"
37095 }, d), r(t, d, ["focus", "blur"], function() {
37096 return !t.stayFocused && d
37098 mousedown: "picker.mousedown",
37099 mouseup: "picker.mouseup",
37100 click: "picker.click",
37101 keyup: "picker.keyup",
37102 keydown: "picker.keydown",
37103 keypress: "picker.keypress"
37104 }), r(t, d, ["mousedown", "mouseup", "click", "keyup", "keydown", "keypress"]), r(t, E.find(".emojionearea-filter"), {
37105 click: "filter.click"
37106 }), c.search && r(t, t.search, {
37107 keyup: "search.keypress",
37108 focus: "search.focus",
37109 blur: "search.blur"
37112 if (j.on("scroll", function() {
37113 if (!q && (m.call(t), j.is(":not(.skinnable)"))) {
37115 r = j.offset().top;
37116 N.each(function(t, i) {
37117 return !(e(i).offset().top - r >= 10) && void(n = e(i))
37119 var i = M.filter('[data-filter="' + n.attr("name") + '"]');
37120 i[0] && !i.is(".active") && (M.removeClass("active"), i.addClass("active"))
37122 }), t.on("@filter.click", function(e) {
37123 var n = e.is(".active");
37124 if (j.is(".skinnable")) {
37126 k.children().eq(0).click()
37128 q = !0, n || (M.filter(".active").removeClass("active"), e.addClass("active"));
37129 var r = N.filter('[name="' + e.data("filter") + '"]').offset().top,
37131 o = j.offset().top;
37133 scrollTop: r + i - o - 2
37134 }, 200, "swing", function() {
37137 }).on("@picker.show", function() {
37138 t.recentEmojis && y(t), m.call(t)
37139 }).on("@tone.click", function(e) {
37140 k.children().removeClass("active");
37141 var n = e.addClass("active").data("skin");
37142 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")
37143 }).on("@button.click", function(e) {
37144 e.is(".active") ? t.hidePicker() : (t.showPicker(), t.searchSel = null)
37145 }).on("@!paste", function(r, i) {
37146 var o = function(i) {
37147 var o = "caret-" + (new Date).getTime(),
37149 a(s), a('<i id="' + o + '"></i>'), r.scrollTop(l);
37150 var c = e("#" + o),
37151 u = c.offset().top - r.offset().top,
37153 (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])
37155 if (i.originalEvent.clipboardData) {
37156 var s = i.originalEvent.clipboardData.getData("text/plain");
37157 return o(s), i.preventDefault ? i.preventDefault() : i.stop(), i.returnValue = !1, i.stopPropagation(), !1
37159 t.stayFocused = !0, a("<span>" + P + "</span>");
37163 contenteditable: !0
37171 }).appendTo(e("BODY")).focus();
37172 window.setTimeout(function() {
37173 r.focus(), x(r[0], c);
37174 var e = h(u.html().replace(/\r\n|\n|\r/g, "<br>"), t);
37177 }).on("@emojibtn.click", function(e) {
37178 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")
37179 }).on("@!resize @keyup @emojibtn.click", p).on("@!mousedown", function(n, r) {
37180 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
37181 }).on("@change", function() {
37182 var e = t.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi, "");
37183 e.length && !/^<br[^>]*>$/i.test(e) || t.editor.html(t.content = ""), i[H](t.getText())
37184 }).on("@focus", function() {
37185 L.addClass("focused")
37186 }).on("@blur", function() {
37187 L.removeClass("focused"), c.hidePickerOnBlur && t.hidePicker();
37188 var e = t.editor.html();
37189 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"))
37190 }), c.search && t.on("@search.focus", function() {
37191 t.stayFocused = !0, t.search.addClass("focused")
37192 }).on("@search.keypress", function() {
37193 var n = E.find(".emojionearea-filter"),
37194 r = c.tones ? k.find("i.active").data("skin") : 0,
37195 i = t.search.val().replace(/ /g, "_").replace(/"/g, '\\"');
37196 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() {
37197 var t = function(e, t) {
37198 var r = e.find('.emojibtn[data-name*="' + i + '"]');
37199 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())
37202 t(o, r), 0 === o.data("tone") && o.children(g("category") + ':not([name="recent"])').each(function() {
37205 }), 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))
37206 }).on("@search.blur", function() {
37207 t.stayFocused = !1, t.search.removeClass("focused"), t.trigger("blur")
37208 }), c.shortcuts && t.on("@keydown", function(e, n) {
37209 n.ctrlKey || (9 == n.which ? (n.preventDefault(), w.click()) : 27 == n.which && (n.preventDefault(), w.is(".active") && t.hidePicker()))
37210 }), s(c.events) && !e.isEmptyObject(c.events) && e.each(c.events, function(e, n) {
37211 t.on(e.replace(/_/g, "."), n)
37212 }), c.autocomplete) {
37213 var U = function() {
37215 maxCount: c.textcomplete.maxCount,
37216 placement: c.textcomplete.placement
37218 c.shortcuts && (n.onKeydown = function(e, t) {
37219 return e.ctrlKey || 13 != e.which ? void 0 : t.KEY_ENTER
37221 var r = e.map(S.emojioneList, function(e, t) {
37222 return c.autocompleteTones ? t : /_tone[12345]/.test(t) ? null : t
37224 r.sort(), d.textcomplete([{
37226 match: /\B(:[\-+\w]*)$/,
37227 search: function(t, n) {
37228 n(e.map(r, function(e) {
37229 return 0 === e.indexOf(t) ? e : null
37232 template: function(e) {
37233 return o(e, t.emojiTemplate) + " " + e.replace(/:/g, "")
37235 replace: function(e) {
37236 return o(e, t.emojiTemplate)
37240 }], n), c.textcomplete.placement && "static" == e(d.data("textComplete").option.appendTo).css("position") && e(d.data("textComplete").option.appendTo).css("position", "relative")
37244 var e = function() {
37245 t.off("enabled", e), U()
37250 e.fn.textcomplete ? V() : e.ajax({
37251 url: "https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",
37252 dataType: "script",
37257 t.inline && (L.addClass(g("inline", !0)), t.on("@keydown", function(e, t) {
37258 13 == t.which && t.preventDefault()
37259 })), /firefox/i.test(navigator.userAgent) && document.execCommand("enableObjectResizing", !1, !1), t.isReady = !0, t.trigger("onLoad", d), t.trigger("ready", d)
37263 if (n = u(n), !F.isLoading)
37264 if (!S || l(c(S)) < 2) {
37267 r = l(j) > 5 ? F.defaultBase3 + "npm/emojione@" + j : l(j) > 4 ? F.defaultBase3 + "emojione/" + j : F.defaultBase + "/" + j, e.ajax({
37268 url: r + "/lib/js/emojione.min.js",
37269 dataType: "script",
37271 success: function() {
37272 S = window.emojione, j = c(S);
37274 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/>", {
37277 }).appendTo("head")); O.length;) O.shift().call();
37281 } else j = c(S), R = l(j), F.base = R > 4 ? F.defaultBase3 + "emojione/assets/" + j : F.defaultBase + j + "/assets";
37284 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")
37289 r = r.replace(/^@/, "");
37291 A[i][r] && (e.each(A[i][r], function(i, o) {
37292 e.each(e.isArray(o[0]) ? o[0] : [o[0]], function(i, a) {
37293 e(a).on(o[1], function() {
37294 var i = N.call(arguments),
37295 a = e.isFunction(o[2]) ? o[2].apply(t, [r].concat(i)) : o[2];
37296 a && n(t, r, [a].concat(i))
37299 }), A[i][r] = null)
37304 S = window.emojione,
37306 D = "data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",
37308 I = "emojionearea",
37311 j = window.emojioneVersion || "2.2.7",
37313 if (e.fn.emojioneArea && e.fn.emojioneArea.defaults) return e.fn.emojioneArea.defaults;
37318 autocomplete: "off",
37319 autocorrect: "off",
37320 autocapitalize: "off"
37324 emojiPlaceholder: ":smiley:",
37325 searchPlaceholder: "SEARCH",
37330 pickerPosition: "top",
37331 filtersPosition: "top",
37332 hidePickerOnBlur: !0,
37333 buttonTitle: "Use the TAB key to insert emoji faster",
37335 tonesStyle: "bullet",
37337 saveEmojisAs: "unicode",
37340 autocompleteTones: !1,
37342 useInternalCDN: !0,
37350 n = l(S ? c(S) : j);
37351 return t.filters = n > 4 ? {
37353 title: "Diversity",
37354 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"
37363 title: "Smileys & People",
37364 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"
37368 title: "Animals & Nature",
37369 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"
37373 title: "Food & Drink",
37374 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"
37377 icon: "basketball",
37379 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"
37383 title: "Travel & Places",
37384 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"
37389 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"
37392 icon: "heartpulse",
37394 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"
37399 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"
37403 title: "Diversity",
37404 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"
37413 title: "Smileys & People",
37414 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"
37418 title: "Animals & Nature",
37419 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"
37423 title: "Food & Drink",
37424 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"
37427 icon: "basketball",
37429 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"
37433 title: "Travel & Places",
37434 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"
37439 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"
37442 icon: "heartpulse",
37444 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"
37449 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 "
37453 window.getSelection && document.createRange ? (C = function(e) {
37454 var t = window.getSelection && window.getSelection();
37455 return t && t.rangeCount > 0 ? t.getRangeAt(0) : void 0
37456 }, x = function(e, t) {
37457 var n = document.createRange();
37458 n.setStart(t.startContainer, t.startOffset), n.setEnd(t.endContainer, t.endOffset), (t = window.getSelection()).removeAllRanges(), t.addRange(n)
37459 }) : document.selection && document.body.createTextRange && (C = function(e) {
37460 return document.selection.createRange()
37461 }, x = function(e, t) {
37462 var n = document.body.createTextRange();
37463 n.moveToElementText(e), n.setStart(t.startContanier, t.startOffset), n.setEnd(t.endContainer, t.endOffset), n.select()
37466 defaultBase: "https://cdnjs.cloudflare.com/ajax/libs/emojione/",
37467 defaultBase3: "https://cdn.jsdelivr.net/",
37471 q = function(e, n) {
37473 E(n), M[r.id = ++T] = {}, A[r.id] = {}, t(function() {
37477 q.prototype.on = function(t, n) {
37478 if (t && e.isFunction(n)) {
37480 e.each(t.toLowerCase().split(" "), function(e, t) {
37481 k(r, t), (M[r.id][t] || (M[r.id][t] = [])).push(n)
37485 }, q.prototype.off = function(t, n) {
37488 e.each(t.toLowerCase().replace(/_/g, ".").split(" "), function(t, i) {
37489 M[r][i] && !/^@/.test(i) && (n ? e.each(M[r][i], function(e, t) {
37490 t === n && (M[r][i] = M[r][i].splice(e, 1))
37495 }, q.prototype.trigger = function() {
37496 var e = N.call(arguments),
37497 t = [this].concat(e.slice(0, 1));
37498 return t.push(e.slice(1)), n.apply(this, t)
37499 }, q.prototype.setFocus = function() {
37501 return t(function() {
37504 }, q.prototype.setText = function(e) {
37506 return t(function() {
37507 r.editor.html(f(e, r)), r.content = r.editor.html(), n(r, "change", [r.editor]), p.apply(r)
37509 }, q.prototype.getText = function() {
37510 return h(this.editor.html(), this)
37511 }, q.prototype.showPicker = function() {
37513 return e._sh_timer && window.clearTimeout(e._sh_timer), e.picker.removeClass("hidden"), e._sh_timer = window.setTimeout(function() {
37514 e.button.addClass("active")
37515 }, 50), n(e, "picker.show", [e.picker]), e
37516 }, q.prototype.hidePicker = function() {
37518 return e._sh_timer && window.clearTimeout(e._sh_timer), e.button.removeClass("active"), e._sh_timer = window.setTimeout(function() {
37519 e.picker.addClass("hidden")
37520 }, 500), n(e, "picker.hide", [e.picker]), e
37521 }, q.prototype.enable = function() {
37524 e.disabled = !1, e.editor.prop("contenteditable", !0), e.button.show();
37525 var t = e[e.standalone ? "button" : "editor"];
37526 t.parent().removeClass("emojionearea-disable"), n(e, "enabled", [t])
37528 return e.isReady ? t() : e.on("ready", t), e
37529 }, q.prototype.disable = function() {
37532 var t = function() {
37533 e.editor.prop("contenteditable", !1), e.hidePicker(), e.button.hide();
37534 var t = e[e.standalone ? "button" : "editor"];
37535 t.parent().addClass("emojionearea-disable"), n(e, "disabled", [t])
37537 return e.isReady ? t() : e.on("ready", t), e
37538 }, e.fn.emojioneArea = function(t) {
37539 return this.each(function() {
37540 return this.emojioneArea ? this.emojioneArea : (e.data(this, "emojioneArea", this.emojioneArea = new q(e(this), t)), this.emojioneArea)
37542 }, e.fn.emojioneArea.defaults = H(), e.fn.emojioneAreaText = function(n) {
37545 shortnames: !n || void 0 === n.shortnames || n.shortnames,
37546 emojiTemplate: '<img alt="{alt}" class="emojione' + (n && n.sprite && 3 > R ? '-{uni}" src="' + D : 'emoji" src="{img}') + '"/>'
37548 return E(n), t(function() {
37549 r.each(function() {
37551 return t.hasClass("emojionearea-text") || t.addClass("emojionearea-text").html(f(t.is("TEXTAREA") || t.is("INPUT") ? t.val() : t.text(), i)), t
37555 }, window), angular.module("ngRateIt", ["ng"]).directive("ngRateIt", ["$q", function(e) {
37563 readOnly: "&?readOnly",
37564 pristine: "=?pristine",
37565 resetable: "&?resetable",
37566 starWidth: "=?starWidth",
37567 starHeight: "=?starHeight",
37568 canelWidth: "=?canelWidth",
37569 cancelHeight: "=?cancelHeight",
37572 beforeRated: "&?beforeRated",
37573 beforeReset: "&?beforeReset"
37575 templateUrl: "ngRateIt/ng-rate-it.html",
37576 require: "ngModel",
37578 link: function(t, n, r) {
37579 r.readOnly || (t.readOnly = function() {
37581 }), r.resetable || (t.resetable = function() {
37583 }), r.beforeRated || (t.beforeRated = function() {
37585 return t.resolve(), t.promise
37586 }), r.rated || (t.rated = function() {}), r.beforeReset || (t.beforeReset = function() {
37588 return t.resolve(), t.promise
37589 }), r.reset || (t.reset = function() {})
37591 controller: "ngRateItController"
37593 }]).controller("ngRateItController", ["$scope", "$timeout", function(e, t) {
37595 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;
37596 var n = e.max - e.min,
37598 i = e.$watch("ngModel", function() {
37599 e.pristine = e.orgValue === e.ngModel
37602 return (e + 1) / r * n
37604 e.getStartParts = function() {
37605 return new Array(r)
37606 }, e.getStarOffset = function(t) {
37607 var n = 1 / e.step;
37608 return -e.starWidth / n * (t % n)
37609 }, e.isSelected = function(t) {
37610 return o(t) <= e.ngModel - e.min
37611 }, e.removeRating = function() {
37612 e.resetable() && !e.readOnly() && e.beforeReset({
37614 }).then(function() {
37615 e.ngModel = e.min, e.reset({
37619 }, e.setValue = function(n) {
37620 if (!e.readOnly()) {
37621 var r = angular.copy(e.min + o(n));
37624 }).then(function() {
37625 e.ngModel = r, t(function() {
37632 }, e.$on("$destroy", function() {
37635 }]).run(["$templateCache", function(e) {
37637 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>")