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
21732 }), angular.module("ngRateIt", ["ng"]).directive("ngRateIt", ["$q", function(e) {
21740 readOnly: "&?readOnly",
21741 pristine: "=?pristine",
21742 resetable: "&?resetable",
21743 starWidth: "=?starWidth",
21744 starHeight: "=?starHeight",
21745 canelWidth: "=?canelWidth",
21746 cancelHeight: "=?cancelHeight",
21749 beforeRated: "=?beforeRated",
21750 beforeReset: "=?beforeReset"
21752 templateUrl: "ngRateIt/ng-rate-it.html",
21753 require: "ngModel",
21755 link: function(t, n, r) {
21756 r.readOnly || (t.readOnly = function() {
21758 }), r.resetable || (t.resetable = function() {
21760 }), r.beforeRated || (t.beforeRated = function() {
21762 return t.resolve(), t.promise
21763 }), r.rated || (t.rated = function() {}), r.beforeReset || (t.beforeReset = function() {
21765 return t.resolve(), t.promise
21766 }), r.reset || (t.reset = function() {})
21768 controller: "ngRateItController"
21770 }]).controller("ngRateItController", ["$scope", "$timeout", function(e, t) {
21772 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;
21773 var n = e.max - e.min,
21775 i = e.$watch("ngModel", function() {
21776 e.pristine = e.orgValue === e.ngModel
21779 return (e + 1) / r * n
21781 e.getStartParts = function() {
21782 return new Array(r)
21783 }, e.getStarOffset = function(t) {
21784 var n = 1 / e.step;
21785 return -e.starWidth / n * (t % n)
21786 }, e.isSelected = function(t) {
21787 return o(t) <= e.ngModel - e.min
21788 }, e.removeRating = function() {
21789 e.resetable() && !e.readOnly() && e.beforeReset().then(function() {
21790 e.ngModel = e.min, e.reset()
21792 }, e.setValue = function(n) {
21793 if (!e.readOnly()) {
21794 var r = angular.copy(e.min + o(n));
21795 e.beforeRated(r).then(function() {
21796 e.ngModel = r, t(function() {
21801 }, e.$on("$destroy", function() {
21804 }]).run(["$templateCache", function(e) {
21806 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>")
21808 function(e, t, n) {
21812 if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
21813 this.supportDirectory = /Chrome/.test(e.navigator.userAgent) || /Firefox/.test(e.navigator.userAgent) || /Edge/.test(e.navigator.userAgent), this.files = [], this.defaults = {
21814 chunkSize: 1048576,
21815 forceChunkSize: !1,
21816 simultaneousUploads: 3,
21818 fileParameterName: "file",
21819 progressCallbacksInterval: 500,
21820 speedSmoothingFactor: .1,
21823 withCredentials: !1,
21825 method: "multipart",
21827 uploadMethod: "POST",
21828 prioritizeFirstAndLastChunk: !1,
21829 allowDuplicateUploads: !1,
21832 generateUniqueIdentifier: null,
21833 maxChunkRetries: 0,
21834 chunkRetryInterval: null,
21835 permanentErrors: [404, 413, 415, 500, 501],
21836 successStatuses: [200, 201, 202],
21837 onDropStopPropagation: !1,
21840 }, this.opts = {}, this.events = {};
21842 this.onDrop = function(e) {
21843 n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
21844 var t = e.dataTransfer;
21845 t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
21846 }, this.preventEvent = function(e) {
21848 }, this.opts = r.extend({}, this.defaults, t || {})
21852 function i(e, t, r) {
21853 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()
21856 function o(e, t, n, r, i) {
21858 e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
21861 function a(e, t, n) {
21862 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() {
21863 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
21864 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
21865 }, this.endByte = this.computeEndByte(), this.xhr = null;
21867 this.event = function(e, t) {
21868 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
21869 }, this.progressHandler = function(e) {
21870 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
21871 }, this.testHandler = function(e) {
21872 var t = r.status(!0);
21873 "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())
21874 }, this.doneHandler = function(e) {
21875 var t = r.status();
21876 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
21878 r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
21879 var n = r.flowObj.opts.chunkRetryInterval;
21880 null !== n ? setTimeout(function() {
21888 var n = e.indexOf(t);
21889 n > -1 && e.splice(n, 1)
21893 return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
21897 setTimeout(e.bind(t), 0)
21901 return d(arguments, function(t) {
21902 t !== e && d(t, function(t, n) {
21908 function d(e, t, n) {
21911 if (void 0 !== e.length) {
21912 for (r = 0; r < e.length; r++)
21913 if (!1 === t.call(n, e[r], r)) return
21916 if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
21919 var f = e.navigator.msPointerEnabled;
21921 on: function(e, t) {
21922 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
21924 off: function(e, t) {
21925 e !== n ? (e = e.toLowerCase(), t !== n ? this.events.hasOwnProperty(e) && s(this.events[e], t) : delete this.events[e]) : this.events = {}
21927 fire: function(e, t) {
21928 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
21930 return this.events.hasOwnProperty(e) && d(this.events[e], function(e) {
21931 n = !1 === e.apply(this, t.slice(1)) || n
21932 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
21934 webkitReadDataTransfer: function(e) {
21936 e.readEntries(function(o) {
21937 o.length ? (a += o.length, d(o, function(e) {
21939 var i = e.fullPath;
21940 e.file(function(e) {
21943 } else e.isDirectory && t(e.createReader())
21949 e.relativePath = t.substring(1), s.push(e), i()
21957 0 == --a && o.addFiles(s, e)
21960 a = e.dataTransfer.items.length,
21962 d(e.dataTransfer.items, function(e) {
21963 var r = e.webkitGetAsEntry();
21964 r ? r.isFile ? n(e.getAsFile(), r.fullPath) : t(r.createReader()) : i()
21967 generateUniqueIdentifier: function(e) {
21968 var t = this.opts.generateUniqueIdentifier;
21969 if ("function" == typeof t) return t(e);
21970 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
21971 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
21973 uploadNextChunk: function(e) {
21975 if (this.opts.prioritizeFirstAndLastChunk && (d(this.files, function(e) {
21976 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
21978 if (d(this.files, function(e) {
21979 if (e.paused || d(e.chunks, function(e) {
21980 if ("pending" === e.status()) return e.send(), t = !0, !1
21984 return d(this.files, function(e) {
21985 if (!e.isComplete()) return n = !0, !1
21986 }), n || e || l(function() {
21987 this.fire("complete")
21990 assignBrowse: function(e, n, r, i) {
21991 e instanceof Element && (e = [e]), d(e, function(e) {
21993 "INPUT" === e.tagName && "file" === e.type ? o = e : ((o = t.createElement("input")).setAttribute("type", "file"), u(o.style, {
21994 visibility: "hidden",
21995 position: "absolute",
21998 }), e.appendChild(o), e.addEventListener("click", function() {
22000 }, !1)), this.opts.singleFile || r || o.setAttribute("multiple", "multiple"), n && o.setAttribute("webkitdirectory", "webkitdirectory"), d(i, function(e, t) {
22001 o.setAttribute(t, e)
22004 o.addEventListener("change", function(e) {
22005 e.target.value && (a.addFiles(e.target.files, e), e.target.value = "")
22009 assignDrop: function(e) {
22010 void 0 === e.length && (e = [e]), d(e, function(e) {
22011 e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
22014 unAssignDrop: function(e) {
22015 void 0 === e.length && (e = [e]), d(e, function(e) {
22016 e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
22019 isUploading: function() {
22021 return d(this.files, function(t) {
22022 if (t.isUploading()) return e = !0, !1
22025 _shouldUploadNext: function() {
22028 n = this.opts.simultaneousUploads;
22029 return d(this.files, function(r) {
22030 d(r.chunks, function(r) {
22031 if ("uploading" === r.status() && ++e >= n) return t = !1, !1
22035 upload: function() {
22036 var e = this._shouldUploadNext();
22038 this.fire("uploadStart");
22039 for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
22040 t || l(function() {
22041 this.fire("complete")
22045 resume: function() {
22046 d(this.files, function(e) {
22047 e.isComplete() || e.resume()
22050 pause: function() {
22051 d(this.files, function(e) {
22055 cancel: function() {
22056 for (var e = this.files.length - 1; e >= 0; e--) this.files[e].cancel()
22058 progress: function() {
22061 return d(this.files, function(n) {
22062 e += n.progress() * n.size, t += n.size
22063 }), t > 0 ? e / t : 0
22065 addFile: function(e, t) {
22066 this.addFiles([e], t)
22068 addFiles: function(e, t) {
22071 if ((!f || f && e.size > 0) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
22072 var r = this.generateUniqueIdentifier(e);
22073 if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(r)) {
22074 var o = new i(this, e, r);
22075 this.fire("fileAdded", o, t) && n.push(o)
22078 }, this), this.fire("filesAdded", n, t) && (d(n, function(e) {
22079 this.opts.singleFile && this.files.length > 0 && this.removeFile(this.files[0]), this.files.push(e)
22080 }, this), this.fire("filesSubmitted", n, t))
22082 removeFile: function(e) {
22083 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))
22085 getFromUniqueIdentifier: function(e) {
22087 return d(this.files, function(n) {
22088 n.uniqueIdentifier === e && (t = n)
22091 getSize: function() {
22093 return d(this.files, function(t) {
22097 sizeUploaded: function() {
22099 return d(this.files, function(t) {
22100 e += t.sizeUploaded()
22103 timeRemaining: function() {
22106 return d(this.files, function(n) {
22107 n.paused || n.error || (e += n.size - n.sizeUploaded(), t += n.averageSpeed)
22108 }), e && !t ? Number.POSITIVE_INFINITY : e || t ? Math.floor(e / t) : 0
22111 measureSpeed: function() {
22112 var e = Date.now() - this._lastProgressCallback;
22114 var t = this.flowObj.opts.speedSmoothingFactor,
22115 n = this.sizeUploaded();
22116 this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
22119 chunkEvent: function(e, t, n) {
22122 if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
22123 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
22126 this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
22129 if (this.error) return;
22130 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));
22133 this.flowObj.fire("fileRetry", this, e)
22136 pause: function() {
22137 this.paused = !0, this.abort()
22139 resume: function() {
22140 this.paused = !1, this.flowObj.upload()
22142 abort: function(e) {
22143 this.currentSpeed = 0, this.averageSpeed = 0;
22144 var t = this.chunks;
22145 e && (this.chunks = []), d(t, function(e) {
22146 "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
22149 cancel: function() {
22150 this.flowObj.removeFile(this)
22152 retry: function() {
22153 this.bootstrap(), this.flowObj.upload()
22155 bootstrap: function() {
22156 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
22157 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))
22159 progress: function() {
22160 if (this.error) return 1;
22161 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
22163 d(this.chunks, function(t) {
22164 e += t.progress() * (t.endByte - t.startByte)
22166 var t = e / this.size;
22167 return this._prevProgress = Math.max(this._prevProgress, t > .9999 ? 1 : t), this._prevProgress
22169 isUploading: function() {
22171 return d(this.chunks, function(t) {
22172 if ("uploading" === t.status()) return e = !0, !1
22175 isComplete: function() {
22177 return d(this.chunks, function(t) {
22178 var n = t.status();
22179 if ("pending" === n || "uploading" === n || "reading" === n || 1 === t.preprocessState || 1 === t.readState) return e = !0, !1
22182 sizeUploaded: function() {
22184 return d(this.chunks, function(t) {
22185 e += t.sizeUploaded()
22188 timeRemaining: function() {
22189 if (this.paused || this.error) return 0;
22190 var e = this.size - this.sizeUploaded();
22191 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
22193 getType: function() {
22194 return this.file.type && this.file.type.split("/")[1]
22196 getExtension: function() {
22197 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
22200 getParams: function() {
22202 flowChunkNumber: this.offset + 1,
22203 flowChunkSize: this.flowObj.opts.chunkSize,
22204 flowCurrentChunkSize: this.endByte - this.startByte,
22205 flowTotalSize: this.fileObj.size,
22206 flowIdentifier: this.fileObj.uniqueIdentifier,
22207 flowFilename: this.fileObj.name,
22208 flowRelativePath: this.fileObj.relativePath,
22209 flowTotalChunks: this.fileObj.chunks.length
22212 getTarget: function(e, t) {
22213 return e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&")
22216 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
22217 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
22218 t = this.prepareXhrRequest(e, !0);
22221 preprocessFinished: function() {
22222 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
22224 readFinished: function(e) {
22225 this.readState = 2, this.bytes = e, this.send()
22228 var e = this.flowObj.opts.preprocess,
22229 t = this.flowObj.opts.readFileFn;
22230 if ("function" == typeof e) switch (this.preprocessState) {
22232 return this.preprocessState = 1, void e(this);
22236 switch (this.readState) {
22238 return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
22242 if (!this.flowObj.opts.testChunks || this.tested) {
22243 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);
22244 var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
22245 r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
22249 abort: function() {
22251 this.xhr = null, e && e.abort()
22253 status: function(e) {
22254 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"
22256 message: function() {
22257 return this.xhr ? this.xhr.responseText : ""
22259 progress: function() {
22260 if (this.pendingRetry) return 0;
22261 var e = this.status();
22262 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : this.total > 0 ? this.loaded / this.total : 0
22264 sizeUploaded: function() {
22265 var e = this.endByte - this.startByte;
22266 return "success" !== this.status() && (e = this.progress() * e), e
22268 prepareXhrRequest: function(e, t, n, r) {
22269 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
22270 i = u(i, this.getParams());
22271 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
22273 if ("GET" === e || "octet" === n) {
22275 d(i, function(e, t) {
22276 s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
22277 }), o = this.getTarget(o, s), a = r || null
22278 } else a = new FormData, d(i, function(e, t) {
22280 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
22281 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) {
22282 this.xhr.setRequestHeader(t, e)
22285 }, 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() {
22288 }(window, document), angular.module("flow.provider", []).provider("flowFactory", function() {
22290 this.defaults = {}, this.factory = function(e) {
22292 }, this.events = [], this.on = function(e, t) {
22293 this.events.push([e, t])
22294 }, this.$get = function() {
22295 var e = this.factory,
22299 create: function(r) {
22300 var i = e(angular.extend({}, t, r));
22301 return angular.forEach(n, function(e) {
22307 }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(e, t, n, r) {
22308 var i = angular.extend({}, e.$eval(t.flowInit)),
22309 o = e.$eval(t.flowObject) || r.create(i),
22311 var n = Array.prototype.slice.call(arguments);
22313 var r = e.$broadcast.apply(e, ["flow::" + t, o].concat(n));
22320 }[t] && e.$apply(), r.defaultPrevented) return !1
22322 o.on("catchAll", a), e.$on("$destroy", function() {
22323 o.off("catchAll", a)
22324 }), e.$flow = o, t.hasOwnProperty("flowName") && (n(t.flowName).assign(e, o), e.$on("$destroy", function() {
22325 n(t.flowName).assign(e)
22327 }]).directive("flowInit", [function() {
22330 controller: "flowCtrl"
22332 }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
22336 require: "^flowInit",
22337 link: function(e, t, n) {
22338 var r = n.hasOwnProperty("flowDirectory"),
22339 i = n.hasOwnProperty("flowSingleFile"),
22340 o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
22341 e.$flow.assignBrowse(t, r, i, o)
22344 }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
22347 link: function(e, t, n) {
22348 t.bind("drop dragover", function(e) {
22353 }).directive("flowDragEnter", ["$timeout", function(e) {
22356 link: function(t, n, r) {
22359 n = e.dataTransfer || e.originalEvent.dataTransfer;
22360 return angular.forEach(n && n.types, function(e) {
22361 "Files" === e && (t = !0)
22365 n.bind("dragover", function(n) {
22366 i(n) && (a || (t.$apply(r.flowDragEnter), a = !0), e.cancel(o), n.preventDefault())
22367 }), n.bind("dragleave drop", function(n) {
22368 e.cancel(o), o = e(function() {
22369 t.$eval(r.flowDragLeave), o = null, a = !1
22374 }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
22377 require: "^flowInit",
22378 link: function(e, t, n) {
22380 e.$flow.assignDrop(t)
22384 e.$flow.unAssignDrop(t)
22386 n.flowDropEnabled ? e.$watch(n.flowDropEnabled, function(e) {
22396 return e.charAt(0).toUpperCase() + e.slice(1)
22398 var n = e.module("flow.events", ["flow.init"]),
22400 fileSuccess: ["$file", "$message"],
22401 fileProgress: ["$file"],
22402 fileAdded: ["$file", "$event"],
22403 filesAdded: ["$files", "$event"],
22404 filesSubmitted: ["$files", "$event"],
22405 fileRetry: ["$file"],
22406 fileRemoved: ["$file"],
22407 fileError: ["$file", "$message"],
22411 error: ["$message", "$file"]
22413 e.forEach(r, function(r, i) {
22414 var o = "flow" + t(i);
22415 "flowUploadStart" == o && (o = "flowUploadStarted"), n.directive(o, [function() {
22417 require: "^flowInit",
22418 controller: ["$scope", "$attrs", function(t, n) {
22419 t.$on("flow::" + i, function() {
22420 var i = Array.prototype.slice.call(arguments),
22422 if (t.$flow === i.shift()) {
22424 e.forEach(r, function(e, t) {
22426 }), !1 === t.$eval(n[o], s) && a.preventDefault()
22433 }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
22436 require: "^flowInit",
22437 link: function(e, t, n) {
22439 e.$watch(r, function(t) {
22441 var r = new FileReader;
22442 r.readAsDataURL(t.file), r.onload = function(t) {
22443 e.$apply(function() {
22444 n.$set("src", t.target.result)
22451 }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
22454 require: "^flowInit",
22455 link: function(e) {
22456 e.transfers = e.$flow.files
22459 }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
22465 return d(t, c).chars(e), t.join("")
22467 var r, i, o, a, s, c, l, u, d, f = t.$$minErr("$sanitize");
22468 t.module("ngSanitize", []).provider("$sanitize", function() {
22472 for (n = 0; n < i.length; n++) r[t ? s(i[n]) : i[n]] = !0;
22477 for (var t = {}, n = 0, r = e.length; n < r; n++) {
22479 t[i.name] = i.value
22485 return e.replace(/&/g, "&").replace(b, function(e) {
22486 return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
22487 }).replace(y, function(e) {
22488 return "&#" + e.charCodeAt(0) + ";"
22489 }).replace(/</g, "<").replace(/>/g, ">")
22494 if (t.nodeType === e.Node.ELEMENT_NODE)
22495 for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
22497 a = o.name.toLowerCase();
22498 "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
22500 var s = t.firstChild;
22501 s && m(s), t = g("nextSibling", t)
22507 if (n && l.call(t, n)) throw f("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
22511 this.$get = ["$$sanitizeUri", function(e) {
22512 return v && i(M, x),
22515 return u(t, d(n, function(t, n) {
22516 return !/^unsafe:/.test(e(t, n))
22519 }], this.enableSvg = function(e) {
22520 return a(e) ? (v = e, this) : v
22521 }, r = t.bind, i = t.extend, o = t.forEach, a = t.isDefined, s = t.lowercase, c = t.noop, u = function(e, t) {
22522 null === e || void 0 === e ? e = "" : "string" != typeof e && (e = "" + e);
22527 if (0 === r) throw f("uinput", "Failed to sanitize html because the input is unstable");
22528 r--, e = n.innerHTML, n = N(e)
22529 } while (e !== n.innerHTML);
22530 for (var i = n.firstChild; i;) {
22531 switch (i.nodeType) {
22533 t.start(i.nodeName.toLowerCase(), h(i.attributes));
22536 t.chars(i.textContent)
22539 if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = g("nextSibling", i))))
22540 for (; null == o && (i = g("parentNode", i)) !== n;) o = g("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
22543 for (; i = n.firstChild;) n.removeChild(i)
22544 }, d = function(e, t) {
22548 start: function(e, r) {
22549 e = s(e), !n && T[e] && (n = e), n || !0 !== M[e] || (i("<"), i(e), o(r, function(n, r) {
22551 a = "img" === e && "src" === o || "background" === o;
22552 !0 !== D[o] || !0 === A[o] && !t(n, a) || (i(" "), i(r), i('="'), i(p(n)), i('"'))
22556 e = s(e), n || !0 !== M[e] || !0 === _[e] || (i("</"), i(e), i(">")), e == n && (n = !1)
22558 chars: function(e) {
22562 }, l = e.Node.prototype.contains || function(e) {
22563 return !!(16 & this.compareDocumentPosition(e))
22565 var b = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
22566 y = /([^#-~ |!])/g,
22567 _ = n("area,br,col,hr,img,wbr"),
22568 $ = n("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
22571 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")),
22572 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")),
22573 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"),
22574 T = n("script,style"),
22575 M = i({}, _, k, C, E),
22576 A = n("background,cite,href,longdesc,src,xlink:href"),
22577 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"),
22578 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),
22579 D = i({}, A, O, S),
22580 N = function(e, t) {
22582 if (!t || !t.implementation) throw f("noinert", "Can't create an inert html document");
22583 var r = ((n = t.implementation.createHTMLDocument("inert")).documentElement || n.getDocumentElement()).querySelector("body");
22584 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) {
22585 t = "<remove></remove>" + t;
22587 var n = (new e.DOMParser).parseFromString(t, "text/html").body;
22588 return n.firstChild.remove(), n
22593 return r.innerHTML = e, t.documentMode && m(r), r
22595 t = "<remove></remove>" + t;
22601 var n = new e.XMLHttpRequest;
22602 n.responseType = "document", n.open("GET", "data:text/html;charset=utf-8," + t, !1), n.send(null);
22603 var r = n.response.body;
22604 return r.firstChild.remove(), r
22608 angularVersion: "1.6.6"
22609 }), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
22610 var r = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
22612 o = t.$$minErr("linky"),
22617 return function(t, u, d) {
22621 if (null == t || "" === t) return t;
22622 if (!l(t)) throw o("notstring", "Expected string but received: {0}", t);
22623 for (var h, p, m, g = s(d) ? d : c(d) ? function() {
22627 }, 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)),
22631 for (n in r) b.push(n + '="' + r[n] + '" ');
22632 !a(u) || "target" in r || b.push('target="', u, '" '), b.push('href="', e.replace(/"/g, """), '">'), f(t), b.push("</a>")
22633 }(p, h[0].replace(i, "")), v = v.substring(m + h[0].length);
22634 return f(v), e(b.join(""))
22637 }(window, window.angular),
22640 angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(e) {
22659 class: "wondering",
22675 class: "thumbsup2",
22691 class: "thumbs-up",
22707 class: "heart-broken",
22711 class: "heart-broken",
22734 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"];
22735 return function(r, i) {
22737 return angular.forEach(arguments, function(t) {
22738 t !== e && angular.forEach(t, function(t, n) {
22739 e[n] && e[n].constructor && e[n].constructor === Object ? o(e[n], t) : e[n] = t
22747 linkTarget: "_self"
22749 if (o(a, i), void 0 !== r && null !== r) {
22750 if ("object" == typeof r) return r;
22756 return angular.isNumber(r) || (r = r.toString()), r = r.replace(/[&<>]/g, function(e) {
22758 }), a.fontSmiley && (r = function(e) {
22759 var n = e.split(" ");
22760 return angular.forEach(t, function(e) {
22761 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>")
22763 }(r)), a.emoji && (r = function(e) {
22764 var t = new RegExp(":(" + n.join("|") + "):", "g");
22765 return e.replace(t, function(e, t) {
22766 return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
22768 }(r)), a.link && (r = function(e) {
22769 var t = /\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi,
22770 n = /^[a-z]+\:\/\//i;
22771 return e.replace(t, function(e) {
22773 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>"
22775 }(r)), e.trustAsHtml(r)
22778 }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(e, t, n, r, i) {
22779 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>'), {
22782 templateUrl: function(e, t) {
22783 return t.embedTemplateUrl || ""
22785 link: function(i, o, a) {
22787 return angular.forEach(arguments, function(t) {
22788 t !== e && angular.forEach(t, function(t, n) {
22789 e[n] && e[n].constructor && e[n].constructor === Object ? s(e[n], t) : e[n] = t
22793 var c = i.$eval(a.embedData),
22794 l = i.$eval(a.embedOptions);
22795 i.video = {}, i.image = {}, i.pdf = {}, i.audio = {}, i.videoServices = [], i.audioServices = [], i.codeServices = [], i.gist = [];
22800 linkTarget: "_self",
22822 thumbnailQuality: "medium"
22833 dailymotionEmbed: !0,
22837 soundCloudEmbed: !0,
22838 soundCloudOptions: {
22840 themeColor: "f50000",
22851 codepenHeight: 300,
22853 jsfiddleHeight: 300,
22857 githubgistEmbed: !0,
22861 s(u, l), String.prototype.trunc = function(e, t) {
22862 var n = this.length > e,
22863 r = n ? this.substr(0, e - 1) : this;
22864 return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
22865 }, Array.prototype.getUnique = function() {
22866 for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
22870 calcDimensions: function(e) {
22875 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)
22877 embed: function(e, r) {
22878 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;
22880 var a = this.calcDimensions(r);
22881 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) {
22882 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
22884 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
22885 }) : (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
22887 var s = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi;
22889 var c = this.calcDimensions(r);
22890 i.video.id = RegExp.$3, r.video.details ? n.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
22891 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
22892 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
22893 }) : (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"))
22897 embedBasic: function(e) {
22898 var n = /((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi;
22899 return e.match(n) && (i.video.basic = t.trustAsResourceUrl(RegExp.$1)), e
22901 twitchtvEmbed: function(e, n) {
22902 var r = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
22903 o = e.match(r) ? e.match(r).getUnique() : null,
22904 a = d.calcDimensions(n);
22906 for (var s = 0; s < o.length;) {
22907 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>');
22908 i.videoServices.push(c), s++
22912 dailymotionEmbed: function(e, n) {
22913 var r = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
22914 o = e.match(r) ? e.match(r).getUnique() : null,
22915 a = d.calcDimensions(n);
22917 for (var s = 0; s < o.length;) {
22918 var c = t.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + o[s].split("/")[2] + '" height="' + a.height + '" width="' + a.width + '"></iframe>');
22919 i.videoServices.push(c), s++
22923 tedEmbed: function(e, n) {
22924 var r = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
22925 o = e.match(r) ? e.match(r).getUnique() : null,
22926 a = d.calcDimensions(n);
22928 for (var s = 0; s < o.length;) {
22929 var c = t.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + o[s].split("/")[2] + '.html" height="' + a.height + '" width="' + a.width + '"></iframe>');
22930 i.videoServices.push(c), s++
22934 dotsubEmbed: function(e, n) {
22935 var r = /dotsub.com\/view\/[a-zA-Z0-9-]+/gi,
22936 o = e.match(r) ? e.match(r).getUnique() : null,
22937 a = d.calcDimensions(n);
22939 for (var s = 0; s < o.length;) {
22940 var c = t.trustAsHtml('<iframe src="https://dotsub.com/media/' + o[s].split("/")[2] + '/embed/" width="' + a.width + '" height="' + a.height + '"></iframe>');
22941 i.videoServices.push(c), s++
22945 liveleakEmbed: function(e, n) {
22946 var r = /liveleak.com\/view\?i=[a-zA-Z0-9_]+/gi,
22947 o = e.match(r) ? e.match(r).getUnique() : null,
22948 a = d.calcDimensions(n);
22950 for (var s = 0; s < o.length;) {
22951 var c = t.trustAsHtml('<iframe src="http://www.liveleak.com/e/' + o[s].split("=")[1] + '" height="' + a.height + '" width="' + a.width + '"></iframe></div>');
22952 i.videoServices.push(c), s++
22958 embed: function(e) {
22959 var n = /((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi;
22960 return e.match(n) && (i.audio.url = t.trustAsResourceUrl(RegExp.$1)), e
22962 soundcloudEmbed: function(e, n) {
22963 var r = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
22964 o = e.match(r) ? e.match(r).getUnique() : null;
22966 for (var a = 0; a < o.length;) {
22967 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>');
22968 i.videoServices.push(s), a++
22972 spotifyEmbed: function(e) {
22973 var n = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
22974 r = e.match(n) ? e.match(n).getUnique() : null;
22976 for (var o = 0; o < r.length;) {
22977 var a = t.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + r[o].split("/")[2] + '" height="80"></iframe>');
22978 i.audioServices.push(a), o++
22984 embed: function(e) {
22985 var t = /((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi;
22986 return e.match(t) && (i.image.url = RegExp.$1), e
22990 getCode: function(e) {
22991 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
22993 i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
22995 return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
23000 embed: function(e) {
23001 var n = /((?:https?):\/\/\S*\.(?:pdf|PDF))/gi;
23002 return e.match(n) && (i.pdf.url = t.trustAsResourceUrl(RegExp.$1)), e
23006 embed: function(e, t) {
23009 twttr.widgets.load()
23012 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
23013 var a = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
23014 s = e.match(a) ? e.match(a).getUnique() : null;
23015 if (i.tweets = [], s)
23016 for (var c = 0; c < s.length;) {
23017 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;
23018 n.jsonp(l).success(function(e) {
23019 i.tweets.push(e.html), i.tweets.length == s.length && o()
23026 codepenEmbed: function(e, n) {
23027 var r = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
23028 o = e.match(r) ? e.match(r).getUnique() : null;
23030 for (var a = 0; a < o.length;) {
23031 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>');
23032 i.codeServices.push(s), a++
23036 jsfiddleEmbed: function(e, n) {
23037 var r = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
23038 o = e.match(r) ? e.match(r).getUnique() : null;
23040 for (var a = 0; a < o.length;) {
23041 var s = t.trustAsHtml('<iframe height="' + n.jsfiddleHeight + '" src="http://' + o[a] + '/embedded"></iframe>');
23042 i.codeServices.push(s), a++
23046 jsbinEmbed: function(e, n) {
23047 var r = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
23048 o = e.match(r) ? e.match(r).getUnique() : null;
23050 for (var a = 0; a < o.length;) {
23051 var s = t.trustAsHtml('<iframe height="' + n.jsbinHeight + '" class="jsbin-embed foo" src="http://' + o[a] + '/embed?html,js,output">Simple Animation Tests</iframe>');
23052 i.codeServices.push(s), a++
23056 plunkerEmbed: function(e, n) {
23057 var r = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
23058 o = e.match(r) ? e.match(r).getUnique() : null;
23060 for (var a = 0; a < o.length;) {
23061 var s = -1 === o[a].indexOf("?") ? o[a].split("/")[2] : o[a].split("/")[2].split("?")[0],
23062 c = t.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + s + '" height="' + n.jsbinHeight + '"></iframe>');
23063 i.codeServices.push(c), a++
23067 githubgistEmbed: function(e) {
23068 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
23069 n = e.match(t) ? e.match(t).getUnique() : null;
23071 for (var r = 0; r < n.length;) i.gist.push(n[r].split("/")[2]), r++;
23074 ideoneEmbed: function(e, n) {
23075 var r = /ideone.com\/[a-zA-Z0-9]{6}/gi,
23076 o = e.match(r) ? e.match(r).getUnique() : null;
23078 for (var a = 0; a < o.length;) {
23079 var s = t.trustAsHtml('<iframe src="http://ideone.com/embed/' + o[a].split("/")[1] + '" height="' + n.ideoneHeight + '"></iframe>');
23080 i.codeServices.push(s), a++
23085 if (u.code.highlight) {
23086 if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
23087 c = p.getCode(c), r(function() {
23088 u.code.lineNumbers && angular.element(".ne-code").each(function() {
23090 t = $(this).text().split("\n").length,
23091 n = $("<ul/>").addClass("pre-numbering");
23092 for (angular.element(this).addClass("has-numbering").parent().append(n), e; e <= t; e++) n.append(angular.element("<li/>").text(e))
23096 var b = e("embed")(c, u).$$unwrapTrustedValue();
23097 if (u.video.embed) {
23098 if (!u.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
23101 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)
23104 }]).directive("neGist", function() {
23108 template: "<div></div>",
23109 link: function(e, t, n) {
23111 i = document.createElement("iframe");
23112 i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
23113 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>',
23115 i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()
23123 function n(e, t, n) {
23124 if (!e) throw ce("areq", "Argument '{0}' is {1}", t || "?", n || "required");
23129 return e || t ? e ? t ? (W(e) && (e = e.join(" ")), W(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
23134 return e && (e.to || e.from) && (t.to = e.to, t.from = e.from), t
23137 function o(e, t, n) {
23139 return e = W(e) ? e : e && X(e) && e.length ? e.split(/\s+/) : [], B(e, function(e, i) {
23140 e && e.length > 0 && (r += i > 0 ? " " : "", r += n ? t + e : e + t)
23145 var n = e.indexOf(t);
23146 t >= 0 && e.splice(n, 1)
23150 if (e instanceof J) switch (e.length) {
23154 if (e[0].nodeType === j) return e;
23159 if (e.nodeType === j) return J(e)
23163 if (!e[0]) return e;
23164 for (var t = 0; t < e.length; t++) {
23166 if (n.nodeType === j) return n
23170 function l(e, t, n) {
23176 function u(e, t, n) {
23178 e.removeClass(t, n)
23183 return function(t, n) {
23184 n.addClass && (l(e, t, n.addClass), n.addClass = null), n.removeClass && (u(e, t, n.removeClass), n.removeClass = null)
23189 if (!(e = e || {}).$$prepared) {
23190 var t = e.domOperation || ee;
23191 e.domOperation = function() {
23192 e.$$domOperationFired = !0, t(), t = ee
23193 }, e.$$prepared = !0
23203 t.from && (e.css(t.from), t.from = null)
23207 t.to && (e.css(t.to), t.to = null)
23210 function g(e, t, n) {
23211 var r = t.options || {},
23212 i = n.options || {},
23213 o = (r.addClass || "") + " " + (i.addClass || ""),
23214 a = (r.removeClass || "") + " " + (i.removeClass || ""),
23215 s = v(e.attr("class"), o, a);
23216 i.preparationClasses && (r.preparationClasses = k(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
23217 var c = r.domOperation !== ee ? r.domOperation : null;
23218 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
23221 function v(e, t, n) {
23223 X(e) && (e = e.split(" "));
23225 return B(e, function(e) {
23226 e.length && (t[e] = !0)
23230 e = r(e), t = r(t), B(t, function(e, t) {
23232 }), n = r(n), B(n, function(e, t) {
23233 i[t] = 1 === i[t] ? null : -1
23239 return B(i, function(t, n) {
23241 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)
23246 return e instanceof J ? e[0] : e
23249 function y(e, t, n) {
23251 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))
23255 t.preparationClasses && (e.removeClass(t.preparationClasses), t.preparationClasses = null), t.activeClasses && (e.removeClass(t.activeClasses), t.activeClasses = null)
23259 var n = t ? "-" + t + "s" : "";
23260 return E(e, [ae, n]), [ae, n]
23264 var n = t ? "paused" : "",
23266 return E(e, [r, n]), [r, n]
23276 return e ? t ? e + " " + t : e : t
23280 return [oe, e + "s"]
23284 return [t ? ie : ae, e + "s"]
23287 function T(e, t, n) {
23288 var r = Object.create(null),
23289 i = e.getComputedStyle(t) || {};
23290 return B(n, function(e, t) {
23293 var o = n.charAt(0);
23294 ("-" === o || "+" === o || o >= 0) && (n = M(n)), 0 === n && (n = null), r[t] = n
23301 n = e.split(/\s*,\s*/);
23302 return B(n, function(e) {
23303 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
23308 return 0 === e || null != e
23314 return t ? n += te : r += " linear all", [n, r]
23318 var e = Object.create(null);
23320 flush: function() {
23321 e = Object.create(null)
23323 count: function(t) {
23325 return n ? n.total : 0
23329 return n && n.value
23331 put: function(t, n) {
23332 e[t] ? e[t].total++ : e[t] = {
23340 function D(e, t, n) {
23342 e[n] = Y(e[n]) ? e[n] : t.style.getPropertyValue(n)
23345 var N, I, R, P, j = 1,
23350 U = "$$ngAnimateChildren";
23351 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");
23352 var V, z, B, W, Y, G, K, Z, X, Q, J, ee, te = "Duration",
23353 ne = "TimingFunction",
23359 ce = t.$$minErr("ng"),
23360 le = ["$$rAF", function(e) {
23362 r = r.concat(e), n()
23367 for (var t = r.shift(), o = 0; o < t.length; o++) t[o]();
23368 i || e(function() {
23374 return r = t.queue = [], t.waitUntilQuiet = function(t) {
23375 i && i(), i = e(function() {
23380 ue = ["$interpolate", function(e) {
23382 link: function(t, n, r) {
23384 e = "on" === e || "true" === e, n.data(U, e)
23386 var o = r.ngAnimateChildren;
23387 X(o) && 0 === o.length ? n.data(U, !0) : (i(e(o)(t)), r.$observe("ngAnimateChildren", i))
23391 de = "$$animateCss",
23396 transitionDuration: se,
23397 transitionDelay: ae,
23398 transitionProperty: N + "Property",
23399 animationDuration: oe,
23400 animationDelay: ie,
23401 animationIterationCount: R + "IterationCount"
23404 transitionDuration: se,
23405 transitionDelay: ae,
23406 animationDuration: oe,
23409 ve = ["$animateProvider", function(e) {
23412 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(e, r, s, c, l, u, g, v) {
23414 var n = "$$ngAnimateParentKey",
23416 return (r[n] || (r[n] = ++q)) + "-" + e.getAttribute("class") + "-" + t
23419 function _(n, r, i, o) {
23421 return a || "infinite" === (a = T(e, n, o)).animationIterationCount && (a.animationIterationCount = 1), t.put(i, a), a
23424 function k(i, a, s, c) {
23426 if (t.count(s) > 0 && !(l = n.get(s))) {
23427 var u = o(a, "-stagger");
23428 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)
23434 U.push(e), g.waitUntilQuiet(function() {
23435 t.flush(), n.flush();
23436 for (var e = l(), r = 0; r < U.length; r++) U[r](e);
23441 function O(e, t, n) {
23442 var r = _(e, t, n, me),
23443 i = r.animationDelay,
23444 o = r.transitionDelay;
23445 return r.maxDelay = i && o ? Math.max(i, o) : i || o, r.maxDuration = Math.max(r.animationDuration * r.animationIterationCount, r.transitionDuration), r
23450 return function(e, n) {
23460 if (!(K || X && Z)) {
23461 K = !0, Z = !1, z.$$skipPreparationClasses || r.removeClass(e, ye), r.removeClass(e, $e), w(G, !1), $(G, !1), B(se, function(e) {
23463 }), j(e, z), h(e, z), Object.keys(Y).length && B(Y, function(e, t) {
23464 e ? G.style.setProperty(t, e) : G.style.removeProperty(t)
23465 }), z.onDone && z.onDone(), ue && ue.length && e.off(ue.join(" "), q);
23466 var n = e.data(de);
23467 n && (c.cancel(n[0].timer), e.removeData(de)), Q && Q.complete(!t)
23472 Ie.blockTransition && $(G, e), Ie.blockKeyframeAnimation && w(G, !!e)
23481 start: function() {
23489 e.stopPropagation();
23490 var t = e.originalEvent || e;
23491 if (t.target === G) {
23492 var n = t.$manualTimeStamp || Date.now(),
23493 r = parseFloat(t.elapsedTime.toFixed(he));
23494 Math.max(n - ae, 0) >= re && r >= ie && (X = !0, g())
23501 if (_(!1), B(se, function(e) {
23505 }), j(e, z), r.addClass(e, $e), Ie.recalculateTimingStyles) {
23506 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();
23507 Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0
23509 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) {
23510 var t, i = z.easing;
23511 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)
23513 De.transitionDuration && ue.push(I), De.animationDuration && ue.push(P), ae = Date.now();
23514 var o = re + pe * oe,
23516 s = e.data(de) || [],
23520 (l = a > u.expectedEndTime) ? c.cancel(u.timer): s.push(g)
23523 var d = c(n, o, !1);
23527 }, s.push(g), e.data(de, s)
23529 ue.length && e.on(ue.join(" "), q), z.to && (z.cleanupStyles && D(Y, G, Object.keys(z.to)), m(e, z))
23534 var t = e.data(de);
23536 for (var n = 1; n < t.length; n++) t[n]();
23541 if (G.parentNode) {
23542 var i = function(e) {
23543 if (X) Z && e && (Z = !1, g());
23544 else if (Z = !e, De.animationDuration) {
23546 Z ? se.push(t) : a(se, t)
23549 o = Se > 0 && (De.transitionDuration && 0 === ke.transitionDuration || De.animationDuration && 0 === ke.animationDuration) && Math.max(ke.animationDelay, ke.transitionDelay);
23550 o ? c(t, Math.floor(o * Se * fe), !1) : t(), J.resume = function() {
23552 }, J.pause = function() {
23558 z.$$prepared || (z = f(V(z)));
23561 if (!G || !G.parentNode || !v.enabled()) return T();
23562 var K, Z, X, Q, J, te, re, ie, oe, ae, se = [],
23563 ce = e.attr("class"),
23566 if (0 === z.duration || !u.animations && !u.transitions) return T();
23567 var me = z.event && W(z.event) ? z.event.join(" ") : z.event,
23570 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);
23571 var ye = [ve, be].join(" ").trim(),
23572 _e = ce + " " + ye,
23573 $e = o(ye, "-active"),
23574 we = le.to && Object.keys(le.to).length > 0;
23575 if (!((z.keyframeStyle || "").length > 0) && !we && !ye) return T();
23577 if (z.stagger > 0) {
23578 var Ce = parseFloat(z.stagger);
23580 transitionDelay: Ce,
23581 animationDelay: Ce,
23582 transitionDuration: 0,
23583 animationDuration: 0
23585 } else Ee = y(G, _e), ke = k(G, ye, Ee, ge);
23586 z.$$skipPreparationClasses || r.addClass(e, ye);
23588 if (z.transitionStyle) {
23589 var Te = [N, z.transitionStyle];
23590 E(G, Te), se.push(Te)
23592 if (z.duration >= 0) {
23593 xe = G.style[N].length > 0;
23594 var Me = S(z.duration, xe);
23595 E(G, Me), se.push(Me)
23597 if (z.keyframeStyle) {
23598 var Ae = [R, z.keyframeStyle];
23599 E(G, Ae), se.push(Ae)
23601 var Se = ke ? z.staggerIndex >= 0 ? z.staggerIndex : t.count(Ee) : 0,
23603 Oe && !z.skipBlocking && $(G, 9999);
23604 var De = O(G, _e, Ee),
23606 te = Math.max(Ne, 0), ie = De.maxDuration;
23608 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();
23609 if (null != z.delay) {
23611 "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))
23613 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), {
23616 start: function() {
23617 if (!K) return J = {
23622 }, Q = new s(J), M(U), Q
23628 be = ["$$animationProvider", function(e) {
23630 return e.parentNode && 11 === e.parentNode.nodeType
23632 e.drivers.push("$$animateCssDriver");
23633 var n = "ng-animate-shim",
23635 i = "ng-anchor-out",
23636 o = "ng-anchor-in";
23637 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(e, a, s, c, l, u, d) {
23639 return e.replace(/\bng-\S+\b/g, "")
23643 return X(e) && (e = e.split(" ")), X(t) && (t = t.split(" ")), e.filter(function(e) {
23644 return -1 === t.indexOf(e)
23648 function p(t, a, c) {
23651 n = b(e).getBoundingClientRect();
23652 return B(["width", "height", "top", "left"], function(e) {
23661 t[e] = Math.floor(r) + "px"
23666 return e.attr("class") || ""
23675 addClass: o + " " + n,
23676 removeClass: i + " " + r,
23679 return a.$$willAnimate ? a : null
23683 m.remove(), a.removeClass(n), c.removeClass(n)
23685 var m = J(b(a).cloneNode(!0)),
23687 a.addClass(n), c.addClass(n), m.addClass(r), _.append(m);
23688 var y, $ = function() {
23694 return t.$$willAnimate ? t : null
23696 if (!$ && !(y = d())) return p();
23699 start: function() {
23703 var t, n = w.start();
23704 return n.done(function() {
23705 if (n = null, !y && (y = d())) return (n = y.start()).done(function() {
23706 n = null, p(), t.complete()
23717 function m(e, t, n, r) {
23721 if (B(r, function(e) {
23726 }), i || o || 0 !== a.length) return {
23727 start: function() {
23734 i && t.push(i.start()), o && t.push(o.start()), B(a, function(e) {
23741 return s.all(t, function(e) {
23750 r = t.options || {};
23751 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));
23753 return i.$$willAnimate ? i : null
23755 if (!l.animations && !l.transitions) return ee;
23758 _ = J(t(y) || v.contains(y) ? y : v);
23759 return function(e) {
23760 return e.from && e.to ? m(e.from, e.to, e.classes, e.anchors) : g(e)
23764 ye = ["$animateProvider", function(e) {
23765 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(t, n, r) {
23767 n = W(n) ? n : n.split(" ");
23768 for (var r = [], i = {}, o = 0; o < n.length; o++) {
23770 s = e.$$registeredAnimations[a];
23771 s && !i[a] && (r.push(t.get(s)), i[a] = !0)
23776 return function(e, t, r, a) {
23778 a.domOperation(), o(e, a)
23782 p = !0, s(), h(e, a)
23785 function l(e, t, r, i, o) {
23789 a = [t, i.from, i.to, o];
23797 case "removeClass":
23804 var s = e.apply(e, a);
23806 if (K(s.start) && (s = s.start()), s instanceof n) s.done(o);
23807 else if (K(s)) return s;
23811 function u(e, t, r, i, o) {
23813 return B(i, function(i) {
23815 s && a.push(function() {
23818 a || (a = !0, (o || ee)(e), i.complete(!e))
23824 cancel: function() {
23827 }), o = l(s, e, t, r, function(e) {
23834 function d(e, t, r, i, o) {
23835 var a = u(e, t, r, i, o);
23836 if (0 === a.length) {
23838 "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))
23840 if (0 !== a.length) return function(e) {
23842 return a.length && B(a, function(e) {
23844 }), t.length ? n.all(t, e) : e(),
23847 e ? t.cancel() : t.end()
23853 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));
23854 var m, g, v = a.addClass,
23859 "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, _)
23866 return w ? w.end() : (c(), (w = new n).complete(!0)), w
23868 start: function() {
23870 c(e), w.complete(e)
23874 p || ((r || ee)(t), e(t))
23879 return m && i.push(function(e) {
23881 }), i.length ? i.push(function(e) {
23883 }) : s(), g && i.push(function(e) {
23889 cancel: function() {
23892 }), n.chain(i, e), w
23899 _e = ["$$animationProvider", function(e) {
23900 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(e, t) {
23906 return e(n, r, o, i)
23908 return function(e) {
23909 if (e.from && e.to) {
23912 if (!r && !i) return;
23914 start: function() {
23916 return function() {
23923 r && n.push(r.start()), i && n.push(i.start()), t.all(n, function(e) {
23938 $e = "data-ng-animate",
23939 we = "$ngAnimatePin",
23940 Ee = ["$animateProvider", function(t) {
23942 if (!e) return null;
23943 var t = e.split(p),
23944 n = Object.create(null);
23945 return B(t, function(e) {
23953 return e.split(p).some(function(e) {
23959 function o(e, t, n) {
23960 return m[e].some(function(e) {
23966 var n = (e.addClass || "").length > 0,
23967 r = (e.removeClass || "").length > 0;
23968 return t ? n && r : n || r
23978 m.join.push(function(e, t) {
23979 return !e.structural && a(e)
23980 }), m.skip.push(function(e, t) {
23981 return !e.structural && !a(e)
23982 }), m.skip.push(function(e, t) {
23983 return "leave" === t.event && e.structural
23984 }), m.skip.push(function(e, t) {
23985 return t.structural && t.state === u && !e.structural
23986 }), m.cancel.push(function(e, t) {
23987 return t.structural && e.structural
23988 }), m.cancel.push(function(e, t) {
23989 return t.state === u && e.structural
23990 }), m.cancel.push(function(e, t) {
23991 if (t.structural) return !1;
23992 var n = e.addClass,
23996 return !(Q(n) && Q(r) || Q(o) && Q(a)) && (i(n, a) || i(r, o))
23997 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(r, i, p, m, v, $, w, E, k, C, x) {
24000 return function(t) {
24001 e ? t() : i.$$postDigest(function() {
24011 function A(e, t, n) {
24014 return i && B(i, function(i) {
24015 ae.call(i.node, t) ? r.push(i.callback) : "leave" === n && ae.call(i.node, e) && r.push(i.callback)
24019 function S(e, t, n) {
24021 return e.filter(function(e) {
24022 return !(e.node === r && (!n || e.callback === n))
24027 "close" !== e || t.parentNode || se.off(t)
24030 function D(e, t, n) {
24031 function c(e, t, n, i) {
24033 var e = A(E, v, t);
24034 e.length ? r(function() {
24039 }), e.progress(t, n, i)
24043 _(m, p), oe(m, p), h(m, p), p.domOperation(), k.complete(!e)
24048 E = v && v.parentNode;
24052 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;
24053 var S = ["enter", "move", "leave"].indexOf(t) >= 0,
24056 q = !j && H.get(v) || {},
24058 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;
24064 addClass: p.addClass,
24065 removeClass: p.removeClass,
24071 if (o("skip", z, q)) return q.state === u ? (d(), k) : (g(m, q, z), q.runner);
24072 if (o("cancel", z, q))
24073 if (q.state === u) q.runner.end();
24075 if (!q.structural) return g(m, q, z), q.runner;
24078 else if (o("join", z, q)) {
24079 if (q.state !== u) return y(m, S ? t : null, p), t = z.event = q.event, p = g(m, q, z), q.runner;
24083 var Y = z.structural;
24084 if (Y || (Y = "animate" === z.event && Object.keys(z.options.to || {}).length > 0 || a(z)), !Y) return d(), I(v), k;
24085 var G = (q.counter || 0) + 1;
24086 return z.counter = G, P(v, l, z), i.$$postDigest(function() {
24091 var i = (m.parent() || []).length > 0 && ("animate" === n.event || n.structural || a(n));
24092 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));
24093 t = !n.structural && a(n, !0) ? "setClass" : n.event, P(v, u);
24094 var o = $(m, t, n.options);
24095 k.setHost(o), c(k, t, "start", {}), o.done(function(e) {
24098 n && n.counter === G && I(v), c(k, t, "close", {})
24104 var t = e.querySelectorAll("[" + $e + "]");
24106 var t = parseInt(e.getAttribute($e), 10),
24108 if (n) switch (t) {
24118 e.removeAttribute($e), H.delete(e)
24121 function R(e, t, n) {
24122 var r, i = m[0].body,
24124 a = e === i || "HTML" === e.nodeName,
24129 for (u && (t = b(u)); t && (s || (s = t === o), t.nodeType === j);) {
24130 var d = H.get(t) || {};
24133 if (!0 === f && !1 !== l) {
24136 }!1 === f && (l = !1), c = d.structural
24138 if (Q(r) || !0 === r) {
24139 var h = J.data(t, U);
24142 if (c && !1 === r) break;
24143 if (a || (a = t === i), a && s) break;
24144 t = s || !(u = J.data(t, we)) ? t.parentNode : b(u)
24146 return (!c || r) && !0 !== l && s && a
24149 function P(e, t, n) {
24150 (n = n || {}).state = t, e.setAttribute($e, t);
24152 i = r ? z(r, n) : n;
24158 q = i.$watch(function() {
24159 return 0 === E.totalPendingRequests
24161 e && (q(), i.$$postDigest(function() {
24162 i.$$postDigest(function() {
24163 null === F && (F = !0)
24167 K = Object.create(null),
24168 ee = t.customFilter(),
24169 te = t.classNameFilter(),
24174 ie = te ? function(e, t) {
24175 var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
24179 ae = e.Node.prototype.contains || function(e) {
24180 return this === e || !!(16 & this.compareDocumentPosition(e))
24183 on: function(e, t, n) {
24185 K[e] = K[e] || [], K[e].push({
24188 }), J(t).on("$destroy", function() {
24189 H.get(r) || se.off(e, t, n)
24192 off: function(e, t, n) {
24193 if (1 !== arguments.length || X(arguments[0])) {
24195 r && (K[e] = 1 === arguments.length ? null : S(r, t, n))
24198 for (var i in K) K[i] = S(K[i], t)
24201 pin: function(e, t) {
24202 n(G(e), "element", "not an element"), n(G(t), "parentElement", "not an element"), e.data(we, t)
24204 push: function(e, t, n, r) {
24205 return n = n || {}, n.domOperation = r, D(e, t, n)
24207 enabled: function(e, t) {
24208 var n = arguments.length;
24209 if (0 === n) t = !!F;
24212 1 === n ? t = !L.get(r) : L.set(r, !t)
24213 } else t = F = !!e;
24220 ke = ["$animateProvider", function(e) {
24232 var o = "ng-animate-ref",
24233 a = this.drivers = [],
24234 s = "$$animationRunner";
24235 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", function(e, s, c, l, u, p) {
24238 if (e.processed) return e;
24244 if (a = i.get(o)) {
24245 a.processed || (a = t(a));
24250 return (a || r).children.push(e), e
24256 for (n = 0; n < e.length; n++) {
24258 i.set(o.domNode, e[n] = {
24259 domNode: o.domNode,
24264 for (n = 0; n < e.length; n++) t(e[n]);
24265 return function(e) {
24268 for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
24272 for (t = 0; t < r.length; t++) {
24274 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s.fn), s.children.forEach(function(e) {
24278 return a.length && n.push(a), n
24283 return function(u, d, y) {
24285 var t = "[" + o + "]",
24286 n = e.hasAttribute(o) ? [e] : e.querySelectorAll(t),
24288 return B(n, function(e) {
24289 var t = e.getAttribute(o);
24290 t && t.length && r.push(e)
24297 B(e, function(e, r) {
24298 var i = b(e.element),
24300 s = ["enter", "move"].indexOf(a) >= 0,
24301 c = e.structural ? _(i) : [];
24303 var l = s ? "to" : "from";
24305 var t = e.getAttribute(o);
24306 n[t] = n[t] || {}, n[t][l] = {
24315 return B(n, function(n, o) {
24319 var c = e[a.animationID],
24320 l = e[s.animationID],
24321 u = a.animationID.toString();
24325 beforeStart: function() {
24326 c.beforeStart(), l.beforeStart()
24328 close: function() {
24329 c.close(), l.close()
24331 classes: w(c.classes, l.classes),
24336 d.classes.length ? t.push(d) : (t.push(c), t.push(l))
24338 i[u].anchors.push({
24343 var f = a ? a.animationID : s.animationID,
24345 r[h] || (r[h] = !0, t.push(e[f]))
24351 e = e.split(" "), t = t.split(" ");
24352 for (var n = [], r = 0; r < e.length; r++) {
24354 if ("ng-" !== i.substring(0, 3))
24355 for (var o = 0; o < t.length; o++)
24365 for (var t = a.length - 1; t >= 0; t--) {
24377 e.from && e.to ? (n(e.from.element), n(e.to.element)) : n(e.element)
24382 !e || "leave" === d && y.$$domOperationFired || e.end()
24386 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)
24389 var T = ["enter", "move", "leave"].indexOf(d) >= 0,
24394 cancel: function() {
24398 if (!a.length) return x(), M;
24400 var A = r(u.attr("class"), r(y.addClass, y.removeClass)),
24402 S && (A += " " + S, y.tempClasses = null);
24404 return T && (O = "ng-" + d + "-prepare", e.addClass(u, O)), g.push({
24410 beforeStart: function() {
24411 u.addClass(q), S && e.addClass(u, S), O && (e.removeClass(u, O), O = null)
24414 }), u.on("$destroy", C), g.length > 1 ? M : (s.$$postDigest(function() {
24417 i(t.element) ? e.push(t) : t.close()
24423 domNode: b(e.from ? e.from.element : e.element),
24426 var t, n = e.close;
24427 if (i(e.anchors ? e.from.element || e.to.element : e.element)) {
24433 o.done(function(e) {
24444 Ce = ["$animate", "$rootScope", function(e, t) {
24447 transclude: "element",
24450 link: function(t, n, r, i, o) {
24452 t.$watchCollection(r.ngAnimateSwap || r.for, function(r) {
24453 a && e.leave(a), s && (s.$destroy(), s = null), (r || 0 === r) && (s = t.$new(), o(s, function(t) {
24454 a = t, e.enter(t, null, n)
24460 t.module("ngAnimate", [], function() {
24461 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
24463 angularVersion: "1.6.8"
24464 }).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)
24465 }(window, window.angular),
24468 var n = t.module("ngAria", ["ng"]).info({
24469 angularVersion: "1.6.8"
24470 }).provider("$aria", function() {
24471 function e(e, t, r, o) {
24472 return function(a, s, c) {
24473 var l = c.$normalize(t);
24474 !n[l] || i(s, r) || c[l] || a.$watch(c[e], function(e) {
24475 e = o ? !e : !!e, s.attr(t, e)
24489 bindRoleForClick: !0
24491 this.config = function(e) {
24493 }, this.$get = function() {
24495 config: function(e) {
24502 r = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
24503 i = function(e, t) {
24504 if (-1 !== t.indexOf(e[0].nodeName)) return !0
24506 n.directive("ngShow", ["$aria", function(e) {
24507 return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
24508 }]).directive("ngHide", ["$aria", function(e) {
24509 return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
24510 }]).directive("ngValue", ["$aria", function(e) {
24511 return e.$$watchExpr("ngValue", "aria-checked", r, !1)
24512 }]).directive("ngChecked", ["$aria", function(e) {
24513 return e.$$watchExpr("ngChecked", "aria-checked", r, !1)
24514 }]).directive("ngReadonly", ["$aria", function(e) {
24515 return e.$$watchExpr("ngReadonly", "aria-readonly", r, !1)
24516 }]).directive("ngRequired", ["$aria", function(e) {
24517 return e.$$watchExpr("ngRequired", "aria-required", r, !1)
24518 }]).directive("ngModel", ["$aria", function(e) {
24519 function t(t, n, o, a) {
24520 return e.config(n) && !o.attr(t) && (a || !i(o, r))
24524 return !t.attr("role") && t.attr("type") === e && !i(t, r)
24530 return "checkbox" === (n || r) || "menuitemcheckbox" === r ? "checkbox" : "radio" === (n || r) || "menuitemradio" === r ? "radio" : "range" === n || "progressbar" === r || "slider" === r ? "range" : ""
24534 require: "ngModel",
24536 compile: function(r, i) {
24539 post: function(r, i, o, s) {
24541 return s.$modelValue
24543 var l = t("tabindex", "tabindex", i, !1);
24547 n(a, i) && i.attr("role", a), t("aria-checked", "ariaChecked", i, !1) && r.$watch(c, "radio" === a ? function(e) {
24548 var t = o.value == s.$viewValue;
24549 i.attr("aria-checked", t)
24551 i.attr("aria-checked", !s.$isEmpty(s.$viewValue))
24552 }), l && i.attr("tabindex", 0);
24555 if (n(a, i) && i.attr("role", "slider"), e.config("ariaValue")) {
24556 var u = !i.attr("aria-valuemin") && (o.hasOwnProperty("min") || o.hasOwnProperty("ngMin")),
24557 d = !i.attr("aria-valuemax") && (o.hasOwnProperty("max") || o.hasOwnProperty("ngMax")),
24558 f = !i.attr("aria-valuenow");
24559 u && o.$observe("min", function(e) {
24560 i.attr("aria-valuemin", e)
24561 }), d && o.$observe("max", function(e) {
24562 i.attr("aria-valuemax", e)
24563 }), f && r.$watch(c, function(e) {
24564 i.attr("aria-valuenow", e)
24567 l && i.attr("tabindex", 0)
24568 }!o.hasOwnProperty("ngRequired") && s.$validators.required && t("aria-required", "ariaRequired", i, !1) && o.$observe("required", function() {
24569 i.attr("aria-required", !!o.required)
24570 }), t("aria-invalid", "ariaInvalid", i, !0) && r.$watch(function() {
24573 i.attr("aria-invalid", !!e)
24579 }]).directive("ngDisabled", ["$aria", function(e) {
24580 return e.$$watchExpr("ngDisabled", "aria-disabled", r, !1)
24581 }]).directive("ngMessages", function() {
24584 require: "?ngMessages",
24585 link: function(e, t, n, r) {
24586 t.attr("aria-live") || t.attr("aria-live", "assertive")
24589 }).directive("ngClick", ["$aria", "$parse", function(e, t) {
24592 compile: function(n, o) {
24593 var a = t(o.ngClick);
24594 return function(t, n, o) {
24595 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) {
24596 var n = e.which || e.keyCode;
24597 32 !== n && 13 !== n || t.$apply(function() {
24606 }]).directive("ngDblclick", ["$aria", function(e) {
24607 return function(t, n, o) {
24608 !e.config("tabindex") || n.attr("tabindex") || i(n, r) || n.attr("tabindex", 0)
24611 }(window, window.angular),
24617 if (e) return i(e) ? e.indexOf(t) >= 0 : e.hasOwnProperty(t)
24619 return ["$animate", function(t) {
24622 transclude: "element",
24625 require: "^^ngMessages",
24626 link: function(n, r, o, a, s) {
24628 u = o.ngMessage || o.when,
24629 d = o.ngMessageExp || o.whenExp,
24631 c = e ? i(e) ? e : e.split(/[\s,]+/) : null, a.reRender()
24633 d ? (f(n.$eval(d)), n.$watchCollection(d, f)) : f(u);
24635 a.register(l, p = {
24636 test: function(t) {
24639 attach: function() {
24640 h || s(function(e, n) {
24641 t.enter(e, null, r);
24642 var i = (h = e).$$attachId = a.getAttachId();
24643 h.on("$destroy", function() {
24644 h && h.$$attachId === i && (a.deregister(l), p.detach()), n.$destroy()
24648 detach: function() {
24651 h = null, t.leave(e)
24660 t.module("ngMessages", [], function() {
24661 r = t.forEach, i = t.isArray, o = t.isString, a = t.element
24663 angularVersion: "1.6.8"
24664 }).directive("ngMessages", ["$animate", function(e) {
24666 return o(t) && 0 === t.length || n(e.$eval(t))
24670 return o(e) ? e.length : !!e
24673 require: "ngMessages",
24675 controller: ["$element", "$scope", "$attrs", function(i, o, a) {
24677 for (var n = t, r = []; n && n !== e;) {
24678 var i = n.$$ngMessageNode;
24679 if (i && i.length) return m[i];
24680 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))
24684 function c(e, t, n) {
24688 i ? (r.next = i.next, i.next = r) : (r.next = u.head, u.head = r)
24692 function l(e, t, n) {
24695 i ? i.next = r.next : u.head = r.next
24700 this.getAttachId = function() {
24703 var h, p, m = this.messages = {};
24704 this.render = function(s) {
24705 h = !1, p = s = s || {};
24706 for (var c = t(o, a.ngMessagesMultiple) || t(o, a.multiple), l = [], d = {}, f = u.head, m = !1, g = 0; null != f;) {
24710 m || r(s, function(e, t) {
24711 if (!b && n(e) && v.test(t)) {
24713 d[t] = !0, b = !0, v.attach()
24715 }), b ? m = !c : l.push(v), f = f.next
24719 }), l.length !== g ? e.setClass(i, "ng-active", "ng-inactive") : e.setClass(i, "ng-inactive", "ng-active")
24720 }, o.$watchCollection(a.ngMessages || a.for, u.render), i.on("$destroy", function() {
24724 }), this.reRender = function() {
24725 h || (h = !0, o.$evalAsync(function() {
24726 h && p && u.render(p)
24728 }, this.register = function(e, t) {
24729 var n = d.toString();
24732 }, c(i[0], e, n), e.$$ngMessageNode = n, d++, u.reRender()
24733 }, this.deregister = function(e) {
24734 var t = e.$$ngMessageNode;
24735 delete e.$$ngMessageNode, l(i[0], e, t), delete m[t], u.reRender()
24739 }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(e, t, n) {
24741 var i = n.$$createComment ? n.$$createComment("ngMessagesInclude", r) : t[0].createComment(" ngMessagesInclude: " + r + " "),
24743 e.after(o), e.remove()
24747 require: "^^ngMessages",
24748 link: function(t, i, a) {
24749 var s = a.ngMessagesInclude || a.src;
24750 e(s).then(function(e) {
24751 t.$$destroyed || (o(e) && !e.trim() ? r(i, s) : n(e)(t, function(e) {
24752 i.after(e), r(i, s)
24757 }]).directive("ngMessage", n()).directive("ngMessageExp", n())
24758 }(window, window.angular),
24759 function(e, t, n) {
24761 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"]),
24764 if (t.has("$swipe")) {
24765 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!")
24770 e.decorator("$$rAF", ["$delegate", r]), e.decorator("$q", ["$delegate", i]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
24774 return e.throttle = function(t) {
24776 return function() {
24777 n = arguments, o = this, i = t, r || (r = !0, e(function() {
24778 i.apply(o, Array.prototype.slice.call(n)), r = !1
24785 return e.resolve || (e.resolve = e.when), e
24787 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)
24794 pre: function(n, r, i) {
24796 t.isUndefined(e) && (e = !0), r.toggleClass("md-autofocus", !!e)
24798 var a = i.mdAutoFocus || i.mdAutofocus || i.mdSidenavFocus;
24799 o(e(a)(n)), a && n.$watch(a, o)
24804 e.$inject = ["$parse"], t.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
24807 t.module("material.core").factory("$mdColorUtil", function() {
24809 rgbaToHex: function(e) {
24810 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()
24812 hexToRgba: function(e) {
24813 var t = "#" === e[0] ? e.substr(1) : e,
24815 r = t.substr(0, n),
24816 i = t.substr(n, n),
24817 o = t.substr(2 * n);
24818 return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
24820 rgbToRgba: function(e) {
24821 return e.replace(")", ", 0.1)").replace("(", "a(")
24823 rgbaToRgb: function(e) {
24824 return e ? e.replace("rgba", "rgb").replace(/,[^),]+\)/, ")") : "rgb(0,0,0)"
24830 t.module("material.core").factory("$mdConstant", function() {
24832 var t = r(o + "-" + e),
24833 a = t.charAt(0).toLowerCase() + t.substring(1);
24834 return n(i, e) ? e : n(i, t) ? t : n(i, a) ? a : e
24838 return t.isDefined(e.style[n])
24842 return e.replace(s, function(e, t, n, r) {
24843 return r ? n.toUpperCase() : n
24846 var i = document.createElement("div"),
24848 var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
24850 if (n = r.exec(t)) return n[0]
24852 a = /webkit/i.test(o),
24853 s = /([:\-_]+(.))/g,
24855 isInputKey: function(e) {
24856 return e.keyCode >= 31 && e.keyCode <= 90
24858 isNumPadKey: function(e) {
24859 return 3 === e.location && e.keyCode >= 97 && e.keyCode <= 105
24861 isMetaKey: function(e) {
24862 return e.keyCode >= 91 && e.keyCode <= 93
24864 isFnLockKey: function(e) {
24865 return e.keyCode >= 112 && e.keyCode <= 145
24867 isNavigationKey: function(e) {
24868 var t = c.KEY_CODE;
24869 return -1 != [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW].indexOf(e.keyCode)
24871 hasModifierKey: function(e) {
24872 return e.ctrlKey || e.metaKey || e.altKey
24874 ELEMENT_MAX_PIXELS: 1533917,
24875 BEFORE_NG_ARIA: 210,
24895 TRANSITIONEND: "transitionend" + (a ? " webkitTransitionEnd" : ""),
24896 ANIMATIONEND: "animationend" + (a ? " webkitAnimationEnd" : ""),
24897 TRANSFORM: e("transform"),
24898 TRANSFORM_ORIGIN: e("transformOrigin"),
24899 TRANSITION: e("transition"),
24900 TRANSITION_DURATION: e("transitionDuration"),
24901 ANIMATION_PLAY_STATE: e("animationPlayState"),
24902 ANIMATION_DURATION: e("animationDuration"),
24903 ANIMATION_NAME: e("animationName"),
24904 ANIMATION_TIMING: e("animationTimingFunction"),
24905 ANIMATION_DIRECTION: e("animationDirection")
24908 xs: "(max-width: 599px)",
24909 "gt-xs": "(min-width: 600px)",
24910 sm: "(min-width: 600px) and (max-width: 959px)",
24911 "gt-sm": "(min-width: 960px)",
24912 md: "(min-width: 960px) and (max-width: 1279px)",
24913 "gt-md": "(min-width: 1280px)",
24914 lg: "(min-width: 1280px) and (max-width: 1919px)",
24915 "gt-lg": "(min-width: 1920px)",
24916 xl: "(min-width: 1920px)",
24917 landscape: "(orientation: landscape)",
24918 portrait: "(orientation: portrait)",
24921 MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
24929 return u.length && e > -1 && e < u.length
24933 return u.indexOf(e)
24937 return e && i(e) > -1
24941 return u.length ? u[0] : null
24945 return u.length ? u[u.length - 1] : null
24948 function c(e, o, c, d) {
24950 for (var f = i(o);;) {
24951 if (!r(f)) return null;
24952 var h = f + (e ? -1 : 1),
24954 if (r(h) ? p = u[h] : n && (h = i(p = e ? s() : a())), null === p || h === d) return null;
24955 if (c(p)) return p;
24956 t.isUndefined(d) && (d = h), f = h
24959 var l = function() {
24962 e && !t.isArray(e) && (e = Array.prototype.slice.call(e)), n = !!n;
24965 items: function() {
24966 return [].concat(u)
24968 count: function() {
24974 itemAt: function(e) {
24975 return r(e) ? u[e] : null
24977 findBy: function(e, t) {
24978 return u.filter(function(n) {
24982 add: function(e, n) {
24983 return e ? (t.isNumber(n) || (n = u.length), u.splice(n, 0, e), i(e)) : -1
24985 remove: function(e) {
24986 o(e) && u.splice(i(e), 1)
24990 next: t.bind(null, c, !1),
24991 previous: t.bind(null, c, !0),
24992 hasPrevious: function(e) {
24993 return !!e && r(i(e) - 1)
24995 hasNext: function(e) {
24996 return !!e && r(i(e) + 1)
25000 t.module("material.core").config(["$provide", function(t) {
25001 t.decorator("$mdUtil", ["$delegate", function(t) {
25002 return t.iterator = e, t
25007 function e(e, n, r) {
25010 t.isUndefined(n) && (n = l[e] = o(e));
25012 return t.isUndefined(r) && (r = a(n)), r
25016 return e.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)
25021 return t || (t = u[e] = r.matchMedia(e)), t.addListener(s), d[t.media] = !!t.matches
25025 n.$evalAsync(function() {
25026 d[e.media] = !!e.matches
25031 return f[t] || (f[t] = e.$normalize(t))
25037 return i.getResponsiveAttribute = function(t, n) {
25038 for (var r = 0; r < e.MEDIA_PRIORITY.length; r++) {
25039 var i = e.MEDIA_PRIORITY[r];
25040 if (u[l[i]].matches) {
25041 var o = c(t, n + "-" + i);
25042 if (t[o]) return t[o]
25046 }, i.getQuery = function(e) {
25048 }, i.watchResponsiveAttributes = function(n, r, i) {
25050 return n.forEach(function(n) {
25052 t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, null)));
25053 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)))
25056 o.forEach(function(e) {
25062 e.$inject = ["$mdConstant", "$rootScope", "$window"], t.module("material.core").factory("$mdMedia", e)
25067 return (e = t.isArray(e) ? e : [e]).forEach(function(t) {
25068 a.forEach(function(n) {
25069 e.push(n + "-" + t)
25075 return e = t.isArray(e) ? e : [e], r(e).map(function(e) {
25076 return "[" + e + "]"
25081 if ((e = e[0] || e).nodeType) return e
25083 var a = ["data", "x"];
25084 return e ? n ? i(e) : r(e) : {
25087 hasAttribute: function(e, t) {
25088 if (!(e = o(e))) return !1;
25089 for (var n = r(t), i = 0; i < n.length; i++)
25090 if (e.hasAttribute(n[i])) return !0;
25093 removeAttribute: function(e, t) {
25094 (e = o(e)) && r(t).forEach(function(t) {
25095 e.removeAttribute(t)
25100 t.module("material.core").config(["$provide", function(t) {
25101 t.decorator("$mdUtil", ["$delegate", function(t) {
25102 return t.prefixer = e, t
25107 function r(r, o, a, s, c, l, u, d, f, h) {
25109 return e ? m(e) || g(e) ? e : e + "px" : "0"
25113 return String(e).indexOf("px") > -1
25117 return String(e).indexOf("%") > -1
25123 var b = l.startSymbol(),
25125 _ = "{{" === b && "}}" === y,
25126 $ = function(e, n, r) {
25128 if (e && e.length) {
25129 var o = f.getComputedStyle(e[0]);
25130 i = t.isDefined(o[n]) && (!r || o[n] == r)
25136 now: e.performance && e.performance.now ? t.bind(e.performance, e.performance.now) : Date.now || function() {
25137 return (new Date).getTime()
25139 getModelOption: function(e, t) {
25141 var n = e.$options;
25142 return n.getOption ? n.getOption(t) : n[t]
25145 bidi: function(e, n, i, o) {
25146 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir);
25147 if (0 == arguments.length) return a ? "ltr" : "rtl";
25148 var s = t.element(e);
25149 a && t.isDefined(i) ? s.css(n, p(i)) : !a && t.isDefined(o) && s.css(n, p(o))
25151 bidiProperty: function(e, n, i, o) {
25152 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir),
25154 a && t.isDefined(n) ? (s.css(n, p(o)), s.css(i, "")) : !a && t.isDefined(i) && (s.css(i, p(o)), s.css(n, ""))
25156 clientRect: function(e, t, n) {
25158 t = v(t || r.offsetParent || document.body);
25159 var i = r.getBoundingClientRect(),
25160 o = n ? t.getBoundingClientRect() : {
25167 left: i.left - o.left,
25168 top: i.top - o.top,
25173 offsetRect: function(e, t) {
25174 return w.clientRect(e, t, !0)
25176 nodesToArray: function(e) {
25178 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
25181 getViewportTop: function() {
25182 return e.scrollY || e.pageYOffset || 0
25184 findFocusTarget: function(e, n) {
25186 var r, i = e[0].querySelectorAll(n);
25187 return i && i.length && i.length && t.forEach(i, function(e) {
25188 (e = t.element(e)).hasClass("md-autofocus") && (r = e)
25191 var i, o = this.prefixer("md-autofocus", !0);
25192 return (i = r(e, n || o)) || n == o || (i = r(e, this.prefixer("md-auto-focus", !0))) || (i = r(e, o)), i
25194 disableScrollAround: function(e, n, i) {
25195 if (i = i || {}, w.disableScrollAround._count = Math.max(0, w.disableScrollAround._count || 0), w.disableScrollAround._count++, w.disableScrollAround._restoreScroll) return w.disableScrollAround._restoreScroll;
25198 var e = r[0].documentElement,
25199 n = e.style.cssText || "",
25200 i = o.style.cssText || "",
25201 a = w.getViewportTop(),
25203 c = o.scrollHeight > o.clientHeight + 1,
25204 l = e.scrollTop > 0 ? e : o;
25205 return c && t.element(o).css({
25209 }), o.clientWidth < s && (o.style.overflow = "hidden"), c && (e.style.overflowY = "scroll"),
25211 o.style.cssText = i, e.style.cssText = n, l.scrollTop = a
25218 e = t.element(e || o);
25220 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),
25222 r.off("wheel"), r.off("touchmove"), !i.disableScrollMask && r[0].parentNode && r[0].parentNode.removeChild(r[0])
25225 return w.disableScrollAround._restoreScroll = function() {
25226 --w.disableScrollAround._count <= 0 && (a(), s(), delete w.disableScrollAround._restoreScroll)
25229 enableScrolling: function() {
25230 var e = this.disableScrollAround._restoreScroll;
25233 floatingScrollbars: function() {
25234 if (this.floatingScrollbars.cached === n) {
25235 var e = t.element("<div><div></div></div>").css({
25238 position: "absolute",
25240 "overflow-y": "scroll"
25242 e.children().css("height", "60px"), r[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
25244 return this.floatingScrollbars.cached
25246 forceFocus: function(t) {
25248 document.addEventListener("click", function e(t) {
25249 t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
25251 var r = document.createEvent("MouseEvents");
25252 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)
25254 createBackdrop: function(e, t) {
25255 return a(w.supplant('<md-backdrop class="{0}">', [t]))(e)
25257 supplant: function(e, t, n) {
25258 return n = n || /\{([^{}]*)\}/g, e.replace(n, function(e, n) {
25259 var r = n.split("."),
25262 for (var o in r) r.hasOwnProperty(o) && (i = i[r[o]])
25266 return "string" == typeof i || "number" == typeof i ? i : e
25269 fakeNgModel: function() {
25272 $setTouched: t.noop,
25273 $setViewValue: function(e) {
25274 this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
25278 $isEmpty: function(e) {
25279 return 0 === ("" + e).length
25283 $viewChangeListeners: [],
25287 debounce: function(e, t, r, i) {
25289 return function() {
25291 c = Array.prototype.slice.call(arguments);
25292 o.cancel(a), a = o(function() {
25293 a = n, e.apply(s, c)
25297 throttle: function(e, t) {
25299 return function() {
25303 (!n || o - n > t) && (e.apply(r, i), n = o)
25306 time: function(e) {
25308 return e(), w.now() - t
25310 valueOnUse: function(e, t, n) {
25312 i = Array.prototype.slice.call(arguments),
25313 o = i.length > 3 ? i.slice(3) : [];
25314 Object.defineProperty(e, t, {
25316 return null === r && (r = n.apply(e, o)), r
25320 nextUid: function() {
25323 disconnectScope: function(e) {
25324 if (e && e.$root !== e && !e.$$destroyed) {
25326 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
25329 reconnectScope: function(e) {
25330 if (e && e.$root !== e && e.$$disconnected) {
25333 t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
25336 getClosest: function(e, n, r) {
25337 if (t.isString(n)) {
25338 var i = n.toUpperCase();
25340 return e.nodeName.toUpperCase() === i
25343 if (e instanceof t.element && (e = e[0]), r && (e = e.parentNode), !e) return null;
25346 } while (e = e.parentNode);
25349 elementContains: function(n, r) {
25350 return (e.Node && e.Node.prototype && Node.prototype.contains ? t.bind(n, n.contains) : t.bind(n, function(e) {
25351 return n === r || !!(16 & this.compareDocumentPosition(e))
25354 extractElementByName: function(e, n, r, i) {
25356 return a(e) || (r ? s(e) : null)
25361 for (var t = 0, r = e.length; t < r; t++)
25362 if (e[t].nodeName.toLowerCase() === n) return e[t];
25369 for (var n = 0, r = e.length; n < r; n++) {
25372 for (var a = 0, s = i.childNodes.length; a < s; a++) t = t || o([i.childNodes[a]])
25377 return !c && i && u.warn(w.supplant("Unable to find node '{0}' in element '{1}'.", [n, e[0].outerHTML])), t.element(c || e)
25379 initOptionalProperties: function(e, n, r) {
25380 r = r || {}, t.forEach(e.$$isolateBindings, function(i, o) {
25381 if (i.optional && t.isUndefined(e[o])) {
25382 var a = t.isDefined(n[i.attrName]);
25383 e[o] = t.isDefined(r[o]) ? r[o] : a
25387 nextTick: function(e, t, n) {
25388 var r = w.nextTick,
25394 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = a, i || (r.timeout = o(function() {
25397 r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
25398 e.scope && e.scope.$$destroyed || e.callback()
25399 }), t && s.$digest()
25402 processTemplate: function(e) {
25403 return _ ? e : e && t.isString(e) ? e.replace(/\{\{/g, b).replace(/}}/g, y) : e
25405 getParentWithPointerEvents: function(e) {
25406 for (var t = e.parent(); $(t, "pointer-events", "none");) t = t.parent();
25409 getNearestContentElement: function(e) {
25410 for (var t = e.parent()[0]; t && t !== d[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
25413 checkStickySupport: function() {
25414 var e, n = t.element("<div>");
25415 r[0].body.appendChild(n[0]);
25416 for (var i = ["sticky", "-webkit-sticky"], o = 0; o < i.length; ++o)
25421 }), n.css("position") == i[o]) {
25425 return n.remove(), e
25427 parseAttributeBoolean: function(e, t) {
25428 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
25430 hasComputedStyle: $,
25431 isParentFormSubmitted: function(e) {
25432 var n = w.getClosest(e, "form"),
25433 r = n ? t.element(n).controller("form") : null;
25434 return !!r && r.$submitted
25436 animateScrollTo: function(e, t, n) {
25439 e.scrollTop = n, (c ? n < t : n > t) && h(r)
25444 return o(w.now() - l, a, s, e)
25447 function o(e, t, n, r) {
25448 if (e > r) return t + n;
25449 var i = (e /= r) * e;
25450 return t + n * (-2 * (i * e) + 3 * i)
25452 var a = e.scrollTop,
25458 uniq: function(e) {
25459 if (e) return e.filter(function(e, t, n) {
25460 return n.indexOf(e) === t
25464 return w.dom.animator = c(w), w
25466 r.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
25468 t.module("material.core").factory("$mdUtil", r), t.element.prototype.focus = t.element.prototype.focus || function() {
25469 return this.length && this[0].focus(), this
25470 }, t.element.prototype.blur = t.element.prototype.blur || function() {
25471 return this.length && this[0].blur(), this
25477 return !i || ("function" == typeof e.preAssignBindingsEnabled ? e.preAssignBindingsEnabled() : 1 === t.version.major && t.version.minor < 6)
25480 function r(e, t, n, r, i) {
25481 this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
25484 this.respectPreAssignBindingsEnabled = function(e) {
25485 return t.isDefined(e) ? (i = e, this) : i
25486 }, this.$get = ["$q", "$templateRequest", "$injector", "$compile", "$controller", function(e, t, n, i, o) {
25487 return new r(e, t, n, i, o)
25488 }], r.prototype.compile = function(e) {
25489 return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
25490 }, r.prototype._prepareContentElement = function(e) {
25491 var t = this._fetchContentElement(e);
25492 return this.$q.resolve({
25493 element: t.element,
25494 cleanup: t.restore,
25500 }, r.prototype._compileTemplate = function(e) {
25503 i = e.template || "",
25504 o = t.extend({}, e.resolve),
25505 a = t.extend({}, e.locals),
25506 s = e.transformTemplate || t.identity;
25507 return t.forEach(o, function(e, r) {
25508 t.isString(e) ? o[r] = n.$injector.get(e) : o[r] = n.$injector.invoke(e)
25509 }), t.extend(o, a), o.$$ngTemplate = r ? this.$templateRequest(r) : this.$q.when(i), this.$q.all(o).then(function(r) {
25510 var i = s(r.$$ngTemplate, e),
25511 o = e.element || t.element("<div>").html(i.trim()).contents();
25512 return n._compileElement(r, o, e)
25514 }, r.prototype._compileElement = function(e, n, r) {
25516 o = this.$compile(n),
25519 cleanup: n.remove.bind(n),
25521 link: function(s) {
25522 if (e.$scope = s, r.controller) {
25523 var c = t.extend({}, e, {
25526 l = i._createController(r, c, e);
25527 n.data("$ngControllerController", l), n.children().data("$ngControllerController", l), a.controller = l
25533 }, r.prototype._createController = function(e, r, i) {
25534 var o = this.$controller(e.controller, r, !0, e.controllerAs);
25535 n() && e.bindToController && t.extend(o.instance, i);
25537 return !n() && e.bindToController && t.extend(a, i), t.isFunction(a.$onInit) && a.$onInit(), a
25538 }, r.prototype._fetchContentElement = function(e) {
25540 var t = e.parentNode,
25541 n = e.nextElementSibling;
25542 return function() {
25543 n ? t.insertBefore(e, n) : t.appendChild(e)
25546 var r = e.contentElement,
25548 return t.isString(r) ? i = n(r = document.querySelector(r)) : (r = r[0] || r, i = document.contains(r) ? n(r) : function() {
25549 r.parentNode && r.parentNode.removeChild(r)
25551 element: t.element(r),
25556 t.module("material.core").provider("$mdCompiler", e), e.$inject = ["$compileProvider"]
25559 function e(e, n, r, i) {
25560 function o(e, r, i) {
25561 var o = t.element(e)[0] || e;
25562 !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))
25565 function a(t, n, r) {
25573 for (var t, n = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, null, !1), r = ""; t = n.nextNode();)(function(t) {
25574 for (; t.parentNode && (t = t.parentNode) !== e;)
25575 if (t.getAttribute && "true" === t.getAttribute("aria-hidden")) return !0
25576 })(t) || (r += t.textContent);
25577 return r.trim() || ""
25582 if (e.hasChildNodes())
25583 for (var i = e.childNodes, o = 0; o < i.length; o++) {
25585 1 === a.nodeType && a.hasAttribute(t) && (function(e) {
25586 return "none" === (e.currentStyle ? e.currentStyle : r.getComputedStyle(e)).display
25593 var n = t.element(e)[0] || e;
25594 return !!n.hasAttribute && (n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby") || n.hasAttribute("aria-describedby"))
25599 var r = t.element(e)[0] || e;
25600 return !!r.parentNode && (!! function(e) {
25601 if (!l(e)) return !1;
25602 if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
25614 case "presentation":
25621 switch (e.tagName.toLowerCase()) {
25674 case "presentation":
25701 }(r.parentNode) || !!--n && u(r.parentNode, n))
25703 var d = this.showWarnings;
25707 expectWithText: function(e, t) {
25708 var n = s(e) || "";
25709 n.indexOf(i.startSymbol()) > -1 ? a(e, t, function() {
25713 expectWithoutText: function(e, t) {
25715 n.indexOf(i.startSymbol()) > -1 || n || o(e, t, n)
25719 parentHasAriaLabel: u
25722 e.$inject = ["$$rAF", "$log", "$window", "$interpolate"], t.module("material.core").provider("$mdAria", function() {
25727 disableWarnings: function() {
25728 t.showWarnings = !1
25730 $get: ["$$rAF", "$log", "$window", "$interpolate", function(n, r, i, o) {
25731 return e.apply(t, arguments)
25738 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 = {
25739 keydown: "keyboard",
25740 mousedown: "mouse",
25741 mouseenter: "mouse",
25742 touchstart: "touch",
25743 pointerdown: "pointer",
25744 MSPointerDown: "pointer"
25745 }, this.iePointerMap = {
25749 }, this.initializeEvents()
25751 n.$inject = ["$timeout", "$mdUtil"], t.module("material.core.interaction", []).service("$mdInteraction", n), n.prototype.initializeEvents = function() {
25752 var t = "MSPointerEvent" in e ? "MSPointerDown" : "PointerEvent" in e ? "pointerdown" : null;
25753 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))
25754 }, n.prototype.onInputEvent = function(e) {
25755 if (!this.isBuffering) {
25756 var t = this.inputEventMap[e.type];
25757 "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
25759 }, n.prototype.onBufferInputEvent = function(e) {
25760 this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
25761 this.isBuffering = !1
25762 }.bind(this), 650, !1)
25763 }, n.prototype.getLastInteractionType = function() {
25764 return this.lastInteractionType
25765 }, n.prototype.isUserInvoked = function(e) {
25766 var n = t.isNumber(e) ? e : 15;
25767 return this.lastInteractionTime >= this.$mdUtil.now() - n
25773 function r(n, r, i) {
25775 return function(t, n) {
25776 n.distance < this.state.options.maxDistance && this.dispatchEvent(t, e, n)
25779 var s = navigator.userAgent || navigator.vendor || e.opera,
25780 c = s.match(/ipad|iphone|ipod/i),
25781 u = s.match(/android/i),
25783 for (var e = document.createElement("div"), n = ["", "webkit", "Moz", "MS", "ms", "o"], r = 0; r < n.length; r++) {
25785 o = i ? i + "TouchAction" : "touchAction";
25786 if (t.isDefined(e.style[o])) return o
25789 h = void 0 !== e.jQuery && t.element === e.jQuery,
25791 handler: function(e, r) {
25793 return t.extend(i, r), p[e] = i, v
25795 register: function(e, t, n) {
25796 var r = p[t.replace(/^\$md./, "")];
25797 if (!r) throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(p).join(", "));
25798 return r.registerElement(e, n)
25802 isHijackingClicks: (c || u) && !h && !m
25804 return v.isHijackingClicks && (v.handler("click", {
25809 }), v.handler("focus", {
25813 onEnd: function(e, t) {
25814 t.distance < this.state.options.maxDistance && d(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
25816 }), v.handler("mouseup", {
25820 onEnd: o("mouseup")
25821 }), v.handler("mousedown", {
25822 onStart: function(e) {
25823 this.dispatchEvent(e, "mousedown")
25825 })), v.handler("press", {
25826 onStart: function(e, t) {
25827 this.dispatchEvent(e, "$md.pressdown")
25829 onEnd: function(e, t) {
25830 this.dispatchEvent(e, "$md.pressup")
25832 }).handler("hold", {
25837 onCancel: function() {
25838 i.cancel(this.state.timeout)
25840 onStart: function(e, n) {
25841 if (!this.state.registeredParent) return this.cancel();
25845 }, this.state.timeout = i(t.bind(this, function() {
25846 this.dispatchEvent(e, "$md.hold"), this.cancel()
25847 }), this.state.options.delay, !1)
25849 onMove: function(e, t) {
25850 f || "touchmove" !== e.type || e.preventDefault();
25851 var n = this.state.pos.x - t.x,
25852 r = this.state.pos.y - t.y;
25853 Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
25855 onEnd: function() {
25858 }).handler("drag", {
25862 cancelMultiplier: 1.5
25864 onSetup: function(e, t) {
25865 f && (this.oldTouchAction = e[0].style[f], e[0].style[f] = t.horizontal ? "pan-y" : "pan-x")
25867 onCleanup: function(e) {
25868 this.oldTouchAction && (e[0].style[f] = this.oldTouchAction)
25870 onStart: function(e) {
25871 this.state.registeredParent || this.cancel()
25873 onMove: function(e, t) {
25875 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())
25877 dispatchDragMove: r.throttle(function(e) {
25878 this.state.isRunning && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
25880 onEnd: function(e, t) {
25881 this.state.dragPointer && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
25883 }).handler("swipe", {
25888 onEnd: function(e, t) {
25890 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))
25896 this.name = e, this.state = {}
25901 !e.clientX && !e.clientY || e.$material || e.isIonicTap || c(e) || "mousedown" === e.type && (d(e.target) || d(document.activeElement)) || (e.preventDefault(), e.stopPropagation())
25906 for (var i in p)(r = p[i]) instanceof n && ("start" === e && r.cancel(), r[e](t, f))
25908 document.contains || (document.contains = function(e) {
25909 return document.body.contains(e)
25910 }), !b && e.isHijackingClicks && (document.addEventListener("click", function(e) {
25911 var t = 0 === e.clientX && 0 === e.clientY,
25912 n = e.target && "submit" === e.target.type;
25913 t || e.$material || e.isIonicTap || c(e) || n ? (v = null, "label" == e.target.tagName.toLowerCase() && (v = {
25916 })) : (e.preventDefault(), e.stopPropagation(), v = null)
25917 }, !0), document.addEventListener("mouseup", r, !0), document.addEventListener("mousedown", r, !0), document.addEventListener("focus", r, !0), b = !0);
25918 t.element(document).on("mousedown touchstart pointerdown", function(e) {
25920 var t = +Date.now();
25921 h && !s(e, h) && t - h.endTime < 1500 || (f = a(e), i("start", e))
25923 }).on("mousemove touchmove pointermove", function(e) {
25924 f && s(e, f) && (l(e, f), i("move", e))
25925 }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
25926 f && s(e, f) && (l(e, f), f.endTime = +Date.now(), "pointercancel" !== e.type && i("end", e), h = f, f = null)
25927 }).on("$$mdGestureReset", function() {
25935 startTime: +Date.now(),
25937 type: e.type.charAt(0)
25939 return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
25943 return e && t && e.type.charAt(0) === t.type
25947 return v && v.x == e.x && v.y == e.y
25954 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
25958 return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
25962 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))
25964 r.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"], o.$inject = ["$mdGesture", "$$MdGestureHandler"];
25970 t.module("material.core.gestures", []).provider("$mdGesture", n).factory("$$MdGestureHandler", function() {
25971 var n = void 0 !== e.jQuery && t.element === e.jQuery;
25972 return i.prototype = {
25974 dispatchEvent: n ? function(e, n, r) {
25976 var i = new t.element.Event(n);
25977 i.$material = !0, i.pointer = r, i.srcEvent = e, t.extend(i, {
25984 ctrlKey: e.ctrlKey,
25986 shiftKey: e.shiftKey,
25988 }), t.element(r.target).trigger(i)
25989 } : function(t, n, r) {
25992 "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)
26000 start: function(e, n) {
26001 if (!this.state.isRunning) {
26002 var r = this.getNearestParent(e.target),
26003 i = r && r.$mdGesture[this.name] || {};
26006 options: t.extend({}, this.options, i),
26007 registeredParent: r
26008 }, this.onStart(e, n)
26011 move: function(e, t) {
26012 this.state.isRunning && this.onMove(e, t)
26014 end: function(e, t) {
26015 this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
26017 cancel: function(e, t) {
26018 this.onCancel(e, t), this.state = {}
26020 getNearestParent: function(e) {
26021 for (var t = e; t;) {
26022 if ((t.$mdGesture || {})[this.name]) return t;
26027 registerElement: function(e, t) {
26029 delete e[0].$mdGesture[r.name], e.off("$destroy", n), r.onCleanup(e, t || {})
26032 return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", n), r.onSetup(e, t || {}), n
26035 }).run(o), n.prototype = {
26036 skipClickHijack: function() {
26039 setMaxClickDistance: function(e) {
26042 $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
26043 return new r(e, t, n)
26048 t.module("material.core").provider("$$interimElement", function() {
26053 return i[e] = u, r.invoke(t || function() {
26061 show: function(e) {
26062 return (e = e || {})._options && (e = e._options), l.show(t.extend({}, c, e))
26064 destroy: function(e) {
26065 return l.destroy(e)
26068 return s = o.methods || [], c = a(o.optionsFactory, {}), t.forEach(i, function(e, t) {
26070 }), t.forEach(o.presets, function(e, n) {
26072 this._options = t.extend({}, i, e)
26074 var i = a(e.optionsFactory, {}),
26075 o = (e.methods || []).concat(s);
26078 }), t.forEach(o, function(e) {
26079 r.prototype[e] = function(t) {
26080 return this._options[e] = t, this
26083 var c = "show" + n.charAt(0).toUpperCase() + n.slice(1);
26084 u[c] = function(e) {
26089 u[n] = function(n) {
26090 return arguments.length && e.argOption && !t.isObject(n) && !t.isArray(n) ? (new r)[e.argOption](n) : new r(n)
26094 n.$inject = ["$$interimElement", "$injector"];
26095 var r = ["onHide", "onShow", "onRemove"],
26101 setDefaults: function(e) {
26102 return o.optionsFactory = e.options, o.methods = (e.methods || []).concat(r), a
26104 addPreset: function(t, n) {
26105 if (n = n || {}, n.methods = n.methods || [], n.options = n.options || function() {
26107 }, /^cancel|hide|show$/.test(t)) throw new Error("Preset '" + t + "' in " + e + " is reserved!");
26108 if (n.methods.indexOf("_options") > -1) throw new Error("Method '_options' in " + e + " is reserved!");
26109 return o.presets[t] = {
26110 methods: n.methods.concat(r),
26111 optionsFactory: n.options,
26112 argOption: n.argOption
26115 addMethod: function(e, t) {
26120 return a.addPreset("build", {
26121 methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
26125 function r(e, r, i, o, a, s, c, l, u, d, f) {
26126 return function() {
26128 return function() {
26130 return y.length ? e.apply(m, t) : v.length ? v[0].finally(function() {
26131 return e.apply(m, t)
26132 }) : r.when("No interim elements currently showing up.")
26138 return (e.skipCompile ? null : l.compile(e)) || r(function(t) {
26149 t.extend(e.locals, n);
26150 var r = e.link(n.scope);
26151 return n.element = r, n.parent = p(r, n), n.themable && u(r), r
26156 if (!((i = t.isFunction(i) ? i(r.scope, n, r) : t.isString(i) ? t.element(e[0].querySelector(i)) : t.element(i)) || {}).length) {
26158 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)
26165 d.hideDelay && (e = o(m.hide, d.hideDelay), r = function() {
26167 }), d.cancelAutoHide = function() {
26168 r(), d.cancelAutoHide = n
26172 function v(e, n, i) {
26173 var o = n.onShowing || t.noop,
26174 a = n.onComplete || t.noop;
26176 o(n.scope, e, n, i)
26180 return r(function(t, o) {
26182 r.when(n.onShow(n.scope, e, n, i)).then(function() {
26183 a(n.scope, e, n), g(), t(e)
26192 var i = n.onRemoving || t.noop;
26193 return r(function(t, o) {
26195 var a = r.when(n.onRemove(n.scope, e, n) || !0);
26196 i(e, a), n.$destroy ? (t(e), !n.preserveScope && n.scope && a.then(function() {
26198 })) : a.then(function() {
26199 !n.preserveScope && n.scope && n.scope.$destroy(), t(e)
26206 var y, _, $ = r.when(!0);
26207 return d = function(e) {
26208 return (e = e || {}).template && (e.template = c.processTemplate(e.template)), t.extend({
26210 cancelAutoHide: t.noop,
26211 scope: e.scope || i.$new(e.isolateScope),
26212 onShow: function(e, t, n) {
26213 return s.enter(t, n.parent)
26215 onRemove: function(e, t) {
26216 return t && s.leave(t) || r.when()
26221 deferred: r.defer(),
26223 return r(function(e, t) {
26225 y.deferred.reject(e), t(e)
26227 d.onCompiling && d.onCompiling(d), f(d).then(function(t) {
26228 _ = h(t, d), d.cleanupElement = t.cleanup, $ = v(_, d, t.controller).then(e, n)
26232 remove: function(e, n, i) {
26234 y.deferred.resolve(e)
26238 y.deferred.reject(e)
26240 return _ ? ((d = t.extend(d || {}, i || {})).cancelAutoHide && d.cancelAutoHide(), d.element.triggerHandler("$mdInterimElementRemove"), !0 === d.$destroy ? b(d.element, d).then(function() {
26242 }) : (r.when($).finally(function() {
26243 b(d.element, d).then(function() {
26246 }), y.deferred.promise)) : r.when(!1)
26255 show: function(e) {
26256 var t = new p((e = e || {}) || {}),
26257 n = e.multiple ? r.resolve() : r.all(v);
26258 e.multiple || (n = n.then(function() {
26259 var e = b.concat(y.map(m.cancel));
26262 var i = n.then(function() {
26263 return t.show().catch(function(e) {
26265 }).finally(function() {
26266 v.splice(v.indexOf(i), 1), y.push(t)
26269 return v.push(i), t.deferred.promise.catch(function(e) {
26270 return e instanceof Error && f(e), e
26271 }), t.deferred.promise
26273 hide: h(function(e, t) {
26275 var r = n.remove(e, !1, t || {}).catch(function(e) {
26277 }).finally(function() {
26278 b.splice(b.indexOf(r), 1)
26280 return y.splice(y.indexOf(n), 1), b.push(r), n.deferred.promise
26282 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])
26284 cancel: h(function(e, n) {
26286 if (!i) return r.when(e);
26287 var o = i.remove(e, !0, n || {}).catch(function(e) {
26289 }).finally(function() {
26290 b.splice(b.indexOf(o), 1)
26292 return b.push(o), i.deferred.promise.catch(t.noop)
26294 destroy: function(e) {
26295 var n = e ? null : y.shift(),
26296 i = t.element(e).length && t.element(e)[0].parentNode;
26298 var o = y.filter(function(e) {
26299 return e.options.element[0] === i
26301 o.length && (n = o[0], y.splice(y.indexOf(n), 1))
26303 return n ? n.remove(g, !1, {
26311 return r.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = r, e
26316 var e = !!document.querySelector("[md-layouts-disabled]");
26321 return k.enabled = !1, {
26328 return ["$timeout", function(n) {
26332 compile: function(r) {
26333 return k.enabled ? (r.addClass(e), function(t, r) {
26344 function n(t, n, r) {
26346 o = r.$observe(r.$normalize(e), i);
26347 i(f(e, r, "")), t.$on("$destroy", function() {
26351 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
26352 return m = r, g = i, v = o, {
26354 compile: function(r, i) {
26356 return k.enabled && (c(e, i, r, v), l(e, f(e, i, ""), u(r, e, i)), o = n), o || t.noop
26366 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
26367 return m = r, g = i, v = o, {
26369 compile: function(r, i) {
26371 return k.enabled && (l(e, f(e, i, ""), u(r, e, i)), n(0, r), o = n), o || t.noop
26379 return function(i) {
26380 var o = l(n, i || "");
26381 t.isDefined(o) && (r && e.removeClass(r), r = o ? n + "-" + o.trim().replace(y, "-") : n, e.addClass(r))
26386 var n = e.split("-");
26387 return ["$log", function(r) {
26388 return r.warn(e + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), t.noop
26392 function c(e, t, n, r) {
26393 var i, o, a, s = n[0].nodeName.toLowerCase();
26394 switch (e.replace(b, "")) {
26396 "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])))
26400 function l(e, n, r) {
26402 switch (e.replace(b, "")) {
26404 h(n, $) || (n = $[0]);
26407 h(n, _) || isNaN(n) && (n = "");
26409 case "flex-offset":
26411 n && !isNaN(+n) || (n = "0");
26413 case "layout-align":
26415 n = m.supplant("{main}-{cross}", i);
26417 case "layout-padding":
26418 case "layout-margin":
26419 case "layout-fill":
26420 case "layout-wrap":
26421 case "layout-nowrap":
26424 void 0 != n && (r || t.noop)(n)
26426 return n ? n.trim() : ""
26429 function u(e, t, n) {
26430 return function(e) {
26431 d(e) || (n[n.$normalize(t)] = e)
26436 return (e || "").indexOf(g.startSymbol()) > -1
26439 function f(e, t, n) {
26440 var r = t.$normalize(e);
26441 return t[r] ? t[r].trim().replace(y, "-") : n || null
26444 function h(e, t, n) {
26446 return (e = n && e ? e.replace(y, n) : e) && t.forEach(function(t) {
26447 t = n ? t.replace(y, n) : t, r = r || t === e
26456 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
26458 var m, g, v, b = /(-gt)?-(sm|md|lg|print)/g,
26460 _ = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
26461 $ = ["row", "column"],
26462 w = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
26463 E = ["", "start", "center", "end", "stretch"],
26470 return e.replace(d, "").replace(f, function(e, t, n, r) {
26471 return r ? n.toUpperCase() : n
26474 var d = /^((?:x|data)[:\-_])/i,
26475 f = /([:\-_]+(.))/g,
26476 h = ["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"],
26477 p = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
26478 m = ["show", "hide", "layout-padding", "layout-margin"];
26479 t.forEach(h, function(e) {
26480 t.forEach(p, function(t) {
26481 var n = e ? t + "-" + e : t;
26482 a.directive(u(n), i(n))
26483 }), t.forEach(m, function(t) {
26484 var n = e ? t + "-" + e : t;
26485 a.directive(u(n), o(n))
26487 }), a.provider("$$mdLayout", function() {
26490 validateAttributeValue: l,
26491 validateAttributeUsage: c,
26492 disableLayouts: function(e) {
26493 k.enabled = !0 !== e
26496 }).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)
26497 }(t.module("material.core.layout", ["ng"]))
26501 this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
26503 e.$inject = ["$timeout"], t.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
26504 t || (t = "polite");
26506 n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
26507 n._liveElement.textContent = e
26508 }, n._announceTimeout, !1)
26509 }, e.prototype._createLiveElement = function() {
26510 var e = document.createElement("div");
26511 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
26513 }(), t.module("material.core.meta", []).provider("$$mdMeta", function() {
26515 if (r[e]) return !0;
26516 var n = document.getElementsByName(e)[0];
26517 return !!n && (r[e] = t.element(n), !0)
26519 var n = t.element(document.head),
26522 setMeta: function(i, o) {
26523 if (e(i), r[i]) r[i].attr("content", o);
26525 var a = t.element('<meta name="' + i + '" content="' + o + '"/>');
26526 n.append(a), r[i] = a
26528 return function() {
26529 r[i].attr("content", ""), r[i].remove(), delete r[i]
26532 getMeta: function(t) {
26533 if (!e(t)) throw Error("$$mdMeta: could not find a meta tag with the name '" + t + "'");
26534 return r[t].attr("content")
26537 return t.extend({}, i, {
26546 return e && "" !== e
26551 notFoundError: function(t, n) {
26552 e.error((n || "") + "No instance found for handle", t)
26554 getInstances: function() {
26558 if (!i(e)) return null;
26560 for (t = 0, n = a.length; t < n; t++)
26561 if ((r = a[t]).$$mdHandle === e) return r;
26564 register: function(e, n) {
26565 return n ? (e.$$mdHandle = n, a.push(e), function() {
26567 t && (t.forEach(function(t) {
26571 var t = a.indexOf(e); - 1 !== t && a.splice(t, 1)
26574 when: function(e) {
26578 return a ? t.resolve(a) : (s[e] === n && (s[e] = []), s[e].push(t)), t.promise
26580 return r.reject("Invalid `md-component-id` value.")
26584 e.$inject = ["$log", "$q"], t.module("material.core").factory("$mdComponentRegistry", e)
26585 }(), t.module("material.core.theming.palette", []).constant("$mdColorPalette", {
26601 contrastDefaultColor: "light",
26602 contrastDarkColors: "50 100 200 300 A100",
26603 contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
26620 contrastDefaultColor: "light",
26621 contrastDarkColors: "50 100 200 A100",
26622 contrastStrongLightColors: "500 600 A200 A400 A700"
26639 contrastDefaultColor: "light",
26640 contrastDarkColors: "50 100 200 A100",
26641 contrastStrongLightColors: "300 400 A200 A400 A700"
26658 contrastDefaultColor: "light",
26659 contrastDarkColors: "50 100 200 A100",
26660 contrastStrongLightColors: "300 400 A200"
26677 contrastDefaultColor: "light",
26678 contrastDarkColors: "50 100 200 A100",
26679 contrastStrongLightColors: "300 400 A200 A400"
26696 contrastDefaultColor: "light",
26697 contrastDarkColors: "50 100 200 300 400 A100",
26698 contrastStrongLightColors: "500 600 700 A200 A400 A700"
26715 contrastDefaultColor: "dark",
26716 contrastLightColors: "600 700 800 900 A700",
26717 contrastStrongLightColors: "600 700 800 A700"
26734 contrastDefaultColor: "dark",
26735 contrastLightColors: "700 800 900",
26736 contrastStrongLightColors: "700 800 900"
26753 contrastDefaultColor: "dark",
26754 contrastLightColors: "500 600 700 800 900",
26755 contrastStrongLightColors: "500 600 700"
26772 contrastDefaultColor: "dark",
26773 contrastLightColors: "500 600 700 800 900",
26774 contrastStrongLightColors: "500 600 700"
26791 contrastDefaultColor: "dark",
26792 contrastLightColors: "700 800 900",
26793 contrastStrongLightColors: "700 800 900"
26810 contrastDefaultColor: "dark",
26811 contrastLightColors: "900",
26812 contrastStrongLightColors: "900"
26829 contrastDefaultColor: "dark"
26846 contrastDefaultColor: "dark"
26863 contrastDefaultColor: "dark",
26864 contrastLightColors: "800 900",
26865 contrastStrongLightColors: "800 900"
26882 contrastDefaultColor: "light",
26883 contrastDarkColors: "50 100 200 300 400 A100 A200",
26884 contrastStrongLightColors: "500 600 700 800 900 A400 A700"
26901 contrastDefaultColor: "light",
26902 contrastDarkColors: "50 100 200 A100 A200",
26903 contrastStrongLightColors: "300 400"
26920 contrastDefaultColor: "dark",
26921 contrastLightColors: "600 700 800 900 A200 A400 A700"
26938 contrastDefaultColor: "light",
26939 contrastDarkColors: "50 100 200 300 A100 A200",
26940 contrastStrongLightColors: "400 500 700"
26945 var t = !!document.querySelector("[md-themes-disabled]");
26946 e.disableTheming(t)
26951 var n = C.filter(function(e) {
26954 if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
26959 if (h[t]) return h[t];
26960 var r = "string" == typeof(n = n || "default") ? h[n] : n,
26962 return r && e.forEach(r.colors, function(t, n) {
26965 hues: e.extend({}, t.hues)
26972 if ((t = 0 === arguments.length || !!t) !== r.isDark) {
26973 r.isDark = t, r.foregroundPalette = r.isDark ? m : p, r.foregroundShadow = r.isDark ? g : v;
26974 var n = r.isDark ? k : E,
26975 i = r.isDark ? E : k;
26976 return e.forEach(n, function(e, t) {
26977 var n = r.colors[t],
26980 for (var a in n.hues) n.hues[a] === o[a] && (n.hues[a] = e[a])
26985 r.name = t, r.colors = {}, r.dark = n, n(!1), $.forEach(function(t) {
26986 var n = (r.isDark ? k : E)[t];
26987 r[t + "Palette"] = function(i, o) {
26988 var a = r.colors[t] = {
26990 hues: e.extend({}, n, o)
26992 return Object.keys(a.hues).forEach(function(e) {
26993 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(", ")))
26994 }), Object.keys(a.hues).map(function(e) {
26996 }).forEach(function(e) {
26997 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(", ")))
26999 }, r[t + "Color"] = function() {
27000 var e = Array.prototype.slice.call(arguments);
27001 return console.warn("$mdThemingProviderTheme." + t + "Color() has been deprecated. Use $mdThemingProviderTheme." + t + "Palette() instead."), r[t + "Palette"].apply(r, e)
27006 function l(t, r, i, a) {
27008 return e === n || "" === e || l.THEMES[e] !== n
27010 var l = function(e, r) {
27011 r === n && (r = e, e = n), e === n && (e = t), l.inherit(r, r)
27013 return Object.defineProperty(l, "THEMES", {
27015 return e.extend({}, h)
27017 }), Object.defineProperty(l, "PALETTES", {
27019 return e.extend({}, f)
27021 }), Object.defineProperty(l, "ALWAYS_WATCH", {
27025 }), l.inherit = function(e, t) {
27028 s(t) || a.warn("Attempted to use unregistered theme '" + t + "'. Register it with $mdThemingProvider.theme().");
27029 var n = e.data("$mdThemeName");
27030 n && e.removeClass("md-" + n + "-theme"), e.addClass("md-" + t + "-theme"), e.data("$mdThemeName", t), i && e.data("$mdThemeController", i)
27033 var i = t.controller("mdTheme") || e.data("$mdThemeController");
27034 if (n(i && i.$mdTheme || ("default" == y ? "" : y)), i) var o = b || i.$shouldWatch || r.parseAttributeBoolean(e.attr("md-theme-watch")),
27035 c = i.registerChanges(function(t) {
27036 n(t), o ? e.on("$destroy", c) : c()
27038 }, l.registered = s, l.defaultTheme = function() {
27040 }, l.generateTheme = function(e) {
27041 c(h[e], e, x.nonce)
27042 }, l.defineTheme = function(e, t) {
27045 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)
27046 }, l.setBrowserColor = w, l
27048 l.$inject = ["$rootScope", "$mdUtil", "$q", "$log"], f = {};
27053 var _ = function(e) {
27054 var t = r.setMeta("theme-color", e),
27055 n = r.setMeta("msapplication-navbutton-color", e);
27056 return function() {
27061 var n = (t = e.isObject(t) ? t : {}).theme || "default",
27062 r = t.hue || "800",
27063 i = f[t.palette] || f[h[n].colors[t.palette || "primary"].name],
27064 o = e.isObject(i[r]) ? i[r].hex : i[r];
27068 definePalette: function(e, t) {
27069 return t = t || {}, f[e] = i(e, t), u
27071 extendPalette: function(t, n) {
27072 return i(t, e.extend({}, f[t] || {}, n))
27075 configuration: function() {
27076 return e.extend({}, x, {
27078 alwaysWatchTheme: b,
27079 registeredStyles: [].concat(x.registeredStyles)
27082 disableTheming: function(t) {
27083 x.disableTheming = e.isUndefined(t) || !!t
27085 registerStyles: function(e) {
27086 x.registeredStyles.push(e)
27088 setNonce: function(e) {
27091 generateThemesOnDemand: function(e) {
27092 x.generateOnDemand = e
27094 setDefaultTheme: function(e) {
27097 alwaysWatchTheme: function(e) {
27100 enableBrowserColor: w,
27102 _LIGHT_DEFAULT_HUES: E,
27103 _DARK_DEFAULT_HUES: k,
27111 function i(t, n, r, i, o, a) {
27115 pre: function(s, c, l) {
27117 d = n.startSymbol(),
27119 h = l.mdTheme.trim(),
27120 p = h.substr(0, d.length) === d && h.lastIndexOf(f) === h.length - f.length,
27121 m = "::" === l.mdTheme.split(d).join("").split(f).join("").trim().substr(0, "::".length),
27123 registerChanges: function(t, n) {
27124 return n && (t = e.bind(n, t)), u.push(t),
27126 var e = u.indexOf(t);
27127 e > -1 && u.splice(e, 1)
27130 $setTheme: function(e) {
27131 t.registered(e) || a.warn("attempted to use unregistered theme '" + e + "'"), g.$mdTheme = e;
27132 for (var n = u.length; n--;) u[n](e)
27134 $shouldWatch: i.parseAttributeBoolean(c.attr("md-theme-watch")) || t.ALWAYS_WATCH || p && !m
27136 c.data("$mdThemeController", g);
27137 var v = function() {
27138 var e = n(l.mdTheme)(s);
27139 return r(e)(s) || e
27142 if ("string" == typeof t) return g.$setTheme(t);
27143 o.when(e.isFunction(t) ? t() : t).then(function(e) {
27148 var y = s.$watch(v, function(e) {
27149 e && (b(e), g.$shouldWatch || y())
27160 function a(t, n, r) {
27161 l(t, n), r = r.replace(/THEME_NAME/g, t.name);
27162 var i = new RegExp("\\.md-" + t.name + "-theme", "g"),
27163 o = /'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g;
27164 r = r.replace(o, function(e, n, r, i, o) {
27165 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))
27167 var a = new RegExp("('|\")?{{\\s*([a-zA-Z]+)-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
27169 return e.forEach(["default", "hue-1", "hue-2", "hue-3"], function(e) {
27170 var n = r.replace(a, function(n, r, i, o, a) {
27171 var s = t.colors[i];
27172 return d(f[s.name][s.hues[e]]["color" === o ? "value" : "contrast"], a)
27174 if ("default" !== e && (n = n.replace(i, ".md-" + t.name + "-theme.md-" + e)), "default" == t.name) {
27175 var o = /((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g;
27176 n = n.replace(o, function(e, t, n) {
27177 return e + ", " + t + n
27185 var r = document.head,
27186 i = r ? r.firstElementChild : null,
27187 o = !x.disableTheming && t.has("$MD_THEME_CSS") ? t.get("$MD_THEME_CSS") : "";
27188 if (o += x.registeredStyles.join(""), i && 0 !== o.length) {
27189 e.forEach(f, function(t, n) {
27190 var r = t.contrastDefaultColor,
27191 i = t.contrastLightColors || [],
27192 o = t.contrastStrongLightColors || [],
27193 a = t.contrastDarkColors || [];
27194 "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) {
27195 if (!e.isObject(n)) {
27197 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));
27201 contrast: "light" === r ? a.indexOf(s) > -1 ? b : o.indexOf(s) > -1 ? _ : y : i.indexOf(s) > -1 ? o.indexOf(s) > -1 ? _ : y : b
27206 var a = o.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
27207 return e && e.trim().length
27208 }).map(function(e) {
27209 return e.trim() + "}"
27211 $.forEach(function(e) {
27213 }), a.forEach(function(e) {
27214 for (var t, n = 0; t = $[n]; n++)
27215 if (e.indexOf(".md-" + t) > -1) return T[t] += e;
27216 for (n = 0; t = $[n]; n++)
27217 if (e.indexOf(t) > -1) return T[t] += e;
27219 }), x.generateOnDemand || e.forEach(n.THEMES, function(e) {
27220 h[e.name] || "default" !== n.defaultTheme() && "default" === e.name || c(e, e.name, x.nonce)
27225 function c(e, t, n) {
27226 var r = document.head,
27227 i = r ? r.firstElementChild : null;
27228 h[t] || ($.forEach(function(t) {
27229 for (var o = a(e, t, T[t]); o.length;) {
27232 var c = document.createElement("style");
27233 c.setAttribute("md-theme-style", ""), n && c.setAttribute("nonce", n), c.appendChild(document.createTextNode(s)), r.insertBefore(c, i)
27236 }), h[e.name] = !0)
27240 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(", ")))
27244 if (e.isArray(t) && 3 == t.length) return t;
27245 if (/^rgb/.test(t)) return t.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
27246 return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
27248 if ("#" == t.charAt(0) && (t = t.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(t)) {
27249 var n = t.length / 3,
27250 r = t.substr(0, n),
27251 i = t.substr(n, n),
27252 o = t.substr(2 * n);
27253 return 1 === n && (r += r, i += i, o += o), [parseInt(r, 16), parseInt(i, 16), parseInt(o, 16)]
27258 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')"
27260 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() {
27261 return x.disableTheming = !0, {
27265 }).provider("$mdTheming", r).config(t).run(s);
27269 1: "rgba(0,0,0,0.87)",
27270 2: "rgba(0,0,0,0.54)",
27271 3: "rgba(0,0,0,0.38)",
27272 4: "rgba(0,0,0,0.12)"
27276 1: "rgba(255,255,255,1.0)",
27277 2: "rgba(255,255,255,0.7)",
27278 3: "rgba(255,255,255,0.5)",
27279 4: "rgba(255,255,255,0.12)"
27281 g = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
27283 b = u("rgba(0,0,0,0.87)"),
27284 y = u("rgba(255,255,255,0.87)"),
27285 _ = u("rgb(255,255,255)"),
27286 $ = ["primary", "accent", "warn", "background"],
27310 $.forEach(function(e) {
27317 E[e] || (E[e] = t), k[e] || (k[e] = t)
27319 var C = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
27321 disableTheming: !1,
27322 generateOnDemand: !1,
27323 registeredStyles: [],
27331 return e.hasClass("md-icon-button") ? {
27332 isMenuItem: e.hasClass("md-menu-item"),
27336 isMenuItem: e.hasClass("md-menu-item"),
27341 attach: function(r, i, o) {
27342 return o = t.extend(n(i), o), e.attach(r, i, o)
27346 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdButtonInkRipple", e)
27351 attach: function(n, r, i) {
27352 return e.attach(n, r, t.extend({
27360 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdCheckboxInkRipple", e)
27365 attach: function(n, r, i) {
27366 return e.attach(n, r, t.extend({
27375 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdListInkRipple", e)
27380 controller: t.noop,
27381 link: function(t, r, i) {
27382 i.hasOwnProperty("mdInkRippleCheckbox") ? n.attach(t, r) : e.attach(t, r)
27387 function n(e, n, r, i, o, a, s) {
27388 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()
27392 (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(t.bind(e, n), !1))
27400 n.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], t.module("material.core").provider("$mdInkRipple", function() {
27403 disableInkRipple: function() {
27406 $get: ["$injector", function(r) {
27408 attach: function(i, o, a) {
27409 return e || o.controller("mdNoInk") ? t.noop : r.instantiate(n, {
27418 }).directive("mdInkRipple", e).directive("mdNoInk", i).directive("mdNoBar", i).directive("mdNoStretch", i);
27419 n.prototype.color = function(e) {
27421 return t.isDefined(e) && (n._color = n._parseColor(e)), n._color || n._parseColor(n.inkRipple()) || n._parseColor(function() {
27422 var e = n.options && n.options.colorElement ? n.options.colorElement : [],
27423 t = e.length ? e[0] : n.$element[0];
27424 return t ? n.$window.getComputedStyle(t).color : "rgb(0,0,0)"
27426 }, n.prototype.calculateColor = function() {
27427 return this.color()
27428 }, n.prototype._parseColor = function(e, t) {
27430 var n = this.$mdColorUtil;
27431 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
27432 }, n.prototype.bindEvents = function() {
27433 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))
27434 }, n.prototype.handleMousedown = function(e) {
27435 if (!this.mousedown)
27436 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);
27437 else if (e.srcElement !== this.$element[0]) {
27438 var t = this.$element[0].getBoundingClientRect(),
27439 n = e.clientX - t.left,
27440 r = e.clientY - t.top;
27441 this.createRipple(n, r)
27442 } else this.createRipple(e.offsetX, e.offsetY)
27443 }, n.prototype.handleMouseup = function() {
27444 r(this, this.clearRipples)
27445 }, n.prototype.handleTouchmove = function() {
27446 r(this, this.deleteRipples)
27447 }, n.prototype.deleteRipples = function() {
27448 for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
27449 }, n.prototype.clearRipples = function() {
27450 for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
27451 }, n.prototype.createContainer = function() {
27452 var e = t.element('<div class="md-ripple-container"></div>');
27453 return this.$element.append(e), e
27454 }, n.prototype.clearTimeout = function() {
27455 this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
27456 }, n.prototype.isRippleAllowed = function() {
27457 var e = this.$element[0];
27459 if (!e.tagName || "BODY" === e.tagName) break;
27460 if (e && t.isFunction(e.hasAttribute)) {
27461 if (e.hasAttribute("disabled")) return !1;
27462 if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
27464 } while (e = e.parentNode);
27466 }, n.prototype.inkRipple = function() {
27467 return this.$element.attr("md-ink-ripple")
27468 }, n.prototype.createRipple = function(e, n) {
27469 if (this.isRippleAllowed()) {
27471 i = r.$mdColorUtil,
27472 o = t.element('<div class="md-ripple"></div>'),
27473 a = this.$element.prop("clientWidth"),
27474 s = this.$element.prop("clientHeight"),
27475 c = 2 * Math.max(Math.abs(a - e), e),
27476 l = 2 * Math.max(Math.abs(s - n), n),
27477 u = function(e, t, n) {
27478 return e ? Math.max(t, n) : Math.sqrt(Math.pow(t, 2) + Math.pow(n, 2))
27479 }(this.options.fitRipple, c, l),
27480 d = this.calculateColor();
27484 background: "black",
27487 backgroundColor: i.rgbaToRgb(d),
27488 borderColor: i.rgbaToRgb(d)
27489 }), this.lastRipple = o, this.clearTimeout(), this.timeout = this.$timeout(function() {
27490 r.clearTimeout(), r.mousedown || r.fadeInComplete(o)
27491 }, 157.5, !1), this.options.dimBackground && this.container.css({
27493 }), this.container.append(o), this.ripples.push(o), o.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
27494 o.addClass("md-ripple-scaled md-ripple-active"), r.$timeout(function() {
27499 }, n.prototype.fadeInComplete = function(e) {
27500 this.lastRipple === e ? this.timeout || this.mousedown || this.removeRipple(e) : this.removeRipple(e)
27501 }, n.prototype.removeRipple = function(e) {
27503 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({
27504 backgroundColor: ""
27505 }), this.$timeout(function() {
27506 t.fadeOutComplete(e)
27508 }, n.prototype.fadeOutComplete = function(e) {
27509 e.remove(), this.lastRipple = null
27515 attach: function(n, r, i) {
27516 return e.attach(n, r, t.extend({
27525 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdTabInkRipple", e)
27528 function n(n, r, i, o, a) {
27531 translate3d: function(e, t, n, r) {
27535 addClass: r.transitionOutClass,
27536 removeClass: r.transitionInClass,
27537 duration: r.duration
27543 addClass: r.transitionInClass,
27544 removeClass: r.transitionOutClass,
27545 duration: r.duration
27546 }).start().then(function() {
27550 waitTransitionEnd: function(t, n) {
27552 return r(function(r, s) {
27554 e && e.target !== t[0] || (e && i.cancel(l), t.off(o.CSS.TRANSITIONEND, c), r())
27556 return "0s" == (n = n || e.getComputedStyle(t[0])).transitionDuration || !n.transition && !n.transitionProperty
27557 })((n = n || {}).cachedTransitionStyles) && (a = 0);
27558 var l = i(c, n.timeout || a);
27559 t.on(o.CSS.TRANSITIONEND, c)
27562 calculateTransformValues: function(e, t) {
27566 var i = n ? s.clientRect(n) || function() {
27567 var t = e ? e.parent() : null,
27568 n = t ? t.parent() : null;
27569 return n ? s.clientRect(n) : null
27570 }() : s.copyRect(r),
27571 o = s.copyRect(e[0].getBoundingClientRect()),
27572 a = s.centerPointFor(o),
27573 c = s.centerPointFor(i);
27575 centerX: c.x - a.x,
27576 centerY: c.y - a.y,
27577 scaleX: Math.round(100 * Math.min(.5, i.width / o.width)) / 100,
27578 scaleY: Math.round(100 * Math.min(.5, i.height / o.height)) / 100
27588 calculateZoomToOrigin: function(e, r) {
27589 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )")(s.calculateTransformValues(e, r))
27591 calculateSlideToOrigin: function(e, r) {
27592 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 )")(s.calculateTransformValues(e, r))
27594 toCss: function(e) {
27595 function n(e, n, i) {
27596 t.forEach(n.split(" "), function(e) {
27601 return t.forEach(e, function(e, i) {
27602 if (!t.isUndefined(e))
27603 if ("left top right bottom width height x y min-width min-height max-width max-height".indexOf(i) >= 0) r[i] = e + "px";
27606 n(0, o.CSS.TRANSITION, e);
27609 n(0, o.CSS.TRANSFORM, e);
27611 case "transformOrigin":
27612 n(0, o.CSS.TRANSFORM_ORIGIN, e);
27619 toTransformCss: function(e, n, r) {
27621 return t.forEach(o.CSS.TRANSFORM.split(" "), function(t) {
27623 }), n && (r = r || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", i.transition = r), i
27625 copyRect: function(e, n) {
27626 return e ? (n = n || {}, t.forEach("left top right bottom width height".split(" "), function(t) {
27627 n[t] = Math.round(e[t])
27628 }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
27630 clientRect: function(e) {
27631 var n = t.element(e)[0].getBoundingClientRect();
27632 return function(e) {
27633 return e && e.width > 0 && e.height > 0
27634 }(n) ? s.copyRect(n) : null
27636 centerPointFor: function(e) {
27638 x: Math.round(e.left + e.width / 2),
27639 y: Math.round(e.top + e.height / 2)
27647 t.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(e, t, r, i) {
27648 return function(o) {
27649 return n(o, e, t, r, i)
27652 }(), t.version.minor >= 4 ? t.module("material.core.animate", []) : function() {
27654 return e.replace(/-[a-z]/g, function(e) {
27655 return e.charAt(1).toUpperCase()
27659 r = t.isDefined(document.documentElement.style.WebkitAppearance),
27660 i = r ? "-webkit-" : "",
27661 o = (r ? "webkitTransitionEnd " : "") + "transitionend",
27662 a = (r ? "webkitAnimationEnd " : "") + "animationend",
27663 s = ["$document", function(e) {
27664 return function() {
27665 return e[0].body.clientWidth + 1
27668 c = ["$$rAF", function(e) {
27669 return function() {
27671 return e(function() {
27679 l = ["$q", "$$rAFMutex", function(e, r) {
27681 this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = r(), this._state = 0
27683 return i.prototype = {
27684 setHost: function(e) {
27685 this.host = e || {}
27687 done: function(e) {
27688 2 === this._state ? e() : this._doneCallbacks.push(e)
27691 getPromise: function() {
27692 if (!this.promise) {
27694 this.promise = e(function(e, n) {
27695 t.done(function(t) {
27696 !1 === t ? n() : e()
27700 return this.promise
27702 then: function(e, t) {
27703 return this.getPromise().then(e, t)
27705 catch: function(e) {
27706 return this.getPromise().catch(e)
27708 finally: function(e) {
27709 return this.getPromise().finally(e)
27711 pause: function() {
27712 this.host.pause && this.host.pause()
27714 resume: function() {
27715 this.host.resume && this.host.resume()
27718 this.host.end && this.host.end(), this._resolve(!0)
27720 cancel: function() {
27721 this.host.cancel && this.host.cancel(), this._resolve(!1)
27723 complete: function(e) {
27725 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
27729 _resolve: function(e) {
27730 2 !== this._state && (n(this._doneCallbacks, function(t) {
27732 }), this._doneCallbacks.length = 0, this._state = 2)
27734 }, i.all = function(e, t) {
27736 o = o && n, ++i === e.length && t(o)
27745 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) {
27747 t.addClass && (u.addClass(e, t.addClass), t.addClass = null), t.removeClass && (u.removeClass(e, t.removeClass), t.removeClass = null)
27752 return r ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
27755 o = t.getComputedStyle(i),
27756 a = m(o[n("transitionDuration")]),
27757 s = m(o[n("animationDuration")]),
27758 c = m(o[n("transitionDelay")]),
27759 l = m(o[n("animationDelay")]);
27760 return s *= parseInt(o[n("animationIterationCount")], 10) || 1, {
27761 duration: Math.max(s, a),
27762 delay: Math.max(l, c),
27763 animationDuration: s,
27764 transitionDuration: a,
27772 r = (e || "").split(/\s*,\s*/);
27773 return n(r, function(e) {
27774 "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
27779 w && w(), E.push(e), w = s(function() {
27781 for (var e = l(), t = 0; t < E.length; t++) E[t](e);
27791 t.from && (e.css(t.from), t.from = null)
27795 t.to && (e.css(t.to), t.to = null)
27799 for (var t = 0; t < e.length; t++)
27800 if (1 === e[t].nodeType) return e[t]
27805 o = e(i + "transition-delay");
27806 r.style[o] = n ? "-9999s" : ""
27809 return function(r, s) {
27812 m = u && f.enabled(),
27815 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));
27816 var k = m && (w || E);
27821 start: function() {
27823 if (!T) return T = !0, C && x && r.off(C, x), h(r, s), v(r, s), n(l, function(t) {
27824 u.style[e(t[0])] = ""
27825 }), f.complete(!0), f
27828 return g(function() {
27829 if ($(r, !1), !k) return t();
27836 if (0 === c.duration) return t();
27838 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) {
27841 u.style[e(n)] = r, l.push(t)
27843 var m = 1e3 * c.delay,
27847 C = [], c.transitionDuration && C.push(o), c.animationDuration && C.push(a), C = C.join(" "), x = function(e) {
27848 e.stopPropagation();
27849 var n = e.originalEvent || e,
27850 r = n.timeStamp || Date.now(),
27851 i = parseFloat(n.elapsedTime.toFixed(3));
27852 Math.max(r - b, 0) >= m && i >= g && t()
27853 }, r.on(C, x), y(r, s), d(t, m + 1.5 * v, !1)
27859 }(), t.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
27864 link: function(t, n) {
27865 n.addClass("_md"), t.$on("$destroy", function() {
27873 function n(e, n, o, a, s, c, l, u) {
27876 e.css(n.CSS.TRANSITION_DURATION, "0ms")
27880 var r = t.pointer.distanceY;
27881 r < 5 && (r = Math.max(-i, r / 2)), e.css(n.CSS.TRANSFORM, "translate3d(0," + (i + r) + "px,0)")
27885 if (t.pointer.distanceY > 0 && (t.pointer.distanceY > 20 || Math.abs(t.pointer.velocityY) > r)) {
27886 var i = e.prop("offsetHeight") - t.pointer.distanceY,
27887 a = Math.min(i / t.pointer.velocityY * .75, 500);
27888 e.css(n.CSS.TRANSITION_DURATION, a + "ms"), o.nextTick(s.cancel, !0)
27889 } else e.css(n.CSS.TRANSITION_DURATION, ""), e.css(n.CSS.TRANSFORM, "")
27891 var d = l.register(t, "drag", {
27894 return t.on("$md.dragstart", a).on("$md.drag", c).on("$md.dragend", u), {
27896 cleanup: function() {
27897 d(), t.off("$md.dragstart", a), t.off("$md.drag", c), t.off("$md.dragend", u)
27904 onShow: function(r, i, l, h) {
27905 (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]);
27906 l.disableBackdrop || ((f = o.createBackdrop(r, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, l.clickOutsideToClose && f.on("click", function() {
27907 o.nextTick(s.cancel, !0)
27908 }), a.inherit(f, l.parent), e.enter(f, l.parent, null));
27909 var p = new d(i, l.parent);
27910 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() {
27911 var e = o.findFocusTarget(i) || t.element(i[0].querySelector("button") || i[0].querySelector("a") || i[0].querySelector(o.prefixer("ng-click", !0))) || f;
27912 l.escapeToClose && (l.rootElementKeyupCallback = function(e) {
27913 e.keyCode === n.KEY_CODE.ESCAPE && o.nextTick(s.cancel, !0)
27914 }, c.on("keyup", l.rootElementKeyupCallback), e && e.focus())
27917 onRemove: function(t, n, r) {
27918 var i = r.bottomSheet;
27919 return r.disableBackdrop || e.leave(f), e.leave(i.element).then(function() {
27920 r.disableParentScroll && (r.restoreScroll(), delete r.restoreScroll), i.cleanup()
27923 disableBackdrop: !1,
27925 clickOutsideToClose: !0,
27926 disableParentScroll: !0
27929 n.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
27932 return e("$mdBottomSheet").setDefaults({
27933 methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
27937 e.$inject = ["$mdBottomSheet"], n.$inject = ["$$interimElementProvider"], t.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", n)
27938 }(), 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) {
27939 var l = "<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";
27942 link: function(u, d, f) {
27944 var e = parseInt(p.height, 10) + Math.abs(parseInt(p.top, 10));
27945 d.css("height", e + "px")
27947 r.pin && r.pin(d, i);
27950 if ("fixed" === (p = o.getComputedStyle(c[0].body)).position) {
27951 var r = n.debounce(function() {
27952 p = o.getComputedStyle(c[0].body), h()
27954 h(), t.element(o).on("resize", r), u.$on("$destroy", function() {
27955 t.element(o).off("resize", r)
27958 var i = d.parent();
27959 i.length && ("BODY" === i[0].nodeName && d.css("position", "fixed"), "static" === o.getComputedStyle(i[0]).position && a.warn(l), e.inherit(d, i))
27968 link: function(t, n) {
27974 function n(e, n, r, i) {
27976 return t.isDefined(e.href) || t.isDefined(e.ngHref) || t.isDefined(e.ngLink) || t.isDefined(e.uiSref)
27982 template: function(e, t) {
27983 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>'
27985 link: function(a, s, c) {
27986 n(s), e.attach(a, s), r.expectWithoutText(s, "aria-label"), o(c) && t.isDefined(c.ngDisabled) && a.$watch(c.ngDisabled, function(e) {
27987 s.attr("tabindex", e ? -1 : 0)
27988 }), s.on("click", function(e) {
27989 !0 === c.disabled && (e.preventDefault(), e.stopImmediatePropagation())
27990 }), s.hasClass("md-no-focus") || (s.on("focus", function() {
27991 i.isUserInvoked() && "keyboard" !== i.getLastInteractionType() || s.addClass("md-focused")
27992 }), s.on("blur", function() {
27993 s.removeClass("md-focused")
27998 n.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], t.module("material.components.button", ["material.core"]).directive("mdButton", n).directive("a", e)
28004 link: function(t, n, r) {
28005 n.addClass("_md"), e(n)
28009 e.$inject = ["$mdTheming"], t.module("material.components.card", ["material.core"]).directive("mdCard", e)
28012 function e(e, n, r, i, o, a) {
28016 require: ["^?mdInputContainer", "?ngModel", "?^form"],
28017 priority: r.BEFORE_NG_ARIA,
28018 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>',
28019 compile: function(s, c) {
28020 return c.$set("tabindex", c.tabindex || "0"), c.$set("type", "checkbox"), c.$set("role", c.type), {
28021 pre: function(e, t) {
28022 t.on("click", function(e) {
28023 this.hasAttribute("disabled") && e.stopImmediatePropagation()
28026 post: function(s, c, l, u) {
28028 c[0].hasAttribute("disabled") || s.skipToggle || s.$apply(function() {
28029 var t = l.ngChecked && l.ngClick ? l.checked : !m.$viewValue;
28030 m.$setViewValue(t, e && e.type), m.$render()
28035 (h = !1 !== e) && c.attr("aria-checked", "mixed"), c.toggleClass("md-indeterminate", h)
28038 m = u[1] || o.fakeNgModel(),
28041 var v = p.isErrorGetter || function() {
28042 return m.$invalid && (m.$touched || g && g.$submitted)
28044 p.input = c, s.$watch(v, p.setInvalid)
28046 i(c), c.children().on("focus", function() {
28048 }), o.parseAttributeBoolean(l.mdIndeterminate) && (f(), s.$watch(l.mdIndeterminate, f)), l.ngChecked && s.$watch(s.$eval.bind(s, l.ngChecked), function(e) {
28049 m.$setViewValue(e), m.$render()
28051 function(e, t, n) {
28052 l[e] && s.$watch(l[e], function(e) {
28053 n[e] && c.attr(t, n[e])
28055 }("ngDisabled", "tabindex", {
28058 }), n.expectWithText(c, "aria-label"), e.link.pre(s, {
28061 }, l, [m]), c.on("click", d).on("keypress", function(e) {
28062 var t = e.which || e.keyCode;
28063 t !== r.KEY_CODE.SPACE && t !== r.KEY_CODE.ENTER || (e.preventDefault(), c.addClass("md-focused"), d(e))
28064 }).on("focus", function() {
28065 "keyboard" === a.getLastInteractionType() && c.addClass("md-focused")
28066 }).on("blur", function() {
28067 c.removeClass("md-focused")
28068 }), m.$render = function() {
28069 c.toggleClass("md-checked", !!m.$viewValue && !h)
28076 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], t.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
28077 }(), t.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
28079 function e(e, n, r) {
28082 var i = e.PALETTES[t.palette][t.hue];
28083 return i = r ? i.contrast : i.value, n.supplant("rgba({0}, {1}, {2}, {3})", [i[0], i[1], i[2], i[3] || t.opacity])
28088 r = e.hasOwnProperty("color");
28089 return t.forEach(e, function(e, t) {
28091 a = t.indexOf("background") > -1;
28092 n[t] = o(i), a && !r && (n.color = o(i, !0))
28097 var r = n.split("-"),
28098 i = t.isDefined(e.THEMES[r[0]]) ? r.splice(0, 1)[0] : e.defaultTheme();
28108 var o = t.length > 1 && -1 !== i.indexOf(t[1]),
28109 a = t[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
28110 if (o && (a = t[0] + "-" + t.splice(1, 1)), -1 === i.indexOf(a)) {
28111 var s = e.THEMES[r].colors[a];
28112 if (!s) throw new Error(n.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
28121 var i = e.THEMES[r].colors;
28122 if ("hue" === t[1]) {
28123 var o = parseInt(t.splice(2, 1)[0], 10);
28124 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'", {
28127 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}'", {
28128 availableThemes: Object.keys(i).join(", "),
28131 return i[t[0]].hues[t[1]]
28133 return t[1] || i[t[0] in i ? t[0] : "primary"].hues.default
28135 return i = i || Object.keys(e.PALETTES), {
28136 applyThemeColors: function(e, t) {
28143 getThemeColor: function(e) {
28146 hasTheme: function(n) {
28147 return t.isDefined(e.THEMES[n.split("-")[0]])
28152 function n(e, n, i, o) {
28155 require: ["^?mdTheme"],
28156 compile: function(a, s) {
28157 var c = function() {
28158 var e = s.mdColors,
28159 i = e.indexOf("::") > -1,
28160 o = !!i || r.test(s.mdColors);
28161 s.mdColors = e.replace("::", "");
28162 var a = t.isDefined(s.mdColorsWatch);
28163 return !i && !o && (!a || n.parseAttributeBoolean(s.mdColorsWatch))
28165 return function(n, r, a, s) {
28169 "string" != typeof t && (t = ""), a.mdColors || (a.mdColors = "{}");
28170 var r = o(a.mdColors)(n);
28171 return l && Object.keys(r).forEach(function(n) {
28173 e.hasTheme(i) || (r[n] = (t || l.$mdTheme) + "-" + i)
28177 if (!t.equals(e, u)) {
28178 var n = Object.keys(u);
28179 u.background && !n.color && n.push("color"), n.forEach(function(e) {
28186 l && (h = l.registerChanges(function(t) {
28187 e.applyThemeColors(r, d(t))
28188 })), n.$on("$destroy", function() {
28192 c ? n.$watch(d, t.bind(this, e.applyThemeColors, r), !0) : e.applyThemeColors(r, d())
28200 n.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
28201 var r = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
28203 t.module("material.components.colors", ["material.core"]).directive("mdColors", n).service("$mdColors", e)
28209 controller: ["$scope", "$element", function(e, t) {
28210 this.$scope = e, this.$element = t
28212 link: function(t, r) {
28213 r.addClass("_md"), e(r), t.$broadcast("$mdContentLoaded", r), n(r[0])
28219 t.element(e).on("$md.pressdown", function(t) {
28220 "t" === t.pointer.type && (t.$materialScrollFixed || (t.$materialScrollFixed = !0, 0 === e.scrollTop ? e.scrollTop = 1 : e.scrollHeight === e.scrollTop + e.offsetHeight && (e.scrollTop -= 1)))
28223 e.$inject = ["$mdTheming"], t.module("material.components.content", ["material.core"]).directive("mdContent", e)
28224 }(), t.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
28226 function e(e, n, r) {
28229 link: function(i, o) {
28230 o.addClass("_md"), n(o), e(function() {
28232 o.toggleClass("md-content-overflow", a.scrollHeight > a.clientHeight)
28234 var n, a = o[0].querySelector("md-dialog-content");
28235 a && (n = a.getElementsByTagName("img"), e(), t.element(n).on("load", e)), i.$on("$destroy", function() {
28246 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, ""),
28248 controllerAs: "dialog",
28249 bindToController: !0
28254 this.$onInit = function() {
28255 var n = "prompt" == this.$type;
28256 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
28257 e.hide(!n || this.result)
28258 }, this.abort = function() {
28260 }, this.keypress = function(n) {
28261 n.keyCode === t.KEY_CODE.ENTER && e.hide(this.result)
28266 function o(e, r, i, o, c, l, u, d, f, h, p, m, g) {
28269 e.targetEvent && e.targetEvent.target && (n = t.element(e.targetEvent.target));
28270 var r = n && n.controller("mdTheme");
28272 e.themeWatch = r.$shouldWatch;
28273 var i = e.theme || r.$mdTheme;
28274 i && (e.scope.theme = i);
28275 var o = r.registerChanges(function(t) {
28276 e.scope.theme = t, e.themeWatch || o()
28283 var i = t.element(e || {});
28284 if (i && i.length) {
28291 a = t.isFunction(i[0].getBoundingClientRect);
28292 return t.extend(r || {}, {
28293 element: a ? i : n,
28294 bounds: a ? i[0].getBoundingClientRect() : t.extend({}, o, i[0]),
28295 focus: t.bind(i, i.focus)
28301 return t.isString(e) && (e = l[0].querySelector(e)), t.element(e || n)
28303 e.origin = t.extend({
28307 }, 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())
28311 var a = t.element(u),
28312 s = i.debounce(function() {
28317 var t = "alert" == r.$type ? e.hide : e.cancel;
28320 if (r.escapeToClose) {
28323 e.keyCode === o.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), l())
28325 n.on("keydown", f), d.on("keydown", f), c.push(function() {
28326 n.off("keydown", f), d.off("keydown", f)
28329 if (a.on("resize", s), c.push(function() {
28331 }), r.clickOutsideToClose) {
28337 h === p[0] && e.target === p[0] && (e.stopPropagation(), e.preventDefault(), l())
28339 p.on("mousedown", m), p.on("mouseup", g), c.push(function() {
28340 p.off("mousedown", m), p.off("mouseup", g)
28343 r.deactivateListeners = function() {
28344 c.forEach(function(e) {
28346 }), r.deactivateListeners = null
28350 function _(e, t, n) {
28351 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) {
28352 n.backdrop && (e ? n.backdrop.remove() : c.leave(n.backdrop)), n.disableParentScroll && (n.restoreScroll && n.restoreScroll(), delete n.restoreScroll), n.hideBackdrop = null
28357 var n = "alert" === t.$type ? "alertdialog" : "dialog",
28358 o = e.find("md-dialog-content"),
28360 l = "dialogContent_" + (c || i.nextUid());
28364 }), 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() {
28365 if (t.title) return t.title;
28366 var e = o.text().split(/\s+/);
28367 return e.length > 3 && (e = e.slice(0, 3).concat("...")), e.join(" ")
28368 }), (a = document.createElement("div")).classList.add("md-dialog-focus-trap"), a.tabIndex = 0, s = a.cloneNode(!1);
28369 var u = function() {
28372 a.addEventListener("focus", u), s.addEventListener("focus", u), e[0].parentNode.insertBefore(a, e[0]), e.after(s)
28377 for (; e.parentNode;) {
28378 if (e === document.body) return;
28379 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);
28380 n(e = e.parentNode)
28384 n(e[0]), t.unlockScreenReader = function() {
28385 r = !1, n(e[0]), t.unlockScreenReader = null
28390 var n = "fixed" == u.getComputedStyle(l[0].body).position,
28391 r = t.backdrop ? u.getComputedStyle(t.backdrop[0]) : null,
28392 i = r ? Math.min(l[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
28395 height: e.css("height")
28397 a = Math.abs(t.parent[0].getBoundingClientRect().top);
28399 top: (n ? a : 0) + "px",
28400 height: i ? i + "px" : "100%"
28408 t.parent.append(e), t.reverseContainerStretch = E(e, t);
28409 var n = e.find("md-dialog"),
28410 r = i.dom.animator,
28411 o = r.calculateZoomToOrigin,
28413 transitionInClass: "md-transition-in",
28414 transitionOutClass: "md-transition-out"
28416 s = r.toTransformCss(o(n, t.openFrom || t.origin)),
28417 c = r.toTransformCss("");
28418 return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, s, c, a).then(function(e) {
28419 return t.reverseAnimate = function() {
28420 return delete t.reverseAnimate, t.closeTo ? (a = {
28421 transitionInClass: "md-transition-out",
28422 transitionOutClass: "md-transition-in"
28423 }, s = c, c = r.toTransformCss(o(n, t.closeTo)), r.translate3d(n, s, c, a)) : e(c = r.toTransformCss(o(n, t.origin)))
28424 }, t.clearAnimate = function() {
28425 return delete t.clearAnimate, n.removeClass([a.transitionOutClass, a.transitionInClass].join(" ")), r.translate3d(n, c, r.toTransformCss(""), {})
28431 return t.reverseAnimate().then(function() {
28432 t.contentElement && t.clearAnimate()
28437 if (-1 !== t.indexOf(e.nodeName)) return !0
28442 onCompiling: function(e) {
28443 e.defaultTheme = p.defaultTheme(), v(e)
28445 onShow: function(e, n, r, o) {
28447 n[0].querySelector(".md-actions") && f.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>.")
28451 r.focusOnOpen && (i.findFocusTarget(n) || n[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || c).focus()
28453 t.element(l[0].body).addClass("md-dialog-is-showing");
28454 var c = n.find("md-dialog");
28455 c.hasClass("ng-cloak") && f.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", n[0]);
28456 return b(r), $(c, r), _(e, n, r), y(n, r), k(n, r).then(function() {
28460 onShowing: function(e, t, n, r) {
28462 var i = r.htmlContent || n.htmlContent || "",
28463 o = r.textContent || n.textContent || r.content || n.content || "";
28464 if (i && !h.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
28465 if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
28466 r.mdHtmlContent = i, r.mdTextContent = o
28469 onRemove: function(e, n, r) {
28471 t.element(l[0].body).removeClass("md-dialog-is-showing"), r.contentElement && r.reverseContainerStretch(), r.cleanupElement(), r.$destroy || "keyboard" !== r.originInteraction || r.origin.focus()
28473 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)
28475 clickOutsideToClose: !1,
28481 disableParentScroll: !0,
28484 transformTemplate: function(e, t) {
28485 var n = m.startSymbol(),
28487 return '<div class="md-dialog-container" tabindex="-1" md-theme="' + (n + (t.themeWatch ? "" : "::") + "theme" + r) + '">' + function(e) {
28488 return t.autoWrap && !/<\/md-dialog>/g.test(e) ? "<md-dialog>" + (e || "") + "</md-dialog>" : e || ""
28493 i.$inject = ["$mdDialog", "$mdConstant"], o.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"];
28495 return e("$mdDialog").setDefaults({
28496 methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
28498 }).addPreset("alert", {
28499 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
28501 }).addPreset("confirm", {
28502 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
28504 }).addPreset("prompt", {
28505 methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css", "required"],
28509 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], r.$inject = ["$$interimElementProvider"], t.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", r)
28518 e.$inject = ["$mdTheming"], t.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
28524 require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
28525 compile: function(t, n) {
28526 var r = t.children();
28527 e.prefixer().hasAttribute(r, "ng-repeat") ? r.addClass("md-fab-action-item") : r.wrap('<div class="md-fab-action-item">')
28531 e.$inject = ["$mdUtil"], t.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
28534 function e(e, n, r, i, o, a) {
28536 S.direction = S.direction || "down", S.isOpen = S.isOpen || !1, u(), n.addClass("md-animations-waiting")
28540 var r = ["click", "focusin", "focusout"];
28541 t.forEach(r, function(e) {
28543 }), e.$on("$destroy", function() {
28544 t.forEach(r, function(e) {
28551 "click" == e.type && T(e), "focusout" != e.type || D || (D = a(function() {
28553 }, 100, !1)), "focusin" == e.type && D && (a.cancel(D), D = null)
28557 S.currentActionIndex = -1
28561 e.$watch("vm.direction", function(e, t) {
28562 r.removeClass(n, "md-" + t), r.addClass(n, "md-" + e), u()
28565 e.$watch("vm.isOpen", function(e) {
28566 u(), t && i || (t = M(), i = A()), e ? h() : p();
28567 var o = e ? "md-is-open" : "",
28568 a = e ? "" : "md-is-open";
28569 t.attr("aria-haspopup", !0), t.attr("aria-expanded", e), i.attr("aria-hidden", !e), r.setClass(n, o, a)
28574 n[0].scrollHeight > 0 ? r.addClass(n, "_md-animations-ready").then(function() {
28575 n.removeClass("md-animations-waiting")
28576 }) : O < 10 && (a(f, 100), O += 1)
28580 n.on("keydown", g), i.nextTick(function() {
28581 t.element(document).on("click touchend", m)
28586 n.off("keydown", g), t.element(document).off("click touchend", m)
28591 var t = i.getClosest(e.target, "md-fab-trigger"),
28592 n = i.getClosest(e.target, "md-fab-actions");
28593 t || n || S.close()
28599 case o.KEY_CODE.ESCAPE:
28600 return S.close(), e.preventDefault(), !1;
28601 case o.KEY_CODE.LEFT_ARROW:
28603 case o.KEY_CODE.UP_ARROW:
28605 case o.KEY_CODE.RIGHT_ARROW:
28607 case o.KEY_CODE.DOWN_ARROW:
28622 S.currentActionIndex = S.currentActionIndex + n, S.currentActionIndex = Math.min(r.length - 1, S.currentActionIndex), S.currentActionIndex = Math.max(0, S.currentActionIndex);
28623 var i = t.element(r[S.currentActionIndex]).children()[0];
28624 t.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
28628 var e = A()[0].querySelectorAll(".md-fab-action-item");
28629 return t.forEach(e, function(e) {
28630 t.element(t.element(e).children()[0]).attr("tabindex", -1)
28635 "left" === S.direction ? b(e) : v(e)
28639 "down" === S.direction ? v(e) : b(e)
28643 "left" === S.direction ? v(e) : b(e)
28647 "up" === S.direction ? v(e) : b(e)
28651 return i.getClosest(e, "md-fab-trigger")
28655 return i.getClosest(e, "md-fab-actions")
28659 C(e.target) && S.toggle(), x(e.target) && S.close()
28663 return n.find("md-fab-trigger")
28667 return n.find("md-fab-actions")
28671 S.open = function() {
28672 e.$evalAsync("vm.isOpen = true")
28673 }, S.close = function() {
28674 e.$evalAsync("vm.isOpen = false"), n.find("md-fab-trigger")[0].focus()
28675 }, S.toggle = function() {
28676 e.$evalAsync("vm.isOpen = !vm.isOpen")
28677 }, S.$onInit = function() {
28679 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit();
28682 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], t.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
28691 if (!n.hasClass("md-animations-waiting") || n.hasClass("_md-animations-ready")) {
28693 i = n.controller("mdFabSpeedDial"),
28694 o = r.querySelectorAll(".md-fab-action-item"),
28695 a = r.querySelector("md-fab-trigger"),
28696 s = r.querySelector("._md-css-variables"),
28697 c = parseInt(e.getComputedStyle(s).zIndex);
28698 t.forEach(o, function(e, t) {
28700 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = o.length - t + c
28701 }), a.style.zIndex = c + o.length + 1, i.isOpen || t.forEach(o, function(e, t) {
28702 var n, r, o = e.style,
28703 s = (a.clientHeight - e.clientHeight) / 2,
28704 c = (a.clientWidth - e.clientWidth) / 2;
28705 switch (i.direction) {
28707 n = e.scrollHeight * (t + 1) + s, r = "Y";
28710 n = -(e.scrollHeight * (t + 1) + s), r = "Y";
28713 n = e.scrollWidth * (t + 1) + c, r = "X";
28716 n = -(e.scrollWidth * (t + 1) + c), r = "X"
28718 var l = "translate" + r + "(" + n + "px)";
28719 o.transform = o.webkitTransform = l
28724 addClass: function(e, t, n) {
28725 e.hasClass("md-fling") ? (o(e), r(n)) : n()
28727 removeClass: function(e, t, n) {
28740 i = n.controller("mdFabSpeedDial"),
28741 o = r.querySelectorAll(".md-fab-action-item"),
28742 s = r.querySelector("._md-css-variables"),
28743 c = parseInt(e.getComputedStyle(s).zIndex);
28744 t.forEach(o, function(e, t) {
28747 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
28752 addClass: function(e, t, n) {
28755 removeClass: function(e, t, n) {
28760 n.$inject = ["$timeout"], r.$inject = ["$timeout"];
28762 t.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
28766 direction: "@?mdDirection",
28769 bindToController: !0,
28770 controller: "MdFabController",
28771 controllerAs: "vm",
28772 link: function(e, t) {
28773 t.prepend('<div class="_md-css-variables"></div>')
28776 }).animation(".md-fling", n).animation(".md-scale", r).service("mdFabSpeedDialFlingAnimation", n).service("mdFabSpeedDialScaleAnimation", r)
28780 function n(n, r, i) {
28783 a = n.controller("mdFabToolbar"),
28784 s = o.querySelector(".md-fab-toolbar-background"),
28785 c = o.querySelector("md-fab-trigger button"),
28786 l = o.querySelector("md-toolbar"),
28787 u = o.querySelector("md-fab-trigger button md-icon"),
28788 d = n.find("md-fab-actions").children();
28790 var f = e.getComputedStyle(c).getPropertyValue("background-color"),
28792 p = (o.offsetHeight, h / c.offsetWidth * 2);
28793 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) {
28794 e.style.transitionDelay = 25 * (d.length - t) + "ms"
28795 })) : (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) {
28796 e.style.transitionDelay = 200 + 25 * t + "ms"
28802 addClass: function(e, t, r) {
28805 removeClass: function(e, t, r) {
28810 t.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
28814 template: '<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',
28816 direction: "@?mdDirection",
28819 bindToController: !0,
28820 controller: "MdFabController",
28821 controllerAs: "vm",
28822 link: function(e, t, n) {
28823 t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
28826 }).animation(".md-fab-toolbar", n).service("mdFabToolbarAnimation", n)
28829 function e(e, r, i, o) {
28836 link: function(n, a, s, c) {
28838 null == e ? c.invalidateLayout() : o(e) && c.invalidateLayout()
28845 function d(e, t, n, r, i, o, a) {
28846 var s = 1 / n * 100,
28853 u = "rtl" != document.dir && "rtl" != document.body.dir ? {
28907 }), u.marginTop = x({
28915 share: d = 1 / r * 100,
28916 gutterShare: (r - 1) / r,
28931 function f(e, t, n, r, i) {
28939 }), o.paddingBottom = "";
28943 share: 1 / e * 100 * (1 / i),
28944 gutterShare: 1 === e ? 0 : (e - 1) / e,
28947 o.height = "", o.paddingBottom = T({
28957 return [].filter.call(a.children(), function(e) {
28958 return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
28963 return [].map.call(e, function(e) {
28964 var n = t.element(e).controller("mdGridTile");
28966 row: parseInt(o.getResponsiveAttribute(n.$attrs, "md-rowspan"), 10) || 1,
28967 col: parseInt(o.getResponsiveAttribute(n.$attrs, "md-colspan"), 10) || 1
28973 var e = parseInt(o.getResponsiveAttribute(s, "md-cols"), 10);
28974 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
28979 return y(o.getResponsiveAttribute(s, "md-gutter") || 1)
28983 var e = o.getResponsiveAttribute(s, "md-row-height");
28984 if (!e) throw "md-grid-list: md-row-height attribute was not found";
28989 var t = e.split(":");
28990 return parseFloat(t[0]) / parseFloat(t[1]);
28997 var e = o.getResponsiveAttribute(s, "md-row-height");
28998 if (!e) throw "md-grid-list: md-row-height attribute was not found";
28999 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
29003 return /\D$/.test(e) ? e : e + "px"
29005 a.addClass("_md"), a.attr("role", "list"), c.layoutDelegate = function(e) {
29014 if (e || !t.equals(o, w)) {
29015 var s = i(o.colCount, o.tileSpans, r).map(function(e, n) {
29019 style: f(o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
29021 tiles: e.map(function(e, i) {
29023 element: t.element(r[i]),
29024 style: d(e.position, e.spans, o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
29028 }).reflow().performance();
29036 var _ = t.bind(c, c.invalidateLayout),
29038 for (var e in r.MEDIA) o(e), o.getQuery(r.MEDIA[e]).addListener(_);
29039 return o.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], s, l)
29041 n.$on("$destroy", function() {
29042 c.layoutDelegate = t.noop, $();
29043 for (var e in r.MEDIA) o.getQuery(r.MEDIA[e]).removeListener(_)
29045 var w, E = e.startSymbol(),
29047 C = e(u("share") + "% - (" + u("gutter") + " * " + u("gutterShare") + ")"),
29048 x = e("calc((" + u("unit") + " + " + u("gutter") + ") * " + u("offset") + ")"),
29049 T = e("calc((" + u("unit") + ") * " + u("span") + " + (" + u("span") + " - 1) * " + u("gutter") + ")")
29055 this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = t.noop
29060 var r, a, s, c, l, u;
29061 return c = e.time(function() {
29064 layoutInfo: function() {
29068 return l = e.time(function() {
29069 var e = r.layoutInfo();
29070 s = t(e.positioning, e.rowCount)
29073 reflow: function(t) {
29074 return u = e.time(function() {
29075 (t || o)(s.grid, s.tiles)
29078 performance: function() {
29080 tileCount: n.length,
29084 totalTime: c + l + u
29091 e.element.css(e.style), t.forEach(function(e) {
29092 e.element.css(e.style)
29098 if (t.col > e) throw "md-grid-list: Tile at position " + n + " has a colspan (" + t.col + ") that exceeds the column count (" + e + ")";
29099 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());
29100 return i(l, t.col, t.row), a = l + t.col, {
29107 a = 0, s++, i(0, e, -1)
29110 function i(e, t, n) {
29111 for (var r = e; r < e + t; r++) c[r] = Math.max(c[r] + n, 0)
29116 for (t = e; t < c.length; t++)
29117 if (0 !== c[t]) return t;
29118 if (t === c.length) return t
29123 for (var t = [], n = 0; n < e; n++) t.push(0);
29127 positioning: t.map(function(e, t) {
29133 rowCount: s + Math.max.apply(Math, c)
29137 return n.animateWith = function(e) {
29138 o = t.isFunction(e) ? e : r
29145 require: "^mdGridList",
29146 template: "<figure ng-transclude></figure>",
29149 controller: ["$attrs", function(e) {
29152 link: function(n, r, i, o) {
29153 r.attr("role", "listitem");
29154 var a = e.watchResponsiveAttributes(["md-colspan", "md-rowspan"], i, t.bind(o, o.invalidateLayout));
29155 o.invalidateTiles(), n.$on("$destroy", function() {
29156 r[0].$$mdDestroyed = !0, a(), o.invalidateLayout()
29157 }), t.isDefined(n.$parent.$index) && n.$watch(function() {
29158 return n.$parent.$index
29159 }, function(e, t) {
29160 e !== t && o.invalidateTiles()
29168 template: "<figcaption ng-transclude></figcaption>",
29172 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 = {
29173 invalidateTiles: function() {
29174 this.tilesInvalidated = !0, this.invalidateLayout()
29176 invalidateLayout: function() {
29177 this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(t.bind(this, this.layout)))
29179 layout: function() {
29181 this.layoutDelegate(this.tilesInvalidated)
29183 this.layoutInvalidated = !1, this.tilesInvalidated = !1
29187 }(), t.module("material.components.icon", ["material.core"]),
29190 function n(e, n, r, i) {
29192 o.isErrorGetter = r.mdIsError && t(r.mdIsError), o.delegateClick = function() {
29194 }, o.element = n, o.setFocused = function(e) {
29195 n.toggleClass("md-input-focused", !!e)
29196 }, o.setHasValue = function(e) {
29197 n.toggleClass("md-input-has-value", !!e)
29198 }, o.setHasPlaceholder = function(e) {
29199 n.toggleClass("md-input-has-placeholder", !!e)
29200 }, o.setInvalid = function(e) {
29201 e ? i.addClass(n, "md-input-invalid") : i.removeClass(n, "md-input-invalid")
29202 }, e.$watch(function() {
29203 return o.label && o.input
29205 e && !o.label.attr("for") && o.label.attr("for", o.input.attr("id"))
29208 n.$inject = ["$scope", "$element", "$attrs", "$animate"];
29209 var r = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
29210 i = r.reduce(function(e, t) {
29211 return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
29213 o = r.reduce(function(e, t) {
29214 return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
29218 compile: function(t) {
29219 var n = t[0].querySelector(i),
29220 r = t[0].querySelector(o);
29221 return n && t.addClass("md-icon-left"), r && t.addClass("md-icon-right"),
29230 function r(e, n, r, i, o) {
29233 require: ["^?mdInputContainer", "?ngModel", "?^form"],
29234 link: function(a, s, c, l) {
29236 return f.setHasValue(!p.$isEmpty(e)), e
29240 f.setHasValue(s.val().length > 0 || (s[0].validity || {}).badInput)
29244 p = l[1] || e.fakeNgModel(),
29246 g = t.isDefined(c.readonly),
29247 v = e.parseAttributeBoolean(c.mdNoAsterisk),
29248 b = s[0].tagName.toLowerCase();
29250 if ("hidden" !== c.type) {
29252 if (f.input[0].contains(s[0])) return;
29253 throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
29255 f.input = s, f.label && c.$observe("required", function(e) {
29256 f.label.toggleClass("md-required", e && !v)
29258 var y = t.element('<div class="md-errors-spacer">');
29260 var _ = t.isString(c.placeholder) ? c.placeholder.trim() : "";
29261 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() {
29263 s.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
29266 var t = s[0].style.padding || "";
29267 y = s.css("padding", 0).prop("offsetHeight"), s[0].style.padding = t
29269 if (g && y && (e = Math.max(e, y * g)), v && y) {
29271 n < e ? (s.attr("md-no-autogrow", ""), e = n) : s.removeAttr("md-no-autogrow")
29273 y && s.attr("rows", Math.round(e / y)), s.css("height", e + "px").removeClass("md-no-flex")
29277 var e = _.offsetHeight,
29278 t = _.scrollHeight - e;
29279 return e + Math.max(t, 0)
29283 return e.nextTick(r), t
29287 if (m && (m = !1, t.element(n).off("resize", r), b && b(), s.attr("md-no-autogrow", "").off("input", r), h)) {
29288 var e = p.$formatters.indexOf(u);
29289 e > -1 && p.$formatters.splice(e, 1)
29292 var m = !c.hasOwnProperty("mdNoAutogrow");
29295 e.preventDefault(), u = !0, h = e.clientY, p = parseFloat(s.css("height")) || s.prop("offsetHeight")
29299 u && (e.preventDefault(), d(), m.addClass("md-input-resized"))
29303 u && s.css("height", p + e.pointer.distanceY + "px")
29307 u && (u = !1, m.removeClass("md-input-resized"))
29309 if (!c.hasOwnProperty("mdNoResize")) {
29310 var l = t.element('<div class="md-resize-handle"></div>'),
29315 g = o.register(l, "drag", {
29318 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() {
29319 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
29323 var g = c.hasOwnProperty("rows") ? parseInt(c.rows) : NaN,
29324 v = c.hasOwnProperty("maxRows") ? parseInt(c.maxRows) : NaN,
29325 b = a.$on("md-resize-textarea", r),
29330 }, 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")) {
29331 var $ = function() {
29333 return function() {
29334 var t = 0 === _.offsetHeight;
29335 !1 === t && !0 === e && r(), e = t
29338 a.$watch(function() {
29339 return e.nextTick($, !1), !0
29344 var $ = f.isErrorGetter || function() {
29345 return p.$invalid && (p.$touched || m && m.$submitted)
29347 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) {
29348 e.nextTick(function() {
29351 }).on("blur", function(t) {
29352 e.nextTick(function() {
29353 f.setFocused(!1), d()
29355 }), a.$on("$destroy", function() {
29356 f.setFocused(!1), f.setHasValue(!1), f.input = null
29358 } else s.attr("aria-hidden", "true")
29366 require: ["ngModel", "^mdInputContainer"],
29367 link: function(r, i, o, a) {
29369 return l.parent ? (l.text(String(i.val() || e || "").length + " / " + c), e) : e
29371 var c, l, u, d = a[0],
29373 n.nextTick(function() {
29374 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) {
29375 c = n, t.isNumber(n) && n > 0 ? (l.parent().length || e.enter(l, u), s()) : e.leave(l)
29376 }), d.$validators["md-maxlength"] = function(e, n) {
29377 return !t.isNumber(c) || c < 0 || (s(), (e || i.val() || n || "").length <= c)
29387 require: "^^?mdInputContainer",
29390 pre: function(n, r, i, o) {
29392 var a = o.element.find("label"),
29393 s = o.element.attr("md-no-float");
29394 if (a && a.length || "" === s || n.$eval(s)) o.setHasPlaceholder(!0);
29395 else if ("MD-SELECT" != r[0].nodeName) {
29396 var c = t.element('<label ng-click="delegateClick()" tabindex="-1">' + i.placeholder + "</label>");
29397 i.$set("placeholder", null), o.element.addClass("md-icon-float").prepend(c), e(c)(n)
29408 link: function(t, n, r) {
29410 a = !0, e(function() {
29411 n[0].select(), a = !1
29416 a && e.preventDefault()
29418 if ("INPUT" === n[0].nodeName || "TEXTAREA" === n[0].nodeName) {
29420 n.on("focus", i).on("mouseup", o), t.$on("$destroy", function() {
29421 n.off("focus", i).off("mouseup", o)
29431 compile: function(t) {
29433 return !!e.getClosest(t, "md-input-container")
29437 e.toggleClass("md-input-message-animation", !0)
29440 else if (function() {
29441 for (var e = t[0]; e = e.parentNode;)
29442 if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
29444 }()) return function(e, i) {
29452 function c(e, t, n, r) {
29453 return v(e, t, n, r), {
29454 addClass: function(e, t, n) {
29460 function l(e, t, n, r) {
29461 return v(e, t, n, r), {
29462 enter: function(e, t) {
29465 leave: function(e, t) {
29468 addClass: function(e, t, n) {
29469 "ng-hide" == t ? f(e, n) : n()
29471 removeClass: function(e, t, n) {
29472 "ng-hide" == t ? d(e, n) : n()
29477 function u(e, t, n, r) {
29478 return v(e, t, n, r), {
29479 enter: function(e, t) {
29480 h(e).start().done(t)
29482 leave: function(e, t) {
29483 p(e).start().done(t)
29492 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages show animation called on invalid messages element: ", e), void n();
29493 t.forEach(a, function(e) {
29494 r = h(t.element(e)), i.push(r.start())
29502 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages hide animation called on invalid messages element: ", e), void n();
29503 t.forEach(a, function(e) {
29504 r = p(t.element(e)), i.push(r.start())
29509 var n = parseInt(e.getComputedStyle(t[0]).height),
29510 r = parseInt(e.getComputedStyle(t[0]).marginTop),
29513 return r > -n || i.hasClass("md-auto-hide") && !o.hasClass("md-input-invalid") ? _(t, {}) : _(t, {
29518 "margin-top": -n + "px"
29529 var n = t[0].offsetHeight,
29530 r = e.getComputedStyle(t[0]);
29531 return 0 === parseInt(r.opacity) ? _(t, {}) : _(t, {
29540 "margin-top": -n + "px"
29547 return e.controller("mdInputContainer").element
29551 return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? t.element($.getClosest(e, function(e) {
29552 return e.classList.contains("md-input-messages-animation")
29553 })) : t.element(e[0].querySelector(".md-input-messages-animation"))
29556 function v(e, t, n, r) {
29557 y = e, _ = t, $ = n, w = r
29559 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"];
29560 var b = t.module("material.components.input", ["material.core"]).directive("mdInputContainer", n).directive("label", function() {
29563 require: "^?mdInputContainer",
29564 link: function(e, t, n, r) {
29565 !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
29570 }).directive("input", r).directive("textarea", r).directive("mdMaxlength", i).directive("placeholder", o).directive("ngMessages", function() {
29572 return E.some(function(t) {
29578 link: function(t, n, r, i) {
29579 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))
29581 require: "^^?mdInputContainer"
29583 }).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);
29584 e._mdMocksIncluded && b.service("$$mdInput", function() {
29592 }).service("mdInputInvalidAnimation", c).service("mdInputMessagesAnimation", l).service("mdInputMessageAnimation", u);
29593 var y, _, $, w, E = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"]
29599 compile: function(t) {
29600 return t[0].setAttribute("role", "list"), e
29605 function n(e, n, r, i) {
29606 var o = ["md-checkbox", "md-switch", "md-menu"];
29609 controller: "MdListController",
29610 compile: function(a, s) {
29612 if ("div" == n)(v = t.element('<div class="md-no-style md-list-item-inner">')).append(a.contents()), a.addClass("md-proxy-focus");
29614 v = t.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');
29615 var r = t.element('<md-button class="md-no-style"></md-button>');
29616 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")
29618 a[0].setAttribute("tabindex", "-1"), a.append(v)
29622 if (n && !f(n) && n.hasAttribute("ng-click")) {
29623 e.expect(n, "aria-label");
29624 var i = t.element('<md-button class="md-secondary md-icon-button">');
29625 u(n, i[0], ["ng-if", "ng-hide", "ng-show"]), n.setAttribute("tabindex", "-1"), i.append(n), n = i[0]
29627 n && (!h(n) || !s.ngClick && d(n)) && t.element(n).removeClass("md-secondary"), a.addClass("md-with-secondary"), r.append(n)
29630 function u(e, n, i) {
29631 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"]);
29632 i && (o = o.concat(r.prefixer(i))), t.forEach(o, function(t) {
29633 e.hasAttribute(t) && (n.setAttribute(t, e.getAttribute(t)), e.removeAttribute(t))
29638 return -1 != o.indexOf(e.nodeName.toLowerCase())
29642 var t = e.nodeName.toUpperCase();
29643 return "MD-BUTTON" == t || "BUTTON" == t
29647 for (var t = e.attributes, n = 0; n < t.length; n++)
29648 if ("ngClick" === s.$normalize(t[n].name)) return !0;
29651 var p, m, g = a[0].querySelectorAll(".md-secondary"),
29653 if (a[0].setAttribute("role", "listitem"), s.ngClick || s.ngDblclick || s.ngHref || s.href || s.uiSref || s.ngAttrUiSref) c("button");
29654 else if (!a.hasClass("md-no-proxy")) {
29655 for (var b, y = 0; b = o[y]; ++y)
29656 if (m = a[0].querySelector(b)) {
29660 p ? c("div") : a.addClass("md-no-proxy")
29662 return function() {
29663 var e = t.element('<div class="md-secondary-container">');
29664 t.forEach(g, function(t) {
29669 for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
29670 if ((e = a.find(t)[0]) && !e.hasAttribute("aria-label")) {
29671 var i = a.find("p")[0];
29673 e.setAttribute("aria-label", "Toggle " + i.textContent)
29675 }(), p && "MD-MENU" === m.nodeName && function() {
29676 var e = t.element(m),
29678 (e.parent().hasClass("md-secondary-container") || m.parentNode.firstElementChild !== m) && (n = "right"), e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
29679 var r = e.children().eq(0);
29680 h(r[0]) || r.attr("ng-click", "$mdMenu.open($event)"), r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
29682 function(e, a, s, c) {
29684 var t = ["md-slider"];
29685 if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
29686 for (var n = e.path.indexOf(a.children()[0]), r = 0; r < n; r++)
29687 if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
29691 d = a[0].firstElementChild,
29692 f = a.hasClass("_md-button-wrap") ? d.firstElementChild : d,
29694 m = a.hasClass("md-no-proxy");
29695 d && d.children && !p && !m && t.forEach(o, function(e) {
29696 t.forEach(d.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
29699 }), (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) {
29700 n = t.element(n), e.mouseActive = !1, n.on("mousedown", function() {
29701 e.mouseActive = !0, i(function() {
29704 }).on("focus", function() {
29705 !1 === e.mouseActive && a.addClass("md-focused"), n.on("blur", function e() {
29706 a.removeClass("md-focused"), n.off("blur", e)
29710 var g = function(e) {
29711 "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())
29713 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) {
29714 l(e) || !r.getClosest(e.target, "BUTTON") && f.contains(e.target) && t.forEach(u, function(n) {
29715 e.target === n || n.contains(e.target) || ("MD-MENU" === n.nodeName && (n = n.children[0]), t.element(n).triggerHandler("click"))
29717 }), e.$on("$destroy", function() {
29718 f && f.removeEventListener("keypress", g)
29725 function r(e, t, n) {
29726 this.attachRipple = function(e, t) {
29731 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)
29732 }(), t.module("material.components.menu", ["material.core", "material.components.backdrop"]), t.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
29739 controllerAs: "ctrl",
29740 bindToController: !0,
29742 mdSelectedNavItem: "=?",
29744 navBarAriaLabel: "@?"
29746 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>',
29747 link: function(r, i, o, a) {
29748 n(i), a.navBarAriaLabel || e.expectAsync(i, "aria-label", t.noop)
29753 function r(e, t, n, r) {
29754 this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
29756 o = this._$scope.$watch(function() {
29757 return i._navBarEl.querySelectorAll("._md-nav-button").length
29759 e > 0 && (i._initTabs(), o())
29766 require: ["mdNavItem", "^mdNavBar"],
29768 bindToController: !0,
29769 controllerAs: "ctrl",
29772 template: function(e, t) {
29773 var n, r, i, o = t.mdNavClick,
29777 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.");
29778 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>"
29787 link: function(r, i, o, a) {
29791 s = t.element(i[0].querySelector("._md-nav-button"));
29792 n.name || (n.name = t.element(i[0].querySelector("._md-nav-button-text")).text().trim()), s.on("click", function() {
29793 o.mdSelectedNavItem = n.name, r.$apply()
29794 }), e.expectWithText(i, "aria-label")
29801 this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this._selected = !1, this._focused = !1
29803 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() {
29804 this._inkbar = t.element(this._navBarEl.querySelector("md-nav-ink-bar"));
29806 this._$timeout(function() {
29807 e._updateTabs(e.mdSelectedNavItem, n)
29808 }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(t, n) {
29809 e._$timeout(function() {
29810 e._updateTabs(t, n)
29813 }, r.prototype._updateTabs = function(e, t) {
29815 r = this._getTabs();
29819 a = this._getTabByName(e),
29820 s = this._getTabByName(t);
29821 s && (s.setSelected(!1), i = r.indexOf(s)), a && (a.setSelected(!0), o = r.indexOf(a)), this._$timeout(function() {
29822 n._updateInkBarStyles(a, o, i)
29825 }, r.prototype._updateInkBarStyles = function(e, t, n) {
29826 if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", t > n), this._inkbar.css({
29827 display: t < 0 ? "none" : ""
29829 var r = e.getButtonEl(),
29833 width: r.offsetWidth + "px"
29836 }, r.prototype._getTabs = function() {
29837 var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
29838 return t.element(e).controller("mdNavItem")
29840 return e.indexOf(n) ? e : null
29841 }, r.prototype._getTabByName = function(e) {
29842 return this._findTab(function(t) {
29843 return t.getName() == e
29845 }, r.prototype._getSelectedTab = function() {
29846 return this._findTab(function(e) {
29847 return e.isSelected()
29849 }, r.prototype.getFocusedTab = function() {
29850 return this._findTab(function(e) {
29851 return e.hasFocus()
29853 }, r.prototype._findTab = function(e) {
29854 for (var t = this._getTabs(), n = 0; n < t.length; n++)
29855 if (e(t[n])) return t[n];
29857 }, r.prototype.onFocus = function() {
29858 var e = this._getSelectedTab();
29859 e && e.setFocused(!0)
29860 }, r.prototype._moveFocus = function(e, t) {
29861 e.setFocused(!1), t.setFocused(!0)
29862 }, r.prototype.onKeydown = function(e) {
29863 var t = this._$mdConstant.KEY_CODE,
29864 n = this._getTabs(),
29865 r = this.getFocusedTab();
29867 var i = n.indexOf(r);
29868 switch (e.keyCode) {
29871 i > 0 && this._moveFocus(r, n[i - 1]);
29874 case t.RIGHT_ARROW:
29875 i < n.length - 1 && this._moveFocus(r, n[i + 1]);
29879 this._$timeout(function() {
29880 r.getButtonEl().click()
29884 }, o.prototype.getNgClassMap = function() {
29886 "md-active": this._selected,
29887 "md-primary": this._selected,
29888 "md-unselected": !this._selected,
29889 "md-focused": this._focused
29891 }, o.prototype.getName = function() {
29893 }, o.prototype.getButtonEl = function() {
29894 return this._$element[0].querySelector("._md-nav-button")
29895 }, o.prototype.setSelected = function(e) {
29897 }, o.prototype.isSelected = function() {
29898 return this._selected
29899 }, o.prototype.setFocused = function(e) {
29900 this._focused = e, e && this.getButtonEl().focus()
29901 }, o.prototype.hasFocus = function() {
29902 return this._focused
29907 if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
29908 if (p.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
29909 delete t.id, delete t.position, delete t.animation, p[e] = t
29921 return ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
29922 return new a(p, e, t, n, r)
29926 function a(e, n, r, i, o) {
29927 this._defaultConfigOptions = {
29928 bindToController: !0,
29929 clickOutsideToClose: !1,
29930 disableParentScroll: !1,
29935 propagateContainerEvents: !1,
29936 transformTemplate: t.bind(this, this._wrapTemplate),
29939 }, 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
29943 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 = {
29950 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
29954 this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
29958 var n = t.isString(e) ? document.querySelector(e) : e;
29959 return t.element(n)
29963 var n = getComputedStyle(e[0] || e)[t],
29964 r = n.indexOf("("),
29965 i = n.lastIndexOf(")"),
29970 if (r > -1 && i > -1) {
29971 var a = n.substring(r + 1, i).split(", ").slice(-2);
29972 o.x = parseInt(a[0]), o.y = parseInt(a[1])
29976 a.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], t.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
29985 h = t.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
29987 a.prototype.create = function(e, n) {
29988 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]) {
29989 var r = this._trackedPanels[n.id];
29990 return t.extend(r.config, n), r
29992 this._config = t.extend({
29993 id: n.id || "panel_" + this._$mdUtil.nextUid(),
29994 scope: this._$rootScope.$new(!0),
29995 attachTo: this._$rootElement
29996 }, this._defaultConfigOptions, n, e);
29997 var i = new s(this._config, this._$injector);
29998 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) {
30000 })), this._config.scope.$on("$destroy", t.bind(i, i.detach)), i
30001 }, a.prototype.open = function(e, t) {
30002 var n = this.create(e, t);
30003 return n.open().then(function() {
30006 }, a.prototype._getPresetByName = function(e) {
30007 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.");
30008 return this._presets[e]
30009 }, a.prototype.newPanelPosition = function() {
30010 return new c(this._$injector)
30011 }, a.prototype.newPanelAnimation = function() {
30012 return new l(this._$injector)
30013 }, a.prototype.newPanelGroup = function(e, t) {
30014 if (!this._groups[e]) {
30018 maxOpen: (t = t || {}).maxOpen > 0 ? t.maxOpen : 1 / 0
30020 this._groups[e] = n
30022 return this._groups[e]
30023 }, a.prototype.setGroupMaxOpen = function(e, t) {
30024 if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
30025 this._groups[e].maxOpen = t
30026 }, a.prototype._openCountExceedsMaxOpen = function(e) {
30027 if (this._groups[e]) {
30028 var t = this._groups[e];
30029 return t.maxOpen > 0 && t.openPanels.length > t.maxOpen
30032 }, a.prototype._closeFirstOpenedPanel = function(e) {
30033 this._groups[e].openPanels[0].close()
30034 }, a.prototype._wrapTemplate = function(e) {
30035 return '<div class="md-panel-outer-wrapper"> <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
30036 }, a.prototype._wrapContentElement = function(e) {
30037 var n = t.element('<div class="md-panel-outer-wrapper">');
30038 return e.addClass("md-panel _md-panel-offscreen"), n.append(e), n
30039 }, s.interceptorTypes = {
30041 }, s.prototype.open = function() {
30043 return this._$q(function(n, r) {
30044 var i = e._done(n, e),
30045 o = e._simpleBind(e.show, e);
30046 e.attach().then(o).then(function() {
30047 e.config.groupName && t.forEach(e.config.groupName, function(t) {
30048 e._$mdPanel._openCountExceedsMaxOpen(t) && e._$mdPanel._closeFirstOpenedPanel(t)
30050 }).then(i).catch(r)
30052 }, s.prototype.close = function(e) {
30054 return this._$q(function(r, i) {
30055 n._callInterceptors(s.interceptorTypes.CLOSE).then(function() {
30056 var o = n._done(r, n),
30057 a = n._simpleBind(n.detach, n),
30058 s = n.config.onCloseSuccess || t.noop;
30059 s = t.bind(n, s, n, e), n.hide().then(a).then(o).then(s).catch(i)
30062 }, s.prototype.attach = function() {
30063 if (this.isAttached && this.panelEl) return this._$q.when(this);
30065 return this._$q(function(n, r) {
30066 var i = e._done(n, e),
30067 o = e.config.onDomAdded || t.noop;
30068 e._$q.all([e._createBackdrop(), e._createPanel().then(function(t) {
30069 return e.isAttached = !0, e._addEventListeners(), t
30070 }).catch(r)]).then(o).then(i).catch(r)
30072 }, s.prototype.detach = function() {
30073 if (!this.isAttached) return this._$q.when(this);
30075 n = e.config.onDomRemoved || t.noop,
30077 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)
30079 return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(t, i) {
30080 var o = e._done(t, e);
30081 e._$q.all([r(), !e._backdropRef || e._backdropRef.detach()]).then(n).then(o).catch(i)
30083 }, s.prototype.destroy = function() {
30085 this.config.groupName && t.forEach(this.config.groupName, function(t) {
30086 e.removeFromGroup(t)
30087 }), this.config.scope.$destroy(), this.config.locals = null, this._interceptors = null
30088 }, s.prototype.show = function() {
30089 if (!this.panelContainer) return this._$q(function(e, t) {
30090 t("mdPanel: Panel does not exist yet. Call open() or attach().")
30092 if (!this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
30095 return e.panelContainer.removeClass("_md-panel-hidden"), e._animateOpen()
30097 return this._$q(function(r, i) {
30098 var o = e._done(r, e),
30099 a = e.config.onOpenComplete || t.noop;
30100 e._$q.all([e._backdropRef ? e._backdropRef.show() : e, n().then(function() {
30102 }, i)]).then(a).then(function() {
30103 e.config.groupName && t.forEach(e.config.groupName, function(t) {
30104 e._$mdPanel._groups[t].openPanels.push(e)
30106 }).then(o).catch(i)
30108 }, s.prototype.hide = function() {
30109 if (!this.panelContainer) return this._$q(function(e, t) {
30110 t("mdPanel: Panel does not exist yet. Call open() or attach().")
30112 if (this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
30114 return this._$q(function(n, r) {
30115 var i = e._done(n, e),
30116 o = e.config.onRemoving || t.noop;
30117 e._$q.all([e._backdropRef ? e._backdropRef.hide() : e, e._animateClose().then(o).then(function() {
30118 e.panelContainer.addClass("_md-panel-hidden")
30119 }).then(function() {
30120 if (e.config.groupName) {
30122 t.forEach(e.config.groupName, function(t) {
30123 t = e._$mdPanel._groups[t], (n = t.openPanels.indexOf(e)) > -1 && t.openPanels.splice(n, 1)
30126 }).then(function() {
30127 var t = e.config.origin;
30129 }).catch(r)]).then(i, r)
30131 }, s.prototype.addClass = function(e, t) {
30132 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().");
30133 t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
30134 }, s.prototype.removeClass = function(e, t) {
30135 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().");
30136 !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
30137 }, s.prototype.toggleClass = function(e, t) {
30138 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().");
30139 t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
30140 }, s.prototype._compile = function() {
30142 return e._$mdCompiler.compile(e.config).then(function(n) {
30144 if (r.contentElement) {
30146 e._restoreCache.styles = i[0].style.cssText, e._restoreCache.classes = i[0].className, e.panelContainer = e._$mdPanel._wrapContentElement(i), e.panelEl = i
30147 } else e.panelContainer = n.link(r.scope), e.panelEl = t.element(e.panelContainer[0].querySelector(".md-panel"));
30148 return e._compilerCleanup = n.cleanup, u(e.config.attachTo).append(e.panelContainer), e
30150 }, s.prototype._createPanel = function() {
30152 return this._$q(function(t, n) {
30153 e.config.locals || (e.config.locals = {}), e.config.locals.mdPanelRef = e, e._compile().then(function() {
30154 e.config.disableParentScroll && (e._restoreScroll = e._$mdUtil.disableScrollAround(null, e.panelContainer, {
30155 disableScrollMask: !0
30156 })), 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() {
30161 }, s.prototype._addStyles = function() {
30163 return this._$q(function(t) {
30164 e.panelContainer.css("z-index", e.config.zIndex), e.panelEl.css("z-index", e.config.zIndex + 1);
30165 var n = function() {
30166 e._setTheming(), e.panelEl.removeClass("_md-panel-offscreen"), e.panelContainer.addClass("_md-panel-hidden"), t(e)
30168 if (e.config.fullscreen) return e.panelEl.addClass("_md-panel-fullscreen"), void n();
30169 e.config.position ? e._$rootScope.$$postDigest(function() {
30170 e._updatePosition(!0), e._setTheming(), t(e)
30173 }, s.prototype._setTheming = function() {
30174 this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
30175 }, s.prototype.updatePosition = function(e) {
30176 if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
30177 this.config.position = e, this._updatePosition()
30178 }, s.prototype._updatePosition = function(e) {
30179 var t = this.config.position;
30180 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()))
30181 }, s.prototype._focusOnOpen = function() {
30182 if (this.config.focusOnOpen) {
30184 this._$rootScope.$$postDigest(function() {
30185 (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
30188 }, s.prototype._createBackdrop = function() {
30189 if (this.config.hasBackdrop) {
30190 if (!this._backdropRef) {
30191 var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
30192 open: "_md-opaque-enter",
30193 close: "_md-opaque-leave"
30195 this.config.animation && e.duration(this.config.animation._rawDuration);
30198 attachTo: this.config.attachTo,
30200 panelClass: "_md-panel-backdrop",
30201 zIndex: this.config.zIndex - 1
30203 this._backdropRef = this._$mdPanel.create(t)
30205 if (!this._backdropRef.isAttached) return this._backdropRef.attach()
30207 }, s.prototype._addEventListeners = function() {
30208 this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
30209 }, s.prototype._removeEventListeners = function() {
30210 this._removeListeners && this._removeListeners.forEach(function(e) {
30212 }), this._removeListeners = []
30213 }, s.prototype._configureEscapeToClose = function() {
30214 if (this.config.escapeToClose) {
30215 var e = u(this.config.attachTo),
30218 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(s.closeReasons.ESCAPE))
30220 this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
30221 t.panelContainer.off("keydown", n), e.off("keydown", n)
30224 }, s.prototype._configureClickOutsideToClose = function() {
30225 if (this.config.clickOutsideToClose) {
30226 var e, n = this.config.propagateContainerEvents ? t.element(document.body) : this.panelContainer,
30232 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))
30234 n.on("mousedown", r), n.on("mouseup", o), this._removeListeners.push(function() {
30235 n.off("mousedown", r), n.off("mouseup", o)
30238 }, s.prototype._configureScrollListener = function() {
30239 if (!this.config.disableParentScroll) {
30240 var e = t.bind(this, this._updatePosition),
30241 n = this._$$rAF.throttle(e),
30246 this._$window.addEventListener("scroll", i, !0), this._removeListeners.push(function() {
30247 r._$window.removeEventListener("scroll", i, !0)
30250 }, s.prototype._configureTrapFocus = function() {
30251 if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
30252 var e = this.panelEl;
30253 this._topFocusTrap = h.clone()[0], this._bottomFocusTrap = h.clone()[0];
30254 var t = function() {
30257 this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
30258 this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
30259 }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
30261 }, s.prototype.updateAnimation = function(e) {
30262 this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
30263 }, s.prototype._animateOpen = function() {
30264 this.panelContainer.addClass("md-panel-is-showing");
30265 var e = this.config.animation;
30266 if (!e) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
30268 return this._$q(function(n) {
30269 var r = t._done(n, t);
30270 e.animateOpen(t.panelEl).then(r, function() {
30271 t._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), r()
30274 }, s.prototype._animateClose = function() {
30275 var e = this.config.animation;
30276 if (!e) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
30278 return this._$q(function(n) {
30279 var r = function() {
30280 t.panelContainer.removeClass("md-panel-is-showing"), n(t)
30282 e.animateClose(t.panelEl).then(r, function() {
30283 t._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), r()
30286 }, s.prototype.registerInterceptor = function(e, n) {
30288 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);
30289 var i = this._interceptors[e] = this._interceptors[e] || [];
30290 return -1 === i.indexOf(n) && i.push(n), this
30291 }, s.prototype.removeInterceptor = function(e, t) {
30292 var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
30293 return n > -1 && this._interceptors[e].splice(n, 1), this
30294 }, s.prototype.removeAllInterceptors = function(e) {
30295 return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
30296 }, s.prototype._callInterceptors = function(e) {
30299 return (n._interceptors && n._interceptors[e] || []).reduceRight(function(e, i) {
30300 var o = i && t.isFunction(i.then) ? i : null;
30301 return e.then(function() {
30310 }, s.prototype._simpleBind = function(e, t) {
30311 return function(n) {
30312 return e.apply(t, n)
30314 }, s.prototype._done = function(e, t) {
30315 return function() {
30318 }, s.prototype.addToGroup = function(e) {
30319 this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
30320 var t = this._$mdPanel._groups[e];
30321 t.panels.indexOf(this) < 0 && t.panels.push(this)
30322 }, s.prototype.removeFromGroup = function(e) {
30323 if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
30324 var t = this._$mdPanel._groups[e],
30325 n = t.panels.indexOf(this);
30326 n > -1 && t.panels.splice(n, 1)
30327 }, s.closeReasons = {
30328 CLICK_OUTSIDE: "clickOutsideToClose",
30329 ESCAPE: "escapeToClose"
30332 ALIGN_START: "align-start",
30333 ALIGN_END: "align-end",
30334 OFFSET_START: "offset-start",
30335 OFFSET_END: "offset-end"
30338 ALIGN_TOPS: "align-tops",
30339 ALIGN_BOTTOMS: "align-bottoms",
30342 }, c.absPosition = {
30347 }, c.viewportMargin = 8, c.prototype.absolute = function() {
30348 return this._absolute = !0, this
30349 }, c.prototype._setPosition = function(e, n) {
30350 if (e === c.absPosition.RIGHT || e === c.absPosition.LEFT) this._left = this._right = "";
30352 if (e !== c.absPosition.BOTTOM && e !== c.absPosition.TOP) {
30353 var r = Object.keys(c.absPosition).join().toLowerCase();
30354 throw new Error("mdPanel: Position must be one of " + r + ".")
30356 this._top = this._bottom = ""
30358 return this["_" + e] = t.isString(n) ? n : "0", this
30359 }, c.prototype.top = function(e) {
30360 return this._setPosition(c.absPosition.TOP, e)
30361 }, c.prototype.bottom = function(e) {
30362 return this._setPosition(c.absPosition.BOTTOM, e)
30363 }, c.prototype.start = function(e) {
30364 var t = this._isRTL ? c.absPosition.RIGHT : c.absPosition.LEFT;
30365 return this._setPosition(t, e)
30366 }, c.prototype.end = function(e) {
30367 var t = this._isRTL ? c.absPosition.LEFT : c.absPosition.RIGHT;
30368 return this._setPosition(t, e)
30369 }, c.prototype.left = function(e) {
30370 return this._setPosition(c.absPosition.LEFT, e)
30371 }, c.prototype.right = function(e) {
30372 return this._setPosition(c.absPosition.RIGHT, e)
30373 }, c.prototype.centerHorizontally = function() {
30374 return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
30375 }, c.prototype.centerVertically = function() {
30376 return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
30377 }, c.prototype.center = function() {
30378 return this.centerHorizontally().centerVertically()
30379 }, c.prototype.relativeTo = function(e) {
30380 return this._absolute = !1, this._relativeToEl = u(e), this
30381 }, c.prototype.addPanelPosition = function(e, t) {
30382 if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
30383 return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
30387 }, c.prototype._validateYPosition = function(e) {
30389 for (var t, n = Object.keys(c.yPosition), r = [], i = 0; t = n[i]; i++) {
30390 var o = c.yPosition[t];
30391 if (r.push(o), o === e) return
30393 throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
30395 }, c.prototype._validateXPosition = function(e) {
30397 for (var t, n = Object.keys(c.xPosition), r = [], i = 0; t = n[i]; i++) {
30398 var o = c.xPosition[t];
30399 if (r.push(o), o === e) return
30401 throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
30403 }, c.prototype.withOffsetX = function(e) {
30404 return this._translateX.push(e), this
30405 }, c.prototype.withOffsetY = function(e) {
30406 return this._translateY.push(e), this
30407 }, c.prototype.getTop = function() {
30409 }, c.prototype.getBottom = function() {
30410 return this._bottom
30411 }, c.prototype.getLeft = function() {
30413 }, c.prototype.getRight = function() {
30415 }, c.prototype.getTransform = function() {
30416 return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
30417 }, c.prototype._setTransform = function(e) {
30418 return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
30419 }, c.prototype._isOnscreen = function(e) {
30420 var t = parseInt(this.getLeft()),
30421 n = parseInt(this.getTop());
30422 if (this._translateX.length || this._translateY.length) {
30423 var r = d(e, this._$mdConstant.CSS.TRANSFORM);
30426 var i = t + e[0].offsetWidth,
30427 o = n + e[0].offsetHeight;
30428 return t >= 0 && n >= 0 && o <= this._$window.innerHeight && i <= this._$window.innerWidth
30429 }, c.prototype.getActualPosition = function() {
30430 return this._actualPosition
30431 }, c.prototype._reduceTranslateValues = function(e, n) {
30432 return n.map(function(n) {
30433 var r = t.isFunction(n) ? n(this) : n;
30434 return e + "(" + r + ")"
30436 }, c.prototype._setPanelPosition = function(e) {
30437 if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
30439 if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
30440 for (var t = 0; t < this._positions.length; t++)
30441 if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
30442 this._constrainToViewport(e)
30444 }, c.prototype._constrainToViewport = function(e) {
30445 var t = c.viewportMargin,
30448 if (this.getTop()) {
30449 var i = parseInt(this.getTop()),
30450 o = e[0].offsetHeight + i,
30451 a = this._$window.innerHeight;
30452 i < t ? this._top = t + "px" : o > a && (this._top = i - (o - a + t) + "px")
30454 if (this.getLeft()) {
30455 var s = parseInt(this.getLeft()),
30456 l = e[0].offsetWidth + s,
30457 u = this._$window.innerWidth;
30458 s < t ? this._left = t + "px" : l > u && (this._left = s - (l - u + t) + "px")
30460 e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
30461 }, c.prototype._reverseXPosition = function(e) {
30462 if (e === c.xPosition.CENTER) return e;
30463 return e.indexOf("start") > -1 ? e.replace("start", "end") : e.replace("end", "start")
30464 }, c.prototype._bidi = function(e) {
30465 return this._isRTL ? this._reverseXPosition(e) : e
30466 }, c.prototype._calculatePanelPosition = function(e, t) {
30467 var n = e[0].getBoundingClientRect(),
30470 o = this._relativeToEl[0].getBoundingClientRect(),
30474 switch (this._bidi(t.x)) {
30475 case c.xPosition.OFFSET_START:
30476 this._left = a - r + "px";
30478 case c.xPosition.ALIGN_END:
30479 this._left = s - r + "px";
30481 case c.xPosition.CENTER:
30482 var u = a + .5 * l - .5 * r;
30483 this._left = u + "px";
30485 case c.xPosition.ALIGN_START:
30486 this._left = a + "px";
30488 case c.xPosition.OFFSET_END:
30489 this._left = s + "px"
30495 case c.yPosition.ABOVE:
30496 this._top = d - i + "px";
30498 case c.yPosition.ALIGN_BOTTOMS:
30499 this._top = f - i + "px";
30501 case c.yPosition.CENTER:
30502 var p = d + .5 * h - .5 * i;
30503 this._top = p + "px";
30505 case c.yPosition.ALIGN_TOPS:
30506 this._top = d + "px";
30508 case c.yPosition.BELOW:
30509 this._top = f + "px"
30512 SLIDE: "md-panel-animate-slide",
30513 SCALE: "md-panel-animate-scale",
30514 FADE: "md-panel-animate-fade"
30515 }, l.prototype.openFrom = function(e) {
30516 return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
30517 }, l.prototype.closeTo = function(e) {
30518 return this._closeTo = this._getPanelAnimationTarget(e), this
30519 }, l.prototype.duration = function(e) {
30521 if (t.isNumber(e)) return e / 1e3
30523 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
30524 }, l.prototype._getPanelAnimationTarget = function(e) {
30525 return t.isDefined(e.top) || t.isDefined(e.left) ? {
30531 } : this._getBoundingClientRect(u(e))
30532 }, l.prototype.withAnimation = function(e) {
30533 return this._animationClass = e, this
30534 }, l.prototype.animateOpen = function(e) {
30535 var n = this._$mdUtil.dom.animator;
30536 this._fixBounds(e);
30538 i = e[0].style.transform || "",
30539 o = n.toTransformCss(i),
30540 a = n.toTransformCss(i);
30541 switch (this._animationClass) {
30542 case l.animation.SLIDE:
30543 e.css("opacity", "1"), r = {
30544 transitionInClass: "_md-panel-animate-enter"
30546 var s = n.calculateSlideToOrigin(e, this._openFrom) || "";
30547 o = n.toTransformCss(s + " " + i);
30549 case l.animation.SCALE:
30551 transitionInClass: "_md-panel-animate-enter"
30553 var c = n.calculateZoomToOrigin(e, this._openFrom) || "";
30554 o = n.toTransformCss(c + " " + i);
30556 case l.animation.FADE:
30558 transitionInClass: "_md-panel-animate-enter"
30562 r = t.isString(this._animationClass) ? {
30563 transitionInClass: this._animationClass
30565 transitionInClass: this._animationClass.open,
30566 transitionOutClass: this._animationClass.close
30569 return r.duration = this._openDuration, n.translate3d(e, o, a, r)
30570 }, l.prototype.animateClose = function(e) {
30571 var n = this._$mdUtil.dom.animator,
30573 i = e[0].style.transform || "",
30574 o = n.toTransformCss(i),
30575 a = n.toTransformCss(i);
30576 switch (this._animationClass) {
30577 case l.animation.SLIDE:
30578 e.css("opacity", "1"), r = {
30579 transitionInClass: "_md-panel-animate-leave"
30581 var s = n.calculateSlideToOrigin(e, this._closeTo) || "";
30582 a = n.toTransformCss(s + " " + i);
30584 case l.animation.SCALE:
30586 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
30588 var c = n.calculateZoomToOrigin(e, this._closeTo) || "";
30589 a = n.toTransformCss(c + " " + i);
30591 case l.animation.FADE:
30593 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
30597 r = t.isString(this._animationClass) ? {
30598 transitionOutClass: this._animationClass
30600 transitionInClass: this._animationClass.close,
30601 transitionOutClass: this._animationClass.open
30604 return r.duration = this._closeDuration, n.translate3d(e, o, a, r)
30605 }, l.prototype._fixBounds = function(e) {
30606 var t = e[0].offsetWidth,
30607 n = e[0].offsetHeight;
30608 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)
30609 }, l.prototype._getBoundingClientRect = function(e) {
30610 if (e instanceof t.element) return {
30612 bounds: e[0].getBoundingClientRect()
30615 }(), t.module("material.components.progressCircular", ["material.core"]),
30617 function e(e, n, r) {
30618 function i(r, i, d) {
30620 var e = (d.mdMode || "").trim();
30621 if (e) switch (e) {
30635 var i = n.supplant("translateX({0}%) scale({1},1)", [(r - 100) / 2, r / 100]),
30639 t.element(e).css(o)
30643 var p, m = d.hasOwnProperty("disabled"),
30644 g = n.dom.animator.toCss,
30645 v = t.element(i[0].querySelector(".md-bar1")),
30646 b = t.element(i[0].querySelector(".md-bar2")),
30647 y = t.element(i[0].querySelector(".md-container"));
30648 i.attr("md-mode", f()).toggleClass(u, m),
30650 if (t.isUndefined(d.mdMode)) {
30651 var e = t.isDefined(d.value) ? a : s;
30652 i.attr("md-mode", e), d.mdMode = e
30654 }(), d.$observe("value", function(e) {
30656 i.attr("aria-valuenow", t), f() != l && h(b, t)
30657 }), d.$observe("mdBufferValue", function(e) {
30659 }), d.$observe("disabled", function(e) {
30660 m = !0 === e || !1 === e ? !!e : t.isDefined(e), i.toggleClass(u, m), y.toggleClass(p, !m)
30661 }), d.$observe("mdMode", function(e) {
30662 switch (p && y.removeClass(p), e) {
30667 y.addClass(p = "md-mode-" + e);
30670 y.addClass(p = "md-mode-" + s)
30676 return Math.max(0, Math.min(e || 0, 100))
30678 var a = "determinate",
30679 s = "indeterminate",
30682 u = "_md-progress-linear-disabled";
30685 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>',
30686 compile: function(e, t, n) {
30687 return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), i
30691 e.$inject = ["$mdTheming", "$mdUtil", "$log"], t.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
30694 function e(e, n, r, i) {
30696 this._radioButtonRenderFns = [], this.$element = e
30700 var i = e.iterator(n[0].querySelectorAll("md-radio-button"), !0);
30702 var o = n[0].querySelector("md-radio-button.md-checked"),
30703 a = i[r < 0 ? "previous" : "next"](o, function(e) {
30704 return !t.element(e).attr("disabled")
30706 t.element(a).triggerHandler("click")
30709 return o.prototype = {
30710 init: function(e) {
30711 this._ngModelCtrl = e, this._ngModelCtrl.$render = t.bind(this, this.render)
30714 this._radioButtonRenderFns.push(e)
30716 remove: function(e) {
30717 var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
30719 render: function() {
30720 this._radioButtonRenderFns.forEach(function(e) {
30724 setViewValue: function(e, t) {
30725 this._ngModelCtrl.$setViewValue(e, t), this.render()
30727 getViewValue: function() {
30728 return this._ngModelCtrl.$viewValue
30730 selectNext: function() {
30731 return a(this.$element, 1)
30733 selectPrevious: function() {
30734 return a(this.$element, -1)
30736 setActiveDescendant: function(e) {
30737 this.$element.attr("aria-activedescendant", e)
30739 isDisabled: function() {
30740 return this.$element[0].hasAttribute("disabled")
30744 controller: ["$element", o],
30745 require: ["mdRadioGroup", "?ngModel"],
30747 pre: function(o, a, s, c) {
30749 a.hasClass("md-focused") || a.addClass("md-focused")
30751 a.addClass("_md"), r(a);
30753 d = c[1] || e.fakeNgModel();
30754 u.init(d), o.mouseActive = !1, a.attr({
30755 role: "radiogroup",
30756 tabIndex: a.attr("tabindex") || "0"
30757 }).on("keydown", function(r) {
30758 var i = r.which || r.keyCode;
30759 if (i == n.KEY_CODE.ENTER || r.currentTarget == r.target) switch (i) {
30760 case n.KEY_CODE.LEFT_ARROW:
30761 case n.KEY_CODE.UP_ARROW:
30762 r.preventDefault(), u.selectPrevious(), l();
30764 case n.KEY_CODE.RIGHT_ARROW:
30765 case n.KEY_CODE.DOWN_ARROW:
30766 r.preventDefault(), u.selectNext(), l();
30768 case n.KEY_CODE.ENTER:
30769 var o = t.element(e.getClosest(a[0], "form"));
30770 o.length > 0 && o.triggerHandler("submit")
30772 }).on("mousedown", function(e) {
30773 o.mouseActive = !0, i(function() {
30776 }).on("focus", function() {
30777 !1 === o.mouseActive && u.$element.addClass("md-focused")
30778 }).on("blur", function() {
30779 u.$element.removeClass("md-focused")
30786 function n(e, t, n) {
30787 var r = "md-checked";
30790 require: "^mdRadioGroup",
30792 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>',
30793 link: function(i, o, a, s) {
30795 if (!s) throw "RadioButton: No RadioGroupController could be found.";
30796 s.add(u), a.$observe("value", u), o.on("click", l).on("$destroy", function() {
30802 o[0].hasAttribute("disabled") || s.isDisabled() || i.$apply(function() {
30803 s.setViewValue(a.value, e && e.type)
30808 var e = s.getViewValue() == a.value;
30809 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))
30815 id: a.id || "radio_" + t.nextUid(),
30817 "aria-checked": "false"
30818 }), e.expectWithText(n, "aria-label")
30819 }(o), a.ngValue ? t.nextTick(c, !1) : c()
30823 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], n.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], t.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", n)
30826 function r(e, r, i, o, a, c, l, u) {
30827 var d = i.KEY_CODE;
30828 d.SPACE, d.ENTER, d.UP_ARROW, d.DOWN_ARROW;
30831 require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
30832 compile: function(u, d) {
30833 var f = t.element("<md-select-value><span></span></md-select-value>");
30834 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());
30835 var h = u.find("md-content");
30836 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) {
30837 var p = t.element('<select class="md-visually-hidden"></select>');
30840 "aria-hidden": "true",
30843 var m = u.find("md-option");
30844 t.forEach(m, function(e) {
30845 var n = t.element("<option>" + e.innerHTML + "</option>");
30846 e.hasAttribute("ng-value") ? n.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && n.attr("value", e.getAttribute("value")), p.append(n)
30847 }), p.append('<option ng-value="' + d.ngModel + '" selected></option>'), u.parent().append(p)
30849 var g = r.parseAttributeBoolean(d.multiple),
30850 v = g ? "multiple" : "",
30851 b = '<div class="md-select-menu-container" aria-hidden="true" role="presentation"><md-select-menu role="presentation" {0}>{1}</md-select-menu></div>';
30852 return b = r.supplant(b, [v, u.html()]), u.empty().append(f), u.append(b), d.tabindex || d.$set("tabindex", 0),
30853 function(u, d, f, h) {
30855 var e = d.attr("aria-label") || d.attr("placeholder");
30856 !e && k && k.label && (e = k.label.text()), w = e, a.expect(d, "aria-label", e)
30860 D && (I = I || D.find("md-select-menu").controller("mdSelectMenu"), C.setLabelText(I.selectedLabels()))
30865 var e = I.selectedLabels({
30868 d.attr("aria-label", e.length ? w + ": " + e : w)
30873 k && k.setHasValue(I.selectedLabels().length > 0 || (d[0].validity || {}).badInput)
30877 if (i.isNavigationKey(e)) e.preventDefault(), _();
30878 else if (s(e, i)) {
30879 e.preventDefault();
30880 var n = I.optNodeForKeyboardSearch(e);
30881 if (!n || n.hasAttribute("disabled")) return;
30882 var r = t.element(n).controller("mdOption");
30883 I.isMultiple || I.deselect(Object.keys(I.selected)[0]), I.select(r.hashKey, r.value), I.refreshViewValue()
30888 N._mdSelectIsOpen = !0, d.attr("aria-expanded", "true"), e.show({
30895 preserveElement: !0,
30897 loadingAsync: !!f.mdOnOpen && (u.$eval(f.mdOnOpen) || !0)
30898 }).finally(function() {
30899 N._mdSelectIsOpen = !1, d.focus(), d.attr("aria-expanded", "false"), x.$setTouched()
30907 M = d.find("md-select-value"),
30908 A = t.isDefined(f.readonly),
30909 S = r.parseAttributeBoolean(f.mdNoAsterisk);
30910 if (S && d.addClass("md-no-asterisk"), k) {
30911 var O = k.isErrorGetter || function() {
30912 return x.$invalid && (x.$touched || T && T.$submitted)
30914 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!");
30915 k.input = d, k.label || a.expect(d, "aria-label", d.attr("placeholder")), u.$watch(O, k.setInvalid)
30919 if (D = t.element(d[0].querySelector(".md-select-menu-container")), N = u, f.mdContainerClass) {
30920 var e = D[0].getAttribute("class") + " " + f.mdContainerClass;
30921 D[0].setAttribute("class", e)
30922 }(I = D.find("md-select-menu").controller("mdSelectMenu")).init(x, f.ngModel), d.on("$destroy", function() {
30925 }(), o(d), T && t.isDefined(f.multiple) && r.nextTick(function() {
30926 (x.$modelValue || x.$viewValue) && T.$setPristine()
30929 x.$render = function() {
30931 }, f.$observe("placeholder", x.$render), k && k.label && f.$observe("required", function(e) {
30932 k.label.toggleClass("md-required", e && !S)
30933 }), C.setLabelText = function(e) {
30934 C.setIsPlaceholder(!e);
30936 if (f.mdSelectedText && f.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
30937 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);
30938 var n = M.children().eq(0);
30939 f.mdSelectedHtml ? n.html(l.getTrustedHtml(e)) : t ? n.text(e) : n.html(e)
30940 }, C.setIsPlaceholder = function(e) {
30941 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"))
30942 }, A || (d.on("focus", function(e) {
30943 k && k.setFocused(!0)
30944 }), d.on("blur", function(e) {
30945 E && (E = !1, N._mdSelectIsOpen && e.stopImmediatePropagation()), N._mdSelectIsOpen || (k && k.setFocused(!1), b())
30946 })), C.triggerClose = function() {
30948 }, u.$$postDigest(function() {
30950 }), u.$watch(function() {
30951 return I.selectedLabels()
30954 f.$observe("ngMultiple", function(e) {
30957 P = u.$watch(function() {
30959 }, function(e, t) {
30960 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() {
30964 }), f.$observe("disabled", function(e) {
30965 t.isString(e) && (e = !0), $ !== n && $ === e || ($ = e, e ? d.attr({
30966 "aria-disabled": "true"
30967 }).removeAttr("tabindex").off("click", _).off("keydown", y) : d.attr({
30968 tabindex: f.tabindex,
30969 "aria-disabled": "false"
30970 }).on("click", _).on("keydown", y))
30971 }), f.hasOwnProperty("disabled") || f.hasOwnProperty("ngDisabled") || (d.attr({
30972 "aria-disabled": "false"
30973 }), d.on("click", _), d.on("keydown", y));
30976 "aria-expanded": "false",
30977 "aria-multiselectable": g && !f.ngMultiple ? "true" : "false"
30979 d[0].hasAttribute("id") || (j.id = "select_" + r.nextUid());
30980 var H = "select_container_" + r.nextUid();
30981 D.attr("id", H), d.find("md-select-menu").length || (j["aria-owns"] = H), d.attr(j), u.$on("$destroy", function() {
30982 e.destroy().finally(function() {
30983 k && (k.setFocused(!1), k.setHasValue(!1), k.input = null), x.$setTouched()
30988 controller: function() {}
30992 function i(e, r, i, o) {
30993 function a(o, a, s) {
30995 var e = d.ngModel.$modelValue || d.ngModel.$viewValue || [];
30996 if (t.isArray(e)) {
30997 var n = Object.keys(d.selected),
30998 r = e.map(d.hashGetter);
30999 n.filter(function(e) {
31000 return -1 === r.indexOf(e)
31001 }).forEach(d.deselect), r.forEach(function(t, n) {
31008 var e = d.ngModel.$viewValue || d.ngModel.$modelValue;
31009 Object.keys(d.selected).forEach(d.deselect), d.select(d.hashGetter(e), e)
31012 d.isMultiple = t.isDefined(a.multiple), d.selected = {}, d.options = {}, o.$watchCollection(function() {
31015 d.ngModel.$render()
31018 d.setMultiple = function(e) {
31020 return t.isArray(e || n || [])
31023 f = f || r.$isEmpty, d.isMultiple = e, d.isMultiple ? (r.$validators["md-multiple"] = n, r.$render = c, o.$watchCollection(d.modelBinding, function(e) {
31025 }), r.$isEmpty = function(e) {
31026 return !e || 0 === e.length
31027 }) : (delete r.$validators["md-multiple"], r.$render = u)
31029 var h, p, m, g = "";
31030 d.optNodeForKeyboardSearch = function(e) {
31031 h && clearTimeout(h), h = setTimeout(function() {
31032 h = n, g = "", m = n, p = n
31034 var r = e.keyCode - (i.isNumPadKey(e) ? 48 : 0);
31035 g += String.fromCharCode(r);
31036 var o = new RegExp("^" + g, "i");
31037 p || (p = s.find("md-option"), m = new Array(p.length), t.forEach(p, function(e, t) {
31038 m[t] = e.textContent.trim()
31040 for (var a = 0; a < m.length; ++a)
31041 if (o.test(m[a])) return p[a]
31042 }, d.init = function(n, i) {
31043 d.ngModel = n, d.modelBinding = i, d.ngModel.$isEmpty = function(e) {
31044 return !d.options[d.hashGetter(e)]
31046 var a = r.getModelOption(n, "trackBy");
31050 d.hashGetter = function(e, t) {
31051 return s.$value = e, c(t || o, s)
31053 } else d.hashGetter = function(e) {
31054 return t.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++l)) : e
31056 d.setMultiple(d.isMultiple)
31057 }, d.selectedLabels = function(e) {
31058 var t = (e = e || {}).mode || "html",
31059 n = r.nodesToArray(s[0].querySelectorAll("md-option[selected]"));
31062 return "html" == t ? i = function(e) {
31063 if (e.hasAttribute("md-option-empty")) return "";
31064 var t = e.innerHTML,
31065 n = e.querySelector(".md-ripple-container");
31066 n && (t = t.replace(n.outerHTML, ""));
31067 var r = e.querySelector(".md-container");
31068 return r && (t = t.replace(r.outerHTML, "")), t
31069 } : "aria" == t && (i = function(e) {
31070 return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
31071 }), r.uniq(n.map(i)).join(", ")
31074 }, d.select = function(e, t) {
31075 var n = d.options[e];
31076 n && n.setSelected(!0), d.selected[e] = t
31077 }, d.deselect = function(e) {
31078 var t = d.options[e];
31079 t && t.setSelected(!1), delete d.selected[e]
31080 }, d.addOption = function(e, n) {
31081 if (t.isDefined(d.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + n.value + '" found.');
31082 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())
31083 }, d.removeOption = function(e) {
31084 delete d.options[e]
31085 }, d.refreshViewValue = function() {
31087 for (var i in d.selected)(e = d.options[i]) ? n.push(e.value) : n.push(d.selected[i]);
31088 var o = r.getModelOption(d.ngModel, "trackBy"),
31089 a = d.isMultiple ? n : n[0],
31090 s = d.ngModel.$modelValue;
31091 (o ? t.equals(s, a) : s + "" === a) || (d.ngModel.$setViewValue(a), d.ngModel.$render())
31094 return a.$inject = ["$scope", "$attrs", "$element"], {
31096 require: ["mdSelectMenu"],
31100 pre: function(e, n, i, a) {
31102 var i = r.getClosest(n.target, "md-option"),
31103 o = i && t.element(i).data("$mdOptionController");
31105 if (i.hasAttribute("disabled")) return n.stopImmediatePropagation(), !1;
31106 var a = c.hashGetter(o.value),
31107 s = t.isDefined(c.selected[a]);
31108 e.$apply(function() {
31109 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()
31114 n.addClass("_md"), o(n), n.on("click", s), n.on("keypress", function(e) {
31115 13 != e.keyCode && 32 != e.keyCode || s(e)
31122 function o(e, n, r) {
31129 function o(i, o, a, s) {
31130 function c(e, t, n) {
31131 if (d.hashGetter) {
31132 var r = d.hashGetter(t, i),
31133 o = d.hashGetter(e, i);
31134 l.hashKey = o, l.value = e, d.removeOption(r, l), d.addOption(o, l)
31135 } else n || i.$$postDigest(function() {
31141 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() {
31142 return o.text().trim()
31143 }, c), a.$observe("disabled", function(e) {
31144 e ? o.attr("tabindex", "-1") : o.attr("tabindex", "0")
31145 }), i.$$postDigest(function() {
31146 a.$observe("selected", function(e) {
31147 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())
31149 }), e.attach(i, o),
31153 "aria-selected": "false"
31155 o[0].hasAttribute("id") || (e.id = "select_option_" + n.nextUid()), o.attr(e)
31156 }(), i.$on("$destroy", function() {
31157 d.removeOption(l.hashKey, l)
31162 this.selected = !1, this.setSelected = function(t) {
31163 t && !this.selected ? e.attr({
31164 selected: "selected",
31165 "aria-selected": "true"
31166 }) : !t && this.selected && (e.removeAttr("selected"), e.attr("aria-selected", "false")), this.selected = t
31169 return a.$inject = ["$element"], {
31171 require: ["mdOption", "^^mdSelectMenu"],
31173 compile: function(e, n) {
31174 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
31180 function i(r, i, d, f, h, p, m, g, v) {
31182 var t = e.selectCtrl;
31184 var n = e.selectEl.controller("mdSelectMenu");
31185 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
31189 function y(n, r, i) {
31191 p = i.target[0].children[0],
31194 b = i.contentEl[0],
31195 y = m.getBoundingClientRect(),
31196 _ = p.getBoundingClientRect(),
31200 bottom: y.height - c,
31201 right: y.width - c - (d.floatingScrollbars() ? 16 : 0)
31204 top: _.top - $.top,
31205 left: _.left - $.left,
31206 right: $.right - (_.left + _.width),
31207 bottom: $.bottom - (_.top + _.height)
31209 E = y.width - 2 * c,
31210 k = g.querySelector("md-option[selected]"),
31211 C = g.getElementsByTagName("md-option"),
31212 x = g.getElementsByTagName("md-optgroup"),
31214 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");
31216 "MD-OPTGROUP" === (M.tagName || "").toUpperCase() && (s = M = C[0] || b.firstElementChild || b), i.focusedNode = M, h.style.display = "block";
31217 var A = g.getBoundingClientRect(),
31220 var O = f.getComputedStyle(s);
31221 S.paddingLeft = parseInt(O.paddingLeft, 10) || 0, S.paddingRight = parseInt(O.paddingRight, 10) || 0
31224 var D = b.offsetHeight / 2;
31225 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))
31228 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"];
31229 var H = h.getBoundingClientRect(),
31230 L = Math.round(100 * Math.min(_.width / A.width, 1)) / 100,
31231 F = Math.round(100 * Math.min(_.height / A.height, 1)) / 100;
31234 element: t.element(h),
31236 left: Math.floor(a($.left, N, $.right - H.width)),
31237 top: Math.floor(a($.top, I, $.bottom - H.height)),
31243 element: t.element(g),
31245 transformOrigin: R,
31246 transform: i.alreadyOpen ? "" : d.supplant("scale({0},{1})", [L, F])
31251 var _ = "$mdSelect.show() expected a target element in options.target but got '{0}'!",
31252 $ = d.dom.animator,
31257 onShow: function(e, o, a) {
31259 return h(function(e) {
31260 if (a.isRemoved) return h.reject(!1);
31261 var t = y(0, o, a);
31262 t.container.element.css($.toCss(t.container.styles)), t.dropDown.element.css($.toCss(t.dropDown.styles)), p(function() {
31263 o.addClass("md-active"), t.dropDown.element.css($.toCss({
31271 e && !e.hasAttribute("disabled") && e.focus()
31275 var e = function(e, t, n) {
31276 return function() {
31277 if (!n.isRemoved) {
31278 var e = y(0, t, n),
31281 r.element.css($.toCss(r.styles)), i.element.css($.toCss(i.styles))
31286 return n.on("resize", e), n.on("orientationchange", e),
31288 n.off("resize", e), n.off("orientationchange", e)
31294 e.preventDefault(), e.stopPropagation(), a.restoreFocus = !1, d.nextTick(r.hide, !0)
31298 switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
31305 var t = d.getClosest(e.target, "md-option");
31306 t && (h.triggerHandler({
31309 }), e.preventDefault()), f(e);
31313 e.stopPropagation(), e.preventDefault(), a.restoreFocus = !0, d.nextTick(r.hide, !0);
31317 var n = h.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
31318 a.focusedNode = n || a.focusedNode, n && n.focus()
31324 var t, r = d.nodesToArray(a.optionNodes),
31325 i = r.indexOf(a.focusedNode);
31327 -1 === i ? i = 0 : "next" === e && i < r.length - 1 ? i++ : "prev" === e && i > 0 && i--, (t = r[i]).hasAttribute("disabled") && (t = n)
31328 } while (!t && i < r.length - 1 && i > 0);
31329 t && t.focus(), a.focusedNode = t
31341 if (!(e && "click" == e.type && e.currentTarget != h[0] || function() {
31343 if (e && e.currentTarget.children.length > 0) {
31344 var n = e.currentTarget.children[0];
31345 n.scrollHeight > n.clientHeight && n.children.length > 0 && e.pageX - e.currentTarget.getBoundingClientRect().left > n.querySelector("md-option").offsetWidth && (t = !0)
31349 var t = d.getClosest(e.target, "md-option");
31350 t && t.hasAttribute && !t.hasAttribute("disabled") && (e.preventDefault(), e.stopPropagation(), p.isMultiple || (a.restoreFocus = !0, d.nextTick(function() {
31351 r.hide(p.ngModel.$viewValue)
31355 if (!a.isRemoved) {
31356 var h = a.selectEl,
31357 p = h.controller("mdSelectMenu") || {};
31358 return o.addClass("md-clickable"), a.backdrop && a.backdrop.on("click", e), h.on("keydown", t), h.on("click", f),
31360 a.backdrop && a.backdrop.off("click", e), h.off("keydown", t), h.off("click", f), o.removeClass("md-clickable"), a.isRemoved = !0
31364 return a.loadingAsync && !a.isRemoved && (e.$$loadingAsyncDone = !1, h.when(a.loadingAsync).then(function() {
31365 e.$$loadingAsyncDone = !0, delete a.loadingAsync
31366 }).then(function() {
31370 var r = o.find("md-select-menu");
31371 if (!n.target) throw new Error(d.supplant(_, [n.target]));
31374 target: t.element(n.target),
31375 parent: t.element(n.parent),
31377 contentEl: o.find("md-content"),
31378 optionNodes: r[0].getElementsByTagName("md-option")
31380 }(0, a), a.hideBackdrop = function(e, t, n) {
31381 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, {
31385 n.backdrop && n.backdrop.remove(), n.disableParentScroll && n.restoreScroll(), delete n.restoreScroll
31388 function(e, t, n) {
31389 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) {
31392 removeClass: "md-leave",
31394 }).start().then(c).then(e)
31399 }(0, o, a).then(function(e) {
31400 return o.attr("aria-hidden", "false"), a.alreadyOpen = !0, a.cleanupInteraction = b(), a.cleanupResizing = u(), l(a.focusedNode), e
31403 onRemove: function(e, t, n) {
31405 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()
31408 o = e.$on("$destroy", function() {
31411 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? r() : (i = m(t, {
31412 addClass: "md-leave"
31413 })).start().then(r)
31416 disableParentScroll: !0
31421 return e && t.isFunction(e.then)
31424 function a(e, t, n) {
31425 return Math.max(e, Math.min(t, n))
31430 left: e.offsetLeft,
31432 width: e.offsetWidth,
31433 height: e.offsetHeight
31445 var r = e[0].style.display;
31446 e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
31450 return i.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], r("$mdSelect").setDefaults({
31451 methods: ["target"],
31457 var n = String.fromCharCode(e.keyCode),
31458 r = e.keyCode <= 31;
31459 return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
31461 r.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], i.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], o.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], a.$inject = ["$$interimElementProvider"];
31464 u = t.element('<div class="md-container"><div class="md-icon"></div></div>');
31465 t.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", r).directive("mdSelectMenu", i).directive("mdOption", o).directive("mdOptgroup", function() {
31468 compile: function(e, n) {
31469 e.parent().find("md-select-header").length || function() {
31470 var r = e.find("label");
31471 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)
31475 }).directive("mdSelectHeader", function() {
31479 }).provider("$mdSelect", a)
31483 return ["$mdUtil", "$window", function(n, r) {
31487 link: function(i, o, a) {
31488 var s = i.$on("$md-resize-enable", function() {
31491 l = c.nodeType === r.Node.ELEMENT_NODE ? r.getComputedStyle(c) : {};
31492 i.$watch(a[e], function(e) {
31494 n.nextTick(function() {
31495 i.$broadcast("$md-resize")
31498 cachedTransitionStyles: l
31500 n.dom.animator.waitTransitionEnd(o, r).then(function() {
31501 i.$broadcast("$md-resize")
31510 t.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
31513 function e(e, r, i, o) {
31515 var o = function() {
31519 return i.when(r.supplant(c, [n || ""]))
31528 then: function(e) {
31529 return s(n).then(e || t.noop)
31535 return e.when(t).catch(o.error)
31537 var c = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
31539 find: function(t, i) {
31541 return a || i ? a : (o.error(r.supplant(c, [t || ""])), n)
31545 return function(e, n) {
31546 if (t.isUndefined(e)) return l;
31549 return !i && r ? l.waitFor(e) : !i && t.isUndefined(n) ? a(l, e) : i
31553 function r(e, r, i, o, a, s, c, l, u, d, f, h, p) {
31554 function m(c, m, g, v) {
31557 r = e[0].scrollTop;
31561 bottom: n.style.bottom,
31562 height: n.style.height
31567 height: e[0].clientHeight + "px"
31571 if (!t && C) return function() {
31572 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
31577 e && !w ? (w = x.css("overflow"), x.css("overflow", "hidden")) : t.isDefined(w) && (x.css("overflow", w), w = n)
31581 return e.keyCode === i.KEY_CODE.ESCAPE ? $(e) : d.when(!0)
31585 return e.preventDefault(), v.close()
31587 var w, E, k, C, x = null,
31590 A = l(g.mdIsLockedOpen),
31592 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.', {
31593 selector: g.mdDisableScrollTarget
31594 }))), 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() {
31595 E && E.remove(), v.destroy()
31596 }), c.$on("$destroy", function() {
31598 }), c.$watch(function() {
31599 return A(c.$parent, {
31600 $media: function(t) {
31601 return u.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), e(t)
31605 }, function(e, t) {
31606 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)
31607 }), c.$watch("isOpen", function(e) {
31608 var t = r.findFocusTarget(m) || r.findFocusTarget(m, "[md-sidenav-focus]") || m,
31610 n[e ? "on" : "off"]("keydown", _), E && E[e ? "on" : "off"]("click", $);
31612 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() {
31613 c.isOpen && (p(function() {
31614 S.triggerHandler("resize")
31615 }), t && t.focus()), i && i()
31617 }), v.$toggleOpen = function(e) {
31618 return c.isOpen == e ? d.when(!0) : (c.isOpen && v.onCloseCb && v.onCloseCb(), d(function(t) {
31619 c.isOpen = e, r.nextTick(function() {
31620 M.then(function(e) {
31621 !c.isOpen && T && "keyboard" === k && (T.focus(), T = null), t(e)
31630 isOpen: "=?mdIsOpen"
31632 controller: "$mdSidenavController",
31633 compile: function(e) {
31634 return e.addClass("md-closed").attr("tabIndex", "-1"), m
31639 function i(e, t, n, r, i) {
31641 o.isOpen = function() {
31643 }, o.isLockedOpen = function() {
31644 return !!e.isLockedOpen
31645 }, o.onClose = function(e) {
31646 return o.onCloseCb = e, o
31647 }, o.open = function() {
31648 return o.$toggleOpen(!0)
31649 }, o.close = function() {
31650 return o.$toggleOpen(!1)
31651 }, o.toggle = function() {
31652 return o.$toggleOpen(!e.isOpen)
31653 }, o.$toggleOpen = function(t) {
31654 return r.when(e.isOpen = t)
31656 var a = t.mdComponentId,
31657 s = a && a.indexOf(i.startSymbol()) > -1,
31658 c = s ? i(a)(e.$parent) : a;
31659 o.destroy = n.register(o, c), s && t.$observe("mdComponentId", function(e) {
31660 e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
31663 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() {
31666 require: "^mdSidenav",
31667 link: function(e, t, n, r) {}
31669 }).controller("$mdSidenavController", i)
31672 function e(e, n, r, i, o, a, s, c, l, u) {
31673 function d(r, d, f, h) {
31679 Z = parseFloat(e), d.attr("aria-valuemin", e), p()
31683 X = parseFloat(e), d.attr("aria-valuemax", e), p()
31691 J = C(parseInt(e), 0, 6)
31695 if (Y && !j() && !t.isUndefined(Q)) {
31697 var e = "Slider step value must be greater than zero when in discrete mode";
31698 throw l.error(e), new Error(e)
31700 var r = Math.floor((X - Z) / Q);
31701 ee || (ee = t.element("<canvas>").css("position", "absolute"), V.append(ee), te = ee[0].getContext("2d"));
31703 !i || i.height || i.width || ($(), i = ne), ee[0].width = i.width, ee[0].height = i.height;
31704 for (var o, a = 0; a <= r; a++) {
31705 var s = n.getComputedStyle(V[0]);
31706 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)
31714 te.clearRect(0, 0, e.width, e.height)
31719 ne = q[0].getBoundingClientRect()
31727 R.$setViewValue(C(x(e)))
31731 isNaN(R.$viewValue) && (R.$viewValue = R.$modelValue), R.$viewValue = C(R.$viewValue);
31732 var e = I(R.$viewValue);
31733 r.modelValue = R.$viewValue, d.attr("aria-valuenow", R.$viewValue), T(e), L.text(R.$viewValue)
31736 function C(e, n, r) {
31737 if (t.isNumber(e)) return n = t.isNumber(n) ? n : Z, r = t.isNumber(r) ? r : X, Math.max(n, Math.min(r, e))
31741 if (t.isNumber(e)) {
31742 var n = Math.round((e - Z) / Q) * Q + Z;
31743 return n = Math.round(n * Math.pow(10, J)) / Math.pow(10, J), P && P.fitInputWidthToTextLength && i.debounce(function() {
31744 P.fitInputWidthToTextLength(n.toString().length)
31750 var t = 100 * (e = O(e)) + "%",
31751 n = G ? 100 * (1 - e) + "%" : t;
31752 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)
31756 Y ? S(W ? e.pointer.y : e.pointer.x) : A(W ? e.pointer.y : e.pointer.x)
31760 r.$evalAsync(function() {
31766 var t = C(x(N(D(e))));
31771 return Math.max(0, Math.min(e || 0, 1))
31775 var t = (e - (W ? ne.top : ne.left)) / (W ? ne.height : ne.width);
31776 return W || "rtl" !== i.bidi() || (t = 1 - t), Math.max(0, Math.min(1, W ? 1 - t : t))
31780 return Z + (G ? 1 - e : e) * (X - Z)
31784 var t = (e - Z) / (X - Z);
31785 return G ? 1 - t : t
31789 $setViewValue: function(e) {
31790 this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
31796 $viewChangeListeners: []
31799 j = (t.element(i.getClosest(d, "_md-slider-container", !0)), f.ngDisabled ? t.bind(null, c(f.ngDisabled), r.$parent) : function() {
31800 return d[0].hasAttribute("disabled")
31802 H = t.element(d[0].querySelector(".md-thumb")),
31803 L = t.element(d[0].querySelector(".md-thumb-text")),
31805 q = t.element(d[0].querySelector(".md-track-container")),
31806 U = t.element(d[0].querySelector(".md-track-fill")),
31807 V = t.element(d[0].querySelector(".md-track-ticks")),
31808 z = t.element(d[0].getElementsByClassName("md-slider-wrapper")),
31809 B = (t.element(d[0].getElementsByClassName("md-slider-content")), i.throttle($, 5e3)),
31810 W = t.isDefined(f.mdVertical),
31811 Y = t.isDefined(f.mdDiscrete),
31812 G = t.isDefined(f.mdInvert);
31813 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);
31815 f.ngDisabled && r.$parent.$watch(f.ngDisabled, function() {
31816 d.attr("aria-disabled", !!j())
31817 }), s.register(z, "drag", {
31819 }), r.mouseActive = !1, z.on("keydown", function(e) {
31822 (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() {
31823 E(R.$viewValue + t)
31826 }).on("mousedown", function() {
31827 y(), r.mouseActive = !0, z.removeClass("md-focused"), u(function() {
31830 }).on("focus", function() {
31831 !1 === r.mouseActive && z.addClass("md-focused")
31832 }).on("blur", function() {
31833 z.removeClass("md-focused"), d.removeClass("md-active"), _()
31834 }).on("$md.pressdown", function(e) {
31836 d.addClass("md-active"), d[0].focus(), $();
31837 var t = C(x(N(D(W ? e.pointer.y : e.pointer.x))));
31838 r.$apply(function() {
31842 }).on("$md.pressup", function(e) {
31844 d.removeClass("md-dragging");
31845 var t = C(x(N(D(W ? e.pointer.y : e.pointer.x))));
31846 r.$apply(function() {
31850 }).on("$md.dragstart", function(e) {
31851 j() || (re = !0, e.stopPropagation(), d.addClass("md-dragging"), M(e))
31852 }).on("$md.drag", function(e) {
31853 re && (e.stopPropagation(), M(e))
31854 }).on("$md.dragend", function(e) {
31855 re && (e.stopPropagation(), re = !1)
31856 }), setTimeout(p, 0);
31857 var K = e.throttle(p);
31858 t.element(n).on("resize", K), r.$on("$destroy", function() {
31859 t.element(n).off("resize", K)
31860 }), R.$render = k, R.$viewChangeListeners.push(k), R.$formatters.push(C), R.$formatters.push(x);
31861 var Z, X, Q, J, ee, te, ne = {};
31867 require: ["?ngModel", "?^mdSliderContainer"],
31868 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>',
31869 compile: function(e, n) {
31870 var i = t.element(e[0].getElementsByClassName("md-slider-wrapper")),
31871 o = n.tabindex || 0;
31872 return i.attr("tabindex", o), (n.disabled || n.ngDisabled) && i.attr("tabindex", -1), e.attr("role", "slider"), r.expect(e, "aria-label"), d
31876 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() {
31878 controller: function() {},
31879 compile: function(e) {
31880 var r = e.find("md-slider");
31881 if (r) return r.attr("md-vertical") !== n && e.attr("md-vertical", ""), r.attr("flex") || r.attr("flex", ""),
31882 function(e, n, r, i) {
31884 n.children().attr("disabled", e), n.find("input").attr("disabled", e)
31888 r.disabled ? o(!0) : r.ngDisabled && (a = e.$watch(r.ngDisabled, function(e) {
31890 })), e.$on("$destroy", function() {
31894 i.fitInputWidthToTextLength = function(e) {
31895 var t = n[0].querySelector("md-input-container");
31897 var r = getComputedStyle(t),
31898 i = parseInt(r.minWidth),
31899 o = 2 * parseInt(r.padding);
31900 s = s || parseInt(r.maxWidth);
31901 var a = Math.max(s, i + o + i / 2 * e);
31902 t.style.maxWidth = a + "px"
31911 function e(e, t, r, i) {
31914 p.items.forEach(s), p.items = p.items.sort(function(e, t) {
31915 return e.top < t.top ? -1 : 1
31917 for (var e, t = f.prop("scrollTop"), n = p.items.length - 1; n >= 0; n--)
31918 if (t > p.items[n].top) {
31926 var t = e.element[0];
31927 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;
31928 e.height = e.element.prop("offsetHeight");
31929 var i = r.floatingScrollbars() ? "0" : n;
31930 r.bidi(e.clone, "margin-left", e.left, i), r.bidi(e.clone, "margin-right", i, e.right)
31934 var e = f.prop("scrollTop"),
31935 t = e > (c.prevScrollTop || 0);
31936 if (c.prevScrollTop = e, 0 !== e) {
31938 if (p.next && p.next.top <= e) return void l(p.next);
31939 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))
31942 if (p.current && p.prev && e < p.current.top) return void l(p.prev);
31943 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))
31945 p.current && d(p.current, e)
31950 if (p.current !== e) {
31951 p.current && (d(p.current, null), u(p.current, null)), e && u(e, "active"), p.current = e;
31952 var t = p.items.indexOf(e);
31953 p.next = p.items[t + 1], p.prev = p.items[t - 1], u(p.next, "next"), u(p.prev, "prev")
31958 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)
31962 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)")))
31964 var f = i.$element,
31966 a(f), f.on("$scrollstart", h), f.on("$scroll", c);
31973 add: function(e, t) {
31974 t.addClass("md-sticky-clone");
31979 return p.items.push(n), r.nextTick(function() {
31983 p.items.forEach(function(t, n) {
31984 t.element[0] === e[0] && (p.items.splice(n, 1), t.clone.remove())
31994 +r.now() - o > a ? (i = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), t.throttle(n))
31997 e.on("scroll touchmove", function() {
31998 i || (i = !0, t.throttle(n), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), o = +r.now()
32001 var s = r.checkStickySupport();
32002 return function(e, t, n) {
32003 var r = t.controller("mdContent");
32011 var a = r.$element.data("$$sticky");
32012 a || (a = o(r), r.$element.data("$$sticky", a));
32013 var c = n || i(t.clone())(e),
32015 e.$on("$destroy", l)
32019 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], t.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
32022 function e(e, n, r, i, o) {
32027 template: '<div class="md-subheader _md"> <div class="md-subheader-inner"> <div class="md-subheader-content"></div> </div></div>',
32028 link: function(a, s, c, l, u) {
32030 return t.element(e[0].querySelector(".md-subheader-content"))
32032 r(s), s.addClass("_md"), i.prefixer().removeAttribute(s, "ng-repeat");
32033 var f = s[0].outerHTML;
32034 c.$set("role", "heading"), o.expect(s, "aria-level", "2"), u(a, function(e) {
32036 }), s.hasClass("md-no-sticky") || u(a, function(t) {
32037 var r = n('<div class="md-subheader-wrapper" aria-hidden="true">' + f + "</div>")(a);
32038 i.nextTick(function() {
32045 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], t.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
32048 function e(e, n, r, i, o, a, s) {
32052 priority: r.BEFORE_NG_ARIA,
32054 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>',
32055 require: ["^?mdInputContainer", "?ngModel", "?^form"],
32056 compile: function(e, l) {
32057 var u = c.compile(e, l).post;
32058 return e.addClass("md-dragging"),
32059 function(e, c, l, d) {
32061 e.$apply(function() {
32062 h.$setViewValue(t), h.$render()
32066 var h = d[1] || n.fakeNgModel(),
32068 null != l.disabled ? p = function() {
32070 } : l.ngDisabled && (p = i(l.ngDisabled));
32071 var m = t.element(c[0].querySelector(".md-thumb-container")),
32072 g = t.element(c[0].querySelector(".md-container")),
32073 v = t.element(c[0].querySelector(".md-label"));
32075 c.removeClass("md-dragging")
32076 }), u(e, c, l, d), p && e.$watch(p, function(e) {
32077 c.attr("tabindex", e ? -1 : 0)
32078 }), l.$observe("mdInvert", function(e) {
32079 var t = n.parseAttributeBoolean(e);
32080 t ? c.prepend(v) : c.prepend(g), c.toggleClass("md-inverted", t)
32081 }), a.register(g, "drag"), g.on("$md.dragstart", function(t) {
32082 p && p(e) || (t.stopPropagation(), c.addClass("md-dragging"), b = {
32083 width: m.prop("offsetWidth")
32085 }).on("$md.drag", function(e) {
32087 e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
32088 var t = e.pointer.distanceX / b.width,
32089 n = h.$viewValue ? 1 + t : t;
32090 n = Math.max(0, Math.min(1, n)), m.css(r.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), b.translate = n
32092 }).on("$md.dragend", function(t) {
32093 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() {
32102 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], t.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
32109 link: function(t, i, o) {
32111 i.on(r, function(e) {
32112 t.$applyAsync(function() {
32121 t.$inject = ["$parse"];
32123 r = "$md." + e.toLowerCase();
32126 t.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
32127 }(), t.module("material.components.tabs", ["material.core", "material.components.icon"]),
32129 t.module("material.components.tabs").service("MdTabsPaginationService", function() {
32133 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], i.push(r), r += n.offsetWidth;
32139 for (t = 0; t < e.tabs.length; t++) n += e.tabs[t].offsetWidth;
32143 decreasePageOffset: function(t, n) {
32144 var r, i, o = t.canvas,
32146 for (r = 0; r < a.length; r++)
32151 return Math.max(0, i - o.clientWidth)
32153 increasePageOffset: function(n, r) {
32154 var i, o, a = n.canvas,
32155 s = t(n) - a.clientWidth,
32157 for (i = 0; c.length, c[i] <= r + a.clientWidth; i++) o = c[i];
32158 return Math.min(s, o)
32161 getTotalTabsWidth: t
32169 link: function(t, n) {
32170 n.addClass("_md"), t.$on("$destroy", function() {
32183 this.$onInit = function() {
32185 n.highlightAction && (t.highlightClasses = ["md-highlight", n.highlightClass]), t.$watch(function() {
32189 }), this.resolve = function() {
32195 function i(e, n, r, i) {
32197 return i("gt-xs") ? "md-toast-open-" + (e.indexOf("top") > -1 ? "top" : "bottom") : "md-toast-open-bottom"
32199 var s = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
32201 onShow: function(t, c, l) {
32202 o = l.textContent || l.content;
32203 var u = !i("gt-sm");
32204 return c = r.extractElementByName(c, "md-toast", !0), l.element = c, l.onSwipe = function(e, t) {
32205 var i = e.type.replace("$md.", ""),
32206 o = i.replace("swipe", "");
32207 "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))
32208 }, 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) {
32210 }).join(" ")), l.parent && l.parent.addClass("md-toast-animating"), e.enter(c, l.parent).then(function() {
32211 l.parent && l.parent.removeClass("md-toast-animating")
32214 onRemove: function(t, n, i) {
32215 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() {
32216 i.parent && i.parent.removeClass("md-toast-animating"), r.hasComputedStyle(i.parent, "position", "static") && i.parent.css("position", "")
32220 position: "bottom left",
32224 transformTemplate: function(e, n) {
32225 if (n.autoWrap && e && !/md-toast-content/g.test(e)) {
32226 var r = document.createElement("md-template");
32228 for (var i = 0; i < r.children.length; i++)
32229 if ("MD-TOAST" === r.children[i].nodeName) {
32230 var o = t.element('<div class="md-toast-content">');
32231 o.append(t.element(r.children[i].childNodes)), r.children[i].appendChild(o[0])
32239 r.$inject = ["$mdToast", "$scope"], i.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia"];
32241 return e("$mdToast").setDefaults({
32242 methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
32244 }).addPreset("simple", {
32245 argOption: "textContent",
32246 methods: ["textContent", "content", "action", "highlightAction", "highlightClass", "theme", "parent"],
32247 options: ["$mdToast", "$mdTheming", function(e, t) {
32249 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>',
32251 theme: t.defaultTheme(),
32252 controllerAs: "toast",
32253 bindToController: !0
32256 }).addMethod("updateTextContent", n).addMethod("updateContent", n)
32258 e.$inject = ["$mdToast"], n.$inject = ["$$interimElementProvider"], t.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", n)
32261 function e(e, n, r, i, o) {
32262 var a = t.bind(null, r.supplant, "translate3d(0,{0}px,0)");
32266 link: function(s, c, l) {
32267 c.addClass("_md"), i(c), r.nextTick(function() {
32268 c.addClass("_md-toolbar-transitions")
32269 }, !1), t.isDefined(l.mdScrollShrink) && function() {
32271 t && c.parent()[0] === t.parent()[0] && (p && p.off("scroll", y), p = t, m = d())
32275 var t = e ? e.target.scrollTop : v;
32276 _(), 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() {
32277 var e = c.hasClass("md-whiteframe-z1");
32278 e && !g ? o.removeClass(c, "md-whiteframe-z1") : !e && g && o.addClass(c, "md-whiteframe-z1")
32283 return p ? (p.on("scroll", y), p.attr("scroll-shrink", "true"), r.nextTick(f, !1), function() {
32284 p.off("scroll", y), p.attr("scroll-shrink", "false"), f()
32289 var e = -(h = c.prop("offsetHeight")) * b + "px";
32295 var h, p, m = t.noop,
32298 b = l.mdShrinkSpeedFactor || .5,
32300 _ = r.debounce(f, 5e3);
32301 s.$on("$mdContentLoaded", i), l.$observe("mdScrollShrink", function(e) {
32302 var t = c.parent().find("md-content");
32303 !p && t.length && i(0, t), !1 === (e = s.$eval(e)) ? m() : m = d()
32304 }), l.ngShow && s.$watch(l.ngShow, f), l.ngHide && s.$watch(l.ngHide, f), s.$on("$destroy", m)
32309 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], t.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
32313 e.addClass("md-truncate")
32315 e.$inject = ["$element"], t.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
32323 function n(e, n, r, i, o, a, s, c) {
32324 var l = "focus touchstart mouseenter",
32325 u = "blur touchcancel mouseleave",
32331 x: s.xPosition.CENTER,
32332 y: s.yPosition.ABOVE
32335 x: s.xPosition.OFFSET_END,
32336 y: s.yPosition.CENTER
32339 x: s.xPosition.CENTER,
32340 y: s.yPosition.BELOW
32343 x: s.xPosition.OFFSET_START,
32344 y: s.yPosition.CENTER
32351 mdZIndex: "=?mdZIndex",
32352 mdDelay: "=?mdDelay",
32353 mdVisible: "=?mdVisible",
32354 mdAutohide: "=?mdAutohide",
32355 mdDirection: "@?mdDirection"
32357 link: function(m, g, v) {
32359 m.mdZIndex = m.mdZIndex || d, m.mdDelay = m.mdDelay || f, p[m.mdDirection] || (m.mdDirection = h)
32363 var t = e || o(g.text().trim())(m.$parent);
32364 (!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))
32368 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))
32372 $.queued && $.value === !!t || !$.queued && m.mdVisible === !!t || ($.value = !!t, $.queued || (t ? ($.queued = !0, S = e(function() {
32373 m.mdVisible = $.value, $.queued = !1, S = null, m.visibleWatcher || w(m.mdVisible)
32374 }, m.mdDelay)) : a.nextTick(function() {
32375 m.mdVisible = !1, m.visibleWatcher || w(!1)
32384 if (!g[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
32386 var e = t.element(document.body),
32387 n = s.newPanelAnimation().openFrom(D).closeTo(D).withAnimation({
32395 propagateContainerEvents: !0,
32396 panelClass: "md-tooltip " + C,
32399 zIndex: m.mdZIndex,
32404 M.open().then(function() {
32405 M.panelEl.attr("role", "tooltip")
32412 var C, x, T, M, A, S, O = "md-tooltip-" + a.nextUid(),
32413 D = a.getParentWithPointerEvents(g),
32417 b(), y(), g.detach(), _(),
32420 return e.some(function(e) {
32421 return "disabled" === e.attributeName && D[0].disabled
32430 R = document.activeElement === D[0]
32434 "focus" === e.type && R ? R = !1 : m.mdVisible || (D.on(u, d), $(!0), "touchstart" === e.type && D.one("touchend", function() {
32435 a.nextTick(function() {
32436 i.one("touchend", d)
32442 ((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
32448 if (D[0] && "MutationObserver" in n) {
32449 var h = new MutationObserver(function(e) {
32450 t(e) && a.nextTick(function() {
32458 R = !1, c.register("scroll", r, !0), c.register("blur", o), c.register("resize", N), m.$on("$destroy", function() {
32459 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()
32460 }), D.on("mousedown", f), D.on(l, s)
32466 if (g[0] && "MutationObserver" in n) {
32467 var t = new MutationObserver(function(e) {
32468 e.forEach(function(e) {
32469 "md-visible" !== e.attributeName || m.visibleWatcher || (m.visibleWatcher = m.$watch("mdVisible", w))
32474 }), v.hasOwnProperty("mdVisible") && (m.visibleWatcher = m.$watch("mdVisible", w))
32475 } else m.visibleWatcher = m.$watch("mdVisible", w);
32476 m.$watch("mdDirection", _), g.one("$destroy", e), D.one("$destroy", e), m.$on("$destroy", function() {
32477 $(!1), M && M.destroy(), t && t.disconnect(), g.remove()
32478 }), g.text().indexOf(o.startSymbol()) > -1 && m.$watch(function() {
32479 return g.text().trim()
32485 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() {
32487 r[e.type] && r[e.type].forEach(function(t) {
32494 register: function(t, o, a) {
32495 var s = r[t] = r[t] || [];
32496 s.length || (a ? e.addEventListener(t, n, !0) : i.on(t, n)), -1 === s.indexOf(o) && s.push(o)
32498 deregister: function(t, o, a) {
32500 c = s ? s.indexOf(o) : -1;
32501 c > -1 && (s.splice(c, 1), 0 === s.length && (a ? e.removeEventListener(t, n, !0) : i.off(t, n)))
32508 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>"
32511 function n(e, n, r, i, o, a, s, c, l) {
32512 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) {
32513 e !== this.topIndex && this.scrollToIndex(e)
32514 }))) : 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");
32515 var u = t.bind(this, this.updateSize);
32516 e(t.bind(this, function() {
32518 var e = n.debounce(u, 10, null, !1),
32520 this.size || e(), r.on("resize", e), s.$on("$destroy", function() {
32522 }), s.$emit("$md-resize-enable"), s.$on("$md-resize", u)
32530 require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
32533 transclude: "element",
32534 compile: function(t, n) {
32535 var r = n.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
32538 a = n.mdExtraName && e(n.mdExtraName);
32539 return function(e, t, n, r, s) {
32540 r[0].link_(r[1], s, i, o, a)
32546 function i(e, n, r, i, o, a, s, c) {
32547 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_))
32551 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() ");
32558 link: function(e, t, n) {
32559 var r = e.$eval(n.mdForceHeight) || null;
32560 r && t && (t[0].style.height = r)
32564 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() {
32568 compile: function(e, t) {
32569 e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
32572 }).directive("mdVirtualRepeat", r).directive("mdForceHeight", a);
32573 n.prototype.register = function(e) {
32574 this.repeater = e, t.element(this.scroller).on("scroll wheel touchmove touchend", t.bind(this, this.handleScroll_))
32575 }, n.prototype.isHorizontal = function() {
32576 return this.horizontal
32577 }, n.prototype.getSize = function() {
32579 }, n.prototype.setSize_ = function(e) {
32580 var t = this.getDimensionName_();
32581 this.size = e, this.$element[0].style[t] = e + "px"
32582 }, n.prototype.unsetSize_ = function() {
32583 this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
32584 }, n.prototype.updateSize = function() {
32585 this.originalSize || (this.size = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight, this.handleScroll_(), this.repeater && this.repeater.containerUpdated())
32586 }, n.prototype.getScrollSize = function() {
32587 return this.scrollSize
32588 }, n.prototype.getDimensionName_ = function() {
32589 return this.isHorizontal() ? "width" : "height"
32590 }, n.prototype.sizeScroller_ = function(e) {
32591 var t = this.getDimensionName_(),
32592 n = this.isHorizontal() ? "height" : "width";
32593 if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
32595 this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
32596 var r = Math.floor(e / this.maxElementPixels),
32597 i = document.createElement("div");
32598 i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
32599 for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
32600 i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
32602 }, n.prototype.autoShrink_ = function(e) {
32603 var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
32604 if (this.autoShrink && t !== this.size) {
32605 null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
32606 var n = this.originalSize || this.size;
32607 if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
32608 else if (null !== this.originalSize) {
32610 var r = this.originalSize;
32611 this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
32613 this.repeater.containerUpdated()
32615 }, n.prototype.setScrollSize = function(e) {
32616 var t = e + this.offsetSize;
32617 this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
32618 }, n.prototype.getScrollOffset = function() {
32619 return this.scrollOffset
32620 }, n.prototype.scrollTo = function(e) {
32621 this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
32622 }, n.prototype.scrollToIndex = function(e) {
32623 var t = this.repeater.getItemSize(),
32624 n = this.repeater.itemsLength;
32625 e > n && (e = n - 1), this.scrollTo(t * e)
32626 }, n.prototype.resetScroll = function() {
32628 }, n.prototype.handleScroll_ = function() {
32629 var e = "rtl" != document.dir && "rtl" != document.body.dir;
32630 e || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
32631 var t = this.isHorizontal() ? e ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
32632 if (!(t === this.scrollOffset || t > this.scrollSize - this.size)) {
32633 var n = this.repeater.getItemSize();
32635 var r = Math.max(0, Math.floor(t / n) - 3),
32636 i = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || e ? r * n : -r * n) + "px)";
32637 if (this.scrollOffset = t, this.offsetter.style.webkitTransform = i, this.offsetter.style.transform = i, this.bindTopIndex) {
32638 var o = Math.floor(t / n);
32639 o !== this.topIndex && o < this.repeater.getItemCount() && (this.topIndex = o, this.bindTopIndex.assign(this.$scope, o), this.$rootScope.$$phase || this.$scope.$digest())
32641 this.repeater.containerUpdated()
32644 }, i.prototype.link_ = function(e, n, r, i, o) {
32645 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)
32646 }, i.prototype.cleanupBlocks_ = function() {
32647 t.forEach(this.pooledBlocks, function(e) {
32650 }, i.prototype.readItemSize_ = function() {
32651 if (!this.itemSize) {
32652 this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
32653 var e = this.getBlock_(0);
32654 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()
32656 }, i.prototype.repeatListExpression_ = function(e) {
32657 var t = this.rawRepeatListExpression(e);
32658 if (this.onDemand && t) {
32660 return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
32663 }, i.prototype.containerUpdated = function() {
32664 if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== t.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e) {
32665 e && e.length && this.readItemSize_()
32666 })), void(this.$rootScope.$$phase || this.$scope.$digest());
32667 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) {
32668 this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
32669 }))), 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))
32670 }, i.prototype.getItemSize = function() {
32671 return this.itemSize
32672 }, i.prototype.getItemCount = function() {
32673 return this.itemsLength
32674 }, i.prototype.virtualRepeatUpdate_ = function(e, n) {
32675 this.isVirtualRepeatUpdating_ = !0;
32676 var r = e && e.length || 0,
32678 if (this.items && r < this.items.length && 0 !== this.container.getScrollOffset()) {
32680 var o = this.container.getScrollOffset();
32681 this.container.resetScroll(), this.container.scrollTo(o)
32683 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) {
32684 var t = parseInt(e, 10);
32685 (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
32686 }, this), this.$browser.$$checkUrlChange = t.noop;
32689 for (a = this.newStartIndex; a < this.newEndIndex && null == this.blocks[a]; a++) s = this.getBlock_(a), this.updateBlock_(s, a), c.push(s);
32690 for (; null != this.blocks[a]; a++) this.updateBlock_(this.blocks[a], a);
32691 for (var u = a - 1; a < this.newEndIndex; a++) s = this.getBlock_(a), this.updateBlock_(s, a), l.push(s);
32692 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) {
32693 this.isFirstRender = !1;
32694 var d = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex;
32695 this.$mdUtil.nextTick(function() {
32696 this.container.scrollToIndex(d)
32699 this.isVirtualRepeatUpdating_ = !1
32700 }, i.prototype.getBlock_ = function(e) {
32701 if (this.pooledBlocks.length) return this.pooledBlocks.pop();
32703 return this.transclude(t.bind(this, function(t, r) {
32708 }, this.updateScope_(r, e), this.parentNode.appendChild(t[0])
32710 }, i.prototype.updateBlock_ = function(e, t) {
32711 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())
32712 }, i.prototype.updateScope_ = function(e, t) {
32713 e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
32714 }, i.prototype.poolBlock_ = function(e) {
32715 this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
32716 }, i.prototype.domFragmentFromBlocks_ = function(e) {
32717 var t = this.$document[0].createDocumentFragment();
32718 return e.forEach(function(e) {
32719 t.appendChild(e.element[0])
32721 }, i.prototype.updateIndexes_ = function() {
32722 var e = this.items ? this.items.length : 0,
32723 t = Math.ceil(this.container.getSize() / this.itemSize);
32724 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)
32725 }, o.prototype.$$includeIndexes = function(e, t) {
32726 for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
32727 this.length = this.model.getLength()
32728 }, a.$inject = ["$mdUtil"]
32737 link: function(o, a, s) {
32739 s.$observe("mdWhiteframe", function(o) {
32740 (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);
32741 var l = o == t ? "" : "md-whiteframe-" + o + "dp";
32742 s.$updateClass(l, c), c = l
32747 e.$inject = ["$log"], t.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
32750 function e(e, s, c, l, u, d, f, h, p, m, g, v) {
32752 e.requireMatch && ye && ye.$setValidity("md-require-match", !!e.selectedItem || !e.searchText)
32756 if (!fe) return c.nextTick(y, !1, e);
32757 var t, n = (e.dropdownItems || i) * r,
32758 l = fe.wrap.getBoundingClientRect(),
32759 u = fe.snap.getBoundingClientRect(),
32760 d = fe.root.getBoundingClientRect(),
32761 f = u.bottom - d.top,
32762 h = d.bottom - u.top,
32763 m = l.left - d.left,
32767 t = s.find("md-input-container");
32769 var n = t.find("input");
32770 e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
32774 b = e.dropdownPosition;
32775 if (b || (b = f > h && d.height - f - o < n ? "top" : "bottom"), p.mdFloatingLabel && (m += a, g -= 2 * a), t = {
32777 minWidth: g + "px",
32778 maxWidth: Math.max(l.right - d.left, d.right - l.left) - o + "px"
32779 }, "top" === b) t.top = "auto", t.bottom = h + "px", t.maxHeight = Math.min(n, l.top - d.top - o) + "px";
32781 var _ = d.bottom - l.bottom - o + c.getViewportTop();
32782 t.top = f - v + "px", t.bottom = "auto", t.maxHeight = Math.min(n, _) + "px"
32784 fe.$.scrollContainer.css(t), c.nextTick(function() {
32785 var e = fe.scrollContainer.getBoundingClientRect(),
32787 e.right > d.right - o && (t.left = l.right - e.width + "px"), fe.$.scrollContainer.css(t)
32792 fe.$.root.length && (u(fe.$.scrollContainer), fe.$.scrollContainer.detach(), fe.$.root.append(fe.$.scrollContainer), f.pin && f.pin(fe.$.scrollContainer, h))
32800 var n = parseInt(e.delay, 10) || 0;
32801 p.$observe("disabled", function(e) {
32802 le.isDisabled = c.parseAttributeBoolean(e, !1)
32803 }), p.$observe("required", function(e) {
32804 le.isRequired = c.parseAttributeBoolean(e, !1)
32805 }), p.$observe("readonly", function(e) {
32806 le.isReadonly = c.parseAttributeBoolean(e, !1)
32807 }), e.$watch("searchText", n ? c.debounce(N, n) : N), e.$watch("selectedItem", A), t.element(d).on("resize", _e), e.$on("$destroy", E)
32811 if (le.hidden || c.enableScrolling(), t.element(d).off("resize", _e), fe) {
32812 var e = ["ul", "scroller", "scrollContainer", "input"];
32813 t.forEach(e, function(e) {
32823 scrollContainer: s[0].querySelector(".md-virtual-repeat-container"),
32824 scroller: s[0].querySelector(".md-virtual-repeat-scroller"),
32825 ul: s.find("ul")[0],
32826 input: s.find("input")[0],
32829 root: document.body
32830 }).li = fe.ul.getElementsByTagName("li"), fe.$ = x(fe), ye = fe.$.input.controller("ngModel")
32835 for (e = s; e.length && (n = e.attr("md-autocomplete-snap"), !t.isDefined(n)); e = e.parent());
32836 if (e.length) return {
32838 wrap: "width" === n.toLowerCase() ? e[0] : s.find("md-autocomplete-wrap")[0]
32840 var r = s.find("md-autocomplete-wrap")[0];
32849 for (var r in e) e.hasOwnProperty(r) && (n[r] = t.element(e[r]));
32857 return e.on("wheel", t), e.on("touchmove", t),
32859 e.off("wheel", t), e.off("touchmove", t)
32864 ge || le.hidden || fe.input.focus(), pe = !1, le.hidden = F()
32868 b(), n ? P(n).then(function(t) {
32869 e.searchText = t, D(n, r)
32870 }) : r && e.searchText && P(r).then(function(n) {
32871 t.isString(e.searchText) && n.toString().toLowerCase() === e.searchText.toLowerCase() && (e.searchText = "")
32876 t.isFunction(e.itemChange) && e.itemChange(j(e.selectedItem))
32880 t.isFunction(e.textChange) && e.textChange()
32884 me.forEach(function(n) {
32890 le.index = H(), t !== n && (b(), P(e.selectedItem).then(function(r) {
32891 t !== r && (e.selectedItem = null, t !== n && O(), G() ? oe() : (le.matches = [], L(!1), J(!1, $e.Count)))
32896 e && (pe = !1, ge = !1), fe.input.blur()
32900 return t.isNumber(e.minLength) ? e.minLength : 1
32904 return m.when(function(t) {
32905 return t && e.itemText ? e.itemText(j(t)) : null
32906 }(n) || n).then(function(e) {
32907 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
32914 return le.itemName && (t[le.itemName] = e), t
32918 return e.autoselect ? 0 : -1
32922 le.loading != e && (le.loading = e), le.hidden = F()
32926 return !q() || !z()
32930 return !(le.loading && !B()) && (!W() && !!ge)
32934 return V("blur") || !le.hidden || le.loading || V("clear") && e.searchText
32938 return !e.escapeOptions || -1 !== e.escapeOptions.toLowerCase().indexOf(t)
32942 return G() && B() || ie()
32946 return !!le.matches.length
32950 return !!le.scope.selectedItem
32954 return P(le.matches[le.index])
32958 return (e.searchText || "").length >= R()
32962 c.nextTick(function() {
32963 P(le.matches[t]).then(function(e) {
32964 var t = fe.$.input.controller("ngModel");
32965 t.$setViewValue(e), t.$render()
32966 }).finally(function() {
32967 e.selectedItem = le.matches[t], L(!1)
32973 le.index = 0, le.matches = []
32977 L(!0), e.searchText = "";
32978 var t = document.createEvent("CustomEvent");
32979 t.initCustomEvent("change", !0, !0, {
32981 }), fe.input.dispatchEvent(t), fe.input.blur(), e.searchText = "", fe.input.focus()
32986 he[o] = t, (n || "") === (e.searchText || "") && ae(t)
32988 var i = e.$parent.$eval(de),
32989 o = n.toLowerCase(),
32992 a ? r(i) : s && function(t) {
32993 t && (t = m.when(t), ve++, L(!0), c.nextTick(function() {
32994 t.then(r).finally(function() {
33002 var n = e ? "polite" : "assertive",
33004 t & $e.Selected && -1 !== le.index && r.push(Y()), t & $e.Count && r.push(m.resolve(ee())), m.all(r).then(function(e) {
33005 v.announce(e.join(" "), n)
33010 switch (le.matches.length) {
33012 return "There are no matches available.";
33014 return "There is 1 match available.";
33016 return "There are " + le.matches.length + " matches available."
33022 var e = fe.li[0].offsetHeight,
33025 r = fe.scroller.clientHeight,
33026 i = fe.scroller.scrollTop;
33027 t < i ? re(t) : n > i + r && re(n - r)
33036 fe.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
33040 var e = (le.scope.searchText || "").length;
33041 return le.hasNotFound && !B() && (!le.loading || ne()) && e >= R() && (ge || pe) && !W()
33045 var t = e.searchText || "",
33046 n = t.toLowerCase();
33047 !e.noCache && he[n] ? ae(he[n]) : Q(t), le.hidden = F()
33051 le.matches = t, le.hidden = F(), le.loading && L(!1), e.selectOnMatch && se(), y(), J(!0, $e.Count)
33055 var t = e.searchText,
33058 1 === n.length && P(r).then(function(n) {
33060 e.matchInsensitive && !r && (r = t.toLowerCase() == n.toLowerCase()), r && K(0)
33064 function ce(t, n) {
33065 p[t] && e.$parent.$eval(p[t], n || {})
33068 ue = e.itemsExpr.split(/ in /i),
33078 _e = c.debounce(function() {
33081 ! function(e, t, n) {
33082 Object.defineProperty(le, e, {
33091 }("hidden", function(e, n) {
33092 !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))
33093 }, !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) {
33094 switch (t.keyCode) {
33095 case l.KEY_CODE.DOWN_ARROW:
33096 if (le.loading) return;
33097 t.stopPropagation(), t.preventDefault(), le.index = Math.min(le.index + 1, le.matches.length - 1), te(), J(!1, $e.Selected);
33099 case l.KEY_CODE.UP_ARROW:
33100 if (le.loading) return;
33101 t.stopPropagation(), t.preventDefault(), le.index = le.index < 0 ? le.matches.length - 1 : Math.max(0, le.index - 1), te(), J(!1, $e.Selected);
33103 case l.KEY_CODE.TAB:
33104 if (M(), le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
33107 case l.KEY_CODE.ENTER:
33108 if (le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
33110 t.stopPropagation(), t.preventDefault(), K(le.index);
33112 case l.KEY_CODE.ESCAPE:
33113 if (t.preventDefault(), !U()) return;
33114 t.stopPropagation(), Z(), e.searchText && V("clear") && X(), le.hidden = !0, V("blur") && I(!0)
33116 }, le.blur = function(e) {
33117 ge = !1, pe || (le.hidden = F(), ce("ngBlur", {
33120 }, le.focus = function(e) {
33121 ge = !0, q() && G() && oe(), le.hidden = F(), ce("ngFocus", {
33124 }, le.clear = function() {
33126 }, le.select = K, le.listEnter = function() {
33128 }, le.listLeave = M, le.mouseUp = function() {
33130 }, le.getCurrentDisplayValue = Y, le.registerSelectedItemWatcher = function(e) {
33131 -1 == me.indexOf(e) && me.push(e)
33132 }, le.unregisterSelectedItemWatcher = function(e) {
33133 var t = me.indexOf(e); - 1 != t && me.splice(t, 1)
33134 }, le.notFoundVisible = ie, le.loadingIsVisible = function() {
33135 return le.loading && !W()
33136 }, le.positionDropdown = y;
33141 return c.initOptionalProperties(e, p, {
33143 selectedItem: null,
33145 }), u(s), w(), void c.nextTick(function() {
33146 k(), _(), e.autofocus && s.on("focus", $)
33149 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], t.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
33158 controller: "MdAutocompleteCtrl",
33159 controllerAs: "$mdAutocompleteCtrl",
33161 inputName: "@mdInputName",
33162 inputMinlength: "@mdInputMinlength",
33163 inputMaxlength: "@mdInputMaxlength",
33164 searchText: "=?mdSearchText",
33165 selectedItem: "=?mdSelectedItem",
33166 itemsExpr: "@mdItems",
33167 itemText: "&mdItemText",
33168 placeholder: "@placeholder",
33169 noCache: "=?mdNoCache",
33170 requireMatch: "=?mdRequireMatch",
33171 selectOnMatch: "=?mdSelectOnMatch",
33172 matchInsensitive: "=?mdMatchCaseInsensitive",
33173 itemChange: "&?mdSelectedItemChange",
33174 textChange: "&?mdSearchTextChange",
33175 minLength: "=?mdMinLength",
33176 delay: "=?mdDelay",
33177 autofocus: "=?mdAutofocus",
33178 floatingLabel: "@?mdFloatingLabel",
33179 autoselect: "=?mdAutoselect",
33180 menuClass: "@?mdMenuClass",
33181 inputId: "@?mdInputId",
33182 escapeOptions: "@?mdEscapeOptions",
33183 dropdownItems: "=?mdDropdownItems",
33184 dropdownPosition: "@?mdDropdownPosition",
33185 clearButton: "=?mdClearButton"
33187 compile: function(e, n) {
33188 var r = ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"],
33189 i = e.find("input");
33190 return r.forEach(function(e) {
33191 var t = n[n.$normalize(e)];
33192 null !== t && i.attr(e, t)
33194 function(e, n, r, i) {
33195 i.hasNotFound = !!n.attr("md-has-not-found"), t.isDefined(r.mdClearButton) || e.floatingLabel || (e.clearButton = !0)
33198 template: function(t, n) {
33199 var r = function() {
33200 var e = t.find("md-not-found").detach(),
33201 n = e.length ? e.html() : "";
33202 return n ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" md-autocomplete-parent-scope>' + n + "</li>" : ""
33205 var e = t.find("md-item-template").detach(),
33206 n = e.length ? e.html() : t.html();
33207 return e.length || t.empty(), "<md-autocomplete-parent-scope md-autocomplete-replace>" + n + "</md-autocomplete-parent-scope>"
33211 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>"
33215 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.autocomplete").directive("mdAutocomplete", e)
33221 compile: function(e, n, r) {
33222 return function(e, n, i) {
33224 s[r] = e[n], e.$watch(n, function(e) {
33225 t.nextTick(function() {
33230 var a = e.$mdAutocompleteCtrl,
33231 s = a.parent.$new(),
33233 o("$index", "$index"), o("item", c),
33237 e.$watch(function() {
33238 n || t || (t = !0, e.$$postDigest(function() {
33239 n || s.$digest(), t = n = !1
33241 }), s.$watch(function() {
33244 }(), r(s, function(e) {
33250 transclude: "element"
33253 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
33256 function e(e, t, n) {
33257 this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
33259 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(e, t) {
33260 this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(n) {
33265 }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
33266 }, e.prototype.onRender = function(e, t) {
33267 var n = e.contentText;
33268 null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
33269 }, e.prototype.applyRegex = function(e) {
33270 var n = this.resolveTokens(e);
33271 this.$element.empty(), n.forEach(function(e) {
33273 var n = t.element('<span class="highlight">').text(e.text);
33274 this.$element.append(n)
33275 } else this.$element.append(document.createTextNode(e))
33277 }, e.prototype.resolveTokens = function(e) {
33279 var i = e.slice(t, r);
33284 return e.replace(this.regex, function(e, i) {
33288 }), r = i + e.length
33290 }, e.prototype.createRegex = function(e, t) {
33293 i = this.sanitizeRegex(e);
33294 return t.indexOf("^") >= 0 && (n = "^"), t.indexOf("$") >= 0 && (r = "$"), new RegExp(n + i + r, t.replace(/[$^]/g, ""))
33295 }, e.prototype.sanitizeRegex = function(e) {
33296 return e && e.toString().replace(/[\\^$*+?.()|{}[\]]/g, "\\$&")
33303 controller: "MdHighlightCtrl",
33304 compile: function(n, r) {
33305 var i = t(r.mdHighlightText),
33307 return function(e, t, n, r) {
33313 e.$inject = ["$interpolate", "$parse"], t.module("material.components.autocomplete").directive("mdHighlightText", e)
33316 function r(e, t, r, i, o) {
33317 this.$scope = e, this.$element = t, this.$mdConstant = r, this.$timeout = i, this.$mdUtil = o, this.isEditting = !1, this.parentController = n, this.enableChipEdit = !1
33319 r.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], t.module("material.components.chips").controller("MdChipCtrl", r), r.prototype.init = function(e) {
33320 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"))
33321 }, r.prototype.getChipContent = function() {
33322 var e = this.$element[0].getElementsByClassName("md-chip-content");
33323 return t.element(e[0])
33324 }, r.prototype.getContentElement = function() {
33325 return t.element(this.getChipContent().children()[0])
33326 }, r.prototype.getChipIndex = function() {
33327 return parseInt(this.$element.attr("index"))
33328 }, r.prototype.goOutOfEditMode = function() {
33329 if (this.isEditting) {
33330 this.isEditting = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
33331 var e = this.getChipIndex();
33332 this.getContentElement().text() ? (this.parentController.updateChipContents(e, this.getContentElement().text()), this.$mdUtil.nextTick(function() {
33333 this.parentController.selectedChip === e && this.parentController.focusChip(e)
33334 }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
33336 }, r.prototype.selectNodeContents = function(t) {
33338 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))
33339 }, r.prototype.goInEditMode = function() {
33340 this.isEditting = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
33341 this.goOutOfEditMode()
33342 }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
33343 }, r.prototype.chipKeyDown = function(e) {
33344 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())
33345 }, r.prototype.chipMouseDown = function() {
33346 this.getChipIndex() == this.parentController.selectedChip && this.enableChipEdit && !this.isEditting && this.goInEditMode()
33350 function e(e, r, i, o) {
33351 var a = r.processTemplate(n);
33354 require: ["^?mdChips", "mdChip"],
33355 link: function(n, r, s, c) {
33358 d = t.element(r[0].querySelector(".md-chip-content"));
33359 e(r), l && (u.init(l), d.append(i(a)(n)), d.on("blur", function() {
33360 l.resetSelectedChip(), l.$scope.$applyAsync()
33361 })), o(function() {
33362 l && l.shouldFocusLastChip && l.focusLastChipThenInput()
33365 controller: "MdChipCtrl"
33368 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], t.module("material.components.chips").directive("mdChip", e);
33369 var n = ' <span ng-if="!$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.deleteHint}} </span>'
33375 require: "^mdChips",
33377 link: function(t, n, r, i) {
33378 n.on("click", function(e) {
33379 t.$apply(function() {
33380 i.removeChip(t.$$replacedScope.$index)
33386 }), n.find("button").attr("tabindex", "-1")
33391 e.$inject = ["$timeout"], t.module("material.components.chips").directive("mdChipRemove", e)
33398 link: function(t, n, r) {
33399 var i = t.$parent.$mdChipsCtrl,
33400 o = i.parent.$new(!1, i.parent);
33401 o.$$replacedScope = t, o.$chip = t.$chip, o.$index = t.$index, o.$mdChipsCtrl = i;
33402 var a = i.$scope.$eval(r.mdChipTransclude);
33403 n.html(a), e(n.contents())(o)
33408 e.$inject = ["$compile"], t.module("material.components.chips").directive("mdChipTransclude", e)
33411 function e(e, t, r, i, o, a, s) {
33412 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()
33414 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil"];
33416 t.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
33418 e.wrapperId = "_md-chips-wrapper-" + e.$mdUtil.nextUid(), e.$scope.$watchCollection("$mdChipsCtrl.items", function() {
33419 e.setupInputAria(), e.setupWrapperAria()
33420 }), e.$attrs.$observe("mdChipAppendDelay", function(t) {
33421 e.chipAppendDelay = parseInt(t) || n
33423 }, e.prototype.setupInputAria = function() {
33424 var e = this.$element.find("input");
33425 e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0))
33426 }, e.prototype.setupWrapperAria = function() {
33428 t = this.$element.find("md-chips-wrap");
33429 this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
33430 return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
33431 }), t.attr("aria-owns", this.contentIds.join(" "))) : (t.removeAttr("role"), t.removeAttr("aria-owns"))
33432 }, e.prototype.inputKeydown = function(e) {
33433 var t = this.getChipBuffer();
33434 if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
33435 if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
33436 if (0 !== this.getCursorPosition(e.target)) return;
33437 return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
33439 if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
33440 if (this.autocompleteCtrl && this.requireMatch || !t) return;
33441 if (e.preventDefault(), this.hasMaxChipsReached()) return;
33442 return this.appendChip(t.trim()), this.resetChipBuffer(), !1
33445 }, e.prototype.getCursorPosition = function(e) {
33447 if (e.selectionStart === e.selectionEnd) return e.selectionStart
33449 if (!e.value) return 0
33451 }, e.prototype.updateChipContents = function(e, t) {
33452 e >= 0 && e < this.items.length && (this.items[e] = t, this.ngModelCtrl.$setDirty())
33453 }, e.prototype.isEditingChip = function() {
33454 return !!this.$element[0].querySelector("._md-chip-editing")
33455 }, e.prototype.isRemovable = function() {
33456 return !!this.ngModelCtrl && (this.readonly ? this.removable : !t.isDefined(this.removable) || this.removable)
33457 }, e.prototype.chipKeydown = function(e) {
33458 if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
33459 case this.$mdConstant.KEY_CODE.BACKSPACE:
33460 case this.$mdConstant.KEY_CODE.DELETE:
33461 if (this.selectedChip < 0) return;
33462 if (e.preventDefault(), !this.isRemovable()) return;
33463 this.removeAndSelectAdjacentChip(this.selectedChip);
33465 case this.$mdConstant.KEY_CODE.LEFT_ARROW:
33466 e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 == this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
33468 case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
33469 e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
33471 case this.$mdConstant.KEY_CODE.ESCAPE:
33472 case this.$mdConstant.KEY_CODE.TAB:
33473 if (this.selectedChip < 0) return;
33474 e.preventDefault(), this.onFocus()
33476 }, e.prototype.getPlaceholder = function() {
33477 return this.items && this.items.length && ("" == this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
33478 }, e.prototype.removeAndSelectAdjacentChip = function(e) {
33480 n = t.getAdjacentChipIndex(e);
33481 this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
33482 t.removeChip(e), t.$timeout(function() {
33483 t.$timeout(function() {
33484 t.selectAndFocusChipSafe(n)
33487 }, e.prototype.resetSelectedChip = function() {
33488 this.selectedChip = -1, this.ariaTabIndex = null
33489 }, e.prototype.getAdjacentChipIndex = function(e) {
33490 var t = this.items.length - 1;
33491 return 0 == t ? -1 : e == t ? e - 1 : e
33492 }, e.prototype.appendChip = function(e) {
33493 if (this.shouldFocusLastChip = !0, this.useTransformChip && this.transformChip) {
33494 var n = this.transformChip({
33497 t.isDefined(n) && (e = n)
33499 if (!(t.isObject(e) && this.items.some(function(n) {
33500 return t.equals(e, n)
33501 }) || null == e || this.items.indexOf(e) + 1)) {
33502 var r = this.items.push(e) - 1;
33503 this.ngModelCtrl.$setDirty(), this.validateModel(), this.useOnAdd && this.onAdd && this.onAdd({
33508 }, e.prototype.useTransformChipExpression = function() {
33509 this.useTransformChip = !0
33510 }, e.prototype.useOnAddExpression = function() {
33512 }, e.prototype.useOnRemoveExpression = function() {
33513 this.useOnRemove = !0
33514 }, e.prototype.useOnSelectExpression = function() {
33515 this.useOnSelect = !0
33516 }, e.prototype.getChipBuffer = function() {
33517 var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
33518 return t.isString(e) ? e : ""
33519 }, e.prototype.resetChipBuffer = function() {
33520 this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
33521 }, e.prototype.hasMaxChipsReached = function() {
33522 return t.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), this.maxChips > 0 && this.items.length >= this.maxChips
33523 }, e.prototype.validateModel = function() {
33524 this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached())
33525 }, e.prototype.removeChip = function(e) {
33526 var t = this.items.splice(e, 1);
33527 this.ngModelCtrl.$setDirty(), this.validateModel(), t && t.length && this.useOnRemove && this.onRemove && this.onRemove({
33531 }, e.prototype.removeChipAndFocusInput = function(e) {
33532 this.removeChip(e), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
33533 }, e.prototype.selectAndFocusChipSafe = function(e) {
33534 if (!this.items.length || -1 === e) return this.focusInput();
33535 if (e >= this.items.length) {
33536 if (!this.readonly) return this.onFocus();
33539 e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
33540 }, e.prototype.focusLastChipThenInput = function() {
33542 e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
33544 }, e.chipAppendDelay)
33545 }, e.prototype.focusInput = function() {
33546 this.selectChip(-1), this.onFocus()
33547 }, e.prototype.selectChip = function(e) {
33548 e >= -1 && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
33549 $chip: this.items[e]
33550 })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
33551 }, e.prototype.selectAndFocusChip = function(e) {
33552 this.selectChip(e), -1 != e && this.focusChip(e)
33553 }, e.prototype.focusChip = function(e) {
33554 var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
33555 this.ariaTabIndex = e, t.focus()
33556 }, e.prototype.configureNgModel = function(e) {
33557 this.ngModelCtrl = e;
33559 e.$render = function() {
33560 t.items = t.ngModelCtrl.$viewValue
33562 }, e.prototype.onFocus = function() {
33563 var e = this.$element[0].querySelector("input");
33564 e && e.focus(), this.resetSelectedChip()
33565 }, e.prototype.onInputFocus = function() {
33566 this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
33567 }, e.prototype.onInputBlur = function() {
33568 this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
33569 }, e.prototype.configureUserInput = function(e) {
33570 this.userInputElement = e;
33571 var n = e.controller("ngModel");
33572 n != this.ngModelCtrl && (this.userInputNgModelCtrl = n);
33573 var r = this.$scope,
33575 o = function(e, n) {
33576 r.$evalAsync(t.bind(i, n, e))
33580 }).on("keydown", function(e) {
33581 o(e, i.inputKeydown)
33582 }).on("focus", function(e) {
33583 o(e, i.onInputFocus)
33584 }).on("blur", function(e) {
33585 o(e, i.onInputBlur)
33587 }, e.prototype.configureAutocomplete = function(e) {
33588 e && (this.autocompleteCtrl = e, e.registerSelectedItemWatcher(t.bind(this, function(e) {
33590 if (this.hasMaxChipsReached()) return;
33591 this.appendChip(e), this.resetChipBuffer()
33593 })), this.$element.find("input").on("focus", t.bind(this, this.onInputFocus)).on("blur", t.bind(this, this.onInputBlur)))
33594 }, e.prototype.shouldAddOnBlur = function() {
33595 this.validateModel();
33596 var e = this.getChipBuffer().trim(),
33597 t = this.ngModelCtrl.$valid,
33598 n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
33599 return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
33600 }, e.prototype.hasFocus = function() {
33601 return this.inputHasFocus || this.selectedChip >= 0
33602 }, e.prototype.contentIdFor = function(e) {
33603 return this.contentIds[e]
33607 function e(e, t, a, s, c, l) {
33609 chips: t.processTemplate(n),
33610 input: t.processTemplate(r),
33611 default: t.processTemplate(i),
33612 remove: t.processTemplate(o)
33615 template: function(e, t) {
33616 return t.$mdUserTemplate = e.clone(), u.chips
33618 require: ["mdChips"],
33620 controller: "MdChipsCtrl",
33621 controllerAs: "$mdChipsCtrl",
33622 bindToController: !0,
33623 compile: function(n, r) {
33626 var t = o[0].querySelector(e);
33627 return t && t.outerHTML
33630 var o = r.$mdUserTemplate;
33631 r.$mdUserTemplate = null;
33632 var d = i("md-chips>md-chip-template"),
33633 f = i(t.prefixer().buildList("md-chip-remove").map(function(e) {
33634 return "md-chips>*[" + e + "]"
33635 }).join(",")) || u.remove,
33636 h = d || u.default,
33637 p = i("md-chips>md-autocomplete") || i("md-chips>input") || u.input,
33638 m = o.find("md-chip");
33639 return o[0].querySelector("md-chip-template>*[md-chip-remove]") && s.warn("invalid placement of md-chip-remove within md-chip-template."),
33640 function(n, i, o, s) {
33641 t.initOptionalProperties(n, r), e(i);
33643 if (d && (g.enableChipEdit = !1), g.chipContentsTemplate = h, g.chipRemoveTemplate = f, g.chipInputTemplate = p, g.mdCloseIcon = l.mdClose, i.attr({
33645 }).on("focus", function() {
33647 }), 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) {
33648 e || t.nextTick(function() {
33649 if (0 === p.indexOf("<md-autocomplete")) {
33650 var e = i.find("md-autocomplete");
33651 g.configureAutocomplete(e.controller("mdAutocomplete"))
33653 g.configureUserInput(i.find("input"))
33655 }), t.nextTick(function() {
33656 var e = i.find("input");
33657 e && e.toggleClass("md-input", !0)
33658 })), m.length > 0) {
33659 var v = a(m.clone())(n.$parent);
33661 i.find("md-chips-wrap").prepend(v)
33667 readonly: "=readonly",
33668 removable: "=mdRemovable",
33670 secondaryPlaceholder: "@",
33671 maxChips: "@mdMaxChips",
33672 transformChip: "&mdTransformChip",
33673 onAppend: "&mdOnAppend",
33675 onRemove: "&mdOnRemove",
33676 onSelect: "&mdOnSelect",
33677 inputAriaLabel: "@",
33678 containerHint: "@",
33680 deleteButtonLabel: "@",
33681 separatorKeys: "=?mdSeparatorKeys",
33682 requireMatch: "=?mdRequireMatch",
33683 chipAppendDelayString: "@?mdChipAppendDelay"
33687 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], t.module("material.components.chips").directive("mdChips", e);
33688 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>',
33689 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)">',
33690 i = " <span>{{$chip}}</span>",
33691 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>'
33695 this.selectedItem = null, this.searchText = ""
33697 t.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.queryContact = function(e) {
33698 return this.contactQuery({
33701 }, e.prototype.itemName = function(e) {
33702 return e[this.contactName]
33708 template: function(e, t) {
33712 controller: "MdContactChipsCtrl",
33713 controllerAs: "$mdContactChipsCtrl",
33714 bindToController: !0,
33715 compile: function(n, r) {
33716 return function(n, i, o, a) {
33718 t.initOptionalProperties(n, r), e(i), i.attr("tabindex", "-1"), o.$observe("mdChipAppendDelay", function(e) {
33719 s.chipAppendDelay = e
33724 contactQuery: "&mdContacts",
33726 secondaryPlaceholder: "@",
33727 contactName: "@mdContactName",
33728 contactImage: "@mdContactImage",
33729 contactEmail: "@mdContactEmail",
33730 contacts: "=ngModel",
33731 requireMatch: "=?mdRequireMatch",
33732 minLength: "=?mdMinLength",
33733 highlightFlags: "@?mdHighlightFlags",
33734 chipAppendDelay: "@?mdChipAppendDelay"
33738 e.$inject = ["$mdTheming", "$mdUtil"], t.module("material.components.chips").directive("mdContactChips", e);
33739 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>'
33742 function e(e, n, i, o, a, s, c, l, u) {
33743 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");
33744 var d, f = t.bind(this, this.handleKeyEvent);
33745 (d = e.parent().hasClass("md-datepicker-calendar") ? t.element(document.body) : e).on("keydown", f), n.$on("$destroy", function() {
33746 d.off("keydown", f)
33747 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
33749 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendar", function() {
33751 template: function(e, t) {
33752 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>'
33755 minDate: "=mdMinDate",
33756 maxDate: "=mdMaxDate",
33757 dateFilter: "=mdDateFilter",
33759 _currentView: "@mdCurrentView"
33761 require: ["ngModel", "mdCalendar"],
33763 controllerAs: "calendarCtrl",
33764 bindToController: !0,
33765 link: function(e, t, n, r) {
33767 r[1].configureNgModel(i)
33777 e.prototype.$onInit = function() {
33778 this._mode && i.hasOwnProperty(this._mode) ? (this.currentView = i[this._mode], this.mode = this._mode) : (this.currentView = this._currentView || "month", this.mode = null);
33779 var e = this.$mdDateLocale;
33780 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
33781 }, e.prototype.configureNgModel = function(e) {
33783 t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
33784 t.isInitialized = !0
33785 }), e.$render = function() {
33786 var e = this.$viewValue;
33787 t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
33789 }, e.prototype.setNgModelValue = function(e) {
33790 var t = this.dateUtil.createDateAtMidnight(e);
33791 return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
33792 }, e.prototype.setCurrentView = function(e, n) {
33794 r.$mdUtil.nextTick(function() {
33795 r.currentView = e, n && (r.displayDate = t.isDate(n) ? n : new Date(n))
33797 }, e.prototype.focus = function(e) {
33798 if (this.dateUtil.isValidDate(e)) {
33799 var t = this.$element[0].querySelector("." + this.FOCUSED_DATE_CLASS);
33800 t && t.classList.remove(this.FOCUSED_DATE_CLASS);
33801 var n = this.getDateId(e, this.currentView),
33802 r = document.getElementById(n);
33803 r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
33805 var i = this.$element[0].querySelector("[ng-switch]");
33808 }, e.prototype.changeSelectedDate = function(e) {
33809 var t = this.SELECTED_DATE_CLASS,
33810 n = this.$element[0].querySelector("." + t);
33811 if (n && (n.classList.remove(t), n.setAttribute("aria-selected", "false")), e) {
33812 var r = document.getElementById(this.getDateId(e, this.currentView));
33813 r && (r.classList.add(t), r.setAttribute("aria-selected", "true"))
33815 this.selectedDate = e
33816 }, e.prototype.getActionFromKeyEvent = function(e) {
33817 var t = this.keyCode;
33821 case t.RIGHT_ARROW:
33822 return "move-right";
33824 return "move-left";
33826 return e.metaKey ? "move-page-down" : "move-row-down";
33828 return e.metaKey ? "move-page-up" : "move-row-up";
33830 return "move-page-down";
33832 return "move-page-up";
33840 }, e.prototype.handleKeyEvent = function(e) {
33842 this.$scope.$apply(function() {
33843 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());
33844 var n = t.getActionFromKeyEvent(e);
33845 n && (e.preventDefault(), e.stopPropagation(), t.$scope.$broadcast("md-calendar-parent-action", n))
33847 }, e.prototype.hideVerticalScrollbar = function(e) {
33849 var t = r.width || n,
33850 i = r.scrollbarWidth,
33851 a = e.calendarScroller;
33852 o.style.width = t + "px", a.style.width = t + i + "px", a.style.paddingRight = i + "px"
33856 o = i.querySelector(".md-calendar-scroll-mask");
33857 r.width > 0 ? t() : r.$$rAF(function() {
33858 var n = e.calendarScroller;
33859 r.scrollbarWidth = n.offsetWidth - n.clientWidth, r.width = i.querySelector("table").offsetWidth, t()
33861 }, e.prototype.getDateId = function(e, t) {
33862 if (!t) throw new Error("A namespace for the date id has to be specified.");
33863 return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
33864 }, e.prototype.updateVirtualRepeat = function() {
33865 var e = this.$scope,
33866 t = e.$on("$md-resize-enable", function() {
33867 e.$$phase || e.$apply(), t()
33872 function e(e, t, n, r, i, o) {
33873 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;
33875 this.cellClickHandler = function() {
33876 var e = i.getTimestampFromNode(this);
33877 a.$scope.$apply(function() {
33878 a.calendarCtrl.setNgModelValue(e)
33880 }, this.headerClickHandler = function() {
33881 a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
33884 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonth", function() {
33886 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>",
33887 require: ["^^mdCalendar", "mdCalendarMonth"],
33889 controllerAs: "monthCtrl",
33890 bindToController: !0,
33891 link: function(e, t, n, r) {
33899 e.prototype.initialize = function(e) {
33901 length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
33902 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
33903 }, e.prototype.getSelectedMonthIndex = function() {
33904 var e = this.calendarCtrl;
33905 return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
33906 }, e.prototype.changeDisplayDate = function(e) {
33907 if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
33908 if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
33909 this.isMonthTransitionInProgress = !0;
33910 var t = this.animateDateChange(e);
33911 this.calendarCtrl.displayDate = e;
33913 return t.then(function() {
33914 n.isMonthTransitionInProgress = !1
33916 }, e.prototype.animateDateChange = function(e) {
33917 if (this.dateUtil.isValidDate(e)) {
33918 var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
33919 this.calendarScroller.scrollTop = t * n
33921 return this.$q.when()
33922 }, e.prototype.buildWeekHeader = function() {
33923 for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
33924 var i = document.createElement("th");
33925 i.textContent = t[(r + e) % 7], n.appendChild(i)
33927 this.$element.find("thead").append(n)
33928 }, e.prototype.attachScopeListeners = function() {
33930 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
33931 e.calendarCtrl.changeSelectedDate(n), e.changeDisplayDate(n)
33932 }), e.$scope.$on("md-calendar-parent-action", t.bind(this, this.handleKeyEvent))
33933 }, e.prototype.handleKeyEvent = function(e, t) {
33934 var n = this.calendarCtrl,
33936 if ("select" === t) n.setNgModelValue(r);
33942 i = o.incrementDays(r, 1);
33945 i = o.incrementDays(r, -1);
33947 case "move-page-down":
33948 i = o.incrementMonths(r, 1);
33950 case "move-page-up":
33951 i = o.incrementMonths(r, -1);
33953 case "move-row-down":
33954 i = o.incrementDays(r, 7);
33956 case "move-row-up":
33957 i = o.incrementDays(r, -7);
33960 i = o.getFirstDateOfMonth(r);
33963 i = o.getLastDateOfMonth(r)
33965 i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
33973 var i = e('<md-icon md-svg-src="' + r.mdTabsArrow + '"></md-icon>')({})[0];
33975 require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
33977 offset: "=mdMonthOffset"
33980 controllerAs: "mdMonthBodyCtrl",
33981 bindToController: !0,
33982 link: function(e, n, r, o) {
33986 c.calendarCtrl = a, c.monthCtrl = s, c.arrowIcon = i.cloneNode(!0), e.$watch(function() {
33989 t.isNumber(e) && c.generateContent()
33995 function n(e, t, n) {
33996 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
33998 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
33999 var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
34000 this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
34001 }, n.prototype.buildDateCell = function(e) {
34002 var t = this.monthCtrl,
34003 n = this.calendarCtrl,
34004 r = document.createElement("td");
34005 if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
34006 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"));
34007 var i = this.dateLocale.dates[e.getDate()];
34008 if (this.isDateEnabled(e)) {
34009 var o = document.createElement("span");
34010 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)
34011 } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
34014 }, n.prototype.isDateEnabled = function(e) {
34015 return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!t.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
34016 }, n.prototype.buildDateRow = function(e) {
34017 var t = document.createElement("tr");
34018 return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
34019 }, n.prototype.buildCalendarForMonth = function(e) {
34020 var t = this.dateUtil.isValidDate(e) ? e : new Date,
34021 n = this.dateUtil.getFirstDateOfMonth(t),
34022 r = this.getLocaleDay_(n),
34023 i = this.dateUtil.getNumberOfDaysInMonth(t),
34024 o = document.createDocumentFragment(),
34026 s = this.buildDateRow(a);
34028 var c = this.offset === this.monthCtrl.items.length - 1,
34030 u = document.createElement("td"),
34031 d = document.createElement("span"),
34032 f = this.calendarCtrl;
34033 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) {
34034 u.setAttribute("colspan", "7");
34035 var h = this.buildDateRow();
34036 if (h.appendChild(u), o.insertBefore(h, s), c) return o
34037 } else l = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
34038 for (var p = l; p < r; p++) s.appendChild(this.buildDateCell());
34039 for (var m = r, g = n, v = 1; v <= i; v++) {
34042 m = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
34045 var b = this.buildDateCell(g);
34046 s.appendChild(b), m++
34048 for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
34049 for (; o.childNodes.length < 6;) {
34050 for (var y = this.buildDateRow(), _ = 0; _ < 7; _++) y.appendChild(this.buildDateCell());
34054 }, n.prototype.getLocaleDay_ = function(e) {
34055 return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
34059 function e(e, t, n, r, i, o) {
34060 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;
34062 this.cellClickHandler = function() {
34063 a.onTimestampSelected(i.getTimestampFromNode(this))
34066 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdUtil"], t.module("material.components.datepicker").directive("mdCalendarYear", function() {
34068 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>",
34069 require: ["^^mdCalendar", "mdCalendarYear"],
34071 controllerAs: "yearCtrl",
34072 bindToController: !0,
34073 link: function(e, t, n, r) {
34080 e.prototype.initialize = function(e) {
34082 length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
34083 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
34084 }, e.prototype.getFocusedYearIndex = function() {
34085 var e = this.calendarCtrl;
34086 return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
34087 }, e.prototype.changeDate = function(e) {
34088 if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
34089 if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
34091 n = this.animateDateChange(e);
34092 return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
34093 t.isMonthTransitionInProgress = !1
34096 }, e.prototype.animateDateChange = function(e) {
34097 if (this.dateUtil.isValidDate(e)) {
34098 var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
34099 this.calendarScroller.scrollTop = t * n
34101 return this.$q.when()
34102 }, e.prototype.handleKeyEvent = function(e, t) {
34104 r = n.calendarCtrl,
34106 if ("select" === t) n.changeDate(i).then(function() {
34107 n.onTimestampSelected(i)
34114 o = a.incrementMonths(i, 1);
34117 o = a.incrementMonths(i, -1);
34119 case "move-row-down":
34120 o = a.incrementMonths(i, 6);
34122 case "move-row-up":
34123 o = a.incrementMonths(i, -6)
34126 var s = r.minDate ? a.getFirstDateOfMonth(r.minDate) : null,
34127 c = r.maxDate ? a.getFirstDateOfMonth(r.maxDate) : null;
34128 o = a.getFirstDateOfMonth(n.dateUtil.clampDate(o, s, c)), n.changeDate(o).then(function() {
34133 }, e.prototype.attachScopeListeners = function() {
34135 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
34136 e.calendarCtrl.changeSelectedDate(n ? e.dateUtil.getFirstDateOfMonth(n) : n), e.changeDate(n)
34137 }), e.$scope.$on("md-calendar-parent-action", t.bind(e, e.handleKeyEvent))
34138 }, e.prototype.onTimestampSelected = function(e) {
34139 var t = this.calendarCtrl;
34140 t.mode ? this.$mdUtil.nextTick(function() {
34141 t.setNgModelValue(e)
34142 }) : t.setCurrentView("month", e)
34146 function e(e, t, n) {
34147 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
34149 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
34151 require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
34153 offset: "=mdYearOffset"
34156 controllerAs: "mdYearBodyCtrl",
34157 bindToController: !0,
34158 link: function(e, n, r, i) {
34162 s.calendarCtrl = o, s.yearCtrl = a, e.$watch(function() {
34165 t.isNumber(e) && s.generateContent()
34169 }), e.prototype.generateContent = function() {
34170 var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
34171 this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
34172 }, e.prototype.buildMonthCell = function(e, t) {
34173 var n = this.calendarCtrl,
34175 i = this.buildBlankCell(),
34176 o = new Date(e, t, 1);
34177 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"));
34178 var a = this.dateLocale.shortMonths[t];
34179 if (this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate)) {
34180 var s = document.createElement("span");
34181 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)
34182 } else i.classList.add("md-calendar-date-disabled"), i.textContent = a;
34184 }, e.prototype.buildBlankCell = function() {
34185 var e = document.createElement("td");
34186 return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
34187 }, e.prototype.buildCalendarForYear = function(e) {
34188 var t, n = e.getFullYear(),
34189 r = document.createDocumentFragment(),
34190 i = document.createElement("tr"),
34191 o = document.createElement("td");
34192 for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
34194 var a = document.createElement("tr");
34195 for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
34196 return r.appendChild(a), r
34198 }(), t.module("material.components.datepicker").config(["$provide", function(e) {
34200 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 = ""
34202 t.prototype.$get = function(e, t) {
34203 for (var n = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
34204 return e.substring(0, 1)
34205 }), r = Array(32), i = 1; i <= 31; i++) r[i] = i;
34206 var o = new Date(1880, 0, 1),
34207 a = new Date(o.getFullYear() + 250, 0, 1),
34209 months: this.months || e.DATETIME_FORMATS.MONTH,
34210 shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
34211 days: this.days || e.DATETIME_FORMATS.DAY,
34212 shortDays: this.shortDays || n,
34213 dates: this.dates || r,
34214 firstDayOfWeek: this.firstDayOfWeek || 0,
34215 formatDate: this.formatDate || function(e, n) {
34217 var r = e.toLocaleTimeString(),
34219 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)
34221 parseDate: this.parseDate || function(e) {
34224 isDateComplete: this.isDateComplete || function(e) {
34225 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ .,]+|[/-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
34227 monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
34228 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
34230 monthFormatter: this.monthFormatter || function(e) {
34231 return s.months[e.getMonth()] + " " + e.getFullYear()
34233 weekNumberFormatter: this.weekNumberFormatter || function(e) {
34236 longDateFormatter: this.longDateFormatter || function(e) {
34237 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
34239 msgCalendar: this.msgCalendar || "Calendar",
34240 msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
34241 firstRenderableDate: this.firstRenderableDate || o,
34242 lastRenderableDate: this.lastRenderableDate || a
34245 }, t.prototype.$get.$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
34246 }]), t.module("material.components.datepicker").factory("$$mdDateUtil", function() {
34248 return new Date(e.getFullYear(), e.getMonth(), 1)
34252 return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
34256 return new Date(e.getFullYear(), e.getMonth() + 1, 1)
34260 return new Date(e.getFullYear(), e.getMonth() - 1, 1)
34264 return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
34268 var r = new Date(e.getFullYear(), e.getMonth() + t, 1),
34270 return i < e.getDate() ? r.setDate(i) : r.setDate(e.getDate()), r
34274 return e && e.getTime && !isNaN(e.getTime())
34278 s(e) && e.setHours(0, 0, 0, 0)
34283 return n = t.isUndefined(e) ? new Date : new Date(e), c(n), n
34286 getFirstDateOfMonth: e,
34287 getNumberOfDaysInMonth: n,
34288 getDateInNextMonth: r,
34289 getDateInPreviousMonth: i,
34290 isInNextMonth: function(e, t) {
34293 isInPreviousMonth: function(e, t) {
34296 getDateMidpoint: function(e, t) {
34297 return l((e.getTime() + t.getTime()) / 2)
34299 isSameMonthAndYear: o,
34300 getWeekOfMonth: function(t) {
34302 return Math.floor((n.getDay() + t.getDate() - 1) / 7)
34304 incrementDays: function(e, t) {
34305 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
34307 incrementMonths: a,
34308 getLastDateOfMonth: function(e) {
34309 return new Date(e.getFullYear(), e.getMonth(), n(e))
34311 isSameDay: function(e, t) {
34312 return e.getDate() == t.getDate() && o(e, t)
34314 getMonthDistance: function(e, t) {
34315 return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
34318 setDateTimeToMidnight: c,
34319 createDateAtMidnight: l,
34320 isDateWithinRange: function(e, t, n) {
34322 i = s(t) ? l(t) : null,
34323 o = s(n) ? l(n) : null;
34324 return (!i || i <= r) && (!o || o >= r)
34326 incrementYears: function(e, t) {
34327 return a(e, 12 * t)
34329 getYearDistance: function(e, t) {
34330 return t.getFullYear() - e.getFullYear()
34332 clampDate: function(e, t, n) {
34334 return t && e < t && (r = new Date(t.getTime())), n && e > n && (r = new Date(n.getTime())), r
34336 getTimestampFromNode: function(e) {
34337 if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
34339 isMonthWithinRange: function(e, t, n) {
34340 var r = e.getMonth(),
34341 i = e.getFullYear();
34342 return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
34347 function n(e, n, i, c) {
34349 template: function(t, n) {
34350 var r = n.mdHideIcons,
34351 i = n.ariaLabel || n.mdPlaceholder,
34352 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>',
34354 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>'
34356 require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
34358 minDate: "=mdMinDate",
34359 maxDate: "=mdMaxDate",
34360 placeholder: "@mdPlaceholder",
34361 currentView: "@mdCurrentView",
34363 dateFilter: "=mdDateFilter",
34364 isOpen: "=?mdIsOpen",
34365 debounceInterval: "=mdDebounceInterval",
34366 dateLocale: "=mdDateLocale"
34369 controllerAs: "ctrl",
34370 bindToController: !0,
34371 link: function(e, r, s, l) {
34376 p = n.parseAttributeBoolean(s.mdNoAsterisk);
34377 if (d.configureNgModel(u, f, c), f) {
34378 var m = r[0].querySelector(".md-errors-spacer");
34379 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) {
34380 f.label.toggleClass("md-required", !!e)
34381 }) : i.expect(r, "aria-label", s.mdPlaceholder), e.$watch(f.isErrorGetter || function() {
34382 return u.$invalid && (u.$touched || h && h.$submitted)
34384 } else if (h) var g = e.$watch(function() {
34385 return h.$submitted
34387 e && (d.updateErrorState(), g())
34393 function r(n, r, i, o, a, s, l, u, d, f, h) {
34394 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));
34396 n.$on("$destroy", function() {
34397 p.detachCalendarPane()
34398 }), i.mdIsOpen && n.$watch("ctrl.isOpen", function(e) {
34399 e ? p.openCalendarPane({
34400 target: p.inputElement
34401 }) : p.closeCalendarPane()
34402 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
34404 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);
34405 var i = "md-datepicker-open",
34406 o = "_md-datepicker-floating-label",
34407 a = "_md-datepicker-has-calendar-icon",
34408 s = "_md-datepicker-has-triangle-icon",
34409 c = /ipad|iphone|ipod|android/i;
34410 r.prototype.$onInit = function() {
34411 this.locale = this.dateLocale ? t.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
34412 }, r.prototype.configureNgModel = function(e, n, r) {
34413 this.ngModelCtrl = e, this.mdInputContainer = n, this.$attrs.$set("type", "date"), r[0].link.pre(this.$scope, {
34417 }, this.$attrs, [e]);
34419 i.ngModelCtrl.$formatters.push(function(e) {
34420 var n = t.isDefined(e) ? Date.parse(e) : null;
34421 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);
34422 return i.onExternalChange(e), e
34423 }), e.$viewChangeListeners.unshift(t.bind(this, this.updateErrorState));
34424 var o = i.$mdUtil.getModelOption(e, "updateOn");
34425 o && this.ngInputElement.on(o, t.bind(this.$element, this.$element.triggerHandler, o))
34426 }, r.prototype.attachChangeListeners = function() {
34428 e.$scope.$on("md-calendar-change", function(t, n) {
34429 e.setModelValue(n), e.onExternalChange(n), e.closeCalendarPane()
34430 }), e.ngInputElement.on("input", t.bind(e, e.resizeInputElement));
34431 var n = t.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
34432 e.ngInputElement.on("input", e.$mdUtil.debounce(e.handleInputEvent, n, e))
34433 }, r.prototype.attachInteractionListeners = function() {
34436 r = this.$mdConstant.KEY_CODE;
34437 e.ngInputElement.on("keydown", function(t) {
34438 t.altKey && t.keyCode == r.DOWN_ARROW && (e.openCalendarPane(t), n.$digest())
34439 }), e.openOnFocus && (e.ngInputElement.on("focus", t.bind(e, e.openCalendarPane)), t.element(e.$window).on("blur", e.windowBlurHandler), n.$on("$destroy", function() {
34440 t.element(e.$window).off("blur", e.windowBlurHandler)
34441 })), n.$on("md-calendar-close", function() {
34442 e.closeCalendarPane()
34444 }, r.prototype.installPropertyInterceptors = function() {
34446 if (this.$attrs.ngDisabled) {
34447 var t = this.$scope.$parent;
34448 t && t.$watch(this.$attrs.ngDisabled, function(t) {
34452 Object.defineProperty(this, "placeholder", {
34454 return e.inputElement.placeholder
34457 e.inputElement.placeholder = t || ""
34460 }, r.prototype.setDisabled = function(e) {
34461 this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
34462 }, r.prototype.updateErrorState = function(e) {
34463 var n = e || this.date;
34464 if (this.clearErrorState(), this.dateUtil.isValidDate(n)) {
34465 if (n = this.dateUtil.createDateAtMidnight(n), this.dateUtil.isValidDate(this.minDate)) {
34466 var r = this.dateUtil.createDateAtMidnight(this.minDate);
34467 this.ngModelCtrl.$setValidity("mindate", n >= r)
34469 if (this.dateUtil.isValidDate(this.maxDate)) {
34470 var i = this.dateUtil.createDateAtMidnight(this.maxDate);
34471 this.ngModelCtrl.$setValidity("maxdate", n <= i)
34473 t.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(n))
34474 } else this.ngModelCtrl.$setValidity("valid", null == n);
34475 t.element(this.inputContainer).toggleClass("md-datepicker-invalid", !this.ngModelCtrl.$valid)
34476 }, r.prototype.clearErrorState = function() {
34477 this.inputContainer.classList.remove("md-datepicker-invalid"), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
34478 this.ngModelCtrl.$setValidity(e, !0)
34480 }, r.prototype.resizeInputElement = function() {
34481 this.inputElement.size = this.inputElement.value.length + 3
34482 }, r.prototype.handleInputEvent = function() {
34483 var e = this.inputElement.value,
34484 t = e ? this.locale.parseDate(e) : null;
34485 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)
34486 }, r.prototype.isDateEnabled = function(e) {
34487 return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!t.isFunction(this.dateFilter) || this.dateFilter(e))
34488 }, r.prototype.attachCalendarPane = function() {
34489 var e = this.calendarPane,
34491 e.style.transform = "", this.$element.addClass(i), this.mdInputContainer && this.mdInputContainer.element.addClass(i), t.element(n).addClass("md-datepicker-is-showing");
34492 var r = this.inputContainer.getBoundingClientRect(),
34493 o = n.getBoundingClientRect();
34494 (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
34495 var a = r.top - o.top - this.topMargin,
34496 s = r.left - o.left - this.leftMargin,
34497 c = o.top < 0 && 0 == document.body.scrollTop ? -o.top : document.body.scrollTop,
34498 l = o.left < 0 && 0 == document.body.scrollLeft ? -o.left : document.body.scrollLeft,
34499 u = c + this.$window.innerHeight,
34500 d = l + this.$window.innerWidth;
34501 if (this.inputMask.css({
34502 position: "absolute",
34503 left: this.leftMargin + "px",
34504 top: this.topMargin + "px",
34505 width: r.width - 1 + "px",
34506 height: r.height - 2 + "px"
34508 if (d - 360 > 0) s = d - 360;
34511 var f = this.$window.innerWidth / 360;
34512 e.style.transform = "scale(" + f + ")"
34514 e.classList.add("md-datepicker-pos-adjusted")
34516 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() {
34517 e.classList.add("md-pane-open")
34519 }, r.prototype.detachCalendarPane = function() {
34520 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)
34521 }, r.prototype.openCalendarPane = function(t) {
34522 if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
34523 this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = t.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
34525 this.$mdUtil.nextTick(function() {
34526 n.documentElement.on("click touchstart", n.bodyClickHandler)
34527 }, !1), e.addEventListener(this.windowEventName, this.windowEventHandler)
34529 }, r.prototype.closeCalendarPane = function() {
34531 n.isCalendarOpen = n.isOpen = !1
34533 if (this.isCalendarOpen) {
34535 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()
34537 }, r.prototype.getCalendarCtrl = function() {
34538 return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
34539 }, r.prototype.focusCalendar = function() {
34541 this.$mdUtil.nextTick(function() {
34542 e.getCalendarCtrl().focus()
34544 }, r.prototype.setFocused = function(e) {
34545 e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
34546 }, r.prototype.handleBodyClick = function(e) {
34547 this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
34548 }, r.prototype.handleWindowBlur = function() {
34549 this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
34550 }, r.prototype.evalAttr = function(e) {
34551 this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
34552 }, r.prototype.setModelValue = function(e) {
34553 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
34554 this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
34555 }, r.prototype.onExternalChange = function(e) {
34556 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
34557 this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
34561 t.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(e, t, n, r) {
34564 link: function(r, i, o) {
34566 if (!o.mdSvgIcon && !o.mdSvgSrc) {
34567 o.mdFontIcon && (i.removeClass(s), i.addClass(o.mdFontIcon), s = o.mdFontIcon);
34568 var t = e.fontSet(o.mdFontSet);
34569 c !== t && (i.removeClass(c), i.addClass(t), c = t)
34573 var s = o.mdFontIcon,
34574 c = e.fontSet(o.mdFontSet);
34575 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);
34576 var l = o.$normalize(o.$attr.mdSvgIcon || o.$attr.mdSvgSrc || "");
34577 if (o.role || (n.expect(i, "role", "img"), o.role = "img"), "img" === o.role && !o.ariaHidden && !n.hasAriaLabel(i)) {
34579 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")
34581 l && o.$observe(l, function(t) {
34582 i.empty(), t && e(t).then(function(e) {
34583 i.empty(), i.append(e)
34594 this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
34597 function i(n, r, i, o, a, s) {
34599 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)))
34604 r = "_cache" + a.nextUid();
34605 return n.id && (n.id += r), t.forEach(n.querySelectorAll("[id]"), function(e) {
34611 return function(t) {
34612 return g[e] = p(t) ? t : new m(t, n[e]), g[e].clone()
34618 return h(t.url).then(function(e) {
34625 var t = "icon " + e + " not found";
34626 return o.warn(t), i.reject(t || e)
34628 var r = e.substring(0, e.lastIndexOf(":")) || "$default",
34630 return a ? h(a.url).then(function(n) {
34631 var r = e.slice(e.lastIndexOf(":") + 1),
34632 i = n.querySelector("#" + r);
34633 return i ? new m(i, a) : t(e)
34638 return y.test(n) ? function(n) {
34640 o = /base64/i.test(n) ? e.atob(r[2]) : r[2];
34641 return i.when(t.element(o)[0])
34642 }(n) : function(e) {
34643 return i(function(n, i) {
34644 r(e, !0).then(function(r) {
34645 v[e] || (v[e] = t.element("<div>").append(r)[0].querySelector("svg")), n(v[e])
34647 var n = t.isString(e) ? e : e.message || e.data || e.statusText;
34655 return t.isDefined(e.element) && t.isDefined(e.config)
34659 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()
34663 b = /[-\w@:%+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%+.~#?&//=]*)?/i,
34664 y = /^data:image\/svg\+xml[\s*;\w\-=]*?(base64)?,(.*)$/i;
34665 return m.prototype = {
34666 clone: function() {
34667 return this.element.cloneNode(!0)
34669 prepare: function() {
34670 var e = this.config ? this.config.viewBoxSize : n.defaultViewBoxSize;
34675 preserveAspectRatio: "xMidYMid meet",
34676 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
34678 }, function(e, t) {
34679 this.element.setAttribute(t, e)
34682 }, c.fontSet = function(e) {
34683 if (t.isUndefined(e) || !e || !e.length) return n.defaultFontSet;
34685 return t.forEach(n.fontSets, function(t) {
34686 t.alias == e && (r = t.fontSet || r)
34690 i.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], t.module("material.components.icon").constant("$$mdSvgRegistry", {
34691 mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
34692 mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
34693 mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
34694 mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
34695 mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
34696 mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
34697 mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
34698 }).provider("$mdIcon", n);
34700 defaultViewBoxSize: 24,
34701 defaultFontSet: "material-icons",
34705 icon: function(e, t, n) {
34706 return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
34708 iconSet: function(e, t, n) {
34709 return o[e] = new r(t, n), this
34711 defaultIconSet: function(e, t) {
34712 return o.$default || (o.$default = new r(e, t)), o.$default.viewBoxSize = t || o.defaultViewBoxSize, this
34714 defaultViewBoxSize: function(e) {
34715 return o.defaultViewBoxSize = e, this
34717 fontSet: function(e, t) {
34718 return o.fontSets.push({
34723 defaultFontSet: function(e) {
34724 return o.defaultFontSet = e || "", this
34726 defaultIconSize: function(e) {
34727 return o.defaultIconSize = e, this
34729 $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, a) {
34730 return i(o, e, t, n, r, a)
34735 function e(e, r, i, o, a, s, c, l, u) {
34736 var d, f, h = a.prefixer(),
34738 this.nestLevel = parseInt(r.mdNestLevel, 10) || 0, this.init = function(n, r) {
34739 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() {
34740 p.isOpen = !1, a.nextTick(function() {
34741 p.onIsOpenChanged(p.isOpen)
34743 }), a.nextTick(function() {
34744 p.onIsOpenChanged(p.isOpen)
34746 var s = "menu_container_" + a.nextUid();
34747 d.attr("id", s), t.element(f).attr({
34749 "aria-haspopup": "true"
34750 }), o.$on("$destroy", t.bind(this, function() {
34751 this.disableHoverListener(), e.destroy()
34752 })), d.on("$destroy", function() {
34757 this.enableHoverListener = function() {
34758 v.push(c.$on("$mdMenuOpen", function(e, t) {
34759 d[0].contains(t[0]) && (p.currentlyOpenMenu = t.controller("mdMenu"), p.isAlreadyOpening = !1, p.currentlyOpenMenu.registerContainerProxy(p.triggerContainerProxy.bind(p)))
34760 })), v.push(c.$on("$mdMenuClose", function(e, t) {
34761 d[0].contains(t[0]) && (p.currentlyOpenMenu = n)
34762 })), (g = t.element(a.nodesToArray(d[0].children[0].children))).on("mouseenter", p.handleMenuItemHover), g.on("mouseleave", p.handleMenuItemMouseLeave)
34763 }, this.disableHoverListener = function() {
34764 for (; v.length;) v.shift()();
34765 g && g.off("mouseenter", p.handleMenuItemHover), g && g.off("mouseleave", p.handleMenuItemMouseLeave)
34766 }, this.handleMenuItemHover = function(e) {
34767 if (!p.isAlreadyOpening) {
34768 var n = e.target.querySelector("md-menu") || a.getClosest(e.target, "MD-MENU");
34770 if (n && (n = t.element(n).controller("mdMenu")), p.currentlyOpenMenu && p.currentlyOpenMenu != n) {
34771 var e = p.nestLevel + 1;
34772 p.currentlyOpenMenu.close(!0, {
34774 }), p.isAlreadyOpening = !!n, n && n.open()
34775 } else n && !n.isOpen && n.open && (p.isAlreadyOpening = !!n, n && n.open())
34777 var r = e.currentTarget.querySelector(".md-button:not([disabled])");
34780 }, this.handleMenuItemMouseLeave = function() {
34781 m && (s.cancel(m), m = n)
34782 }, this.open = function(t) {
34783 t && t.stopPropagation(), t && t.preventDefault(), p.isOpen || (p.enableHoverListener(), p.isOpen = !0, a.nextTick(function() {
34784 p.onIsOpenChanged(p.isOpen)
34785 }), (f = f || (t ? t.target : i[0])).setAttribute("aria-expanded", "true"), o.$emit("$mdMenuOpen", i), e.show({
34788 nestLevel: p.nestLevel,
34791 preserveElement: !0,
34793 }).finally(function() {
34794 f.setAttribute("aria-expanded", "false"), p.disableHoverListener()
34796 }, this.onIsOpenChanged = function(e) {
34797 e ? (d.attr("aria-hidden", "false"), i[0].classList.add("md-open"), t.forEach(p.nestedMenus, function(e) {
34798 e.classList.remove("md-open")
34799 })) : (d.attr("aria-hidden", "true"), i[0].classList.remove("md-open")), o.$mdMenuIsOpen = p.isOpen
34800 }, this.focusMenuContainer = function() {
34801 var e = d[0].querySelector(h.buildSelector(["md-menu-focus-target", "md-autofocus"]));
34802 e || (e = d[0].querySelector(".md-button:not([disabled])")), e.focus()
34803 }, this.registerContainerProxy = function(e) {
34804 this.containerProxy = e
34805 }, this.triggerContainerProxy = function(e) {
34806 this.containerProxy && this.containerProxy(e)
34807 }, this.destroy = function() {
34808 return p.isOpen ? e.destroy() : l.when(!1)
34809 }, this.close = function(n, r) {
34811 p.isOpen = !1, a.nextTick(function() {
34812 p.onIsOpenChanged(p.isOpen)
34814 var s = t.extend({}, r, {
34817 if (o.$emit("$mdMenuClose", i, s), e.hide(null, r), !n) {
34818 var c = p.restoreFocusTo || i.find("button")[0];
34819 c instanceof t.element && (c = c[0]), c && c.focus()
34822 }, this.positionMode = function() {
34823 var e = (r.mdPositionMode || "target").split(" ");
34824 return 1 == e.length && e.push(e[0]), {
34828 }, this.offsets = function() {
34829 var e = (r.mdOffset || "0 0").split(" ").map(parseFloat);
34830 if (2 == e.length) return {
34834 if (1 == e.length) return {
34838 throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
34842 }, o.$mdOpenMenu = t.bind(this, function() {
34843 return u.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
34846 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], t.module("material.components.menu").controller("mdMenuCtrl", e)
34850 function n(e, n, r, i) {
34853 s = t.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
34854 c = n.children()[1];
34855 n.addClass("_md"), c.hasAttribute("role") || c.setAttribute("role", "menu"), s.append(c), n.on("$destroy", function() {
34857 }), n.append(s), s[0].style.display = "none", o.init(s, {
34861 var r = "Invalid HTML for md-menu: ";
34864 require: ["mdMenu", "?^mdMenuBar"],
34865 controller: "mdMenuCtrl",
34867 compile: function(i) {
34868 i.addClass("md-menu");
34869 var o = i.children()[0],
34870 a = i.children()[1],
34872 s.hasAttribute(o, "ng-click") || (o = o.querySelector(s.buildSelector(["ng-click", "ng-mouseenter"])) || o);
34873 var c = "MD-BUTTON" === o.nodeName || "BUTTON" === o.nodeName;
34874 if (o && c && !o.hasAttribute("type") && o.setAttribute("type", "button"), !o) throw Error(r + "Expected the menu to have a trigger element.");
34875 if (!a || "MD-MENU-CONTENT" !== a.nodeName) throw Error(r + "Expected the menu to contain a `md-menu-content` element.");
34876 o && o.setAttribute("aria-haspopup", "true");
34877 var l = i[0].querySelectorAll("md-menu"),
34878 u = parseInt(i[0].getAttribute("md-nest-level"), 10) || 0;
34879 return l && t.forEach(e.nodesToArray(l), function(e) {
34880 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", u + 1)
34885 e.$inject = ["$mdUtil"], t.module("material.components.menu").directive("mdMenu", e)
34889 function r(e, r, a, s, c, l, u, d, f, h) {
34890 function p(n, r, i) {
34891 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() {
34892 i.backdrop && i.backdrop.remove(), i.disableParentScroll && i.restoreScroll()
34896 function m(t, n, r, i) {
34897 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);
34902 if (e && -1 != e.getAttribute("tabindex")) return e.focus(), s[0].activeElement == e
34906 t.preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e))
34911 l = t[0].firstElementChild,
34912 u = l.getBoundingClientRect(),
34913 d = s[0].body.getBoundingClientRect(),
34914 f = c.getComputedStyle(l),
34915 h = r.target[0].querySelector(y.buildSelector("md-menu-origin")) || r.target[0],
34916 p = h.getBoundingClientRect(),
34919 top: Math.max(d.top, 0) + o,
34920 bottom: Math.max(d.bottom, Math.max(d.top, 0) + d.height) - o,
34935 b = r.mdMenuCtrl.positionMode();
34936 "target" != b.top && "target" != b.left && "target-right" != b.left || (i = function() {
34937 for (var e = 0; e < l.children.length; ++e)
34938 if ("none" != c.getComputedStyle(l.children[e]).display) return l.children[e]
34939 }()) && (g = (i = (i = i.firstElementChild || i).querySelector(y.buildSelector("md-menu-align-target")) || i).getBoundingClientRect(), v = {
34940 top: parseFloat(a.style.top || 0),
34941 left: parseFloat(a.style.left || 0)
34947 _.top = v.top + p.top - g.top;
34950 _.top = p.top - parseFloat(f.paddingTop) - h.style.top;
34953 _.top = p.top + p.height;
34956 throw new Error('Invalid target mode "' + b.top + '" specified for md-menu on Y axis.')
34958 var w = "rtl" == e.bidi();
34961 _.left = v.left + p.left - g.left, $ += w ? "right" : "left";
34963 case "target-left":
34964 _.left = p.left, $ += "left";
34966 case "target-right":
34967 _.left = p.right - u.width + (u.right - g.right), $ += "right";
34970 var E = w ? p.left - u.width < m.left : p.right + u.width < m.right;
34971 _.left = E ? p.right - h.style.left : p.left - h.style.left - u.width, $ += E ? "left" : "right";
34974 w ? (_.left = p.right - p.width, $ += "left") : (_.left = p.right - u.width, $ += "right");
34977 w ? (_.left = p.right - u.width, $ += "right") : (_.left = p.left, $ += "left");
34980 throw new Error('Invalid target mode "' + b.left + '" specified for md-menu on X axis.')
34982 var k = r.mdMenuCtrl.offsets();
34983 _.top += k.top, _.left += k.left,
34985 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)
34987 var C = Math.round(100 * Math.min(p.width / a.offsetWidth, 1)) / 100,
34988 x = Math.round(100 * Math.min(p.height / a.offsetHeight, 1)) / 100;
34990 top: Math.round(_.top),
34991 left: Math.round(_.left),
34992 transform: r.alreadyOpen ? n : e.supplant("scale({0},{1})", [C, x]),
34996 var y = e.prefixer(),
34997 _ = e.dom.animator;
35000 onShow: function(n, i, o) {
35002 return o.backdrop ? (o.backdrop.on("click", f), function() {
35003 o.backdrop.off("click", f)
35008 e.preventDefault(), e.stopPropagation(), n.$apply(function() {
35009 o.mdMenuCtrl.close(!0, {
35018 switch (t.keyCode) {
35019 case a.KEY_CODE.ESCAPE:
35020 o.mdMenuCtrl.close(!1, {
35024 case a.KEY_CODE.UP_ARROW:
35025 m(t, o.menuContentEl, 0, -1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
35027 case a.KEY_CODE.DOWN_ARROW:
35028 m(t, o.menuContentEl, 0, 1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
35030 case a.KEY_CODE.LEFT_ARROW:
35031 o.nestLevel ? o.mdMenuCtrl.close() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
35033 case a.KEY_CODE.RIGHT_ARROW:
35034 var r = e.getClosest(t.target, "MD-MENU");
35035 r && r != o.parent[0] ? t.target.click() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0
35037 n && (t.preventDefault(), t.stopImmediatePropagation())
35043 for (var n, r = 0; n = t[r]; ++r)
35044 if (y.hasAttribute(e, n)) return !0;
35049 if (i == o.menuContentEl[0]) return;
35050 if ((r(i, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == i.nodeName || "MD-BUTTON" == i.nodeName) && !r(i, ["md-prevent-menu-close"])) {
35051 var a = e.getClosest(i, "MD-MENU");
35052 i.hasAttribute("disabled") || a && a != o.parent[0] || n.$apply(function() {
35053 o.mdMenuCtrl.close(!0, {
35059 } while (i = i.parentNode)
35061 if (!o.menuContentEl[0]) return t.noop;
35062 o.menuContentEl.on("keydown", r), o.menuContentEl[0].addEventListener("click", i, !0);
35063 var s = o.menuContentEl[0].querySelector(y.buildSelector(["md-menu-focus-target", "md-autofocus"]));
35065 for (var c = o.menuContentEl[0].children.length, l = 0; l < c; l++) {
35066 var u = o.menuContentEl[0].children[l];
35067 if (s = u.querySelector(".md-button:not([disabled])")) break;
35068 if (u.firstElementChild && !u.firstElementChild.disabled) {
35069 s = u.firstElementChild;
35073 return s && s.focus(),
35075 o.menuContentEl.off("keydown", r), o.menuContentEl[0].removeEventListener("click", i, !0)
35078 return function() {
35079 if (!o.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
35083 target: t.element(o.target),
35084 parent: t.element(o.parent),
35085 menuContentEl: t.element(i[0].querySelector("md-menu-content"))
35087 }(), 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() {
35088 var e = function(e, t) {
35089 return u.throttle(function() {
35090 if (!o.isRemoved) {
35096 return c.addEventListener("resize", e), c.addEventListener("orientationchange", e),
35098 c.removeEventListener("resize", e), c.removeEventListener("orientationchange", e)
35100 }(), o.hideBackdrop = p(n, i, o), (o.parent.append(i), i[0].style.display = "", l(function(e) {
35102 i.removeClass("md-leave"), d(i, {
35103 addClass: "md-active",
35109 })).then(function(e) {
35110 return o.alreadyOpen = !0, o.cleanupInteraction = g(), o.cleanupBackdrop = s(), i.addClass("md-clickable"), e
35113 onRemove: function(e, t, n) {
35115 t.removeClass("md-active"), v(t, n), n.alreadyOpen = !1
35117 return n.cleanupInteraction(), n.cleanupBackdrop(), n.cleanupResizing(), n.hideBackdrop(), t.removeClass("md-clickable"), !0 === n.$destroy ? r() : d(t, {
35118 addClass: "md-leave"
35122 disableParentScroll: !0,
35131 return e instanceof t.element && (e = e[0]), e
35133 r.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
35135 return e("$mdMenu").setDefaults({
35136 methods: ["target"],
35140 e.$inject = ["$$interimElementProvider"], t.module("material.components.menu").provider("$mdMenu", e)
35143 function e(e, n, i, o, a, s, c, l) {
35144 this.$element = i, this.$attrs = o, this.$mdConstant = a, this.$mdUtil = c, this.$document = s, this.$scope = e, this.$rootScope = n, this.$timeout = l;
35146 t.forEach(r, function(e) {
35147 u[e] = t.bind(u, u[e])
35150 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], t.module("material.components.menuBar").controller("MenuBarController", e);
35151 var r = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
35152 e.prototype.init = function() {
35153 var e = this.$element,
35158 e.on("keydown", this.handleKeyDown), this.parentToolbar = t.getClosest(e, "MD-TOOLBAR"), o.push(this.$rootScope.$on("$mdMenuOpen", function(t, n) {
35159 -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())
35160 })), o.push(this.$rootScope.$on("$mdMenuClose", function(r, o, a) {
35161 var s = i.getMenus();
35162 if (-1 != s.indexOf(o[0]) && (e[0].classList.remove("md-open"), o[0].classList.remove("md-open")), e[0].contains(o[0])) {
35163 for (var c = o[0]; c && -1 == s.indexOf(c);) c = t.getClosest(c, "MD-MENU", !0);
35164 c && (a.skipFocus || c.querySelector("button:not([disabled])").focus(), i.currentlyOpenMenu = n, i.disableOpenOnHover(), i.setKeyboardMode(!0))
35166 })), r.$on("$destroy", function() {
35167 for (i.disableOpenOnHover(); o.length;) o.shift()()
35168 }), this.setKeyboardMode(!0)
35169 }, e.prototype.setKeyboardMode = function(e) {
35170 e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
35171 }, e.prototype.enableOpenOnHover = function() {
35172 if (!this.openOnHoverEnabled) {
35174 e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
35175 t.element(e.parentToolbar).on("click", e.handleParentClick)
35176 }, !1)), t.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
35178 }, e.prototype.handleMenuHover = function(e) {
35179 this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
35180 }, e.prototype.disableOpenOnHover = function() {
35181 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))
35182 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
35183 var n = t.element(e.currentTarget).controller("mdMenu");
35184 this.setKeyboardMode(!1), this.scheduleOpenMenu(n)
35185 }, e.prototype.scheduleOpenMenu = function(e) {
35188 e != t.currentlyOpenMenu && (r.cancel(t.pendingMenuOpen), t.pendingMenuOpen = r(function() {
35189 t.pendingMenuOpen = n, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
35193 }, e.prototype.handleKeyDown = function(e) {
35194 var n = this.$mdConstant.KEY_CODE,
35195 r = this.currentlyOpenMenu,
35197 this.setKeyboardMode(!0);
35199 switch (e.keyCode) {
35201 r ? r.focusMenuContainer() : this.openFocusedMenu(), o = !0;
35204 r && r.close(), o = !0;
35207 a = this.focusMenu(-1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0;
35209 case n.RIGHT_ARROW:
35210 a = this.focusMenu(1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0
35212 o && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
35213 }, e.prototype.focusMenu = function(e) {
35214 var t = this.getMenus(),
35215 n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
35217 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]
35218 }, e.prototype.openFocusedMenu = function() {
35219 var e = this.getFocusedMenu();
35220 e && t.element(e).controller("mdMenu").open()
35221 }, e.prototype.getMenus = function() {
35222 var e = this.$element;
35223 return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
35224 return "MD-MENU" == e.nodeName
35226 }, e.prototype.getFocusedMenu = function() {
35227 return this.getMenus()[this.getFocusedMenuIndex()]
35228 }, e.prototype.getFocusedMenuIndex = function() {
35229 var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
35230 return e ? this.getMenus().indexOf(e) : -1
35231 }, e.prototype.getOpenMenuIndex = function() {
35232 for (var e = this.getMenus(), t = 0; t < e.length; ++t)
35233 if (e[t].classList.contains("md-open")) return t;
35235 }, e.prototype.handleParentClick = function(e) {
35236 var n = this.querySelector("md-menu.md-open");
35237 n && !n.contains(e.target) && t.element(n).controller("mdMenu").close(!0, {
35246 require: "mdMenuBar",
35247 controller: "MenuBarController",
35248 compile: function(r, i) {
35249 return i.ariaRole || r[0].setAttribute("role", "menubar"), t.forEach(r[0].children, function(n) {
35250 if ("MD-MENU" == n.nodeName) {
35251 n.hasAttribute("md-position-mode") || (n.setAttribute("md-position-mode", "left bottom"), n.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
35252 var r = e.nodesToArray(n.querySelectorAll("md-menu-content"));
35253 t.forEach(r, function(e) {
35254 e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
35257 }), r.find("md-menu-item").addClass("md-in-menu-bar"),
35258 function(e, t, r, i) {
35259 t.addClass("_md"), n(e, t), i.init()
35264 e.$inject = ["$mdUtil", "$mdTheming"], t.module("material.components.menuBar").directive("mdMenuBar", e)
35267 t.module("material.components.menuBar").directive("mdMenuDivider", function() {
35270 compile: function(e, t) {
35271 t.role || e[0].setAttribute("role", "separator")
35277 function e(e, t, n) {
35278 this.$element = t, this.$attrs = n, this.$scope = e
35280 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
35281 var t = this.$element,
35283 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())
35284 }, e.prototype.clearNgAria = function() {
35285 var e = this.$element[0],
35286 n = ["role", "tabindex", "aria-invalid", "aria-checked"];
35287 t.forEach(n, function(t) {
35288 e.removeAttribute(t)
35290 }, e.prototype.initClickListeners = function() {
35292 if ("radio" == s) {
35293 var e = a.ngValue ? o.$eval(a.ngValue) : a.value;
35294 return i.$modelValue == e
35296 return i.$modelValue
35300 e ? l.off("click", u) : l.on("click", u)
35306 s = (this.$element, this.mode);
35307 this.handleClick = t.bind(this, this.handleClick);
35308 var c = this.iconEl,
35309 l = t.element(this.buttonEl),
35310 u = this.handleClick;
35311 a.$observe("disabled", n), n(a.disabled), i.$render = function() {
35312 r.clearNgAria(), e() ? (c.style.display = "", l.attr("aria-checked", "true")) : (c.style.display = "none", l.attr("aria-checked", "false"))
35313 }, o.$$postDigest(i.$render)
35314 }, e.prototype.handleClick = function(e) {
35315 var t, n = this.mode,
35318 "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
35322 function e(e, n, r) {
35324 controller: "MenuItemController",
35325 require: ["mdMenuItem", "?ngModel"],
35326 priority: n.BEFORE_NG_ARIA,
35327 compile: function(n, i) {
35328 function o(e, r, i) {
35329 (i = i || n) instanceof t.element && (i = i[0]), i.hasAttribute(e) || i.setAttribute(e, r)
35332 if ("checkbox" != a && "radio" != a || !n.hasClass("md-in-menu-bar")) o("role", "menuitem", n[0].querySelector("md-button, button, a"));
35334 var s = n[0].textContent,
35335 c = t.element('<md-button type="button"></md-button>'),
35336 l = '<md-icon md-svg-src="' + r.mdChecked + '"></md-icon>';
35337 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),
35339 var i = e.prefixer(r);
35340 t.forEach(i, function(e) {
35341 if (n[0].hasAttribute(e)) {
35342 var t = n[0].getAttribute(e);
35343 c[0].setAttribute(e, t), n[0].removeAttribute(e)
35348 return function(e, t, n, r) {
35356 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], t.module("material.components.menuBar").directive("mdMenuItem", e)
35359 function e(e, n, r, i, o, a) {
35360 function s(a, s, y) {
35361 function _(t, r, o, s, c, u) {
35363 M.attr("stroke-dashoffset", l(b, y, e, E)), M.attr("transform", "rotate(" + w + " " + b / 2 + " " + b / 2 + ")")
35368 b = d(a.mdDiameter),
35371 $ = s || n.duration,
35372 w = -90 * (c || 0),
35374 r === t ? p(r) : k = h(function n() {
35375 var r = e.Math.max(0, e.Math.min(i.now() - g, $));
35376 p(_(r, t, v, $)), m === D && r < $ && (k = h(n))
35381 _(A, S, n.easeFnIndeterminate, n.durationIndeterminate, O, 75), O = ++O % 4
35385 C || (C = o($, n.durationIndeterminate, 0, !1), $(), s.addClass(b).removeAttr("aria-valuenow"))
35389 C && (o.cancel(C), C = null, s.removeClass(b))
35391 var k, C, x = s[0],
35392 T = t.element(x.querySelector("svg")),
35393 M = t.element(x.querySelector("path")),
35394 A = n.startIndeterminate,
35395 S = n.endIndeterminate,
35398 r(s), s.toggleClass(v, y.hasOwnProperty("disabled")), a.mdMode === g && w(), a.$on("$destroy", function() {
35400 }), a.$watchGroup(["value", "mdMode", function() {
35401 var e = x.disabled;
35402 return !0 === e || !1 === e ? e : t.isDefined(s.attr("disabled"))
35403 }], function(e, t) {
35406 if (r !== t[2] && s.toggleClass(v, !!r), r) E();
35407 else if (n !== m && n !== g && (n = g, y.$set("mdMode", n)), n === g) w();
35410 E(), s.attr("aria-valuenow", i), _(u(t[0]), i)
35412 }), a.$watch("mdDiameter", function(t) {
35421 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))
35425 function c(e, t, n) {
35430 return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
35433 function l(t, n, r, i) {
35434 return (t - n) * e.Math.PI * (3 * (i || 100) / 100 - r / 100)
35438 return e.Math.max(0, e.Math.min(t || 0, 100))
35442 var t = n.progressSize;
35444 var r = parseFloat(e);
35445 return e.lastIndexOf("%") === e.length - 1 && (r = r / 100 * t), r
35451 return n.strokeWidth / 100 * e
35453 var h = e.requestAnimationFrame || e.webkitRequestAnimationFrame || t.noop,
35454 p = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame || t.noop,
35456 g = "indeterminate",
35457 v = "_md-progress-circular-disabled",
35458 b = "md-mode-indeterminate";
35466 template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
35467 compile: function(e, n) {
35469 "aria-valuemin": 0,
35470 "aria-valuemax": 100,
35471 role: "progressbar"
35472 }), t.isUndefined(n.mdMode)) {
35473 var r = n.hasOwnProperty("value") ? m : g;
35474 n.$set("mdMode", r)
35475 } else n.$set("mdMode", n.mdMode.trim());
35480 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], t.module("material.components.progressCircular").directive("mdProgressCircular", e)
35483 t.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
35484 function e(e, t, n, r) {
35485 return n * e / r + t
35488 function n(e, t, n, r) {
35489 var i = (e /= r) * e,
35491 return t + n * (6 * o * i + -15 * i * i + 10 * o)
35498 durationIndeterminate: 1333,
35499 startIndeterminate: 1,
35500 endIndeterminate: 149,
35501 easeFnIndeterminate: n,
35508 configure: function(e) {
35509 return r = t.extend(r, e || {})
35518 t.module("material.components.tabs").directive("mdTab", function() {
35519 function e(e, r, i, o) {
35521 var a = o.getTabElementIndex(r),
35522 s = n(r, "md-tab-body").remove(),
35523 c = n(r, "md-tab-label").remove(),
35529 template: s.html(),
35532 e.select = e.select || t.noop, e.deselect = e.deselect || t.noop, e.$watch("active", function(e) {
35533 e && o.select(l.getIndex(), !0)
35534 }), e.$watch("disabled", function() {
35536 }), e.$watch(function() {
35537 return o.getTabElementIndex(r)
35539 l.index = e, o.updateTabOrder()
35540 }), e.$on("$destroy", function() {
35547 for (var r = e[0].children, i = 0, o = r.length; i < o; i++) {
35549 if (a.tagName === n.toUpperCase()) return t.element(a)
35554 require: "^?mdTabs",
35556 compile: function(r, i) {
35557 var o = n(r, "md-tab-label"),
35558 a = n(r, "md-tab-body");
35559 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)) {
35560 var s = r.contents().detach();
35561 (a = t.element("<md-tab-body></md-tab-body>")).append(s)
35563 return r.append(o), a.html() && r.append(a), e
35566 active: "=?mdActive",
35567 disabled: "=?ngDisabled",
35568 select: "&?mdOnSelect",
35569 deselect: "&?mdOnDeselect"
35575 t.module("material.components.tabs").directive("mdTabItem", function() {
35577 require: "^?mdTabs",
35578 link: function(e, t, n, r) {
35579 r && r.attachRipple(e, t)
35585 t.module("material.components.tabs").directive("mdTabLabel", function() {
35595 compile: function(t, n) {
35596 var r = e(n.mdTabScroll, null, !0);
35597 return function(e, t) {
35598 t.on("mousewheel", function(t) {
35599 e.$apply(function() {
35609 e.$inject = ["$parse"], t.module("material.components.tabs").directive("mdTabScroll", e)
35612 function e(e, r, i, o, a, s, c, l, u, d, f, h) {
35614 te.selectedIndex = te.selectedIndex || 0, m(), v(), g(), d(r), s.nextTick(function() {
35615 re = I(), K(), B(), Z(), te.tabs[te.selectedIndex] && te.tabs[te.selectedIndex].scope.select(), ae = !0, F()
35620 var e = l.$mdTabsTemplate,
35621 n = t.element(r[0].querySelector("md-tab-data"));
35622 n.html(e), u(n.contents())(te.parent), delete l.$mdTabsTemplate
35626 t.element(i).on("resize", O), e.$on("$destroy", _)
35630 e.$watch("$mdTabsCtrl.selectedIndex", M)
35634 var n = l.$normalize("md-" + e);
35635 t && L(e, t), l.$observe(n, function(t) {
35642 te[e] = "false" !== t
35644 var r = l.$normalize("md-" + e);
35645 t && L(e, t), l.hasOwnProperty(r) && n(l[r]), l.$observe(r, n)
35649 oe = !0, t.element(i).off("resize", O)
35654 t.element(n.wrapper).toggleClass("md-stretch-tabs", R()), Z()
35658 te.shouldCenterTabs = P()
35664 t.forEach(r.tabs, function(t) {
35665 t.style.maxWidth = e + "px"
35666 }), t.forEach(r.dummies, function(t) {
35667 t.style.maxWidth = e + "px"
35668 }), s.nextTick(te.updateInkBarStyles)
35673 e !== t && (te.maxTabWidth = U(), te.shouldCenterTabs = P(), s.nextTick(function() {
35674 te.maxTabWidth = U(), B(te.selectedIndex)
35679 r[e ? "removeClass" : "addClass"]("md-no-tab-content")
35684 i = (te.shouldCenterTabs || ee() ? "" : "-") + n + "px";
35685 i = i.replace("--", ""), t.element(r.paging).css(o.CSS.TRANSFORM, "translate3d(" + i + ", 0, 0)"), e.$broadcast("$mdTabsPaginationChanged")
35689 e !== t && I().tabs[e] && (B(), z())
35693 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())
35697 A.watcher || (A.watcher = e.$watch(function() {
35698 s.nextTick(function() {
35699 A.watcher && r.prop("offsetParent") && (A.watcher(), A.watcher = null, O())
35705 ne || (te.focusIndex = te.selectedIndex = e), t && te.noSelectClick || s.nextTick(function() {
35706 te.tabs[e].element.triggerHandler("click")
35711 te.lastSelectedIndex = te.selectedIndex, te.offsetLeft = Q(te.offsetLeft), s.nextTick(function() {
35712 te.updateInkBarStyles(), F()
35717 t.element(I().inkBar).toggleClass("ng-hide", e)
35721 r.toggleClass("md-dynamic-height", e)
35727 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
35731 switch (te.stretchTabs) {
35737 return !te.shouldPaginate && i.matchMedia("(max-width: 600px)").matches
35742 return te.centerTabs && !te.shouldPaginate
35746 if (te.noPagination || !ae) return !1;
35747 var e = r.prop("clientWidth");
35748 return t.forEach(I().tabs, function(t) {
35754 if (-1 === e) return -1;
35755 var t, n, r = Math.max(te.tabs.length - e, e);
35756 for (t = 0; t <= r; t++) {
35757 if ((n = te.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
35758 if ((n = te.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
35763 function L(e, t, n) {
35764 Object.defineProperty(te, e, {
35770 n = e, t && t(e, r)
35776 te.maxTabWidth = U(), te.shouldPaginate = j()
35781 return t.forEach(e, function(e) {
35782 n += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
35787 var e = I().canvas.clientWidth;
35788 return Math.max(0, Math.min(e - 1, 264))
35792 var n, r = t ? "focusIndex" : "selectedIndex",
35794 for (n = i + e; te.tabs[n] && te.tabs[n].scope.disabled; n += e);
35795 n = (i + e + te.tabs.length) % te.tabs.length, te.tabs[n] && (te[r] = n)
35799 te.styleTabItemFocus = "keyboard" === f.getLastInteractionType(), I().tabs[te.focusIndex].focus()
35804 if (t.isNumber(e) || (e = te.focusIndex), n.tabs[e] && !te.shouldCenterTabs) {
35807 o = r.offsetWidth + i;
35810 var a = q(Array.prototype.slice.call(n.tabs, 0, e)),
35811 s = q(Array.prototype.slice.call(n.tabs, 0, e + 1));
35812 te.offsetLeft = Math.min(te.offsetLeft, Q(a)), te.offsetLeft = Math.max(te.offsetLeft, Q(s - n.canvas.clientWidth))
35813 } else te.offsetLeft = Math.max(te.offsetLeft, Q(o - n.canvas.clientWidth + 32)), te.offsetLeft = Math.min(te.offsetLeft, Q(i));
35814 else te.offsetLeft = 0
35819 ie.forEach(function(e) {
35825 for (var e = !1, t = 0; t < te.tabs.length; t++)
35826 if (te.tabs[t].hasContent) {
35834 te.selectedIndex = H(te.selectedIndex), te.focusIndex = H(te.focusIndex)
35838 if (!te.dynamicHeight) return r.css("height", "");
35839 if (!te.tabs.length) return ie.push(K);
35841 t = e.contents[te.selectedIndex],
35842 i = t ? t.offsetHeight : 0,
35843 o = e.wrapper.offsetHeight,
35845 l = r.prop("clientHeight");
35847 "bottom" === r.attr("md-align-tabs") && (l -= o, a -= o, r.attr("md-border-bottom") !== n && ++l), ne = !0;
35857 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
35859 }).start().done(function() {
35861 transition: "none",
35863 }), s.nextTick(function() {
35864 r.css("transition", "")
35872 if (e.tabs[te.selectedIndex]) {
35873 if (!te.tabs.length) return ie.push(te.updateInkBarStyles);
35874 if (!r.prop("offsetParent")) return A();
35875 var n = te.selectedIndex,
35876 i = e.paging.offsetWidth,
35879 c = i - a - o.offsetWidth;
35880 te.shouldCenterTabs && i > q(e.tabs) && s.nextTick(Z, !1), X(), t.element(e.inkBar).css({
35884 } else t.element(e.inkBar).css({
35892 n = te.selectedIndex,
35893 r = te.lastSelectedIndex,
35894 i = t.element(e.inkBar);
35895 t.isNumber(r) && i.toggleClass("md-left", n < r).toggleClass("md-right", n > r)
35900 if (!t.tabs.length || !te.shouldPaginate) return 0;
35901 var n = t.tabs[t.tabs.length - 1],
35902 r = n.offsetLeft + n.offsetWidth;
35903 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
35907 if (e.hasContent) {
35908 var n = r[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
35909 t.element(n).attr("aria-controls", te.tabContentPrefix + e.id)
35914 return "rtl" == s.bidi()
35922 te.$onInit = function() {
35923 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()
35924 }, te.updatePagination = s.debounce(F, 100), te.redirectFocus = z, te.attachRipple = function(e, n) {
35927 colorElement: t.element(r.inkBar)
35930 }, te.insertTab = function(e, n) {
35933 getIndex: function() {
35934 return te.tabs.indexOf(o)
35936 isActive: function() {
35937 return this.getIndex() === te.selectedIndex
35939 isLeft: function() {
35940 return this.getIndex() < te.selectedIndex
35942 isRight: function() {
35943 return this.getIndex() > te.selectedIndex
35945 shouldRender: function() {
35946 return !te.noDisconnect || this.isActive()
35948 hasFocus: function() {
35949 return te.styleTabItemFocus && te.hasFocus && this.getIndex() === te.focusIndex
35952 hasContent: !(!e.template || !e.template.trim())
35954 o = t.extend(i, e);
35955 return t.isDefined(n) ? te.tabs.splice(n, 0, o) : te.tabs.push(o), W(), Y(), s.nextTick(function() {
35956 F(), J(o), r && te.autoselect && s.nextTick(function() {
35957 s.nextTick(function() {
35958 S(te.tabs.indexOf(o))
35962 }, te.removeTab = function(e) {
35964 var t = te.selectedIndex,
35965 n = te.tabs.splice(e.getIndex(), 1)[0];
35966 G(), te.selectedIndex === t && (n.scope.deselect(), te.tabs[te.selectedIndex] && te.tabs[te.selectedIndex].scope.select()), s.nextTick(function() {
35967 F(), te.offsetLeft = Q(te.offsetLeft)
35970 }, te.select = S, te.scroll = function(e) {
35971 te.shouldPaginate && (e.preventDefault(), te.offsetLeft = Q(te.offsetLeft - e.wheelDelta))
35972 }, te.nextPage = function() {
35973 if (te.canPageForward()) {
35974 var e = h.increasePageOffset(I(), te.offsetLeft);
35975 te.offsetLeft = Q(e)
35977 }, te.previousPage = function() {
35978 if (te.canPageBack()) {
35979 var e = h.decreasePageOffset(I(), te.offsetLeft);
35980 te.offsetLeft = Q(e)
35982 }, te.keydown = function(e) {
35983 switch (e.keyCode) {
35984 case o.KEY_CODE.LEFT_ARROW:
35985 e.preventDefault(), V(-1, !0);
35987 case o.KEY_CODE.RIGHT_ARROW:
35988 e.preventDefault(), V(1, !0);
35990 case o.KEY_CODE.SPACE:
35991 case o.KEY_CODE.ENTER:
35992 e.preventDefault(), ne || S(te.focusIndex);
35994 case o.KEY_CODE.TAB:
35995 te.focusIndex !== te.selectedIndex && (te.focusIndex = te.selectedIndex)
35997 }, te.canPageForward = function() {
35999 t = e.tabs[e.tabs.length - 1];
36000 return ee() ? te.offsetLeft < e.paging.offsetWidth - e.canvas.offsetWidth : t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + te.offsetLeft
36001 }, te.canPageBack = function() {
36002 return te.offsetLeft > 0
36003 }, te.refreshIndex = G, te.incrementIndex = V, te.getTabElementIndex = function(e) {
36004 var t = r[0].getElementsByTagName("md-tab");
36005 return Array.prototype.indexOf.call(t, e[0])
36006 }, te.updateInkBarStyles = s.debounce(Z, 100), te.updateTabOrder = s.debounce(function() {
36007 var e = te.tabs[te.selectedIndex],
36008 t = te.tabs[te.focusIndex];
36009 te.tabs = te.tabs.sort(function(e, t) {
36010 return e.index - t.index
36011 }), te.selectedIndex = te.tabs.indexOf(e), te.focusIndex = te.tabs.indexOf(t)
36012 }, 100), te.getFocusedTabId = function() {
36013 var e = te.tabs[te.focusIndex];
36014 return e && e.id ? "tab-item-" + e.id : null
36015 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
36017 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction", "MdTabsPaginationService"], t.module("material.components.tabs").controller("MdTabsController", e)
36023 selectedIndex: "=?mdSelected"
36025 template: function(t, n) {
36026 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>'
36028 controller: "MdTabsController",
36029 controllerAs: "$mdTabsCtrl",
36030 bindToController: !0
36033 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.tabs").directive("mdTabs", e)
36038 require: "^?mdTabs",
36039 link: function(n, r, i, o) {
36041 var a, s, c = function() {
36042 o.updatePagination(), o.updateInkBarStyles()
36044 if ("MutationObserver" in t) {
36050 (a = new MutationObserver(c)).observe(r[0], l), s = a.disconnect.bind(a)
36052 var u = e.debounce(c, 15, null, !1);
36053 r.on("DOMSubtreeModified", u), s = r.off.bind(r, "DOMSubtreeModified", u)
36055 n.$on("$destroy", function() {
36062 e.$inject = ["$mdUtil", "$window"], t.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
36068 link: function(n, r, i, o) {
36070 o.enableDisconnect && t.disconnectScope(c)
36074 o.enableDisconnect && t.reconnectScope(c)
36077 var c = o.enableDisconnect ? n.compileScope.$new() : n.compileScope;
36078 return r.html(n.template), e(r.contents())(c), t.nextTick(function() {
36079 n.$watch("connected", function(e) {
36080 !1 === e ? a() : s()
36081 }), n.$on("$destroy", s)
36086 template: "=mdTabsTemplate",
36087 connected: "=?mdConnectedIf",
36088 compileScope: "=mdScope"
36090 require: "^?mdTabs"
36093 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.tabs").directive("mdTabsTemplate", e)
36094 }(), 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}}"}')
36095 }(window, window.angular), window.ngMaterial = {
36101 angular.module("ngCsv.config", []).value("ngCsv.config", {
36103 }).config(["$compileProvider", function(e) {
36104 angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
36105 }]), 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) {
36114 this.stringifyField = function(e, t) {
36115 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
36116 }, this.isFloat = function(e) {
36117 return +e === e && (!isFinite(e) || Boolean(e % 1))
36118 }, this.stringify = function(n, r) {
36123 c = e.when(n).then(function(e) {
36124 if (angular.isDefined(r.header) && r.header) {
36126 n = [], angular.forEach(r.header, function(e, t) {
36127 this.push(o.stringifyField(e, r))
36128 }, n), c = n.join(r.fieldSep ? r.fieldSep : ","), s += c + t
36131 if (angular.isArray(e) ? l = e : angular.isFunction(e) && (l = e()), angular.isDefined(r.label) && r.label && "boolean" == typeof r.label) {
36134 var f = r.columnOrder ? r.columnOrder : l[0];
36135 angular.forEach(f, function(e, t) {
36136 var n = r.columnOrder ? e : t;
36137 this.push(o.stringifyField(n, r))
36138 }, u), d = u.join(r.fieldSep ? r.fieldSep : ","), s += d + t
36140 angular.forEach(l, function(e, n) {
36141 var i, a, c = angular.copy(l[n]);
36143 var u = r.columnOrder ? r.columnOrder : c;
36144 angular.forEach(u, function(e, t) {
36145 var n = r.columnOrder ? c[e] : e;
36146 this.push(o.stringifyField(n, r))
36147 }, a), i = a.join(r.fieldSep ? r.fieldSep : ","), s += n < l.length ? i + t : i
36148 }), r.addByteOrderMarker && (a += "\ufeff"), a += s, i.resolve(a)
36150 return "function" == typeof c.catch && c.catch(function(e) {
36153 }, this.isSpecialChar = function(e) {
36154 return void 0 !== n[e]
36155 }, this.getSpecialChar = function(e) {
36158 }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(t, n, r, i, o) {
36163 filename: "@filename",
36164 header: "&csvHeader",
36165 columnOrder: "&csvColumnOrder",
36166 txtDelim: "@textDelimiter",
36167 decimalSep: "@decimalSeparator",
36168 quoteStrings: "@quoteStrings",
36169 fieldSep: "@fieldSeparator",
36170 lazyLoad: "@lazyLoad",
36171 addByteOrderMarker: "@addBom",
36173 charset: "@charset",
36176 controller: ["$scope", "$element", "$attrs", "$transclude", function(e, t, i, o) {
36179 txtDelim: e.txtDelim ? e.txtDelim : '"',
36180 decimalSep: e.decimalSep ? e.decimalSep : ".",
36181 quoteStrings: e.quoteStrings,
36182 addByteOrderMarker: e.addByteOrderMarker
36184 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
36186 e.csv = "", angular.isDefined(e.lazyLoad) && "true" == e.lazyLoad || angular.isArray(e.data) && e.$watch("data", function(t) {
36188 }, !0), e.getFilename = function() {
36189 return e.filename || "download.csv"
36190 }, e.buildCSV = function() {
36193 return t.addClass(i.ngCsvLoadingClass || "ng-csv-loading"), s = e.data(), angular.isFunction(s) && (s = s()), r.stringify(s, a()).then(function(n) {
36194 e.csv = n, t.removeClass(i.ngCsvLoadingClass || "ng-csv-loading"), o.resolve(n)
36195 }), e.$apply(), o.promise
36198 link: function(t, n, r) {
36200 var n = t.charset || "utf-8",
36201 r = new Blob([t.csv], {
36202 type: "text/csv;charset=" + n + ";"
36204 if (e.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(r, t.getFilename());
36206 var a = angular.element('<div data-tap-disabled="true"><a></a></div>'),
36207 s = angular.element(a.children()[0]);
36208 s.attr("href", e.URL.createObjectURL(r)), s.attr("download", t.getFilename()), i.find("body").append(a), o(function() {
36209 s[0].click(), s.remove()
36213 n.bind("click", function(e) {
36214 t.buildCSV().then(function(e) {
36221 }(window, document),
36223 if ("function" == typeof define && define.amd) define(["jquery"], e);
36224 else if ("object" == typeof module && module.exports) {
36225 var t = require("jquery");
36226 module.exports = e(t)
36229 if (void 0 === e) throw new Error("jQuery.textcomplete requires jQuery");
36230 return function(e) {
36232 var t = function(e) {
36233 console.warn && console.warn(e)
36236 e.fn.textcomplete = function(r, i) {
36237 var o = Array.prototype.slice.call(arguments);
36238 return this.each(function() {
36241 c = s.data("textComplete");
36242 if (c || (i || (i = {}), i._oid = n++, c = new e.fn.textcomplete.Completer(this, i), s.data("textComplete", c)), "string" == typeof r) {
36244 o.shift(), c[r].apply(c, o), "destroy" === r && s.removeData("textComplete")
36245 } else e.each(r, function(n) {
36246 e.each(["header", "footer", "placement", "maxCount"], function(e) {
36247 n[e] && (c.option[e] = n[e], t(e + "as a strategy param is deprecated. Use option."), delete n[e])
36249 }), c.register(e.fn.textcomplete.Strategy.parse(r, {
36260 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.");
36261 if (n === n.ownerDocument.activeElement) this.initialize();
36264 this.$el.one("focus." + this.id, function() {
36266 }), this.option.adapter && "CKEditor" != this.option.adapter || "undefined" == typeof CKEDITOR || !this.$el.is("textarea") || CKEDITOR.on("instanceReady", function(t) {
36267 -1 == e.inArray(t.editor.id, i) && (i.push(t.editor.id), t.editor.on("focus", function(n) {
36268 a.$el = e(t.editor.editable().$), a.option.adapter || (a.option.adapter = e.fn.textcomplete.CKEditor), a.option.ckeditor_instance = t.editor, a.initialize()
36273 var n = function(e) {
36274 return "[object String]" === Object.prototype.toString.call(e)
36281 dropdownClassName: "dropdown-menu textcomplete-dropdown",
36284 rightEdgeOffset: 30
36285 }, e.extend(t.prototype, {
36293 initialize: function() {
36294 var t = this.$el.get(0);
36295 if (this.$el.prop("ownerDocument") !== document && window.frames.length)
36296 for (var n = 0; n < window.frames.length; n++)
36297 if (this.$el.prop("ownerDocument") === window.frames[n].document) {
36298 this.$iframe = e(window.frames[n].frameElement);
36301 this.dropdown = new e.fn.textcomplete.Dropdown(t, this, this.option);
36303 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)
36305 destroy: function() {
36306 this.$el.off("." + this.id), this.adapter && this.adapter.destroy(), this.dropdown && this.dropdown.destroy(), this.$el = this.adapter = this.dropdown = null
36308 deactivate: function() {
36309 this.dropdown && this.dropdown.deactivate()
36311 trigger: function(e, t) {
36312 this.dropdown || this.initialize(), null != e || (e = this.adapter.getTextFromHeadToCaret());
36313 var n = this._extractSearchQuery(e);
36316 if (t && this._term === r && "" !== r) return;
36317 this._term = r, this._search.apply(this, n)
36318 } else this._term = null, this.dropdown.deactivate()
36320 fire: function(e) {
36321 var t = Array.prototype.slice.call(arguments, 1);
36322 return this.$el.trigger(e, t), this
36324 register: function(e) {
36325 Array.prototype.push.apply(this.strategies, e)
36327 select: function(e, t, n) {
36328 this._term = null, this.adapter.select(e, t, n), this.fire("change").fire("textComplete:select", e, t), this.adapter.focus()
36332 _extractSearchQuery: function(t) {
36333 for (var r = 0; r < this.strategies.length; r++) {
36334 var i = this.strategies[r],
36336 if (o || "" === o) {
36337 var a = e.isFunction(i.match) ? i.match(t) : i.match;
36339 var s = t.match(a);
36340 if (s) return [i, s[i.index], s]
36345 _search: function(e) {
36347 return function() {
36348 var r = Array.prototype.slice.call(arguments);
36353 r.unshift(function r() {
36356 n = void 0, o.unshift(r), e.apply(i, o)
36358 }), e.apply(this, r)
36361 }(function(e, t, n, r) {
36363 t.search(n, function(r, o) {
36364 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)
36367 _zip: function(t, n, r) {
36368 return e.map(t, function(e) {
36376 }), e.fn.textcomplete.Completer = t
36381 function t(n, r, o) {
36382 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);
36384 e.each(["maxCount", "placement", "footer", "header", "noResultsMessage", "className"], function(e, t) {
36385 null != o[t] && (a[t] = o[t])
36386 }), this._bindEvents(n), i[this.id] = this
36389 r = function(e, t) {
36390 var n, r, i = t.strategy.idProperty;
36391 for (n = 0; n < e.length; n++)
36392 if ((r = e[n]).strategy === t.strategy)
36394 if (r.value[i] === t.value[i]) return !0
36395 } else if (r.value === t.value) return !0;
36399 e(document).on("click", function(t) {
36400 var n = t.originalEvent && t.originalEvent.keepTextCompleteDropdown;
36401 e.each(i, function(e, t) {
36402 e !== n && t.deactivate()
36415 createElement: function(t) {
36416 var n = t.appendTo;
36417 return n instanceof e || (n = e(n)), e("<ul></ul>").addClass(t.dropdownClassName).attr("id", "textcomplete-dropdown-" + t._oid).css({
36420 position: "absolute",
36424 }), e.extend(t.prototype, {
36436 destroy: function() {
36437 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]
36439 render: function(t) {
36440 var n = this._buildContents(t),
36441 r = e.map(t, function(e) {
36445 var i = t[0].strategy;
36446 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()
36447 } else this.noResultsMessage ? this._renderNoResultsMessage(r) : this.shown && this.deactivate()
36449 setPosition: function(t) {
36450 var r = "absolute";
36451 return this.$inputEl.add(this.$inputEl.parents()).each(function() {
36452 return "absolute" !== e(this).css("position") && ("fixed" === e(this).css("position") ? (t.top -= n.scrollTop(), t.left -= n.scrollLeft(), r = "fixed", !1) : void 0)
36453 }), this.$el.css(this._applyPlacement(t)), this.$el.css({
36457 clear: function() {
36458 this.$el.html(""), this.data = [], this._index = 0, this._$header = this._$footer = this._$noResultsMessage = null
36460 activate: function() {
36461 return this.shown || (this.clear(), this.$el.show(), this.className && this.$el.addClass(this.className), this.completer.fire("textComplete:show"), this.shown = !0), this
36463 deactivate: function() {
36464 return this.shown && (this.$el.hide(), this.className && this.$el.removeClass(this.className), this.completer.fire("textComplete:hide"), this.shown = !1), this
36466 isUp: function(e) {
36467 return 38 === e.keyCode || e.ctrlKey && 80 === e.keyCode
36469 isDown: function(e) {
36470 return 40 === e.keyCode || e.ctrlKey && 78 === e.keyCode
36472 isEnter: function(e) {
36473 return !(e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) && (13 === e.keyCode || 9 === e.keyCode || !0 === this.option.completeOnSpace && 32 === e.keyCode)
36475 isPageup: function(e) {
36476 return 33 === e.keyCode
36478 isPagedown: function(e) {
36479 return 34 === e.keyCode
36481 isEscape: function(e) {
36482 return 27 === e.keyCode
36487 _$noResultsMessage: null,
36489 _bindEvents: function() {
36490 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))
36492 _onClick: function(t) {
36493 var n = e(t.target);
36494 t.preventDefault(), t.originalEvent.keepTextCompleteDropdown = this.id, n.hasClass("textcomplete-item") || (n = n.closest(".textcomplete-item"));
36495 var r = this.data[parseInt(n.data("index"), 10)];
36496 this.completer.select(r.value, r.strategy, t);
36498 setTimeout(function() {
36499 i.deactivate(), "touchstart" === t.type && i.$inputEl.focus()
36502 _onMouseover: function(t) {
36503 var n = e(t.target);
36504 t.preventDefault(), n.hasClass("textcomplete-item") || (n = n.closest(".textcomplete-item")), this._index = parseInt(n.data("index"), 10), this._activateIndexedItem()
36506 _onKeydown: function(t) {
36509 switch (e.isFunction(this.option.onKeydown) && (n = this.option.onKeydown(t, o)), null == n && (n = this._defaultKeydown(t)), n) {
36511 t.preventDefault(), this._up();
36514 t.preventDefault(), this._down();
36517 t.preventDefault(), this._enter(t);
36520 t.preventDefault(), this._pageup();
36522 case o.KEY_PAGEDOWN:
36523 t.preventDefault(), this._pagedown();
36526 t.preventDefault(), this.deactivate()
36530 _defaultKeydown: function(e) {
36531 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
36534 0 === this._index ? this._index = this.data.length - 1 : this._index -= 1, this._activateIndexedItem(), this._setScroll()
36536 _down: function() {
36537 this._index === this.data.length - 1 ? this._index = 0 : this._index += 1, this._activateIndexedItem(), this._setScroll()
36539 _enter: function(e) {
36540 var t = this.data[parseInt(this._getActiveElement().data("index"), 10)];
36541 this.completer.select(t.value, t.strategy, e), this.deactivate()
36543 _pageup: function() {
36545 n = this._getActiveElement().position().top - this.$el.innerHeight();
36546 this.$el.children().each(function(r) {
36547 if (e(this).position().top + e(this).outerHeight() > n) return t = r, !1
36548 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36550 _pagedown: function() {
36551 var t = this.data.length - 1,
36552 n = this._getActiveElement().position().top + this.$el.innerHeight();
36553 this.$el.children().each(function(r) {
36554 if (e(this).position().top > n) return t = r, !1
36555 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36557 _activateIndexedItem: function() {
36558 this.$el.find(".textcomplete-item.active").removeClass("active"), this._getActiveElement().addClass("active")
36560 _getActiveElement: function() {
36561 return this.$el.children(".textcomplete-item:nth(" + this._index + ")")
36563 _setScroll: function() {
36564 var e = this._getActiveElement(),
36565 t = e.position().top,
36566 n = e.outerHeight(),
36567 r = this.$el.innerHeight(),
36568 i = this.$el.scrollTop();
36569 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)
36571 _buildContents: function(e) {
36572 var t, n, i, o = "";
36573 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>");
36576 _renderHeader: function(t) {
36578 this._$header || (this._$header = e('<li class="textcomplete-header"></li>').prependTo(this.$el));
36579 var n = e.isFunction(this.header) ? this.header(t) : this.header;
36580 this._$header.html(n)
36583 _renderFooter: function(t) {
36585 this._$footer || (this._$footer = e('<li class="textcomplete-footer"></li>').appendTo(this.$el));
36586 var n = e.isFunction(this.footer) ? this.footer(t) : this.footer;
36587 this._$footer.html(n)
36590 _renderNoResultsMessage: function(t) {
36591 if (this.noResultsMessage) {
36592 this._$noResultsMessage || (this._$noResultsMessage = e('<li class="textcomplete-no-results-message"></li>').appendTo(this.$el));
36593 var n = e.isFunction(this.noResultsMessage) ? this.noResultsMessage(t) : this.noResultsMessage;
36594 this._$noResultsMessage.html(n)
36597 _renderContents: function(e) {
36598 this._$footer ? this._$footer.before(e) : this.$el.append(e)
36600 _fitToBottom: function() {
36601 var e = n.scrollTop() + n.height(),
36602 t = this.$el.height();
36603 this.$el.position().top + t > e && (this.completer.$iframe || this.$el.offset({
36607 _fitToRight: function() {
36608 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({
36610 }), !((e = this.$el.offset().left) >= r));) r = e
36612 _applyPlacement: function(e) {
36613 return -1 !== this.placement.indexOf("top") ? e = {
36615 bottom: this.$el.parent().height() - e.top + e.lineHeight,
36617 } : (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
36619 }), e.fn.textcomplete.Dropdown = t, e.extend(e.fn.textcomplete, o)
36625 e.extend(this, t), this.cache && (this.search = n(this.search))
36627 var n = function(e) {
36629 return function(n, r) {
36630 t[n] ? r(t[n]) : e.call(this, n, function(e) {
36631 t[n] = (t[n] || []).concat(e), r.apply(null, arguments)
36635 t.parse = function(n, r) {
36636 return e.map(n, function(e) {
36638 return n.el = r.el, n.$el = r.$el, n
36640 }, e.extend(t.prototype, {
36646 context: function() {
36650 template: function(e) {
36654 }), e.fn.textcomplete.Strategy = t
36660 var n = Date.now || function() {
36661 return (new Date).getTime()
36663 r = function(e, t) {
36664 var r, i, o, a, s, c = function() {
36666 l < t ? r = setTimeout(c, t - l) : (r = null, s = e.apply(o, i), o = i = null)
36668 return function() {
36669 return o = this, i = arguments, a = n(), r || (r = setTimeout(c, t)), s
36672 e.extend(t.prototype, {
36678 initialize: function(t, n, i) {
36679 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()
36681 destroy: function() {
36682 this.$el.off("." + this.id), this.$el = this.el = this.completer = null
36684 select: function() {
36685 throw new Error("Not implemented")
36687 getCaretPosition: function() {
36688 var t = this._getCaretRelativePosition(),
36689 n = this.$el.offset(),
36690 r = this.option.appendTo;
36692 r instanceof e || (r = e(r));
36693 var i = r.offsetParent().offset();
36694 n.top -= i.top, n.left -= i.left
36696 return t.top += n.top, t.left += n.left, t
36698 focus: function() {
36701 _bindEvents: function() {
36702 this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36704 _onKeyup: function(e) {
36705 this._skipSearch(e) || this.completer.trigger(this.getTextFromHeadToCaret(), !0)
36707 _skipSearch: function(e) {
36708 switch (e.keyCode) {
36721 if (e.ctrlKey) switch (e.keyCode) {
36727 }), e.fn.textcomplete.Adapter = t
36732 function t(e, t, n) {
36733 this.initialize(e, t, n)
36735 e.extend(t.prototype, e.fn.textcomplete.Adapter.prototype, {
36736 select: function(t, n, r) {
36737 var i, o = this.getTextFromHeadToCaret(),
36738 a = this.el.value.substring(this.el.selectionEnd),
36739 s = n.replace(t, r);
36740 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)
36742 getTextFromHeadToCaret: function() {
36743 return this.el.value.substring(0, this.el.selectionEnd)
36745 _getCaretRelativePosition: function() {
36746 var t = e.fn.textcomplete.getCaretCoordinates(this.el, this.el.selectionStart);
36748 top: t.top + this._calculateLineHeight() - this.$el.scrollTop(),
36749 left: t.left - this.$el.scrollLeft(),
36750 lineHeight: this._calculateLineHeight()
36753 _calculateLineHeight: function() {
36754 var e = parseInt(this.$el.css("line-height"), 10);
36756 var t = this.el.parentNode,
36757 n = document.createElement(this.el.nodeName),
36759 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)
36763 }), e.fn.textcomplete.Textarea = t
36768 function t(t, r, i) {
36769 this.initialize(t, r, i), e("<span>" + n + "</span>").css({
36770 position: "absolute",
36776 e.extend(t.prototype, e.fn.textcomplete.Textarea.prototype, {
36777 select: function(t, n, r) {
36778 var i, o = this.getTextFromHeadToCaret(),
36779 a = this.el.value.substring(o.length),
36780 s = n.replace(t, r);
36781 if (void 0 !== s) {
36782 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();
36783 var c = this.el.createTextRange();
36784 c.collapse(!0), c.moveEnd("character", o.length), c.moveStart("character", o.length), c.select()
36787 getTextFromHeadToCaret: function() {
36789 var e = document.selection.createRange();
36790 e.moveStart("character", -this.el.value.length);
36791 var t = e.text.split(n);
36792 return 1 === t.length ? t[0] : t[1]
36794 }), e.fn.textcomplete.IETextarea = t
36799 function t(e, t, n) {
36800 this.initialize(e, t, n)
36802 e.extend(t.prototype, e.fn.textcomplete.Adapter.prototype, {
36803 select: function(t, n, r) {
36804 var i = this.getTextFromHeadToCaret(),
36805 o = this.el.ownerDocument.getSelection(),
36806 a = o.getRangeAt(0),
36807 s = a.cloneRange();
36808 s.selectNodeContents(a.startContainer);
36809 var c, l = s.toString().substring(a.startOffset),
36810 u = n.replace(t, r);
36811 if (void 0 !== u) {
36812 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();
36813 var d = this.el.ownerDocument.createElement("div");
36815 var f = this.el.ownerDocument.createElement("div");
36817 for (var h, p, m = this.el.ownerDocument.createDocumentFragment(); h = d.firstChild;) p = m.appendChild(h);
36818 for (; h = f.firstChild;) m.appendChild(h);
36819 a.insertNode(m), a.setStartAfter(p), a.collapse(!0), o.removeAllRanges(), o.addRange(a)
36822 _getCaretRelativePosition: function() {
36823 var t = this.el.ownerDocument.getSelection().getRangeAt(0).cloneRange(),
36824 n = t.endContainer.parentNode,
36825 r = this.el.ownerDocument.createElement("span");
36826 t.insertNode(r), t.selectNodeContents(r), t.deleteContents(), setTimeout(function() {
36831 if (o.left -= this.$el.offset().left, o.top += i.height() - this.$el.offset().top, o.lineHeight = i.height(), this.completer.$iframe) {
36832 var a = this.completer.$iframe.offset();
36833 o.top += a.top, o.left += a.left, o.top -= e(this.completer.$iframe[0].contentWindow.document).scrollTop()
36835 return i.remove(), o
36837 getTextFromHeadToCaret: function() {
36838 var e = this.el.ownerDocument.getSelection().getRangeAt(0),
36839 t = e.cloneRange();
36840 return t.selectNodeContents(e.startContainer), t.toString().substring(0, e.startOffset)
36842 }), e.fn.textcomplete.ContentEditable = t
36847 function t(e, t, n) {
36848 this.initialize(e, t, n)
36850 e.extend(t.prototype, e.fn.textcomplete.ContentEditable.prototype, {
36851 _bindEvents: function() {
36853 this.option.ckeditor_instance.on("key", function(e) {
36855 if (t._onKeyup(n), t.completer.dropdown.shown && t._skipSearch(n)) return !1
36856 }, null, null, 1), this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36858 }), e.fn.textcomplete.CKEditor = t
36861 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"],
36862 n = "undefined" != typeof window,
36863 r = n && null != window.mozInnerScreenX;
36864 e.fn.textcomplete.getCaretCoordinates = function(e, i, o) {
36865 if (!n) throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");
36866 var a = o && o.debug || !1;
36868 var s = document.querySelector("#input-textarea-caret-position-mirror-div");
36869 s && s.parentNode.removeChild(s)
36871 var c = document.createElement("div");
36872 c.id = "input-textarea-caret-position-mirror-div", document.body.appendChild(c);
36874 u = window.getComputedStyle ? getComputedStyle(e) : e.currentStyle;
36875 l.whiteSpace = "pre-wrap", "INPUT" !== e.nodeName && (l.wordWrap = "break-word"), l.position = "absolute", a || (l.visibility = "hidden"), t.forEach(function(e) {
36877 }), 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, " "));
36878 var d = document.createElement("span");
36879 d.textContent = e.value.substring(i) || ".", c.appendChild(d);
36881 top: d.offsetTop + parseInt(u.borderTopWidth),
36882 left: d.offsetLeft + parseInt(u.borderLeftWidth)
36884 return a ? d.style.backgroundColor = "#aaa" : document.body.removeChild(c), f
36887 }), window = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, document = window.document || {},
36889 "function" == typeof require && "object" == typeof exports && "object" == typeof module ? e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(t.jQuery)
36894 S ? e() : O.push(e)
36897 function n(t, n, r) {
36901 n = n.toLowerCase();
36903 var a = 1 == o ? "@" + n : n;
36904 M[t.id][a] && M[t.id][a].length && e.each(M[t.id][a], function(e, n) {
36905 return i = !1 !== n.apply(t, r || [])
36912 function r(t, n, r, i) {
36913 i = i || function(t, n) {
36914 return e(n.currentTarget)
36915 }, e.each(r, function(o, a) {
36916 o = e.isArray(r) ? a : o, (A[t.id][a] || (A[t.id][a] = [])).push([n, o, i])
36920 function i(e, t, n) {
36921 var r, i = S.imageType;
36922 r = "svg" == i ? S.imagePathSVG : S.imagePathPNG;
36924 n && (o = n.substr(1, n.length - 2).replace(/_/g, " ").replace(/\w\S*/g, function(e) {
36925 return e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()
36928 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))
36931 function o(e, t, n) {
36932 return e.replace(/:?\+?[\w_\-]+:?/g, function(e) {
36933 e = ":" + e.replace(/:$/, "").replace(/^:/, "") + ":";
36934 var r = S.emojioneList[e];
36935 return r ? R > 4 ? i(t, r, e) : (R > 3 && (r = r.unicode), i(t, r[r.length - 1], e)) : n ? "" : e
36941 if (window.getSelection) {
36942 if ((t = window.getSelection()).getRangeAt && t.rangeCount) {
36943 (n = t.getRangeAt(0)).deleteContents();
36944 var r = document.createElement("div");
36946 for (var i, o, a = document.createDocumentFragment(); i = r.firstChild;) o = a.appendChild(i);
36947 n.insertNode(a), o && ((n = n.cloneRange()).setStartAfter(o), n.collapse(!0), t.removeAllRanges(), t.addRange(n))
36949 } else document.selection && "Control" != document.selection.type && document.selection.createRange().pasteHTML(e)
36953 return "object" == typeof e
36958 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
36992 if (t && t.filters) {
36994 e.each(t.filters, function(t, n) {
36995 return !s(n) || e.isEmptyObject(n) ? void delete r[t] : void e.each(n, function(e, n) {
37000 return e.extend({}, n, t)
37004 return e.replace(L, function(e) {
37005 var n = S[0 === R ? "jsecapeMap" : "jsEscapeMap"];
37006 return void 0 !== e && e in n ? i(t, n[e]) : e
37011 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, " ")
37015 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) {
37017 e = d(e, t.emojiTemplate);
37027 t = e.editor[0].offsetWidth - e.editor[0].clientWidth,
37028 n = parseInt(e.button.css("marginRight"));
37029 n !== t && (e.button.css({
37031 }), e.floatingPicker && e.picker.css({
37032 right: parseInt(e.picker.css("right")) - n + t
37038 if (!t.sprite && t.lasyEmoji[0]) {
37039 var n = t.picker.offset().top,
37040 r = n + t.picker.height() + 20;
37041 t.lasyEmoji.each(function() {
37043 i = t.offset().top;
37044 i > n && r > i && t.attr("src", t.data("src")).removeClass("lazy-emoji")
37045 }), t.lasyEmoji = t.lasyEmoji.filter(".lazy-emoji")
37050 return (t ? "" : ".") + I + (e ? "-" + e : "")
37054 var n = e("<div/>", s(t) ? t : {
37057 return e.each(N.call(arguments).slice(1), function(t, r) {
37058 e.isFunction(r) && (r = r.call(n)), r && e(r).appendTo(n)
37063 return localStorage.getItem("recent_emojis") || ""
37068 if (!t.recent || t.recent !== r || n) {
37070 var i, a, s = t.scrollArea.is(".skinnable");
37071 s || (i = t.scrollArea.scrollTop(), n && t.recentCategory.show(), a = t.recentCategory.is(":visible") ? t.recentCategory.height() : 0);
37072 var c = o(r, t.emojiBtnTemplate, !0).split("|").join("");
37073 if (t.recentCategory.children(".emojibtn").remove(), e(c).insertAfter(t.recentCategory.children(".emojionearea-category-title")), t.recentCategory.children(".emojibtn").on("click", function() {
37074 t.trigger("emojibtn.click", e(this))
37075 }), t.recentFilter.show(), !s) {
37076 t.recentCategory.show();
37077 var l = t.recentCategory.height();
37078 a !== l && t.scrollArea.scrollTop(i + l - a)
37080 } else t.recentFilter.hasClass("active") && t.recentFilter.removeClass("active").next().addClass("active"), t.recentCategory.hide(), t.recentFilter.hide();
37086 var n = b().split("|"),
37087 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)
37093 return localStorage.setItem(e, e), localStorage.removeItem(e), !0
37099 function w(t, i, c) {
37100 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 && $();
37101 var l = c.pickerPosition;
37102 t.floatingPicker = "top" === l || "bottom" === l, t.source = i, (i.is(":disabled") || i.is(".disabled")) && t.disable();
37103 var d, w, E, k, T, M, A, O, N, j, H = i.is("TEXTAREA") || i.is("INPUT") ? "val" : "text",
37105 class: I + (t.standalone ? " " + I + "-standalone " : " ") + (i.attr("class") || ""),
37106 role: "application"
37107 }, d = t.editor = v("editor").attr({
37108 contenteditable: !t.standalone,
37109 placeholder: c.placeholder || i.data("placeholder") || i.attr("placeholder") || "",
37111 }), 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() {
37112 t.search = e("<input/>", {
37113 placeholder: "SEARCH",
37116 }), this.append(t.search)
37117 } : null), k = v("tones", function() {
37119 this.addClass(g("tones-" + c.tonesStyle, !0));
37120 for (var t = 0; 5 >= t; t++) this.append(e("<i/>", {
37121 class: "btn-tone btn-tone-" + t + (t ? "" : " active"),
37126 }), j = v("scroll-area", O = v("emojis-list")))).addClass(g("picker-position-" + c.pickerPosition, !0)).addClass(g("filters-position-" + c.filtersPosition, !0)).addClass("hidden"));
37127 if (t.searchSel = null, d.data(i.data()), e.each(c.attributes, function(e, t) {
37129 }), v("category").attr({
37131 }).appendTo(O), e.each(c.filters, function(n, r) {
37133 if ("recent" !== n || t.recentEmojis) {
37134 if ("tones" !== n) e("<i/>", {
37135 class: g("filter", !0) + " " + g("filter-" + n, !0),
37138 }).wrapInner(o(r.icon, t.emojiTemplateAlt)).appendTo(T);
37140 if (!c.tones) return;
37148 0 === i ? (a = O.children('[data-tone="0"]'), s["data-sub-category"] = !0) : a = O;
37149 var l = v("category").attr(s).appendTo(a),
37150 u = r.emoji.replace(/[\s,;]+/g, "|");
37151 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)
37154 }), 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) {
37155 var F = e(i).data("emoji-placeholder") || c.emojiPlaceholder;
37156 t.setText(F), d.addClass("has-placeholder")
37158 r(t, O.find(".emojibtn"), {
37159 click: "emojibtn.click"
37162 }), r(t, k.children(), {
37163 click: "tone.click"
37165 mousedown: "!mousedown"
37167 click: "button.click"
37170 }, d), r(t, d, ["focus", "blur"], function() {
37171 return !t.stayFocused && d
37173 mousedown: "picker.mousedown",
37174 mouseup: "picker.mouseup",
37175 click: "picker.click",
37176 keyup: "picker.keyup",
37177 keydown: "picker.keydown",
37178 keypress: "picker.keypress"
37179 }), r(t, d, ["mousedown", "mouseup", "click", "keyup", "keydown", "keypress"]), r(t, E.find(".emojionearea-filter"), {
37180 click: "filter.click"
37181 }), c.search && r(t, t.search, {
37182 keyup: "search.keypress",
37183 focus: "search.focus",
37184 blur: "search.blur"
37187 if (j.on("scroll", function() {
37188 if (!q && (m.call(t), j.is(":not(.skinnable)"))) {
37190 r = j.offset().top;
37191 N.each(function(t, i) {
37192 return !(e(i).offset().top - r >= 10) && void(n = e(i))
37194 var i = M.filter('[data-filter="' + n.attr("name") + '"]');
37195 i[0] && !i.is(".active") && (M.removeClass("active"), i.addClass("active"))
37197 }), t.on("@filter.click", function(e) {
37198 var n = e.is(".active");
37199 if (j.is(".skinnable")) {
37201 k.children().eq(0).click()
37203 q = !0, n || (M.filter(".active").removeClass("active"), e.addClass("active"));
37204 var r = N.filter('[name="' + e.data("filter") + '"]').offset().top,
37206 o = j.offset().top;
37208 scrollTop: r + i - o - 2
37209 }, 200, "swing", function() {
37212 }).on("@picker.show", function() {
37213 t.recentEmojis && y(t), m.call(t)
37214 }).on("@tone.click", function(e) {
37215 k.children().removeClass("active");
37216 var n = e.addClass("active").data("skin");
37217 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")
37218 }).on("@button.click", function(e) {
37219 e.is(".active") ? t.hidePicker() : (t.showPicker(), t.searchSel = null)
37220 }).on("@!paste", function(r, i) {
37221 var o = function(i) {
37222 var o = "caret-" + (new Date).getTime(),
37224 a(s), a('<i id="' + o + '"></i>'), r.scrollTop(l);
37225 var c = e("#" + o),
37226 u = c.offset().top - r.offset().top,
37228 (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])
37230 if (i.originalEvent.clipboardData) {
37231 var s = i.originalEvent.clipboardData.getData("text/plain");
37232 return o(s), i.preventDefault ? i.preventDefault() : i.stop(), i.returnValue = !1, i.stopPropagation(), !1
37234 t.stayFocused = !0, a("<span>" + P + "</span>");
37238 contenteditable: !0
37246 }).appendTo(e("BODY")).focus();
37247 window.setTimeout(function() {
37248 r.focus(), x(r[0], c);
37249 var e = h(u.html().replace(/\r\n|\n|\r/g, "<br>"), t);
37252 }).on("@emojibtn.click", function(e) {
37253 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")
37254 }).on("@!resize @keyup @emojibtn.click", p).on("@!mousedown", function(n, r) {
37255 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
37256 }).on("@change", function() {
37257 var e = t.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi, "");
37258 e.length && !/^<br[^>]*>$/i.test(e) || t.editor.html(t.content = ""), i[H](t.getText())
37259 }).on("@focus", function() {
37260 L.addClass("focused")
37261 }).on("@blur", function() {
37262 L.removeClass("focused"), c.hidePickerOnBlur && t.hidePicker();
37263 var e = t.editor.html();
37264 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"))
37265 }), c.search && t.on("@search.focus", function() {
37266 t.stayFocused = !0, t.search.addClass("focused")
37267 }).on("@search.keypress", function() {
37268 var n = E.find(".emojionearea-filter"),
37269 r = c.tones ? k.find("i.active").data("skin") : 0,
37270 i = t.search.val().replace(/ /g, "_").replace(/"/g, '\\"');
37271 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() {
37272 var t = function(e, t) {
37273 var r = e.find('.emojibtn[data-name*="' + i + '"]');
37274 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())
37277 t(o, r), 0 === o.data("tone") && o.children(g("category") + ':not([name="recent"])').each(function() {
37280 }), 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))
37281 }).on("@search.blur", function() {
37282 t.stayFocused = !1, t.search.removeClass("focused"), t.trigger("blur")
37283 }), c.shortcuts && t.on("@keydown", function(e, n) {
37284 n.ctrlKey || (9 == n.which ? (n.preventDefault(), w.click()) : 27 == n.which && (n.preventDefault(), w.is(".active") && t.hidePicker()))
37285 }), s(c.events) && !e.isEmptyObject(c.events) && e.each(c.events, function(e, n) {
37286 t.on(e.replace(/_/g, "."), n)
37287 }), c.autocomplete) {
37288 var U = function() {
37290 maxCount: c.textcomplete.maxCount,
37291 placement: c.textcomplete.placement
37293 c.shortcuts && (n.onKeydown = function(e, t) {
37294 return e.ctrlKey || 13 != e.which ? void 0 : t.KEY_ENTER
37296 var r = e.map(S.emojioneList, function(e, t) {
37297 return c.autocompleteTones ? t : /_tone[12345]/.test(t) ? null : t
37299 r.sort(), d.textcomplete([{
37301 match: /\B(:[\-+\w]*)$/,
37302 search: function(t, n) {
37303 n(e.map(r, function(e) {
37304 return 0 === e.indexOf(t) ? e : null
37307 template: function(e) {
37308 return o(e, t.emojiTemplate) + " " + e.replace(/:/g, "")
37310 replace: function(e) {
37311 return o(e, t.emojiTemplate)
37315 }], n), c.textcomplete.placement && "static" == e(d.data("textComplete").option.appendTo).css("position") && e(d.data("textComplete").option.appendTo).css("position", "relative")
37319 var e = function() {
37320 t.off("enabled", e), U()
37325 e.fn.textcomplete ? V() : e.ajax({
37326 url: "https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",
37327 dataType: "script",
37332 t.inline && (L.addClass(g("inline", !0)), t.on("@keydown", function(e, t) {
37333 13 == t.which && t.preventDefault()
37334 })), /firefox/i.test(navigator.userAgent) && document.execCommand("enableObjectResizing", !1, !1), t.isReady = !0, t.trigger("onLoad", d), t.trigger("ready", d)
37338 if (n = u(n), !F.isLoading)
37339 if (!S || l(c(S)) < 2) {
37342 r = l(j) > 5 ? F.defaultBase3 + "npm/emojione@" + j : l(j) > 4 ? F.defaultBase3 + "emojione/" + j : F.defaultBase + "/" + j, e.ajax({
37343 url: r + "/lib/js/emojione.min.js",
37344 dataType: "script",
37346 success: function() {
37347 S = window.emojione, j = c(S);
37349 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/>", {
37352 }).appendTo("head")); O.length;) O.shift().call();
37356 } else j = c(S), R = l(j), F.base = R > 4 ? F.defaultBase3 + "emojione/assets/" + j : F.defaultBase + j + "/assets";
37359 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")
37364 r = r.replace(/^@/, "");
37366 A[i][r] && (e.each(A[i][r], function(i, o) {
37367 e.each(e.isArray(o[0]) ? o[0] : [o[0]], function(i, a) {
37368 e(a).on(o[1], function() {
37369 var i = N.call(arguments),
37370 a = e.isFunction(o[2]) ? o[2].apply(t, [r].concat(i)) : o[2];
37371 a && n(t, r, [a].concat(i))
37374 }), A[i][r] = null)
37379 S = window.emojione,
37381 D = "data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",
37383 I = "emojionearea",
37386 j = window.emojioneVersion || "2.2.7",
37388 if (e.fn.emojioneArea && e.fn.emojioneArea.defaults) return e.fn.emojioneArea.defaults;
37393 autocomplete: "off",
37394 autocorrect: "off",
37395 autocapitalize: "off"
37399 emojiPlaceholder: ":smiley:",
37400 searchPlaceholder: "SEARCH",
37405 pickerPosition: "top",
37406 filtersPosition: "top",
37407 hidePickerOnBlur: !0,
37408 buttonTitle: "Use the TAB key to insert emoji faster",
37410 tonesStyle: "bullet",
37412 saveEmojisAs: "unicode",
37415 autocompleteTones: !1,
37417 useInternalCDN: !0,
37425 n = l(S ? c(S) : j);
37426 return t.filters = n > 4 ? {
37428 title: "Diversity",
37429 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"
37438 title: "Smileys & People",
37439 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"
37443 title: "Animals & Nature",
37444 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"
37448 title: "Food & Drink",
37449 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"
37452 icon: "basketball",
37454 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"
37458 title: "Travel & Places",
37459 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"
37464 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"
37467 icon: "heartpulse",
37469 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"
37474 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"
37478 title: "Diversity",
37479 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"
37488 title: "Smileys & People",
37489 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"
37493 title: "Animals & Nature",
37494 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"
37498 title: "Food & Drink",
37499 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"
37502 icon: "basketball",
37504 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"
37508 title: "Travel & Places",
37509 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"
37514 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"
37517 icon: "heartpulse",
37519 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"
37524 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 "
37528 window.getSelection && document.createRange ? (C = function(e) {
37529 var t = window.getSelection && window.getSelection();
37530 return t && t.rangeCount > 0 ? t.getRangeAt(0) : void 0
37531 }, x = function(e, t) {
37532 var n = document.createRange();
37533 n.setStart(t.startContainer, t.startOffset), n.setEnd(t.endContainer, t.endOffset), (t = window.getSelection()).removeAllRanges(), t.addRange(n)
37534 }) : document.selection && document.body.createTextRange && (C = function(e) {
37535 return document.selection.createRange()
37536 }, x = function(e, t) {
37537 var n = document.body.createTextRange();
37538 n.moveToElementText(e), n.setStart(t.startContanier, t.startOffset), n.setEnd(t.endContainer, t.endOffset), n.select()
37541 defaultBase: "https://cdnjs.cloudflare.com/ajax/libs/emojione/",
37542 defaultBase3: "https://cdn.jsdelivr.net/",
37546 q = function(e, n) {
37548 E(n), M[r.id = ++T] = {}, A[r.id] = {}, t(function() {
37552 q.prototype.on = function(t, n) {
37553 if (t && e.isFunction(n)) {
37555 e.each(t.toLowerCase().split(" "), function(e, t) {
37556 k(r, t), (M[r.id][t] || (M[r.id][t] = [])).push(n)
37560 }, q.prototype.off = function(t, n) {
37563 e.each(t.toLowerCase().replace(/_/g, ".").split(" "), function(t, i) {
37564 M[r][i] && !/^@/.test(i) && (n ? e.each(M[r][i], function(e, t) {
37565 t === n && (M[r][i] = M[r][i].splice(e, 1))
37570 }, q.prototype.trigger = function() {
37571 var e = N.call(arguments),
37572 t = [this].concat(e.slice(0, 1));
37573 return t.push(e.slice(1)), n.apply(this, t)
37574 }, q.prototype.setFocus = function() {
37576 return t(function() {
37579 }, q.prototype.setText = function(e) {
37581 return t(function() {
37582 r.editor.html(f(e, r)), r.content = r.editor.html(), n(r, "change", [r.editor]), p.apply(r)
37584 }, q.prototype.getText = function() {
37585 return h(this.editor.html(), this)
37586 }, q.prototype.showPicker = function() {
37588 return e._sh_timer && window.clearTimeout(e._sh_timer), e.picker.removeClass("hidden"), e._sh_timer = window.setTimeout(function() {
37589 e.button.addClass("active")
37590 }, 50), n(e, "picker.show", [e.picker]), e
37591 }, q.prototype.hidePicker = function() {
37593 return e._sh_timer && window.clearTimeout(e._sh_timer), e.button.removeClass("active"), e._sh_timer = window.setTimeout(function() {
37594 e.picker.addClass("hidden")
37595 }, 500), n(e, "picker.hide", [e.picker]), e
37596 }, q.prototype.enable = function() {
37599 e.disabled = !1, e.editor.prop("contenteditable", !0), e.button.show();
37600 var t = e[e.standalone ? "button" : "editor"];
37601 t.parent().removeClass("emojionearea-disable"), n(e, "enabled", [t])
37603 return e.isReady ? t() : e.on("ready", t), e
37604 }, q.prototype.disable = function() {
37607 var t = function() {
37608 e.editor.prop("contenteditable", !1), e.hidePicker(), e.button.hide();
37609 var t = e[e.standalone ? "button" : "editor"];
37610 t.parent().addClass("emojionearea-disable"), n(e, "disabled", [t])
37612 return e.isReady ? t() : e.on("ready", t), e
37613 }, e.fn.emojioneArea = function(t) {
37614 return this.each(function() {
37615 return this.emojioneArea ? this.emojioneArea : (e.data(this, "emojioneArea", this.emojioneArea = new q(e(this), t)), this.emojioneArea)
37617 }, e.fn.emojioneArea.defaults = H(), e.fn.emojioneAreaText = function(n) {
37620 shortnames: !n || void 0 === n.shortnames || n.shortnames,
37621 emojiTemplate: '<img alt="{alt}" class="emojione' + (n && n.sprite && 3 > R ? '-{uni}" src="' + D : 'emoji" src="{img}') + '"/>'
37623 return E(n), t(function() {
37624 r.each(function() {
37626 return t.hasClass("emojionearea-text") || t.addClass("emojionearea-text").html(f(t.is("TEXTAREA") || t.is("INPUT") ? t.val() : t.text(), i)), t