5 urlErrorParamsEnabled: !0
10 O(e.objectMaxDepth) && (u.objectMaxDepth = c(e.objectMaxDepth) ? e.objectMaxDepth : NaN), O(e.urlErrorParamsEnabled) && Ae(e.urlErrorParamsEnabled) && (u.urlErrorParamsEnabled = e.urlErrorParamsEnabled)
19 var l = "https://errors.angularjs.org/1.7.8/",
20 e = l.replace(".", "\\.") + "[\\s\\S]*",
21 c = new RegExp(e, "g");
23 var e, t, n = arguments[0],
25 i = "[" + (a ? a + ":" : "") + n + "] ",
26 o = Re(arguments, 2).map(function(e) {
27 return Ye(e, u.objectMaxDepth)
29 if (i += r.replace(/\{\d+\}/g, function(e) {
30 var t = +e.slice(1, -1);
31 return t < o.length ? o[t].replace(c, "") : e
32 }), i += "\n" + l + (a ? a + "/" : "") + n, u.urlErrorParamsEnabled)
33 for (t = 0, e = "?"; t < o.length; t++, e = "&") i += e + "p" + t + "=" + encodeURIComponent(o[t]);
37 var fe, he, t, v, o = /^\/(.+)\/([a-z]*)$/,
39 pe = Object.prototype.hasOwnProperty,
41 return Ce(e) ? e.toLowerCase() : e
44 return Ce(e) ? e.toUpperCase() : e
49 ge = Object.prototype.toString,
50 h = Object.getPrototypeOf,
52 y = de.angular || (de.angular = {}),
56 if (null == e || x(e)) return !1;
57 if (ke(e) || Ce(e) || he && e instanceof he) return !0;
58 var t = "length" in Object(e) && e.length;
59 return E(t) && (0 <= t && t - 1 in e || "function" == typeof e.item)
62 function ve(e, t, n) {
66 for (r in e) "prototype" !== r && "length" !== r && "name" !== r && e.hasOwnProperty(r) && t.call(n, e[r], r, e);
67 else if (ke(e) || R(e)) {
68 var o = "object" != typeof e;
69 for (r = 0, i = e.length; r < i; r++)(o || r in e) && t.call(n, e[r], r, e)
70 } else if (e.forEach && e.forEach !== ve) e.forEach(t, n, e);
72 for (r in e) t.call(n, e[r], r, e);
73 else if ("function" == typeof e.hasOwnProperty)
74 for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r, e);
76 for (r in e) pe.call(e, r) && t.call(n, e[r], r, e);
81 for (var r = Object.keys(e).sort(), i = 0; i < r.length; i++) t.call(n, e[r[i]], r[i]);
86 return function(e, t) {
96 t ? e.$$hashKey = t : delete e.$$hashKey
100 for (var r = e.$$hashKey, i = 0, o = t.length; i < o; ++i) {
103 for (var s = Object.keys(a), l = 0, c = s.length; l < c; l++) {
106 n && Ee(d) ? C(d) ? e[u] = new Date(d.valueOf()) : k(d) ? e[u] = new RegExp(d) : d.nodeName ? e[u] = d.cloneNode(!0) : P(d) ? e[u] = d.clone() : (Ee(e[u]) || (e[u] = ke(d) ? [] : {}), g(e[u], [d], !0)) : e[u] = d
113 return g(e, a.call(arguments, 1), !1)
117 return g(e, a.call(arguments, 1), !0)
121 return parseInt(e, 10)
123 fe = de.document.documentMode;
124 var S = Number.isNaN || function(e) {
129 return be(Object.create(e), t)
145 return Te(e.toString) && e.toString !== ge
157 return null !== e && "object" == typeof e
161 return null !== e && "object" == typeof e && !h(e)
165 return "string" == typeof e
169 return "number" == typeof e
173 return "[object Date]" === ge.call(e)
177 return Array.isArray(e) || e instanceof Array
181 switch (ge.call(e)) {
182 case "[object Error]":
183 case "[object Exception]":
184 case "[object DOMException]":
187 return e instanceof Error
192 return "function" == typeof e
196 return "[object RegExp]" === ge.call(e)
200 return e && e.window === e
204 return e && e.$evalAsync && e.$watch
208 return "boolean" == typeof e
212 return e && Te(e.then)
214 _e.$inject = [], $e.$inject = [];
215 var N = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;
216 var Se = function(e) {
217 return Ce(e) ? e.trim() : e
220 return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
224 return !(!e || !(e.nodeName || e.prop && e.attr && e.find))
228 return me(e.nodeName || e[0] && e[0].nodeName)
232 return -1 !== Array.prototype.indexOf.call(e, t)
236 var n = e.indexOf(t);
237 return 0 <= n && e.splice(n, 1), n
240 function j(e, n, t) {
243 if (t = c(t) ? t : NaN, n) {
244 if ((i = n) && E(i.length) && N.test(ge.call(i)) || (r = n, "[object ArrayBuffer]" === ge.call(r))) throw p("cpta", "Can't copy! TypedArray destination cannot be mutated.");
245 if (e === n) throw p("cpi", "Can't copy! Source and destination are identical.");
246 return ke(n) ? n.length = 0 : ve(n, function(e, t) {
247 "$$hashKey" !== t && delete n[t]
248 }), o.push(e), a.push(n), s(e, n, t)
252 function s(e, t, n) {
253 if (--n < 0) return "...";
254 var r, i = t.$$hashKey;
256 for (var o = 0, a = e.length; o < a; o++) t.push(l(e[o], n));
258 for (r in e) t[r] = l(e[r], n);
259 else if (e && "function" == typeof e.hasOwnProperty)
260 for (r in e) e.hasOwnProperty(r) && (t[r] = l(e[r], n));
262 for (r in e) pe.call(e, r) && (t[r] = l(e[r], n));
267 if (!Ee(e)) return e;
268 var n = o.indexOf(e);
269 if (-1 !== n) return a[n];
270 if (x(e) || Me(e)) throw p("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
273 switch (ge.call(e)) {
274 case "[object Int8Array]":
275 case "[object Int16Array]":
276 case "[object Int32Array]":
277 case "[object Float32Array]":
278 case "[object Float64Array]":
279 case "[object Uint8Array]":
280 case "[object Uint8ClampedArray]":
281 case "[object Uint16Array]":
282 case "[object Uint32Array]":
283 return new e.constructor(l(e.buffer), e.byteOffset, e.length);
284 case "[object ArrayBuffer]":
285 if (e.slice) return e.slice(0);
286 var t = new ArrayBuffer(e.byteLength);
287 return new Uint8Array(t).set(new Uint8Array(e)), t;
288 case "[object Boolean]":
289 case "[object Number]":
290 case "[object String]":
291 case "[object Date]":
292 return new e.constructor(e.valueOf());
293 case "[object RegExp]":
294 var n = new RegExp(e.source, e.toString().match(/[^/]*$/)[0]);
295 return n.lastIndex = e.lastIndex, n;
296 case "[object Blob]":
297 return new e.constructor([e], {
301 if (Te(e.cloneNode)) return e.cloneNode(!0)
303 return void 0 === i && (i = ke(e) ? [] : Object.create(h(e)), r = !0), o.push(e), a.push(i), r ? s(e, i, t) : i
308 return e === t || e != e && t != t
312 if (e === t) return !0;
313 if (null === e || null === t) return !1;
314 if (e != e && t != t) return !0;
315 var n, r, i, o = typeof e;
316 if (o === typeof t && "object" === o) {
318 if (C(e)) return !!C(t) && Ne(e.getTime(), t.getTime());
319 if (k(e)) return !!k(t) && e.toString() === t.toString();
320 if (Me(e) || Me(t) || x(e) || x(t) || ke(t) || C(t) || k(t)) return !1;
321 for (r in i = Fe(), e)
322 if ("$" !== r.charAt(0) && !Te(e[r])) {
323 if (!Ie(e[r], t[r])) return !1;
326 if (!(r in i) && "$" !== r.charAt(0) && O(t[r]) && !Te(t[r])) return !1;
329 if (!ke(t)) return !1;
330 if ((n = e.length) === t.length) {
331 for (r = 0; r < n; r++)
332 if (!Ie(e[r], t[r])) return !1;
340 var e = de.document.querySelector("[ng-csp]") || de.document.querySelector("[data-ng-csp]");
342 var t = e.getAttribute("ng-csp") || e.getAttribute("data-ng-csp");
344 noUnsafeEval: !t || -1 !== t.indexOf("no-unsafe-eval"),
345 noInlineStyle: !t || -1 !== t.indexOf("no-inline-style")
348 noUnsafeEval: function() {
350 return new Function(""), !1
361 if (O(F.name_)) return F.name_;
362 var e, t, n, r, i = J.length;
363 for (t = 0; t < i; ++t)
364 if (n = J[t], e = de.document.querySelector("[" + n.replace(":", "\\:") + "jq]")) {
365 r = e.getAttribute(n + "jq");
370 function q(e, t, n) {
371 return e.concat(a.call(t, n))
375 return a.call(e, t || 0)
379 var n = 2 < arguments.length ? Re(arguments, 2) : [];
380 return !Te(t) || t instanceof RegExp ? t : n.length ? function() {
381 return arguments.length ? t.apply(e, q(n, arguments, 0)) : t.apply(e, n)
383 return arguments.length ? t.apply(e, arguments) : t.call(e)
389 return "string" == typeof e && "$" === e.charAt(0) && "$" === e.charAt(1) ? n = void 0 : x(t) ? n = "$WINDOW" : t && de.document === t ? n = "$DOCUMENT" : Me(t) && (n = "$SCOPE"), n
393 if (!we(e)) return E(t) || (t = t ? 2 : null), JSON.stringify(e, U, t)
397 return Ce(e) ? JSON.parse(e) : e
402 e = e.replace(z, "");
403 var n = Date.parse("Jan 01, 1970 00:00:00 " + e) / 6e4;
408 return (e = new Date(e.getTime())).setMinutes(e.getMinutes() + t), e
411 function G(e, t, n) {
413 var r = e.getTimezoneOffset();
414 return Y(e, n * (W(t, r) - r))
418 e = he(e).clone().empty();
419 var t = he("<div></div>").append(e).html();
421 return e[0].nodeType === Ue ? me(t) : t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(e, t) {
431 return decodeURIComponent(e)
437 return ve((e || "").split("&"), function(e) {
439 e && (n = e = e.replace(/\+/g, "%20"), -1 !== (t = e.indexOf("=")) && (n = e.substring(0, t), r = e.substring(t + 1)), O(n = K(n)) && (r = !O(r) || K(r), pe.call(i, n) ? ke(i[n]) ? i[n].push(r) : i[n] = [i[n], r] : i[n] = r))
444 return Q(e, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
448 return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, t ? "%20" : "+")
450 var J = ["ng-", "data-ng-", "ng:", "x-ng-"];
451 var ee = function(n) {
452 var e = n.currentScript;
454 if (!(e instanceof de.HTMLScriptElement || e instanceof de.SVGScriptElement)) return !1;
455 var t = e.attributes;
456 return [t.getNamedItem("src"), t.getNamedItem("href"), t.getNamedItem("xlink:href")].every(function(e) {
458 if (!e.value) return !1;
459 var t = n.createElement("a");
460 if (t.href = e.value, n.location.origin === t.origin) return !0;
461 switch (t.protocol) {
477 if (ve(J, function(e) {
479 !i && r.hasAttribute && r.hasAttribute(t) && (o = (i = r).getAttribute(t))
480 }), ve(J, function(e) {
481 var t, n = e + "app";
482 !i && (t = r.querySelector("[" + n.replace(":", "\\:") + "]")) && (o = (i = t).getAttribute(n))
484 if (!ee) return void de.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
485 t.strictDi = null !== function(e, t) {
486 var n, r, i = J.length;
487 for (r = 0; r < i; ++r)
488 if (n = J[r] + t, Ce(n = e.getAttribute(n))) return n;
490 }(i, "strict-di"), e(i, o ? [o] : [], t)
494 function ne(n, r, i) {
500 if ((n = he(n)).injector()) {
501 var e = n[0] === de.document ? "document" : He(n);
502 throw p("btstrpd", "App already bootstrapped with this element '{0}'", e.replace(/</, "<").replace(/>/, ">"))
503 }(r = r || []).unshift(["$provide", function(e) {
504 e.value("$rootElement", n)
505 }]), i.debugInfoEnabled && r.push(["$compileProvider", function(e) {
506 e.debugInfoEnabled(!0)
507 }]), r.unshift("ng");
508 var t = Xt(r, i.strictDi);
509 return t.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(e, t, n, r) {
510 e.$apply(function() {
511 t.data("$injector", r), n(t)(e)
515 e = /^NG_ENABLE_DEBUG_INFO!/,
516 o = /^NG_DEFER_BOOTSTRAP!/;
517 if (de && e.test(de.name) && (i.debugInfoEnabled = !0, de.name = de.name.replace(e, "")), de && !o.test(de.name)) return t();
518 de.name = de.name.replace(o, ""), y.resumeBootstrap = function(e) {
519 return ve(e, function(e) {
522 }, Te(y.resumeDeferredBootstrap) && y.resumeDeferredBootstrap()
526 de.name = "NG_ENABLE_DEBUG_INFO!" + de.name, de.location.reload()
530 var t = y.element(e).injector();
531 if (!t) throw p("test", "no injector found for element argument to getTestability");
532 return t.get("$$testability")
537 return n = n || "_", e.replace(oe, function(e, t) {
538 return (t ? n : "") + e.toLowerCase()
543 function Le(e, t, n) {
544 if (!e) throw p("areq", "Argument '{0}' is {1}", t || "?", n || "required");
548 function se(e, t, n) {
549 return n && ke(e) && (e = e[e.length - 1]), Le(Te(e), t, "not a function, got " + (e && "object" == typeof e ? e.constructor.name || "Object" : typeof e)), e
553 if ("hasOwnProperty" === e) throw p("badname", "hasOwnProperty is not a valid {0} name", t)
557 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 = he(a.call(e, 0, i))), t.push(n));
562 return Object.create(null)
566 if (null == e) return "";
574 e = !$(e) || ke(e) || C(e) ? V(e) : e.toString()
587 for (var n = 0, r = e.length; n < r; n++) t[n] = e[n]
589 for (var i in t = t || {}, e) "$" === i.charAt(0) && "$" === i.charAt(1) || (t[i] = e[i]);
594 return "function" == typeof e ? e.toString().replace(/ \{[\s\S]*$/, "") : we(e) ? "undefined" : "string" != typeof e ? (n = e, i = [], c(r = t) && (n = y.copy(n, null, r)), JSON.stringify(n, function(e, t) {
595 if (Ee(t = U(e, t))) {
596 if (0 <= i.indexOf(t)) return "...";
608 codeName: "enthusiastic-oblation"
610 ft.expando = "ng339";
611 var Ke = ft.cache = {},
613 ft._data = function(e) {
614 return this.cache[e[this.expando]] || {}
616 var Xe = /-([a-z])/g,
619 mouseleave: "mouseout",
620 mouseenter: "mouseover"
625 return t.toUpperCase()
629 return e.replace(Xe, tt)
631 var rt = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
634 at = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
636 option: [1, '<select multiple="multiple">', "</select>"],
637 thead: [1, "<table>", "</table>"],
638 col: [2, "<table><colgroup>", "</colgroup></table>"],
639 tr: [2, "<table><tbody>", "</tbody></table>"],
640 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
641 _default: [0, "", ""]
650 return t === qe || !t || t === Be
654 var n, r, i, o, a = t.createDocumentFragment(),
656 if (lt(e)) s.push(t.createTextNode(e));
658 for (n = a.appendChild(t.createElement("div")), r = (ot.exec(e) || ["", ""])[1].toLowerCase(), i = st[r] || st._default, n.innerHTML = i[1] + e.replace(at, "<$1></$2>") + i[2], o = i[0]; o--;) n = n.lastChild;
659 s = q(s, n.childNodes), (n = a.firstChild).textContent = ""
661 return a.textContent = "", a.innerHTML = "", ve(s, function(e) {
665 st.optgroup = st.option, st.tbody = st.tfoot = st.colgroup = st.caption = st.thead, st.th = st.td;
666 var dt = de.Node.prototype.contains || function(e) {
667 return !!(16 & this.compareDocumentPosition(e))
671 if (e instanceof ft) return e;
673 if (Ce(e) && (e = Se(e), t = !0), !(this instanceof ft)) {
674 if (t && "<" !== e.charAt(0)) throw et("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
677 t ? Ct(this, (n = e, r = r || de.document, (i = rt.exec(n)) ? [r.createElement(i[1])] : (i = ut(n, r)) ? i.childNodes : [])) : Te(e) ? At(e) : Ct(this, e)
681 return e.cloneNode(!0)
685 !t && ct(e) && he.cleanData([e]), e.querySelectorAll && he.cleanData(e.querySelectorAll("*"))
690 for (t in e) return !1;
699 i && !mt(i) || r && !mt(r) || (delete Ke[t], e.ng339 = void 0)
702 function vt(n, e, r, t) {
703 if (O(t)) throw et("offargs", "jqLite#off() does not support the `selector` argument");
709 var s = function(e) {
711 O(r) && Oe(t || [], r), O(r) && t && 0 < t.length || (n.removeEventListener(e, a), delete o[e])
713 ve(e.split(" "), function(e) {
714 s(e), Je[e] && s(Je[e])
717 for (e in o) "$destroy" !== e && n.removeEventListener(e, a), delete o[e];
725 r && (t ? delete r.data[t] : r.data = {}, gt(e))
731 return t && !r && (e.ng339 = n = ++Ze, r = Ke[n] = {
738 function _t(e, t, n) {
741 o = !i && t && !Ee(t),
748 if (o) return l && l[nt(t)];
749 for (r in t) l[nt(r)] = t[r]
755 return !!e.getAttribute && -1 < (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ")
759 if (t && e.setAttribute) {
760 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "),
762 ve(t.split(" "), function(e) {
763 e = Se(e), r = r.replace(" " + e + " ", " ")
764 }), r !== n && e.setAttribute("class", Se(r))
769 if (t && e.setAttribute) {
770 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "),
772 ve(t.split(" "), function(e) {
773 e = Se(e), -1 === r.indexOf(" " + e + " ") && (r += e + " ")
774 }), r !== n && e.setAttribute("class", Se(r))
780 if (t.nodeType) e[e.length++] = t;
783 if ("number" == typeof n && t.window !== t) {
785 for (var r = 0; r < n; r++) e[e.length++] = t[r]
786 } else e[e.length++] = t
791 return xt(e, "$" + (t || "ngController") + "Controller")
794 function xt(e, t, n) {
795 e.nodeType === Be && (e = e.documentElement);
796 for (var r = ke(t) ? t : [t]; e;) {
797 for (var i = 0, o = r.length; i < o; i++)
798 if (O(n = he.data(e, r[i]))) return n;
799 e = e.parentNode || e.nodeType === ze && e.host
804 for (pt(e, !0); e.firstChild;) e.removeChild(e.firstChild)
809 var n = e.parentNode;
810 n && n.removeChild(e)
815 de.document.removeEventListener("DOMContentLoaded", t), de.removeEventListener("load", t), e()
817 "complete" === de.document.readyState ? de.setTimeout(e) : (de.document.addEventListener("DOMContentLoaded", t), de.addEventListener("load", t))
819 var St = ft.prototype = {
821 toString: function() {
823 return ve(this, function(e) {
825 }), "[" + t.join(", ") + "]"
828 return he(0 <= e ? this[e] : this[this.length + e])
836 ve("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
840 ve("input,select,option,textarea,button,form,details".split(","), function(e) {
844 ngMinlength: "minlength",
845 ngMaxlength: "maxlength",
848 ngPattern: "pattern",
853 var n = Dt[t.toLowerCase()];
854 return n && Ot[De(e)] && n
857 function Rt(e, t, n) {
861 function Pt(e, t, n) {
862 var r = t.relatedTarget;
863 r && (r === e || dt.call(e, r)) || n.call(e, t)
867 this.$get = function() {
869 hasClass: function(e, t) {
870 return e.attr && (e = e[0]), $t(e, t)
872 addClass: function(e, t) {
873 return e.attr && (e = e[0]), Et(e, t)
875 removeClass: function(e, t) {
876 return e.attr && (e = e[0]), wt(e, t)
883 var n = e && e.$$hashKey;
884 if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
886 return n = "function" === r || "object" === r && null !== e ? e.$$hashKey = r + ":" + (t || l)() : r + ":" + e
891 hasData: function(e) {
892 for (var t in Ke[e.ng339]) return !0;
895 cleanData: function(e) {
896 for (var t = 0, n = e.length; t < n; t++) bt(e[t]), vt(e[t])
904 return he.data(e, "$scope") || xt(e.parentNode || e, ["$isolateScope", "$scope"])
906 isolateScope: function(e) {
907 return he.data(e, "$isolateScope") || he.data(e, "$isolateScopeNoTemplate")
910 injector: function(e) {
911 return xt(e, "$injector")
913 removeAttr: function(e, t) {
917 css: function(e, t, n) {
918 if (t = nt(t.replace(Qe, "ms-")), !O(n)) return e.style[t];
921 attr: function(e, t, n) {
922 var r, i = e.nodeType;
923 if (i !== Ue && 2 !== i && i !== Ve && e.getAttribute) {
926 if (!O(n)) return r = e.getAttribute(t), a && null !== r && (r = o), null === r ? void 0 : r;
927 null === n || !1 === n && a ? e.removeAttribute(t) : e.setAttribute(t, a ? o : n)
930 prop: function(e, t, n) {
931 if (!O(n)) return e[t];
935 return e.$dv = "", e;
940 return n === qe || n === Ue ? e.textContent : ""
945 val: function(e, t) {
947 if (e.multiple && "select" === De(e)) {
949 return ve(e.options, function(e) {
950 e.selected && n.push(e.value || e.text)
957 html: function(e, t) {
958 if (we(t)) return e.innerHTML;
959 pt(e, !0), e.innerHTML = t
963 ft.prototype[e] = function(e, t) {
964 var n, r, i = this.length;
965 if (c !== Tt && we(2 === c.length && c !== $t && c !== kt ? e : t)) {
967 for (n = 0; n < i; n++)
968 if (c === _t) c(this[n], e);
970 for (r in e) c(this[n], r, e[r]);
973 for (var o = c.$dv, a = we(o) ? Math.min(i, 1) : i, s = 0; s < a; s++) {
974 var l = c(this[s], e, t);
979 for (n = 0; n < i; n++) c(this[n], e, t);
984 on: function(i, e, o, t) {
985 if (O(t)) throw et("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
987 var s, l, n, r = yt(i, !0),
990 c || (c = r.handle = (l = a, (n = function(e, t) {
991 e.isDefaultPrevented = function() {
992 return e.defaultPrevented
994 var n = l[t || e.type],
995 r = n ? n.length : 0;
997 if (we(e.immediatePropagationStopped)) {
998 var i = e.stopImmediatePropagation;
999 e.stopImmediatePropagation = function() {
1000 e.immediatePropagationStopped = !0, e.stopPropagation && e.stopPropagation(), i && i.call(e)
1003 e.isImmediatePropagationStopped = function() {
1004 return !0 === e.immediatePropagationStopped
1006 var o = n.specialHandlerWrapper || Rt;
1007 1 < r && (n = We(n));
1008 for (var a = 0; a < r; a++) e.isImmediatePropagationStopped() || o(s, e, n[a])
1010 }).elem = s = i, n));
1011 for (var u = 0 <= e.indexOf(" ") ? e.split(" ") : [e], d = u.length, f = function(e, t, n) {
1013 r || ((r = a[e] = []).specialHandlerWrapper = t, "$destroy" === e || n || i.addEventListener(e, c)), r.push(o)
1014 }; d--;) e = u[d], Je[e] ? (f(Je[e], Pt), f(e, void 0, !0)) : f(e)
1018 one: function(t, n, r) {
1019 (t = he(t)).on(n, function e() {
1020 t.off(n, r), t.off(n, e)
1023 replaceWith: function(t, e) {
1024 var n, r = t.parentNode;
1025 pt(t), ve(new ft(e), function(e) {
1026 n ? r.insertBefore(e, n.nextSibling) : r.replaceChild(e, t), n = e
1029 children: function(e) {
1031 return ve(e.childNodes, function(e) {
1032 e.nodeType === qe && t.push(e)
1035 contents: function(e) {
1036 return e.contentDocument || e.childNodes || []
1038 append: function(e, t) {
1040 if (n === qe || n === ze)
1041 for (var r = 0, i = (t = new ft(t)).length; r < i; r++) {
1046 prepend: function(t, e) {
1047 if (t.nodeType === qe) {
1048 var n = t.firstChild;
1049 ve(new ft(e), function(e) {
1050 t.insertBefore(e, n)
1054 wrap: function(e, t) {
1056 n = e, r = he(t).eq(0).clone()[0], (i = n.parentNode) && i.replaceChild(r, n), r.appendChild(n)
1059 detach: function(e) {
1062 after: function(e, t) {
1066 for (var i = 0, o = (t = new ft(t)).length; i < o; i++) {
1068 r.insertBefore(a, n.nextSibling), n = a
1073 toggleClass: function(n, e, r) {
1074 e && ve(e.split(" "), function(e) {
1076 we(t) && (t = !$t(n, e)), (t ? Et : wt)(n, e)
1079 parent: function(e) {
1080 var t = e.parentNode;
1081 return t && t.nodeType !== ze ? t : null
1084 return e.nextElementSibling
1086 find: function(e, t) {
1087 return e.getElementsByTagName ? e.getElementsByTagName(t) : []
1090 triggerHandler: function(t, e, n) {
1091 var r, i, o, a = e.type || e,
1096 preventDefault: function() {
1097 this.defaultPrevented = !0
1099 isDefaultPrevented: function() {
1100 return !0 === this.defaultPrevented
1102 stopImmediatePropagation: function() {
1103 this.immediatePropagationStopped = !0
1105 isImmediatePropagationStopped: function() {
1106 return !0 === this.immediatePropagationStopped
1108 stopPropagation: _e,
1111 }, e.type && (r = be(r, e)), i = We(c), o = n ? [r].concat(n) : [r], ve(i, function(e) {
1112 r.isImmediatePropagationStopped() || e.apply(t, o)
1116 ft.prototype[e] = function(e, t, n) {
1117 for (var r, i = 0, o = this.length; i < o; i++) we(r) ? O(r = a(this[i], e, t, n)) && (r = he(r)) : Ct(r, a(this[i], e, t, n));
1118 return O(r) ? r : this
1120 }), ft.prototype.bind = ft.prototype.on, ft.prototype.unbind = ft.prototype.off;
1121 var Lt = Object.create(null);
1124 this._keys = [], this._values = [], this._lastKey = NaN, this._lastIndex = -1
1128 return e !== this._lastKey && (this._lastKey = e, this._lastIndex = this._keys.indexOf(e)), this._lastIndex
1130 _transformKey: function(e) {
1131 return S(e) ? Lt : e
1134 e = this._transformKey(e);
1135 var t = this._idx(e);
1136 if (-1 !== t) return this._values[t]
1139 return e = this._transformKey(e), -1 !== this._idx(e)
1141 set: function(e, t) {
1142 e = this._transformKey(e);
1143 var n = this._idx(e); - 1 === n && (n = this._lastIndex = this._keys.length), this._keys[n] = e, this._values[n] = t
1145 delete: function(e) {
1146 e = this._transformKey(e);
1147 var t = this._idx(e);
1148 return -1 !== t && (this._keys.splice(t, 1), this._values.splice(t, 1), this._lastKey = NaN, this._lastIndex = -1, !0)
1153 this.$get = [function() {
1158 Bt = /^[^(]*\(\s*([^)]*)\)/m,
1160 Wt = /^\s*(_?)(\S+?)\1\s*$/,
1161 Yt = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
1162 Gt = M("$injector");
1165 return Function.prototype.toString.call(e)
1169 var t = Kt(e).replace(Yt, "");
1170 return t.match(Vt) || t.match(Bt)
1183 service: f(function(e, t) {
1184 return p(e, ["$injector", function(e) {
1185 return e.instantiate(t)
1188 value: f(function(e, t) {
1189 return p(e, D(t), !1)
1191 constant: f(function(e, t) {
1192 le(e, "constant"), u[e] = t, n[e] = t
1194 decorator: function(e, t) {
1195 var n = l.get(e + a),
1197 n.$get = function() {
1198 var e = d.invoke(r, n);
1199 return d.invoke(t, null, {
1206 l = u.$injector = g(u, function(e, t) {
1207 throw y.isString(t) && s.push(t), Gt("unpr", "Unknown provider: {0}", s.join(" <- "))
1210 t = g(n, function(e, t) {
1211 var n = l.get(e + a, t);
1212 return d.invoke(n.$get, n, void 0, e)
1215 u["$injector" + a] = {
1217 }, d.modules = l.modules = Fe();
1219 return (d = t.get("$injector")).strictDi = c, ve(r, function(e) {
1221 }), d.loadNewModules = function(e) {
1222 ve(m(e), function(e) {
1228 return function(e, t) {
1229 if (!Ee(e)) return n(e, t);
1235 if (le(e, "service"), (Te(t) || ke(t)) && (t = l.instantiate(t)), !t.$get) throw Gt("pget", "Provider '{0}' must define $get factory method.", e);
1239 function p(e, t, n) {
1241 $get: !1 !== n ? (r = e, i = t, function() {
1242 var e = d.invoke(i, this);
1243 if (we(e)) throw Gt("undef", "Provider '{0}' must return a value from $get factory method.", r);
1251 Le(we(e) || ke(e), "modulesToLoad", "not an array");
1253 return ve(e, function(t) {
1257 Ce(t) ? (n = v(t), d.modules[t] = n, r = r.concat(m(n.requires)).concat(n._runBlocks), e(n._invokeQueue), e(n._configBlocks)) : Te(t) ? r.push(l.invoke(t)) : ke(t) ? r.push(l.invoke(t)) : se(t, "module")
1259 throw ke(t) && (t = t[t.length - 1]), e.message && e.stack && -1 === e.stack.indexOf(e.message) && (e = e.message + "\n" + e.stack), Gt("modulerr", "Failed to instantiate module {0} due to:\n{1}", t, e.stack || e.message || e)
1265 for (t = 0, n = e.length; t < n; t++) {
1268 i[r[1]].apply(i, r[2])
1276 if (n.hasOwnProperty(t)) {
1277 if (n[t] === i) throw Gt("cdep", "Circular dependency found: {0}", t + " <- " + s.join(" <- "));
1281 return s.unshift(t), n[t] = i, n[t] = r(t, e), n[t]
1283 throw n[t] === i && delete n[t], e
1289 function o(e, t, n) {
1290 for (var r = [], i = Xt.$$annotate(e, c, n), o = 0, a = i.length; o < a; o++) {
1292 if ("string" != typeof s) throw Gt("itkn", "Incorrect injection token! Expected service name as string, got {0}", s);
1293 r.push(t && t.hasOwnProperty(s) ? t[s] : l(s, n))
1298 invoke: function(e, t, n, r) {
1299 "string" == typeof n && (r = n, n = null);
1301 return ke(e) && (e = e[e.length - 1]),
1303 if (fe || "function" != typeof e) return !1;
1304 var t = e.$$ngIsClass;
1305 return Ae(t) || (t = e.$$ngIsClass = /^class\b/.test(Kt(e))), t
1306 }(e) ? (i.unshift(null), new(Function.prototype.bind.apply(e, i))) : e.apply(t, i)
1308 instantiate: function(e, t, n) {
1309 var r = ke(e) ? e[e.length - 1] : e,
1311 return i.unshift(null), new(Function.prototype.bind.apply(r, i))
1314 annotate: Xt.$$annotate,
1316 return u.hasOwnProperty(e + a) || n.hasOwnProperty(e)
1324 this.disableAutoScrolling = function() {
1326 }, this.$get = ["$window", "$location", "$rootScope", function(r, i, o) {
1332 var t = function() {
1337 e = "fixed" !== r.getComputedStyle(t).position ? 0 : t.getBoundingClientRect().bottom
1338 } else E(e) || (e = 0);
1342 var n = e.getBoundingClientRect().top;
1343 r.scrollBy(0, n - t)
1345 } else r.scrollTo(0, 0)
1350 (e = Ce(e) ? e : E(e) ? e.toString() : i.hash()) ? (t = a.getElementById(e)) ? s(t): (n = a.getElementsByName(e), r = null, Array.prototype.some.call(n, function(e) {
1351 if ("a" === De(e)) return r = e, !0
1352 }), (t = r) ? s(t) : "top" === e && s(null)): s(null)
1354 return e && o.$watch(function() {
1358 e === t && "" === e || (n = function() {
1360 }, "complete" === (r = r || de).document.readyState ? r.setTimeout(n) : he(r).on("load", n))
1364 Xt.$$annotate = function(e, t, n) {
1366 if ("function" == typeof e) {
1367 if (!(r = e.$inject)) {
1368 if (r = [], e.length) {
1369 if (t) throw Ce(n) && n || (n = e.name || ((o = Zt(e)) ? "function(" + (o[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn")), Gt("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
1370 ve(Zt(e)[1].split(zt), function(e) {
1371 e.replace(Wt, function(e, t, n) {
1378 } else ke(e) ? (se(e[i = e.length - 1], "fn"), r = e.slice(0, i)) : se(e, "fn", !0);
1381 var Jt = M("$animate"),
1386 return e || t ? e ? t ? (ke(e) && (e = e.join(" ")), ke(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
1390 return Ee(e) ? e : {}
1392 var on = function() {
1398 this.$get = ["$$AnimateRunner", "$rootScope", function(d, f) {
1404 push: function(e, t, n, r) {
1405 var i, o, a, s, l, c;
1406 r && r(), (n = n || {}).from && e.css(n.from), n.to && e.css(n.to), (n.addClass || n.removeClass) && (i = e, o = n.addClass, a = n.removeClass, s = m.get(i) || {}, l = h(s, o, !0), c = h(s, a, !1), (l || c) && (m.set(i, s), g.push(i), 1 === g.length && f.$$postDigest(p)));
1408 return u.complete(), u
1412 function h(t, e, n) {
1414 return e && ve(e = Ce(e) ? e.split(" ") : ke(e) ? e : [], function(e) {
1415 e && (r = !0, t[e] = n)
1423 var n = function(e) {
1424 Ce(e) && (e = e.split(" "));
1426 return ve(e, function(e) {
1427 e.length && (t[e] = !0)
1432 ve(t, function(e, t) {
1433 e !== !!n[t] && (e ? r += (r.length ? " " : "") + t : i += (i.length ? " " : "") + t)
1434 }), ve(e, function(e) {
1435 r && Et(e, r), i && wt(e, i)
1442 sn = ["$provide", function(r) {
1446 this.$$registeredAnimations = Object.create(null), this.register = function(e, t) {
1447 if (e && "." !== e.charAt(0)) throw Jt("notcsel", "Expecting class selector starting with '.' got '{0}'.", e);
1448 var n = e + "-animation";
1449 i.$$registeredAnimations[e.substr(1)] = n, r.factory(n, t)
1450 }, this.customFilter = function(e) {
1451 return 1 === arguments.length && (n = Te(e) ? e : null), n
1452 }, this.classNameFilter = function(e) {
1453 if (1 === arguments.length && ((t = e instanceof RegExp ? e : null) && new RegExp("[(\\s|\\/)]" + tn + "[(\\s|\\/)]").test(t.toString()))) throw t = null, Jt("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', tn);
1455 }, this.$get = ["$$animateQueue", function(o) {
1456 function i(e, t, n) {
1458 var r = function(e) {
1459 for (var t = 0; t < e.length; t++) {
1461 if (n.nodeType === en) return n
1464 !r || r.parentNode || r.previousElementSibling || (n = null)
1466 n ? n.after(e) : t.prepend(e)
1473 cancel: function(e) {
1474 e.cancel && e.cancel()
1476 enter: function(e, t, n, r) {
1477 return t = t && he(t), n = n && he(n), i(e, t = t || n.parent(), n), o.push(e, "enter", rn(r))
1479 move: function(e, t, n, r) {
1480 return t = t && he(t), n = n && he(n), i(e, t = t || n.parent(), n), o.push(e, "move", rn(r))
1482 leave: function(e, t) {
1483 return o.push(e, "leave", rn(t), function() {
1487 addClass: function(e, t, n) {
1488 return (n = rn(n)).addClass = nn(n.addclass, t), o.push(e, "addClass", n)
1490 removeClass: function(e, t, n) {
1491 return (n = rn(n)).removeClass = nn(n.removeClass, t), o.push(e, "removeClass", n)
1493 setClass: function(e, t, n, r) {
1494 return (r = rn(r)).addClass = nn(r.addClass, t), r.removeClass = nn(r.removeClass, n), o.push(e, "setClass", r)
1496 animate: function(e, t, n, r, i) {
1497 return (i = rn(i)).from = i.from ? be(i.from, t) : t, i.to = i.to ? be(i.to, n) : n, r = r || "ng-inline-animate", i.tempClasses = nn(i.tempClasses, r), o.push(e, "animate", i)
1503 this.$get = ["$$rAF", function(t) {
1507 n.push(e), 1 < n.length || t(function() {
1508 for (var e = 0; e < n.length; e++) n[e]();
1514 return r(function() {
1524 this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(t, e, n, r, i) {
1528 this._doneCallbacks = [], this._tick = function(e) {
1529 r() ? i(e, 0, !1) : t(e)
1532 return o.chain = function(e, n) {
1535 if (r === e.length) return void n(!0);
1537 !1 !== e ? (r++, t()) : n(!1)
1540 }, o.all = function(t, n) {
1545 i = i && e, ++r === t.length && n(i)
1551 setHost: function(e) {
1555 2 === this._state ? e() : this._doneCallbacks.push(e)
1558 getPromise: function() {
1559 if (!this.promise) {
1561 this.promise = t(function(t, n) {
1562 e.done(function(e) {
1563 !1 === e ? n() : t()
1569 then: function(e, t) {
1570 return this.getPromise().then(e, t)
1572 catch: function(e) {
1573 return this.getPromise().catch(e)
1575 finally: function(e) {
1576 return this.getPromise().finally(e)
1579 this.host.pause && this.host.pause()
1581 resume: function() {
1582 this.host.resume && this.host.resume()
1585 this.host.end && this.host.end(), this._resolve(!0)
1587 cancel: function() {
1588 this.host.cancel && this.host.cancel(), this._resolve(!1)
1590 complete: function(e) {
1592 0 === t._state && (t._state = 1, t._tick(function() {
1596 _resolve: function(t) {
1597 2 !== this._state && (ve(this._doneCallbacks, function(e) {
1599 }), this._doneCallbacks.length = 0, this._state = 2)
1605 this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(a, e, s) {
1606 return function(e, t) {
1608 n.$$prepared || (n = j(n)), n.cleanupStyles && (n.from = n.to = null), n.from && (e.css(n.from), n.from = null);
1616 return a(function() {
1618 n.addClass && (e.addClass(n.addClass), n.addClass = null);
1619 n.removeClass && (e.removeClass(n.removeClass), n.removeClass = null);
1620 n.to && (e.css(n.to), n.to = null)
1621 }(), r || i.complete(), r = !0
1628 function dn(s, e, t, l, n) {
1636 c.isMock = !1, c.$$completeOutstandingRequest = a.completeTask, c.$$incOutstandingRequestCount = a.incTaskCount, c.notifyWhenNoOutstandingRequests = a.notifyWhenNoPendingTasks;
1637 var f, h, p = u.href,
1640 v = l.history ? function() {
1645 w(), c.url = function(e, t, n) {
1646 if (we(n) && (n = null), u !== s.location && (u = s.location), d !== s.history && (d = s.history), e) {
1648 if (e = fi(e).href, p === e && (!l.history || r)) return c;
1649 var i = p && cr(p) === cr(e);
1650 return p = e, h = n, !l.history || i && r ? (i || (g = e), t ? u.replace(e) : i ? u.hash = -1 === (a = (o = e).indexOf("#")) ? "" : o.substr(a) : u.href = e, u.href !== e && (g = e)) : (d[t ? "replaceState" : "pushState"](n, "", e), w()), g && (g = e), c
1652 return (g || u.href).replace(/#$/, "");
1654 }, c.state = function() {
1666 Ie(f = we(f = v()) ? null : f, $) && (f = $), h = $ = f
1671 w(), p === c.url() && e === f || (p = c.url(), h = f, ve(b, function(e) {
1675 c.onUrlChange = function(e) {
1676 return y || (l.history && he(s).on("popstate", _), he(s).on("hashchange", _), y = !0), b.push(e), e
1677 }, c.$$applicationDestroyed = function() {
1678 he(s).off("hashchange popstate", _)
1679 }, c.$$checkUrlChange = E, c.baseHref = function() {
1680 var e = m.attr("href");
1681 return e ? e.replace(/^(https?:)?\/\/[^/]*/, "") : ""
1682 }, c.defer = function(e, t, n) {
1684 return t = t || 0, n = n || a.DEFAULT_TASK_TYPE, a.incTaskCount(n), r = i(function() {
1685 delete o[r], a.completeTask(e, n)
1687 }, c.defer.cancel = function(e) {
1688 if (o.hasOwnProperty(e)) {
1690 return delete o[e], r(e), a.completeTask(_e, t), !0
1697 this.$get = ["$window", "$log", "$sniffer", "$document", "$$taskTrackerFactory", function(e, t, n, r, i) {
1698 return new dn(e, r, t, n, i)
1703 this.$get = function() {
1707 if (e in d) throw M("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
1713 o = t && t.capacity || Number.MAX_VALUE,
1718 put: function(e, t) {
1720 if (o < Number.MAX_VALUE) c(a[e] || (a[e] = {
1723 return e in i || n++, i[e] = t, o < n && this.remove(l.key), t
1727 if (o < Number.MAX_VALUE) {
1734 remove: function(e) {
1735 if (o < Number.MAX_VALUE) {
1738 t === s && (s = t.p), t === l && (l = t.n), u(t.n, t.p), delete a[e]
1740 e in i && (delete i[e], n--)
1742 removeAll: function() {
1743 i = Fe(), n = 0, a = Fe(), s = l = null
1745 destroy: function() {
1746 a = r = i = null, delete d[e]
1756 e !== s && (l ? l === e && (l = e.n) : l = e, u(e.n, e.p), u(e, s), (s = e).n = null)
1760 e !== t && (e && (e.p = t), t && (t.n = e))
1763 return e.info = function() {
1765 return ve(d, function(e, t) {
1768 }, e.get = function(e) {
1775 this.$get = ["$cacheFactory", function(e) {
1776 return e("templates")
1779 var mn = M("$compile");
1780 var gn = new function() {};
1785 B = /^\s*directive:\s*([\w-]+)\s+(.*)$/,
1786 ue = /(([\w-]+)(?::([^;]+))?;?)/,
1790 for (t = 0; t < r.length; t++) n[r[t]] = !0;
1792 }("ngSrc,ngSrcset,src,srcset"),
1793 b = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
1794 _ = /^(on[a-z]+|formaction)$/,
1797 function r(e, r, i) {
1798 var o = /^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/,
1800 return ve(e, function(e, t) {
1801 if ((e = e.trim()) in s) a[t] = s[e];
1804 if (!n) throw mn("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", r, t, e, i ? "controller bindings definition" : "isolate scope definition");
1807 collection: "*" === n[2],
1808 optional: "?" === n[3],
1810 }, n[4] && (s[e] = a[t])
1818 bindToController: null
1820 if (Ee(e.scope) && (!0 === e.bindToController ? (n.bindToController = r(e.scope, t, !0), n.isolateScope = {}) : n.isolateScope = r(e.scope, t, !1)), Ee(e.bindToController) && (n.bindToController = r(e.bindToController, t, !0)), n.bindToController && !e.controller) throw mn("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
1823 this.directive = function e(l, t) {
1824 return Le(l, "name"), le(l, "directive"), Ce(l) ? (! function(e) {
1825 var t = e.charAt(0);
1826 if (!t || t !== me(t)) throw mn("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", e);
1827 if (e !== e.trim()) throw mn("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
1828 }(l), Le(t, "directiveFactory"), p.hasOwnProperty(l) || (p[l] = [], n.factory(l + m, ["$injector", "$exceptionHandler", function(o, a) {
1830 return ve(p[l], function(e, t) {
1832 var n = o.invoke(e);
1835 } : !n.compile && n.link && (n.compile = D(n.link)), n.priority = n.priority || 0, n.index = t, n.name = n.name || l, n.require = (!ke(i = (r = n).require || r.controller && r.name) && Ee(i) && ve(i, function(e, t) {
1837 e.substring(n[0].length) || (i[t] = n[0] + t)
1838 }), i), n.restrict = function(e, t) {
1839 if (e && (!Ce(e) || !/[EACM]/.test(e))) throw mn("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", e, t);
1841 }(n.restrict, l), n.$$moduleName = e.$$moduleName, s.push(n)
1847 }])), p[l].push(t)) : ve(l, A(e)), this
1848 }, this.component = function e(t, i) {
1849 if (!Ce(t)) return ve(t, A(Pe(this, e))), this;
1850 var o = i.controller || function() {};
1854 return Te(n) || ke(n) ? function(e, t) {
1855 return r.invoke(n, this, {
1861 var t = i.template || i.templateUrl ? i.template : "",
1864 controllerAs: function(e, t) {
1865 if (t && Ce(t)) return t;
1870 }(i.controller) || i.controllerAs || "$ctrl",
1872 templateUrl: e(i.templateUrl),
1873 transclude: i.transclude,
1875 bindToController: i.bindings || {},
1879 return ve(i, function(e, t) {
1880 "$" === t.charAt(0) && (n[t] = e)
1883 return ve(i, function(e, t) {
1884 "$" === t.charAt(0) && (n[t] = e, Te(o) && (o[t] = e))
1885 }), n.$inject = ["$injector"], this.directive(t, n)
1886 }, this.aHrefSanitizationWhitelist = function(e) {
1887 return O(e) ? (t.aHrefSanitizationWhitelist(e), this) : t.aHrefSanitizationWhitelist()
1888 }, this.imgSrcSanitizationWhitelist = function(e) {
1889 return O(e) ? (t.imgSrcSanitizationWhitelist(e), this) : t.imgSrcSanitizationWhitelist()
1892 E = !(this.debugInfoEnabled = function(e) {
1893 return O(e) ? (w = e, this) : w
1895 this.strictComponentBindingsEnabled = function(e) {
1896 return O(e) ? (E = e, this) : E
1899 this.onChangesTtl = function(e) {
1900 return arguments.length ? (C = e, this) : C
1903 this.commentDirectivesEnabled = function(e) {
1904 return arguments.length ? (k = e, this) : k
1907 this.cssClassDirectivesEnabled = function(e) {
1908 return arguments.length ? (x = e, this) : x
1911 this.addPropertySecurityContext = function(e, t, n) {
1912 var r = e.toLowerCase() + "|" + t.toLowerCase();
1913 if (r in T && T[r] !== n) throw mn("ctxoverride", "Property context '{0}.{1}' already set to '{2}', cannot override to '{3}'.", e, t, T[r], n);
1914 return T[r] = n, this
1919 T[e.toLowerCase()] = t
1922 e(Gr.HTML, ["iframe|srcdoc", "*|innerHTML", "*|outerHTML"]), e(Gr.CSS, ["*|style"]), e(Gr.URL, ["area|href", "area|ping", "a|href", "a|ping", "blockquote|cite", "body|background", "del|cite", "input|src", "ins|cite", "q|cite"]), e(Gr.MEDIA_URL, ["audio|src", "img|src", "img|srcset", "source|src", "source|srcset", "track|src", "video|src", "video|poster"]), e(Gr.RESOURCE_URL, ["*|formAction", "applet|code", "applet|codebase", "base|href", "embed|src", "frame|src", "form|action", "head|profile", "html|manifest", "iframe|src", "link|href", "media|src", "object|codebase", "object|data", "script|src"])
1923 }(), this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", function(h, A, z, e, S, W, D, f, i) {
1925 c = de.document.createElement("div"),
1932 if (!--t) throw o = void 0, mn("infchng", "{0} $onChanges() iterations reached. Aborting!\n", C);
1933 D.$apply(function() {
1934 for (var e = 0, t = o.length; e < t; ++e) try {
1948 if (!Ce(e)) throw mn("srcset", 'Can\'t pass trusted values to `{0}`: "{1}"', t, e.toString());
1949 for (var n = "", r = Se(e), i = /\s/.test(r) ? /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/ : /(,)/, o = r.split(i), a = Math.floor(o.length / 2), s = 0; s < a; s++) {
1951 n += f.getTrustedMediaUrl(Se(o[l])), n += " " + Se(o[l + 1])
1953 var c = Se(o[2 * s]).split(/\s/);
1954 return n += f.getTrustedMediaUrl(Se(c[0])), 2 === c.length && (n += " " + Se(c[1])), n
1959 var n, r, i, o = Object.keys(t);
1960 for (n = 0, r = o.length; n < r; n++) this[i = o[n]] = t[i]
1961 } else this.$attr = {};
1972 $addClass: function(e) {
1973 e && 0 < e.length && i.addClass(this.$$element, e)
1975 $removeClass: function(e) {
1976 e && 0 < e.length && i.removeClass(this.$$element, e)
1978 $updateClass: function(e, t) {
1980 n && n.length && i.addClass(this.$$element, n);
1982 r && r.length && i.removeClass(this.$$element, r)
1984 $set: function(e, t, n, r) {
1985 var i = It(this.$$element[0], e),
1988 i ? (this.$$element.prop(e, t), r = i) : o && (this[o] = t, a = o), this[e] = t, r ? this.$attr[e] = r : (r = this.$attr[e]) || (this.$attr[e] = r = je(e, "-")), "img" === De(this.$$element) && "srcset" === e && (this[e] = t = u(t, "$set('srcset', value)")), !1 !== n && (null === t || we(t) ? this.$$element.removeAttr(r) : l.test(r) ? i && !1 === t ? this.$$element.removeAttr(r) : this.$$element.attr(r, t) : function(e, t, n) {
1989 c.innerHTML = "<span " + t + ">";
1990 var r = c.firstChild.attributes,
1992 r.removeNamedItem(i.name), i.value = n, e.attributes.setNamedItem(i)
1993 }(this.$$element[0], r, t));
1994 var s = this.$$observers;
1995 s && ve(s[a], function(e) {
2003 $observe: function(e, t) {
2005 r = n.$$observers || (n.$$observers = Fe()),
2006 i = r[e] || (r[e] = []);
2007 return i.push(t), D.$evalAsync(function() {
2008 i.$$inter || !n.hasOwnProperty(e) || we(n[e]) || t(n[e])
2015 var n = A.startSymbol(),
2017 G = "{{" === n && "}}" === r ? $e : function(e) {
2018 return e.replace(/\{\{/g, n).replace(/}}/g, r)
2020 I = /^ng(Attr|Prop|On)([A-Z].*)$/,
2022 return K.$$addBindingInfo = w ? function(e, t) {
2023 var n = e.data("$binding") || [];
2024 ke(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
2025 } : _e, K.$$addBindingClass = w ? function(e) {
2027 } : _e, K.$$addScopeInfo = w ? function(e, t, n, r) {
2028 var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
2030 } : _e, K.$$addScopeClass = w ? function(e, t) {
2031 M(e, t ? "ng-isolate-scope" : "ng-scope")
2032 } : _e, K.$$createComment = function(e, t) {
2034 return w && (n = " " + (e || "") + ": ", t && (n += t + " ")), de.document.createComment(n)
2037 function K(u, e, t, n, d) {
2038 u instanceof he || (u = he(u));
2039 var f = P(u, e, u, t, n, d);
2040 K.$$addScopeClass(u);
2042 return function(e, t, n) {
2043 if (!u) throw mn("multilink", "This element has already been linked.");
2044 Le(e, "scope"), d && d.needsNewScope && (e = e.$parent.$new());
2045 var r, i, o, a = (n = n || {}).parentBoundTranscludeFn,
2046 s = n.transcludeControllers,
2047 l = n.futureParentElement;
2048 if (a && a.$$boundTransclude && (a = a.$$boundTransclude), h || (i = (r = l) && r[0], h = i && "foreignobject" !== De(i) && ge.call(i).match(/SVG/) ? "svg" : "html"), o = "html" !== h ? he(oe(h, he("<div></div>").append(u).html())) : t ? St.clone.call(u) : u, s)
2049 for (var c in s) o.data("$" + c + "Controller", s[c].instance);
2050 return K.$$addScopeInfo(o, e), t && t(o, e), f && f(e, o, o, a), t || (u = f = null), o
2054 function P(e, p, t, n, r, i) {
2055 for (var o, a, s, l, c, u, m, g = [], d = ke(e) || e instanceof he, f = 0; f < e.length; f++) o = new Y, 11 === fe && v(e, f, d), (s = (a = Z(e[f], [], o, 0 === f ? n : void 0, r)).length ? j(a, e[f], o, p, t, null, [], [], i) : null) && s.scope && K.$$addScopeClass(o.$$element), c = s && s.terminal || !(l = e[f].childNodes) || !l.length ? null : P(l, s ? (s.transcludeOnThisElement || !s.templateOnThisElement) && s.transclude : p), (s || c) && (g.push(f, s, c), u = !0, m = m || s), i = null;
2056 return u ? function(e, t, n, r) {
2057 var i, o, a, s, l, c, u, d, f;
2060 for (f = new Array(h), l = 0; l < g.length; l += 3) u = g[l], f[u] = t[u]
2062 for (l = 0, c = g.length; l < c;) a = f[g[l++]], i = g[l++], o = g[l++], i ? (i.scope ? (s = e.$new(), K.$$addScopeInfo(he(a), s)) : s = e, d = i.transcludeOnThisElement ? H(e, i.transclude, r) : !i.templateOnThisElement && r ? r : !r && p ? H(e, p) : null, i(o, s, a, n, d)) : o && o(e, a.childNodes, void 0, r)
2066 function v(e, t, n) {
2069 if (i.nodeType === Ue)
2071 (r = o ? i.nextSibling : e[t + 1]) && r.nodeType === Ue;) i.nodeValue = i.nodeValue + r.nodeValue, r.parentNode && r.parentNode.removeChild(r), n && r === e[t + 1] && e.splice(t + 1, 1)
2074 function H(o, a, s) {
2075 function e(e, t, n, r, i) {
2076 return e || ((e = o.$new(!1, i)).$$transcluded = !0), a(e, t, {
2077 parentBoundTranscludeFn: s,
2078 transcludeControllers: n,
2079 futureParentElement: r
2082 var t = e.$$slots = Fe();
2083 for (var n in a.$$slots) a.$$slots[n] ? t[n] = H(o, a.$$slots[n], s) : t[n] = null;
2087 function Z(e, t, n, r, i) {
2088 var o, a, s, l, c, u, d, f, h = e.nodeType,
2092 L(t, $n(a = De(e)), "E", r, i);
2093 for (var m, g, v, b, y, _ = e.attributes, $ = 0, w = _ && _.length; $ < w; $++) {
2099 g = (m = _[$]).name, b = m.value, (y = (v = $n(g.toLowerCase())).match(I)) ? (x = "Attr" === y[1], T = "Prop" === y[1], M = "On" === y[1], g = g.replace(yn, "").toLowerCase().substr(4 + y[1].length).replace(/_(.)/g, function(e, t) {
2100 return t.toUpperCase()
2101 })) : (E = v.match(R)) && F(E[1]) && (k = (C = g).substr(0, g.length - 5) + "end", g = g.substr(0, g.length - 6)), T || M ? (n[v] = b, p[v] = m.name, T ? U(e, t, v, g) : (d = v, f = g, t.push(Uo(S, D, z, d, f, !1)))) : (p[v = $n(g.toLowerCase())] = g, !x && n.hasOwnProperty(v) || (n[v] = b, It(e, v) && (n[v] = !0)), V(e, t, b, v, x), L(t, v, "A", r, i, C, k))
2103 if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), !N) break;
2104 if (Ee(s = e.className) && (s = s.animVal), Ce(s) && "" !== s)
2105 for (; o = ue.exec(s);) L(t, v = $n(o[2]), "C", r, i) && (n[v] = Se(o[3])), s = s.substr(o.index + o[0].length);
2108 l = t, c = e.nodeValue, (u = A(c, !0)) && l.push({
2110 compile: function(e) {
2113 return r && K.$$addBindingClass(t),
2116 r || K.$$addBindingClass(n), K.$$addBindingInfo(n, u.expressions), e.$watch(u, function(e) {
2125 ! function(e, t, n, r, i) {
2127 var o = B.exec(e.nodeValue);
2130 L(t, a, "M", r, i) && (n[a] = Se(o[2]))
2138 function X(e, t, n) {
2141 if (t && e.hasAttribute && e.hasAttribute(t))
2143 if (!e) throw mn("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
2144 e.nodeType === qe && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
2150 function Q(o, a, s) {
2151 return function(e, t, n, r, i) {
2152 return t = X(t[0], a, s), o(e, t, n, r, i)
2156 function J(e, t, n, r, i, o) {
2158 return e ? K(t, n, r, i, o) : function() {
2159 return a || (a = K(t, n, r, i, o), t = n = o = null), a.apply(this, arguments)
2163 function j(e, _, $, t, n, r, w, E, i) {
2165 for (var o, a, s, l, c, u = -Number.MAX_VALUE, C = i.newScopeDirective, k = i.controllerDirectives, x = i.newIsolateScopeDirective, T = i.templateDirective, d = i.nonTlbTranscludeDirective, f = !1, h = !1, M = i.hasElementTranscludeDirective, p = $.$$element = he(_), m = r, g = t, v = !1, b = !1, y = 0, A = e.length; y < A; y++) {
2166 var S = (o = e[y]).$$start,
2168 if (S && (p = X(_, S, D)), s = void 0, u > o.priority) break;
2169 if ((c = o.scope) && (o.templateUrl || (Ee(c) ? (ie("new/isolated scope", x || C, o, p), x = o) : ie("new/isolated scope", x, o, p)), C = C || o), a = o.name, !v && (o.replace && (o.templateUrl || o.template) || o.transclude && !o.$$tlb)) {
2170 for (var O, N = y + 1; O = e[N++];)
2171 if (O.transclude && !O.$$tlb || O.replace && (O.templateUrl || O.template)) {
2176 if (!o.templateUrl && o.controller && (k = k || Fe(), ie("'" + a + "' controller", k[a], o, p), k[a] = o), c = o.transclude)
2177 if (f = !0, o.$$tlb || (ie("transclusion", d, o, p), d = o), "element" === c) M = !0, u = o.priority, s = p, p = $.$$element = he(K.$$createComment(a, $[a])), _ = p[0], ae(n, Re(s), _), g = J(b, s, t, u, m && m.name, {
2178 nonTlbTranscludeDirective: d
2183 s = de.document.createDocumentFragment();
2186 for (var H in ve(c, function(e, t) {
2187 var n = "?" === e.charAt(0);
2188 e = n ? e.substring(1) : e, R[e] = t, I[t] = null, P[t] = n
2189 }), ve(p.contents(), function(e) {
2190 var t = R[$n(De(e))];
2191 t ? (P[t] = !0, I[t] = I[t] || de.document.createDocumentFragment(), I[t].appendChild(e)) : s.appendChild(e)
2192 }), ve(P, function(e, t) {
2193 if (!e) throw mn("reqslot", "Required transclusion slot `{0}` was not filled.", t)
2196 var j = he(I[H].childNodes);
2198 } s = he(s.childNodes)
2199 } else s = he(ht(_)).contents();
2200 p.empty(), (g = J(b, s, t, void 0, void 0, {
2201 needsNewScope: o.$$isolateScope || o.$$newScope
2204 if (h = !0, ie("template", T, o, p), c = Te((T = o).template) ? o.template(p, $) : o.template, c = G(c), o.replace) {
2205 if (m = o, s = lt(c) ? [] : En(oe(o.templateNamespace, Se(c))), _ = s[0], 1 !== s.length || _.nodeType !== qe) throw mn("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", a, "");
2211 q = e.splice(y + 1, e.length - (y + 1));
2212 (x || C) && te(F, x, C), e = e.concat(F).concat(q), ne($, L), A = e.length
2214 if (o.templateUrl) h = !0, ie("template", T, o, p), (T = o).replace && (m = o), B = re(e.splice(y, e.length - y), p, $, n, f && g, w, E, {
2215 controllerDirectives: k,
2216 newScopeDirective: C !== o && C,
2217 newIsolateScopeDirective: x,
2218 templateDirective: T,
2219 nonTlbTranscludeDirective: d
2221 else if (o.compile) try {
2222 l = o.compile(p, $, g);
2223 var U = o.$$originalDirective || o;
2224 Te(l) ? V(null, Pe(U, l), S, D) : l && V(Pe(U, l.pre), Pe(U, l.post), S, D)
2228 o.terminal && (B.terminal = !0, u = Math.max(u, o.priority))
2230 return B.scope = C && !0 === C.scope, B.transcludeOnThisElement = f, B.templateOnThisElement = h, B.transclude = g, i.hasElementTranscludeDirective = M, B;
2232 function V(e, t, n, r) {
2233 e && (n && (e = Q(e, n, r)), e.require = o.require, e.directiveName = a, (x === o || o.$$isolateScope) && (e = se(e, {
2235 })), w.push(e)), t && (n && (t = Q(t, n, r)), t.require = o.require, t.directiveName = a, (x === o || o.$$isolateScope) && (t = se(t, {
2240 function B(e, t, n, r, a) {
2241 var i, o, s, l, c, u, d, f, h, p;
2242 for (var m in _ === n ? f = (h = $).$$element : h = new Y(f = he(n), $), c = t, x ? l = t.$new(!0) : C && (c = t.$parent), a && ((d = function(e, t, n, r) {
2244 Me(e) || (r = n, n = t, t = e, e = void 0);
2246 n || (n = M ? f.parent() : f); {
2247 if (!r) return a(e, t, i, n, y);
2248 var o = a.$$slots[r];
2249 if (o) return o(e, t, i, n, y);
2250 if (we(o)) throw mn("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', r, He(f))
2252 }).$$boundTransclude = a, d.isSlotFilled = function(e) {
2253 return !!a.$$slots[e]
2254 }), k && (u = function(e, t, n, r, i, o, a) {
2259 $scope: c === a || c.$$isolateScope ? i : o,
2265 "@" === d && (d = t[c.name]);
2266 var f = W(d, u, !0, c.controllerAs);
2267 s[c.name] = f, e.data("$" + c.name + "Controller", f.instance)
2270 }(f, h, d, k, l, t, x)), x && (K.$$addScopeInfo(f, l, !0, !(T && (T === x || T === x.$$originalDirective))), K.$$addScopeClass(f, !0), l.$$isolateBindings = x.$$isolateBindings, (p = ce(t, h, l, l.$$isolateBindings, x)).removeWatches && l.$on("$destroy", p.removeWatches)), u) {
2273 b = g.$$bindings.bindToController;
2274 v.instance = v(), f.data("$" + g.name + "Controller", v.instance), v.bindingInfo = ce(c, h, v.instance, b, g)
2276 for (ve(k, function(e, t) {
2278 e.bindToController && !ke(n) && Ee(n) && be(u[t].instance, ee(t, n, f, u))
2279 }), ve(u, function(e) {
2281 if (Te(t.$onChanges)) try {
2282 t.$onChanges(e.bindingInfo.initialChanges)
2286 if (Te(t.$onInit)) try {
2291 Te(t.$doCheck) && (c.$watch(function() {
2293 }), t.$doCheck()), Te(t.$onDestroy) && c.$on("$destroy", function() {
2296 }), i = 0, o = w.length; i < o; i++) le(s = w[i], s.isolateScope ? l : t, f, h, s.require && ee(s.directiveName, s.require, f, u), d);
2298 for (x && (x.template || null === x.templateUrl) && (y = l), e && e(y, n.childNodes, void 0, a), i = E.length - 1; 0 <= i; i--) le(s = E[i], s.isolateScope ? l : t, f, h, s.require && ee(s.directiveName, s.require, f, u), d);
2301 Te(t.$postLink) && t.$postLink()
2306 function ee(n, e, r, i) {
2310 a = e.substring(t[0].length),
2313 if ("^^" === s ? r = r.parent() : o = (o = i && i[a]) && o.instance, !o) {
2314 var c = "$" + a + "Controller";
2315 o = "^^" === s && r[0] && r[0].nodeType === Be ? null : s ? r.inheritedData(c) : r.data(c)
2317 if (!o && !l) throw mn("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", a, n)
2320 for (var u = 0, d = e.length; u < d; u++) o[u] = ee(n, e[u], r, i)
2321 } else Ee(e) && (o = {}, ve(e, function(e, t) {
2322 o[t] = ee(n, e, r, i)
2327 function te(e, t, n) {
2328 for (var r = 0, i = e.length; r < i; r++) e[r] = ye(e[r], {
2334 function L(e, t, n, r, i, o, a) {
2335 if (t === i) return null;
2337 if (p.hasOwnProperty(t))
2338 for (var l, c = h.get(t + m), u = 0, d = c.length; u < d; u++)
2339 if (l = c[u], (we(r) || r > l.priority) && -1 !== l.restrict.indexOf(n)) {
2340 if (o && (l = ye(l, {
2343 })), !l.$$bindings) {
2344 var f = l.$$bindings = $(l, l.name);
2345 Ee(f.isolateScope) && (l.$$isolateBindings = f.isolateScope)
2352 if (p.hasOwnProperty(e))
2353 for (var t = h.get(e + m), n = 0, r = t.length; n < r; n++)
2354 if (t[n].multiElement) return !0;
2361 ve(n, function(e, t) {
2362 "$" !== t.charAt(0) && (r[t] && r[t] !== e && (e.length ? e += ("style" === t ? ";" : " ") + r[t] : e = r[t]), n.$set(t, e, !0, i[t]))
2363 }), ve(r, function(e, t) {
2364 n.hasOwnProperty(t) || "$" === t.charAt(0) || (n[t] = e, "class" !== t && "style" !== t && (o[t] = i[t]))
2368 function re(f, h, p, m, g, v, b, y) {
2376 $$originalDirective: C
2378 x = Te(C.templateUrl) ? C.templateUrl(h, p) : C.templateUrl,
2379 T = C.templateNamespace;
2380 return h.empty(), e(x).then(function(e) {
2382 if (e = G(e), C.replace) {
2383 if (r = lt(e) ? [] : En(oe(T, Se(e))), n = r[0], 1 !== r.length || n.nodeType !== qe) throw mn("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", C.name, x);
2387 var o = Z(n, [], t);
2388 Ee(C.scope) && te(o, !0), f = o.concat(f), ne(p, t)
2389 } else n = E, h.html(e);
2390 for (f.unshift(k), _ = j(f, n, p, g, h, C, v, b, y), ve(m, function(e, t) {
2391 e === n && (m[t] = h[0])
2392 }), $ = P(h[0].childNodes, g); w.length;) {
2398 if (!a.$$destroyed) {
2400 var d = s.className;
2401 y.hasElementTranscludeDirective && C.replace || (u = ht(n)), ae(l, he(s), u), M(he(u), d)
2403 i = _.transcludeOnThisElement ? H(a, _.transclude, c) : c, _($, a, u, m, i)
2407 }).catch(function(e) {
2410 function(e, t, n, r, i) {
2412 t.$$destroyed || (w ? w.push(t, n, r, o) : (_.transcludeOnThisElement && (o = H(t, _.transclude, i)), _($, t, n, r, o)))
2417 var n = t.priority - e.priority;
2418 return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
2421 function ie(e, t, n, r) {
2423 return e ? " (module: " + e + ")" : ""
2425 if (t) throw mn("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", t.name, i(t.$$moduleName), n.name, i(n.$$moduleName), e, He(r))
2429 switch (e = me(e || "html")) {
2432 var n = de.document.createElement("div");
2433 return n.innerHTML = "<" + e + ">" + t + "</" + e + ">", n.childNodes[0].childNodes;
2440 return u(f.valueOf(e), "ng-prop-srcset")
2443 function U(e, t, n, o) {
2444 if (_.test(o)) throw mn("nodomevents", "Property bindings for HTML DOM event properties are disallowed");
2445 var r, i, a = De(e),
2446 s = (r = a, i = o.toLowerCase(), T[r + "|" + i] || T["*|" + i]),
2448 "srcset" !== o || "img" !== a && "source" !== a ? s && (l = f.getTrusted.bind(f, s)) : l = d, t.push({
2450 compile: function(e, t) {
2452 i = S(t[n], function(e) {
2456 pre: function(t, n) {
2468 function V(e, t, o, a, n) {
2469 var r, i, s = De(e),
2470 l = (r = s, "srcdoc" === (i = a) ? f.HTML : "src" === i || "ngSrc" === i ? -1 === ["img", "video", "audio", "source", "track"].indexOf(r) ? f.RESOURCE_URL : f.MEDIA_URL : "xlinkHref" === i ? "image" === r ? f.MEDIA_URL : "a" === r ? f.URL : f.RESOURCE_URL : "form" === r && "action" === i || "base" === r && "href" === i || "link" === r && "href" === i ? f.RESOURCE_URL : "a" !== r || "href" !== i && "ngHref" !== i ? void 0 : f.URL),
2475 if ("multiple" === a && "select" === s) throw mn("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", He(e));
2476 if (_.test(a)) throw mn("nodomevents", "Interpolations for HTML DOM event attributes are disallowed");
2479 compile: function() {
2481 pre: function(e, t, n) {
2482 var r = n.$$observers || (n.$$observers = Fe()),
2484 i !== o && (d = i && A(i, !0, l, u), o = i), d && (n[a] = d(e), (r[a] || (r[a] = [])).$$inter = !0, (n.$$observers && n.$$observers[a].$$scope || e).$watch(d, function(e, t) {
2485 "class" === a && e !== t ? n.$updateClass(e, t) : n.$set(a, e)
2494 function ae(e, t, n) {
2499 for (r = 0, i = e.length; r < i; r++)
2502 for (var l = r, c = l + a - 1, u = e.length; l < u; l++, c++) c < u ? e[l] = e[c] : delete e[l];
2503 e.length -= a - 1, e.context === o && (e.context = n);
2505 } s && s.replaceChild(n, o);
2506 var d = de.document.createDocumentFragment();
2507 for (r = 0; r < a; r++) d.appendChild(t[r]);
2508 for (he.hasData(o) && (he.data(n, he.data(o)), he(o).off("$destroy")), he.cleanData(d.querySelectorAll("*")), r = 1; r < a; r++) delete t[r];
2509 t[0] = n, t.length = 1
2513 return be(function() {
2514 return e.apply(null, arguments)
2518 function le(e, t, n, r, i, o) {
2527 if (E) throw mn("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", e, t)
2530 function ce(f, h, p, e, m) {
2534 function b(e, t, n) {
2535 Te(p.$onChanges) && !Ne(t, n) && (o || (f.$$postDigest(a), o = []), r || (r = {}, o.push(i)), r[e] && (n = r[e].previousValue), r[e] = new bn(n, t))
2539 p.$onChanges(r), r = void 0
2541 return ve(e, function(e, n) {
2542 var t, r, i, o, a, s = e.attrName,
2546 l || pe.call(h, s) || (y(s, m.name), p[n] = h[s] = void 0), a = h.$observe(s, function(e) {
2547 if (Ce(e) || Ae(e)) {
2549 b(n, e, t), p[n] = e
2551 }), h.$$observers[s].$$scope = f, Ce(t = h[s]) ? p[n] = A(t)(f) : Ae(t) && (p[n] = t), v[n] = new bn(gn, p[n]), g.push(a);
2554 if (!pe.call(h, s)) {
2556 y(s, m.name), h[s] = void 0
2558 if (l && !h[s]) break;
2559 r = S(h[s]), o = r.literal ? Ie : Ne, i = r.assign || function() {
2560 throw t = p[n] = r(f), mn("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", h[s], s, m.name)
2562 var c = function(e) {
2563 return o(e, p[n]) || (o(e, t) ? i(f, e = p[n]) : p[n] = e), t = e
2565 c.$stateful = !0, a = e.collection ? f.$watchCollection(h[s], c) : f.$watch(S(h[s], c), null, r.literal), g.push(a);
2568 if (!pe.call(h, s)) {
2570 y(s, m.name), h[s] = void 0
2572 if (l && !h[s]) break;
2573 var u = (r = S(h[s])).literal,
2575 v[n] = new bn(gn, p[n]), a = f[e.collection ? "$watchCollection" : "$watch"](r, function(e, t) {
2577 if (t === d || u && Ie(t, d)) return;
2580 b(n, e, t), p[n] = e
2584 if (l || pe.call(h, s) || y(s, m.name), (r = h.hasOwnProperty(s) ? S(h[s]) : _e) === _e && l) break;
2585 p[n] = function(e) {
2591 removeWatches: g.length && function() {
2592 for (var e = 0, t = g.length; e < t; ++e) g[e]()
2600 this.previousValue = e, this.currentValue = t
2602 vn.$inject = ["$provide", "$$sanitizeUriProvider"], bn.prototype.isFirstChange = function() {
2603 return this.previousValue === gn
2605 var yn = /^((?:x|data)[:\-_])/i,
2609 return e.replace(yn, "").replace(_n, function(e, t, n) {
2610 return n ? t.toUpperCase() : t
2618 e: for (var o = 0; o < r.length; o++) {
2619 for (var a = r[o], s = 0; s < i.length; s++)
2620 if (a === i[s]) continue e;
2621 n += (0 < n.length ? " " : "") + a
2627 var t = (e = he(e)).length;
2628 if (t <= 1) return e;
2631 (n.nodeType === Ve || n.nodeType === Ue && "" === n.nodeValue.trim()) && r.call(e, t, 1)
2635 var Cn = M("$controller"),
2636 kn = /^(\S+)(\s+as\s+([\w$]+))?$/;
2640 this.has = function(e) {
2641 return d.hasOwnProperty(e)
2642 }, this.register = function(e, t) {
2643 le(e, "controller"), Ee(e) ? be(d, e) : d[e] = t
2644 }, this.$get = ["$injector", function(c) {
2645 return function(t, n, e, r) {
2647 if (e = !0 === e, r && Ce(r) && (s = r), Ce(t)) {
2648 if (!(o = t.match(kn))) throw Cn("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", t);
2649 if (a = o[1], s = s || o[3], !(t = d.hasOwnProperty(a) ? d[a] : function(e, t, n) {
2651 for (var r, i = t.split("."), o = e, a = i.length, s = 0; s < a; s++) r = i[s], e && (e = (o = e)[r]);
2652 return !n && Te(e) ? Pe(o, e) : e
2653 }(n.$scope, a, !0))) throw Cn("ctrlreg", "The controller with the name '{0}' is not registered.", a);
2657 var l = (ke(t) ? t[t.length - 1] : t).prototype;
2658 return i = Object.create(l || null), s && u(n, s, i, a || t.name), be(function() {
2659 var e = c.invoke(t, i, n, a);
2660 return e !== i && (Ee(e) || Te(e)) && (i = e, s && u(n, s, i, a || t.name)), i
2666 return i = c.instantiate(t, n, a), s && u(n, s, i, a || t.name), i
2669 function u(e, t, n, r) {
2670 if (!e || !Ee(e.$scope)) throw M("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", r, t);
2677 this.$get = ["$window", function(e) {
2678 return he(e.document)
2683 this.$get = ["$document", "$rootScope", function(e, t) {
2690 return e.on("visibilitychange", i), t.$on("$destroy", function() {
2691 e.off("visibilitychange", i)
2700 this.$get = ["$log", function(n) {
2701 return function(e, t) {
2702 n.error.apply(n, arguments)
2706 var Sn = function() {
2707 this.$get = ["$document", function(t) {
2708 return function(e) {
2709 return e ? !e.nodeType && e instanceof he && (e = e[0]) : e = t[0].body, e.offsetWidth + 1
2713 Dn = "application/json",
2715 "Content-Type": Dn + ";charset=utf-8"
2717 Nn = /^\[|^\{(?!\{)/,
2726 return Ee(e) ? C(e) ? e.toISOString() : V(e) : e
2730 this.$get = function() {
2731 return function(e) {
2734 return s(e, function(e, t) {
2735 null === e || we(e) || Te(e) || (ke(e) ? ve(e, function(e) {
2736 n.push(Q(t) + "=" + Q(Hn(e)))
2737 }) : n.push(Q(t) + "=" + Q(Hn(e))))
2744 this.$get = function() {
2745 return function(e) {
2748 return function n(e, r, i) {
2749 ke(e) ? ve(e, function(e, t) {
2750 n(e, r + "[" + (Ee(e) ? t : "") + "]")
2751 }) : Ee(e) && !C(e) ? s(e, function(e, t) {
2752 n(e, r + (i ? "" : "[") + t + (i ? "" : "]"))
2753 }) : (Te(e) && (e = e()), t.push(Q(r) + "=" + (null == e ? "" : Q(Hn(e)))))
2754 }(e, "", !0), t.join("&")
2761 var n = t.replace(Rn, "").trim();
2763 var r = e("Content-Type"),
2764 i = r && 0 === r.indexOf(Dn);
2765 if (i || (a = (o = n).match(Nn)) && In[a[0]].test(o)) try {
2769 throw Pn("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', t, e)
2781 e && (n[e] = n[e] ? n[e] + ", " + t : t)
2783 return Ce(e) ? ve(e.split("\n"), function(e) {
2784 t = e.indexOf(":"), r(me(Se(e.substr(0, t))), Se(e.substr(t + 1)))
2785 }) : Ee(e) && ve(e, function(e, t) {
2792 return function(e) {
2793 if (r || (r = qn(n)), e) {
2795 return void 0 === t && (t = null), t
2801 function Vn(t, n, r, e) {
2802 return Te(e) ? e(t, n, r) : (ve(e, function(e) {
2808 return 200 <= e && e < 300
2812 var C = this.defaults = {
2813 transformResponse: [Fn],
2814 transformRequest: [function(e) {
2815 return Ee(e) && (r = e, "[object File]" !== ge.call(r)) && (n = e, "[object Blob]" !== ge.call(n)) && (t = e, "[object FormData]" !== ge.call(t)) ? V(e) : e;
2820 Accept: "application/json, text/plain, */*"
2826 xsrfCookieName: "XSRF-TOKEN",
2827 xsrfHeaderName: "X-XSRF-TOKEN",
2828 paramSerializer: "$httpParamSerializer",
2829 jsonpCallbackParam: "callback"
2832 this.useApplyAsync = function(e) {
2833 return O(e) ? (k = !!e, this) : k
2835 var t = this.interceptors = [],
2836 r = this.xsrfWhitelistedOrigins = [];
2837 this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(s, g, v, e, b, y, l, _) {
2839 C.paramSerializer = Ce(C.paramSerializer) ? l.get(C.paramSerializer) : C.paramSerializer;
2842 c.unshift(Ce(e) ? l.get(e) : l.invoke(e))
2844 var n, w = (n = [ui].concat(r.map(fi)), function(e) {
2846 return n.some(hi.bind(null, t))
2850 if (!Ee(e)) throw M("$http")("badreq", "Http request configuration must be an object. Received: {0}", e);
2851 if (!Ce(_.valueOf(e.url))) throw M("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object. Received: {0}", e.url);
2854 transformRequest: C.transformRequest,
2855 transformResponse: C.transformResponse,
2856 paramSerializer: C.paramSerializer,
2857 jsonpCallbackParam: C.jsonpCallbackParam
2859 n.headers = function(e) {
2860 var t, n, r, i = C.headers,
2861 o = be({}, e.headers);
2862 i = be({}, i.common, i[me(e.method)]);
2864 for (r in n = me(t), o)
2865 if (me(r) === n) continue e;
2868 return a = o, s = We(e), c = {}, ve(a, function(e, t) {
2869 Te(e) ? null != (l = e(s)) && (c[t] = l) : c[t] = e
2872 }(e), n.method = f(n.method), n.paramSerializer = Ce(n.paramSerializer) ? l.get(n.paramSerializer) : n.paramSerializer, s.$$incOutstandingRequestCount("$http");
2876 return ve(c, function(e) {
2877 (e.request || e.requestError) && t.unshift(e.request, e.requestError), (e.response || e.responseError) && r.push(e.response, e.responseError)
2878 }), i = (i = o(i = (i = o(i, t)).then(function(e) {
2880 t = Vn(e.data, Un(n), void 0, e.transformRequest);
2881 we(t) && ve(n, function(e, t) {
2882 "content-type" === me(t) && delete n[t]
2884 we(e.withCredentials) && !we(C.withCredentials) && (e.withCredentials = C.withCredentials);
2885 return function(o, e) {
2886 var a, t, s = y.defer(),
2889 i = "jsonp" === me(o.method),
2891 i ? l = _.getTrustedResourceUrl(l) : Ce(l) || (l = _.valueOf(l));
2892 c = l, u = o.paramSerializer(o.params), 0 < u.length && (c += (-1 === c.indexOf("?") ? "?" : "&") + u), l = c, i && (l = function(n, r) {
2893 var e = n.split("?");
2894 if (2 < e.length) throw Pn("badjsonp", 'Illegal use more than one "?", in url, "{1}"', n);
2895 return ve(Z(e[1]), function(e, t) {
2896 if ("JSON_CALLBACK" === e) throw Pn("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', n);
2897 if (t === r) throw Pn("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', r, n)
2898 }), n += (-1 === n.indexOf("?") ? "?" : "&") + r + "=JSON_CALLBACK"
2899 }(l, o.jsonpCallbackParam));
2901 E.pendingRequests.push(o), n.then(m, m), !o.cache && !C.cache || !1 === o.cache || "GET" !== o.method && "JSONP" !== o.method || (a = Ee(o.cache) ? o.cache : Ee(C.cache) ? C.cache : $);
2902 a && (O(t = a.get(l)) ? T(t) ? t.then(p, p) : ke(t) ? h(t[1], t[0], We(t[2]), t[3], t[4]) : h(t, 200, {}, "OK", "complete") : a.put(l, n));
2904 var d = w(o.url) ? v()[o.xsrfCookieName || C.xsrfCookieName] : void 0;
2905 d && (r[o.xsrfHeaderName || C.xsrfHeaderName] = d), g(o.method, l, e, function(e, t, n, r, i) {
2906 a && (Bn(e) ? a.put(l, [e, t, qn(n), r, i]) : a.remove(l));
2911 k ? b.$applyAsync(o) : (o(), b.$$phase || b.$apply())
2912 }, r, o.timeout, o.withCredentials, o.responseType, f(o.eventHandlers), f(o.uploadEventHandlers))
2919 return ve(e, function(n, e) {
2920 t[e] = function(e) {
2924 k ? b.$applyAsync(t) : b.$$phase ? t() : b.$apply(t)
2930 function h(e, t, n, r, i) {
2931 (Bn(t = -1 <= t ? t : 0) ? s.resolve : s.reject)({
2942 h(e.data, e.status, We(e.headers()), e.statusText, e.xhrStatus)
2946 var e = E.pendingRequests.indexOf(o); - 1 !== e && E.pendingRequests.splice(e, 1)
2949 }), r)).finally(function() {
2950 s.$$completeOutstandingRequest(_e, "$http")
2954 for (var n = 0, r = t.length; n < r;) {
2959 return t.length = 0, e
2964 return t.data = Vn(e.data, e.headers, e.status, n.transformResponse), Bn(e.status) ? t : y.reject(t)
2967 return E.pendingRequests = [],
2969 ve(arguments, function(n) {
2970 E[n] = function(e, t) {
2971 return E(be({}, t || {}, {
2977 }("get", "delete", "head", "jsonp"),
2979 ve(arguments, function(r) {
2980 E[r] = function(e, t, n) {
2981 return E(be({}, n || {}, {
2988 }("post", "put", "patch"), E.defaults = C, E
2993 this.$get = function() {
2995 return new de.XMLHttpRequest
3001 this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(e, t, n, r) {
3002 return b = r, y = (v = e).defer, _ = t, $ = n[0],
3003 function(e, r, t, i, n, o, a, s, l, c) {
3004 if (r = r || v.url(), "jsonp" === me(e)) var u = _.createCallback(r),
3005 d = function(e, r, i) {
3006 e = e.replace("JSON_CALLBACK", r);
3007 var o = $.createElement("script"),
3009 return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
3010 o.removeEventListener("load", a), o.removeEventListener("error", a), $.body.removeChild(o), o = null;
3013 e && ("load" !== e.type || _.wasCalled(r) || (e = {
3015 }), n = e.type, t = "error" === e.type ? 404 : 200), i && i(t, n)
3016 }, o.addEventListener("load", a), o.addEventListener("error", a), $.body.appendChild(o), a
3017 }(r, u, function(e, t) {
3018 var n = 200 === e && _.getResponse(u);
3019 g(i, e, n, "", t, "complete"), _.removeCallback(u)
3024 if (f.open(e, r, !0), ve(n, function(e, t) {
3025 O(e) && f.setRequestHeader(t, e)
3026 }), f.onload = function() {
3027 var e = f.statusText || "",
3028 t = "response" in f ? f.response : f.responseText,
3029 n = 1223 === f.status ? 204 : f.status;
3030 0 === n && (n = t ? 200 : "file" === fi(r).protocol ? 404 : 0), g(i, n, t, f.getAllResponseHeaders(), e, "complete")
3031 }, f.onerror = function() {
3032 g(i, -1, null, null, "", "error")
3033 }, f.ontimeout = function() {
3034 g(i, -1, null, null, "", "timeout")
3035 }, f.onabort = function() {
3036 g(i, -1, null, null, "", h ? "timeout" : "abort")
3037 }, ve(l, function(e, t) {
3038 f.addEventListener(t, e)
3039 }), ve(c, function(e, t) {
3040 f.upload.addEventListener(t, e)
3041 }), a && (f.withCredentials = !0), s) try {
3044 if ("json" !== s) throw e
3046 f.send(we(t) ? null : t)
3048 if (0 < o) var p = y(function() {
3051 else T(o) && o.then(function() {
3052 m(O(o.$$timeoutId) ? "timeout" : "abort")
3056 h = "timeout" === e, d && d(), f && f.abort()
3059 function g(e, t, n, r, i, o) {
3060 O(p) && y.cancel(p), d = f = null, e(t, n, r, i, o)
3066 var Gn = y.$interpolateMinErr = M("$interpolate");
3071 this.startSymbol = function(e) {
3072 return e ? (x = e, this) : x
3073 }, this.endSymbol = function(e) {
3074 return e ? (T = e, this) : T
3075 }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(y, _, $) {
3078 t = new RegExp(x.replace(/./g, e), "g"),
3079 n = new RegExp(T.replace(/./g, e), "g");
3086 return e.replace(t, x).replace(n, T)
3089 function k(e, t, n, r) {
3090 var i = e.$watch(function(e) {
3096 function r(i, e, r, o) {
3097 var a = r === $.URL || r === $.MEDIA_URL;
3098 if (!i.length || -1 === i.indexOf(x)) {
3101 a && (t = $.getTrusted(r, t));
3103 return n.exp = i, n.expressions = [], n.$$watchDelegate = k, n
3106 for (var s, l, c, u, d, f = 0, h = [], p = i.length, m = [], g = []; f < p;) {
3107 if (-1 === (s = i.indexOf(x, f)) || -1 === (l = i.indexOf(T, s + w))) {
3108 f !== p && m.push(C(i.substring(f)));
3111 f !== s && m.push(C(i.substring(f, s))), u = i.substring(s + w, l), h.push(u), f = l + E, g.push(m.length), m.push("")
3113 d = 1 === m.length && 1 === g.length;
3114 var v = a && d ? void 0 : function(e) {
3116 return e = r && !a ? $.getTrusted(r, e) : $.valueOf(e), o && !O(e) ? e : ue(e)
3121 if (c = h.map(function(e) {
3123 }), !e || h.length) {
3124 var b = function(e) {
3125 for (var t = 0, n = h.length; t < n; t++) {
3126 if (o && we(e[t])) return;
3129 return a ? $.getTrusted(r, d ? m[0] : m.join("")) : (r && 1 < m.length && Gn.throwNoconcat(i), m.join(""))
3131 return be(function(e) {
3136 for (; t < n; t++) r[t] = c[t](e);
3144 $$watchDelegate: function(r, i) {
3146 return r.$watchGroup(c, function(e, t) {
3148 i.call(this, n, e !== t ? o : n, r), o = n
3154 return r.startSymbol = function() {
3156 }, r.endSymbol = function() {
3161 Gn.throwNoconcat = function(e) {
3162 throw Gn("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)
3163 }, Gn.interr = function(e, t) {
3164 return Gn("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
3166 var Zn = M("$interval");
3169 this.$get = ["$$intervalFactory", "$window", function(e, i) {
3172 i.clearInterval(e), delete o[e]
3174 t = e(function(e, t, n) {
3175 var r = i.setInterval(e, t);
3178 return t.cancel = function(e) {
3180 if (!e.hasOwnProperty("$$intervalId")) throw Zn("badprom", "`$interval.cancel()` called with a promise that was not generated by `$interval()`.");
3181 if (!o.hasOwnProperty(e.$$intervalId)) return !1;
3182 var t = e.$$intervalId,
3184 return Vr(n.promise), n.reject("canceled"), r(t), !0
3190 this.$get = ["$browser", "$q", "$$q", "$rootScope", function(h, p, m, g) {
3191 return function(d, f) {
3192 return function(e, t, n, r) {
3193 var i = 4 < arguments.length,
3194 o = i ? Re(arguments, 4) : [],
3197 l = (s ? m : p).defer(),
3201 i ? e.apply(null, o) : e(a)
3203 return n = O(n) ? n : 0, c.$$intervalId = d(function() {
3204 s ? h.defer(u) : g.$evalAsync(u), l.notify(a++), 0 < n && n <= a && (l.resolve(a), f(c.$$intervalId)), s || g.$apply()
3210 var Jn = function() {
3211 this.$get = function() {
3212 var o = y.callbacks,
3215 createCallback: function(e) {
3216 var t, n = "_" + (o.$$counter++).toString(36),
3217 r = "angular.callbacks." + n,
3218 i = ((t = function(e) {
3219 t.data = e, t.called = !0
3221 return a[r] = o[n] = i, r
3223 wasCalled: function(e) {
3226 getResponse: function(e) {
3229 removeCallback: function(e) {
3231 delete o[t.id], delete a[e]
3236 er = /^([^?#]*)(\?([^#]*))?(#(.*))?$/,
3242 nr = M("$location");
3244 function rr(e, t, n) {
3245 var r, i = (r = [], ve(t, function(e, t) {
3246 ke(e) ? ve(e, function(e) {
3247 r.push(Q(t, !0) + (!0 === e ? "" : "=" + Q(e, !0)))
3248 }) : r.push(Q(t, !0) + (!0 === e ? "" : "=" + Q(e, !0)))
3249 }), r.length ? r.join("&") : ""),
3250 o = n ? "#" + X(n) : "";
3251 return function(e) {
3252 for (var t = e.split("/"), n = t.length; n--;) t[n] = X(t[n].replace(/%2F/g, "/"));
3254 }(e) + (i ? "?" + i : "") + o
3259 t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = _(n.port) || tr[n.protocol] || null
3261 var or = /^\s*[\\/]{2,}/;
3263 function ar(e, t, n) {
3264 if (or.test(e)) throw nr("badpath", 'Invalid url "{0}".', e);
3265 var r = "/" !== e.charAt(0);
3268 o = r && "/" === i.pathname.charAt(0) ? i.pathname.substring(1) : i.pathname;
3269 t.$$path = function(e, t) {
3270 for (var n = e.split("/"), r = n.length; r--;) n[r] = decodeURIComponent(n[r]), t && (n[r] = n[r].replace(/\//g, "%2F"));
3272 }(o, n), t.$$search = Z(i.search), t.$$hash = decodeURIComponent(i.hash), t.$$path && "/" !== t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
3276 return e.slice(0, t.length) === t
3280 if (sr(t, e)) return t.substr(e.length)
3284 var t = e.indexOf("#");
3285 return -1 === t ? e : e.substr(0, t)
3288 function ur(o, a, s) {
3289 this.$$html5 = !0, s = s || "", ir(o, this), this.$$parse = function(e) {
3291 if (!Ce(t)) throw nr("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, a);
3292 ar(t, this, !0), this.$$path || (this.$$path = "/"), this.$$compose()
3293 }, this.$$normalizeUrl = function(e) {
3294 return a + e.substr(1)
3295 }, this.$$parseLinkUrl = function(e, t) {
3296 return t && "#" === t[0] ? (this.hash(t.slice(1)), !0) : (O(n = lr(o, e)) ? (r = n, i = s && O(n = lr(s, n)) ? a + (lr("/", n) || n) : o + r) : O(n = lr(a, e)) ? i = a + n : a === e + "/" && (i = a), i && this.$$parse(i), !!i);
3301 function dr(r, i, o) {
3302 ir(r, this), this.$$parse = function(e) {
3303 var t, n = lr(r, e) || lr(i, e);
3304 we(n) || "#" !== n.charAt(0) ? this.$$html5 ? t = n : (t = "", we(n) && (r = e, this.replace())) : we(t = lr(o, n)) && (t = n), ar(t, this, !1), this.$$path = function(e, t, n) {
3305 var r, i = /^\/[A-Z]:(\/.*)/;
3306 sr(t, n) && (t = t.replace(n, ""));
3307 if (i.exec(t)) return e;
3308 return (r = i.exec(e)) ? r[1] : e
3309 }(this.$$path, t, r), this.$$compose()
3310 }, this.$$normalizeUrl = function(e) {
3311 return r + (e ? o + e : "")
3312 }, this.$$parseLinkUrl = function(e, t) {
3313 return cr(r) === cr(e) && (this.$$parse(e), !0)
3317 function fr(i, o, a) {
3318 this.$$html5 = !0, dr.apply(this, arguments), this.$$parseLinkUrl = function(e, t) {
3319 return t && "#" === t[0] ? (this.hash(t.slice(1)), !0) : (i === cr(e) ? n = e : (r = lr(o, e)) ? n = i + a + r : o === e + "/" && (n = o), n && this.$$parse(n), !!n);
3321 }, this.$$normalizeUrl = function(e) {
3329 $$compose: function() {
3330 this.$$url = rr(this.$$path, this.$$search, this.$$hash), this.$$absUrl = this.$$normalizeUrl(this.$$url), this.$$urlUpdatedByLocation = !0
3332 absUrl: pr("$$absUrl"),
3334 if (we(e)) return this.$$url;
3336 return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
3338 protocol: pr("$$protocol"),
3341 path: mr("$$path", function(e) {
3342 return "/" === (e = null !== e ? e.toString() : "").charAt(0) ? e : "/" + e
3344 search: function(n, e) {
3345 switch (arguments.length) {
3347 return this.$$search;
3349 if (Ce(n) || E(n)) n = n.toString(), this.$$search = Z(n);
3351 if (!Ee(n)) throw nr("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
3352 ve(n = j(n, {}), function(e, t) {
3353 null == e && delete n[t]
3354 }), this.$$search = n
3358 we(e) || null === e ? delete this.$$search[n] : this.$$search[n] = e
3360 return this.$$compose(), this
3362 hash: mr("$$hash", function(e) {
3363 return null !== e ? e.toString() : ""
3365 replace: function() {
3366 return this.$$replace = !0, this
3377 return function(e) {
3378 return we(e) ? this[t] : (this[t] = n(e), this.$$compose(), this)
3389 this.hashPrefix = function(e) {
3390 return O(e) ? (v = e, this) : v
3391 }, this.html5Mode = function(e) {
3392 return Ae(e) ? (b.enabled = e, this) : Ee(e) ? (Ae(e.enabled) && (b.enabled = e.enabled), Ae(e.requireBase) && (b.requireBase = e.requireBase), (Ae(e.rewriteLinks) || Ce(e.rewriteLinks)) && (b.rewriteLinks = e.rewriteLinks), this) : b
3393 }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(s, l, c, o, e) {
3394 var u, t, n, r, i = l.baseHref(),
3397 if (!i && b.requireBase) throw nr("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
3398 n = (r = a).substring(0, r.indexOf("/", r.indexOf("//") + 2)) + (i || "/"), t = c.history ? ur : fr
3399 } else n = cr(a), t = dr;
3400 var d, f = (d = n).substr(0, cr(d).lastIndexOf("/") + 1);
3401 (u = new t(n, f, "#" + v)).$$parseLinkUrl(a, a), u.$$state = l.state();
3402 var h = /^\s*(javascript|mailto):/i;
3404 function p(e, t, n) {
3408 l.url(e, t, n), u.$$state = l.state()
3410 throw u.url(r), u.$$state = i, e
3413 o.on("click", function(e) {
3414 var t = b.rewriteLinks;
3415 if (t && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 !== e.which && 2 !== e.button) {
3416 for (var n = he(e.target);
3418 if (n[0] === o[0] || !(n = n.parent())[0]) return;
3419 if (!Ce(t) || !we(n.attr(t))) {
3420 var r = n.prop("href"),
3421 i = n.attr("href") || n.attr("xlink:href");
3422 Ee(r) && "[object SVGAnimatedString]" === r.toString() && (r = fi(r.animVal).href), h.test(r) || !r || n.attr("target") || e.isDefaultPrevented() || u.$$parseLinkUrl(r, i) && (e.preventDefault(), u.absUrl() !== l.url() && s.$apply())
3425 }), u.absUrl() !== a && l.url(u.absUrl(), !0);
3427 return l.onUrlChange(function(r, i) {
3428 sr(r, f) ? (s.$evalAsync(function() {
3429 var e, t = u.absUrl(),
3431 u.$$parse(r), u.$$state = i, e = s.$broadcast("$locationChangeStart", r, t, i, n).defaultPrevented, u.absUrl() === r && (e ? (u.$$parse(t), p(t, !1, u.$$state = n)) : (m = !1, g(t, n)))
3432 }), s.$$phase || s.$digest()) : e.location.href = r
3433 }), s.$watch(function() {
3434 if (m || u.$$urlUpdatedByLocation) {
3435 u.$$urlUpdatedByLocation = !1;
3440 o = !((t = n) === (a = e) || fi(t).href === fi(a).href) || u.$$html5 && c.history && r !== u.$$state;
3441 (m || o) && (m = !1, s.$evalAsync(function() {
3443 t = s.$broadcast("$locationChangeStart", e, n, u.$$state, r).defaultPrevented;
3444 u.absUrl() === e && (t ? (u.$$parse(n), u.$$state = r) : (o && p(e, i, r === u.$$state ? null : u.$$state), g(n, r)))
3452 s.$broadcast("$locationChangeSuccess", u.absUrl(), e, u.$$state, t)
3460 this.debugEnabled = function(e) {
3461 return O(e) ? (r = e, this) : r
3462 }, this.$get = ["$window", function(n) {
3463 var e, i = fe || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
3469 debug: (e = t("debug"), function() {
3470 r && e.apply(o, arguments)
3475 var t = n.console || {},
3476 r = t[e] || t.log || _e;
3479 return ve(arguments, function(e) {
3481 n.push((xe(t = e) && (t.stack && i ? t = t.message && -1 === t.stack.indexOf(t.message) ? "Error: " + t.message + "\n" + t.stack : t.stack : t.sourceURL && (t = t.message + "\n" + t.sourceURL + ":" + t.line)), t))
3482 }), Function.prototype.apply.call(r, t, n)
3487 ve([fr, dr, ur], function(t) {
3488 t.prototype = Object.create(hr), t.prototype.state = function(e) {
3489 if (!arguments.length) return this.$$state;
3490 if (t !== ur || !this.$$html5) throw nr("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
3491 return this.$$state = we(e) ? null : e, this.$$urlUpdatedByLocation = !0, this
3494 var br = M("$parse"),
3495 yr = {}.constructor.prototype.valueOf;
3501 ve("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
3519 for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
3520 var t = this.text.charAt(this.index);
3521 if ('"' === t || "'" === t) this.readString(t);
3522 else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
3523 else if (this.isIdentifierStart(this.peekMultichar())) this.readIdent();
3524 else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
3528 else if (this.isWhitespace(t)) this.index++;
3530 var n = t + this.peek(),
3531 r = n + this.peek(2),
3536 var s = a ? r : o ? n : t;
3541 }), this.index += s.length
3542 } else this.throwError("Unexpected next character ", this.index, this.index + 1)
3547 is: function(e, t) {
3548 return -1 !== t.indexOf(e)
3552 return this.index + t < this.text.length && this.text.charAt(this.index + t)
3554 isNumber: function(e) {
3555 return "0" <= e && e <= "9" && "string" == typeof e
3557 isWhitespace: function(e) {
3558 return " " === e || "\r" === e || "\t" === e || "\n" === e || "\v" === e || " " === e
3560 isIdentifierStart: function(e) {
3561 return this.options.isIdentifierStart ? this.options.isIdentifierStart(e, this.codePointAt(e)) : this.isValidIdentifierStart(e)
3563 isValidIdentifierStart: function(e) {
3564 return "a" <= e && e <= "z" || "A" <= e && e <= "Z" || "_" === e || "$" === e
3566 isIdentifierContinue: function(e) {
3567 return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(e, this.codePointAt(e)) : this.isValidIdentifierContinue(e)
3569 isValidIdentifierContinue: function(e, t) {
3570 return this.isValidIdentifierStart(e, t) || this.isNumber(e)
3572 codePointAt: function(e) {
3573 return 1 === e.length ? e.charCodeAt(0) : (e.charCodeAt(0) << 10) + e.charCodeAt(1) - 56613888
3575 peekMultichar: function() {
3576 var e = this.text.charAt(this.index),
3579 var n = e.charCodeAt(0),
3580 r = t.charCodeAt(0);
3581 return 55296 <= n && n <= 56319 && 56320 <= r && r <= 57343 ? e + t : e
3583 isExpOperator: function(e) {
3584 return "-" === e || "+" === e || this.isNumber(e)
3586 throwError: function(e, t, n) {
3587 n = n || this.index;
3588 var r = O(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
3589 throw br("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
3591 readNumber: function() {
3592 for (var e = "", t = this.index; this.index < this.text.length;) {
3593 var n = me(this.text.charAt(this.index));
3594 if ("." === n || this.isNumber(n)) e += n;
3596 var r = this.peek();
3597 if ("e" === n && this.isExpOperator(r)) e += n;
3598 else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" === e.charAt(e.length - 1)) e += n;
3600 if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" !== e.charAt(e.length - 1)) break;
3601 this.throwError("Invalid exponent")
3613 readIdent: function() {
3615 for (this.index += this.peekMultichar().length; this.index < this.text.length;) {
3616 var t = this.peekMultichar();
3617 if (!this.isIdentifierContinue(t)) break;
3618 this.index += t.length
3622 text: this.text.slice(e, this.index),
3626 readString: function(e) {
3629 for (var n = "", r = e, i = !1; this.index < this.text.length;) {
3630 var o = this.text.charAt(this.index);
3633 var a = this.text.substring(this.index + 1, this.index + 5);
3634 a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
3639 } else if ("\\" === o) i = !0;
3641 if (o === e) return this.index++, void this.tokens.push({
3651 this.throwError("Unterminated quote", t)
3654 var Cr = function(e, t) {
3655 this.lexer = e, this.options = t
3659 return void 0 !== e ? e : t
3663 return void 0 === e ? t : void 0 === t ? e : e + t
3665 Cr.Program = "Program", Cr.ExpressionStatement = "ExpressionStatement", Cr.AssignmentExpression = "AssignmentExpression", Cr.ConditionalExpression = "ConditionalExpression", Cr.LogicalExpression = "LogicalExpression", Cr.BinaryExpression = "BinaryExpression", Cr.UnaryExpression = "UnaryExpression", Cr.CallExpression = "CallExpression", Cr.MemberExpression = "MemberExpression", Cr.Identifier = "Identifier", Cr.Literal = "Literal", Cr.ArrayExpression = "ArrayExpression", Cr.Property = "Property", Cr.ObjectExpression = "ObjectExpression", Cr.ThisExpression = "ThisExpression", Cr.LocalsExpression = "LocalsExpression", Cr.NGValueParameter = "NGValueParameter", Cr.prototype = {
3667 this.text = e, this.tokens = this.lexer.lex(e);
3668 var t = this.program();
3669 return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
3671 program: function() {
3673 if (0 < this.tokens.length && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
3678 expressionStatement: function() {
3680 type: Cr.ExpressionStatement,
3681 expression: this.filterChain()
3684 filterChain: function() {
3685 for (var e = this.expression(); this.expect("|");) e = this.filter(e);
3688 expression: function() {
3689 return this.assignment()
3691 assignment: function() {
3692 var e = this.ternary();
3693 if (this.expect("=")) {
3694 if (!Dr(e)) throw br("lval", "Trying to assign a value to a non l-value");
3696 type: Cr.AssignmentExpression,
3698 right: this.assignment(),
3704 ternary: function() {
3705 var e, t, n = this.logicalOR();
3706 return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
3707 type: Cr.ConditionalExpression,
3713 logicalOR: function() {
3714 for (var e = this.logicalAND(); this.expect("||");) e = {
3715 type: Cr.LogicalExpression,
3718 right: this.logicalAND()
3722 logicalAND: function() {
3723 for (var e = this.equality(); this.expect("&&");) e = {
3724 type: Cr.LogicalExpression,
3727 right: this.equality()
3731 equality: function() {
3732 for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
3733 type: Cr.BinaryExpression,
3736 right: this.relational()
3740 relational: function() {
3741 for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
3742 type: Cr.BinaryExpression,
3745 right: this.additive()
3749 additive: function() {
3750 for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
3751 type: Cr.BinaryExpression,
3754 right: this.multiplicative()
3758 multiplicative: function() {
3759 for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
3760 type: Cr.BinaryExpression,
3769 return (e = this.expect("+", "-", "!")) ? {
3770 type: Cr.UnaryExpression,
3773 argument: this.unary()
3776 primary: function() {
3778 for (this.expect("(") ? (e = this.filterChain(), this.consume(")")) : this.expect("[") ? e = this.arrayDeclaration() : this.expect("{") ? e = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? e = j(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? e = {
3780 value: this.options.literals[this.consume().text]
3781 } : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek()); t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
3782 type: Cr.CallExpression,
3784 arguments: this.parseArguments()
3785 }, this.consume(")")) : "[" === t.text ? (e = {
3786 type: Cr.MemberExpression,
3788 property: this.expression(),
3790 }, this.consume("]")) : "." === t.text ? e = {
3791 type: Cr.MemberExpression,
3793 property: this.identifier(),
3795 } : this.throwError("IMPOSSIBLE");
3798 filter: function(e) {
3799 for (var t = [e], n = {
3800 type: Cr.CallExpression,
3801 callee: this.identifier(),
3804 }; this.expect(":");) t.push(this.expression());
3807 parseArguments: function() {
3809 if (")" !== this.peekToken().text)
3810 for (; e.push(this.filterChain()), this.expect(","););
3813 identifier: function() {
3814 var e = this.consume();
3815 return e.identifier || this.throwError("is not a valid identifier", e), {
3816 type: Cr.Identifier,
3820 constant: function() {
3823 value: this.consume().value
3826 arrayDeclaration: function() {
3828 if ("]" !== this.peekToken().text)
3830 if (this.peek("]")) break;
3831 e.push(this.expression())
3832 } while (this.expect(","));
3833 return this.consume("]"), {
3834 type: Cr.ArrayExpression,
3838 object: function() {
3840 if ("}" !== this.peekToken().text)
3842 if (this.peek("}")) break;
3846 }, 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)
3847 } while (this.expect(","));
3848 return this.consume("}"), {
3849 type: Cr.ObjectExpression,
3853 throwError: function(e, t) {
3854 throw br("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))
3856 consume: function(e) {
3857 if (0 === this.tokens.length) throw br("ueoe", "Unexpected end of expression: {0}", this.text);
3858 var t = this.expect(e);
3859 return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
3861 peekToken: function() {
3862 if (0 === this.tokens.length) throw br("ueoe", "Unexpected end of expression: {0}", this.text);
3863 return this.tokens[0]
3865 peek: function(e, t, n, r) {
3866 return this.peekAhead(0, e, t, n, r)
3868 peekAhead: function(e, t, n, r, i) {
3869 if (this.tokens.length > e) {
3870 var o = this.tokens[e],
3872 if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
3876 expect: function(e, t, n, r) {
3877 var i = this.peek(e, t, n, r);
3878 return !!i && (this.tokens.shift(), i)
3882 type: Cr.ThisExpression
3885 type: Cr.LocalsExpression
3892 function Ar(e, t, n) {
3893 var r, i, o, a, s, l = e.isPure = function(e, t) {
3895 case Cr.MemberExpression:
3896 if (e.computed) return !1;
3898 case Cr.UnaryExpression:
3900 case Cr.BinaryExpression:
3901 return "+" !== e.operator && Tr;
3902 case Cr.CallExpression:
3905 return void 0 === t ? Mr : t
3909 r = !0, ve(e.body, function(e) {
3910 Ar(e.expression, t, l), r = r && e.expression.constant
3914 e.constant = !0, e.toWatch = [];
3916 case Cr.UnaryExpression:
3917 Ar(e.argument, t, l), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
3919 case Cr.BinaryExpression:
3920 Ar(e.left, t, l), Ar(e.right, t, l), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
3922 case Cr.LogicalExpression:
3923 Ar(e.left, t, l), Ar(e.right, t, l), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
3925 case Cr.ConditionalExpression:
3926 Ar(e.test, t, l), Ar(e.alternate, t, l), Ar(e.consequent, t, l), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
3929 e.constant = !1, e.toWatch = [e];
3931 case Cr.MemberExpression:
3932 Ar(e.object, t, l), e.computed && Ar(e.property, t, l), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = e.constant ? [] : [e];
3934 case Cr.CallExpression:
3935 o = !!e.filter && (a = t, s = e.callee.name, !a(s).$stateful), r = o, i = [], ve(e.arguments, function(e) {
3936 Ar(e, t, l), r = r && e.constant, i.push.apply(i, e.toWatch)
3937 }), e.constant = r, e.toWatch = o ? i : [e];
3939 case Cr.AssignmentExpression:
3940 Ar(e.left, t, l), Ar(e.right, t, l), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
3942 case Cr.ArrayExpression:
3943 r = !0, i = [], ve(e.elements, function(e) {
3944 Ar(e, t, l), r = r && e.constant, i.push.apply(i, e.toWatch)
3945 }), e.constant = r, e.toWatch = i;
3947 case Cr.ObjectExpression:
3948 r = !0, i = [], ve(e.properties, function(e) {
3949 Ar(e.value, t, l), r = r && e.value.constant, i.push.apply(i, e.value.toWatch), e.computed && (Ar(e.key, t, !1), r = r && e.key.constant, i.push.apply(i, e.key.toWatch))
3950 }), e.constant = r, e.toWatch = i;
3952 case Cr.ThisExpression:
3953 case Cr.LocalsExpression:
3954 e.constant = !1, e.toWatch = []
3959 if (1 === e.length) {
3960 var t = e[0].expression,
3962 return 1 !== n.length ? n : n[0] !== t ? n : void 0
3967 return e.type === Cr.Identifier || e.type === Cr.MemberExpression
3971 if (1 === e.body.length && Dr(e.body[0].expression)) return {
3972 type: Cr.AssignmentExpression,
3973 left: e.body[0].expression,
3975 type: Cr.NGValueParameter
3989 function Rr(e, t, n) {
3990 this.ast = new Cr(e, n), this.astCompiler = n.csp ? new Ir(t) : new Nr(t)
3994 return Te(e.valueOf) ? e.valueOf() : yr.call(e)
4005 this.addLiteral = function(e, t) {
4007 }, this.setIdentifierFns = function(e, t) {
4008 return s = e, l = t, this
4009 }, this.$get = ["$filter", function(i) {
4011 csp: L().noUnsafeEval,
4013 isIdentifierStart: Te(s) && s,
4014 isIdentifierContinue: Te(l) && l
4016 return e.$$getAst = function(e) {
4017 return new Rr(new Er(o), i, o).getAst(e).ast
4024 if (e = e.trim(), !(n = c[r = e])) n = new Rr(new Er(o), i, o).parse(e), c[r] = p(n);
4033 function f(e, t, n) {
4034 return null == e || null == t ? e === t : !("object" == typeof e && "object" == typeof(e = Pr(e)) && !n) && (e === t || e != e && t != t)
4037 function t(e, t, n, o, r) {
4038 var a, s = o.inputs;
4039 if (1 === s.length) {
4041 return s = s[0], e.$watch(function(e) {
4043 return f(t, i, s.isPure) || (a = o(e, void 0, void 0, [t]), i = t && Pr(t)), a
4046 for (var l = [], c = [], u = 0, d = s.length; u < d; u++) l[u] = f, c[u] = null;
4047 return e.$watch(function(e) {
4048 for (var t = !1, n = 0, r = s.length; n < r; n++) {
4050 (t || (t = !f(i, l[n], s[n].isPure))) && (c[n] = i, l[n] = i && Pr(i))
4052 return t && (a = o(e, void 0, void 0, c)), a
4056 function n(e, t, n, r, i) {
4057 var o, a, s = r.literal ? h : O,
4058 l = r.$$intercepted || r,
4059 c = r.$$interceptor || $e,
4060 u = r.inputs && !l.inputs;
4061 return f.literal = r.literal, f.constant = r.constant, f.inputs = r.inputs, p(f), o = e.$watch(f, t, n, i);
4067 function f(e, t, n, r) {
4068 return a = u && r ? r[0] : l(e, t, n, r), s(a) && e.$$postDigest(d), c(a)
4074 return ve(e, function(e) {
4079 function r(e, t, n, r) {
4080 var i = e.$watch(function(e) {
4087 return e.constant ? e.$$watchDelegate = r : e.oneTime ? e.$$watchDelegate = n : e.inputs && (e.$$watchDelegate = t), e
4092 o.$$interceptor && (a = function(t, n) {
4096 return e.$stateful = t.$stateful || n.$stateful, e.$$pure = t.$$pure && n.$$pure, e
4097 }(o.$$interceptor, a), o = o.$$intercepted);
4099 e = function(e, t, n, r) {
4100 var i = s && r ? r[0] : o(e, t, n, r);
4103 return e.$$intercepted = o, e.$$interceptor = a, e.literal = o.literal, e.oneTime = o.oneTime, e.constant = o.constant, a.$stateful || (s = !o.inputs, e.inputs = o.inputs ? o.inputs : [o], a.$$pure || (e.inputs = e.inputs.map(function(t) {
4104 return t.isPure === Mr ? function(e) {
4114 this.$get = ["$rootScope", "$exceptionHandler", function(t, e) {
4115 return Fr(function(e) {
4118 }], this.errorOnUnhandledRejections = function(e) {
4119 return O(e) ? (n = e, this) : n
4125 this.$get = ["$browser", "$exceptionHandler", function(t, e) {
4126 return Fr(function(e) {
4129 }], this.errorOnUnhandledRejections = function(e) {
4130 return O(e) ? (n = e, this) : n
4134 function Fr(a, s, l) {
4135 var n = M("$q", TypeError),
4144 var t = this.promise = new o;
4145 this.resolve = function(e) {
4147 }, this.reject = function(e) {
4149 }, this.notify = function(e) {
4161 for (; !c && r.length;) {
4165 var t = "Possibly unhandled rejection: " + Ye(e.value);
4166 xe(e.value) ? s(e.value, t) : s(t)
4172 !l || e.pending || 2 !== e.status || qr(e) || (0 === c && 0 === r.length && a(u), r.push(e)), !e.processScheduled && e.pending && (e.processScheduled = !0, ++c, a(function() {
4175 r = e.pending, e.processScheduled = !1, e.pending = void 0;
4177 for (var i = 0, o = r.length; i < o; ++i) {
4178 Ur(e), n = r[i][0], t = r[i][e.status];
4180 Te(t) ? f(n, t(e.value)) : 1 === e.status ? f(n, e.value) : h(n, e.value)
4182 h(n, e), e && !0 === e.$$passToExceptionHandler && s(e)
4186 --c, l && 0 === c && a(u)
4193 e.$$state.status || (t === e ? p(e, n("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : function t(n, e) {
4197 (Ee(e) || Te(e)) && (r = e.then), Te(r) ? (n.$$state.status = -1, r.call(e, o, a, s)) : (n.$$state.value = e, n.$$state.status = 1, d(n.$$state))
4203 i || (i = !0, t(n, e))
4207 i || (i = !0, p(n, e))
4217 e.$$state.status || p(e, t)
4221 e.$$state.value = t, e.$$state.status = 2, d(e.$$state)
4225 var o = e.$$state.pending;
4226 e.$$state.status <= 0 && o && o.length && a(function() {
4227 for (var e, t, n = 0, r = o.length; n < r; n++) {
4228 t = o[n][0], e = o[n][3];
4230 m(t, Te(e) ? e(i) : i)
4243 function v(e, t, n) {
4250 return T(r) ? r.then(function() {
4255 function b(e, t, n, r) {
4257 return f(i, e), i.then(t, n, r)
4260 then: function(e, t, n) {
4261 if (we(e) && we(t) && we(n)) return this;
4263 return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), 0 < this.$$state.status && d(this.$$state), r
4265 catch: function(e) {
4266 return this.then(null, e)
4268 finally: function(t, e) {
4269 return this.then(function(e) {
4279 if (!Te(e)) throw n("norslvr", "Expected resolverFn, got '{0}'", e);
4281 return e(function(e) {
4287 return t.prototype = o.prototype, t.defer = i, t.reject = g, t.when = b, t.resolve = y, t.all = function(e) {
4290 i = ke(e) ? [] : {};
4291 return ve(e, function(e, t) {
4292 r++, b(e).then(function(e) {
4293 i[t] = e, --r || f(n, i)
4297 }), 0 === r && f(n, i), n
4298 }, t.race = function(e) {
4300 return ve(e, function(e) {
4301 b(e).then(t.resolve, t.reject)
4315 e.$$state && Ur(e.$$state)
4319 this.$get = ["$window", "$timeout", function(e, n) {
4320 var r = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
4321 i = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
4323 o = t ? function(e) {
4329 var t = n(e, 16.66, !1);
4334 return o.supported = t, o
4340 k = M("$rootScope"),
4343 this.digestTtl = function(e) {
4344 return arguments.length && (C = e), C
4345 }, this.$get = ["$exceptionHandler", "$parse", "$browser", function(h, p, m) {
4347 e.currentScope.$$destroyed = !0
4351 this.$id = l(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, (this.$root = this).$$destroyed = !1, this.$$suspended = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$$isolateBindings = null
4355 $new: function(e, t) {
4357 return t = t || this, e ? (n = new i).$root = this.$root : (this.$$ChildScope || (this.$$ChildScope = function(e) {
4359 this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = l(), this.$$ChildScope = null, this.$$suspended = !1
4361 return t.prototype = e, t
4362 }(this)), n = new this.$$ChildScope), n.$parent = t, n.$$prevSibling = t.$$childTail, t.$$childHead ? (t.$$childTail.$$nextSibling = n, t.$$childTail = n) : t.$$childHead = t.$$childTail = n, (e || t !== this) && n.$on("$destroy", r), n
4364 $watch: function(e, t, n, r) {
4367 if (i.$$watchDelegate) return i.$$watchDelegate(this, o, n, i, e);
4377 return x = null, s || ((s = a.$$watchers = []).$$digestWatchIndex = -1), s.unshift(l), s.$$digestWatchIndex++, c(this, 1),
4380 0 <= e && (c(a, -1), e < s.$$digestWatchIndex && s.$$digestWatchIndex--), x = null
4383 $watchGroup: function(t, r) {
4384 var i = new Array(t.length),
4385 o = new Array(t.length),
4392 return s.$evalAsync(function() {
4399 if (1 === t.length) return this.$watch(t[0], function(e, t, n) {
4400 o[0] = e, i[0] = t, r(o, e === t ? o : i, n)
4406 n ? (n = !1, r(o, o, s)) : r(o, i, s)
4408 for (var e = 0; e < t.length; e++) i[e] = o[e]
4411 return ve(t, function(e, t) {
4412 var n = s.$watch(e, function(e) {
4413 o[t] = e, l || (l = !0, s.$evalAsync(c))
4418 for (; a.length;) a.shift()()
4421 $watchCollection: function(e, n) {
4422 h.$$pure = p(e).literal, h.$stateful = !h.$$pure;
4423 var a, s, r, i = this,
4437 s !== c && (f = (s = c).length = 0, l++), t = a.length, f !== t && (l++, s.length = f = t);
4438 for (var o = 0; o < t; o++) i = s[o], r = a[o], i != i && r != r || i === r || (l++, s[o] = r)
4440 for (n in s !== u && (s = u = {}, f = 0, l++), t = 0, a) pe.call(a, n) && (t++, r = a[n], i = s[n], n in s ? i != i && r != r || i === r || (l++, s[n] = r) : (f++, s[n] = r, l++));
4442 for (n in l++, s) pe.call(a, n) || (f--, delete s[n])
4444 else s !== a && (s = a, l++);
4448 return this.$watch(t, function() {
4449 if (d ? (d = !1, n(a, a, i)) : n(a, r, i), o)
4452 r = new Array(a.length);
4453 for (var e = 0; e < a.length; e++) r[e] = a[e]
4455 for (var t in r = {}, a) pe.call(a, t) && (r[t] = a[t]);
4459 $digest: function() {
4460 var e, t, n, r, i, o, a, s, l, c = C,
4461 u = v.length ? g : this,
4463 _("$digest"), m.$$checkUrlChange(), this === g && null !== T && (m.defer.cancel(T), E()), x = null;
4466 for (var f = 0; f < v.length; f++) {
4468 (0, (l = v[f]).fn)(l.scope, l.locals)
4476 if (r = !a.$$suspended && a.$$watchers)
4477 for (r.$$digestWatchIndex = r.length; r.$$digestWatchIndex--;) try {
4478 if (e = r[r.$$digestWatchIndex])
4479 if ((t = (0, e.get)(a)) === (n = e.last) || (e.eq ? Ie(t, n) : S(t) && S(n))) {
4484 } else i = !0, (x = e).last = e.eq ? j(t, null) : t, (0, e.fn)(t, n === w ? t : n, a), c < 5 && (d[s = 4 - c] || (d[s] = []), d[s].push({
4485 msg: Te(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
4492 if (!(o = !a.$$suspended && a.$$watchersCount && a.$$childHead || a !== u && a.$$nextSibling))
4493 for (; a !== u && !(o = a.$$nextSibling);) a = a.$parent
4495 if ((i || v.length) && !c--) throw $(), k("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", C, d)
4496 } while (i || v.length);
4497 for ($(); y < b.length;) try {
4502 b.length = y = 0, m.$$checkUrlChange()
4504 $suspend: function() {
4505 this.$$suspended = !0
4507 $isSuspended: function() {
4508 return this.$$suspended
4510 $resume: function() {
4511 this.$$suspended = !1
4513 $destroy: function() {
4514 if (!this.$$destroyed) {
4515 var e = this.$parent;
4516 for (var t in this.$broadcast("$destroy"), this.$$destroyed = !0, this === g && m.$$applicationDestroyed(), c(this, -this.$$watchersCount), this.$$listenerCount) o(this, this.$$listenerCount[t], t);
4517 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 = _e, this.$on = this.$watch = this.$watchGroup = function() {
4519 }, this.$$listeners = {}, this.$$nextSibling = null,
4521 9 === fe && (t.$$childHead && e(t.$$childHead), t.$$nextSibling && e(t.$$nextSibling)), t.$parent = t.$$nextSibling = t.$$prevSibling = t.$$childHead = t.$$childTail = t.$root = t.$$watchers = null
4525 $eval: function(e, t) {
4526 return p(e)(this, t)
4528 $evalAsync: function(e, t) {
4529 g.$$phase || v.length || m.defer(function() {
4530 v.length && g.$digest()
4531 }, null, "$evalAsync"), v.push({
4537 $$postDigest: function(e) {
4540 $apply: function(e) {
4544 return this.$eval(e)
4558 $applyAsync: function(e) {
4560 e && n.push(function() {
4562 }), e = p(e), null === T && (T = m.defer(function() {
4564 }, null, "$applyAsync"))
4566 $on: function(t, n) {
4567 var r = this.$$listeners[t];
4568 r || (this.$$listeners[t] = r = []), r.push(n);
4569 for (var e = this; e.$$listenerCount[t] || (e.$$listenerCount[t] = 0), e.$$listenerCount[t]++, e = e.$parent;);
4572 var e = r.indexOf(n); - 1 !== e && (delete r[e], o(i, 1, t))
4575 $emit: function(e, t) {
4576 var n, r, i, o = [],
4582 stopPropagation: function() {
4585 preventDefault: function() {
4586 l.defaultPrevented = !0
4588 defaultPrevented: !1
4590 c = q([l], arguments, 1);
4592 for (n = a.$$listeners[e] || o, l.currentScope = a, r = 0, i = n.length; r < i; r++)
4597 } else n.splice(r, 1), r--, i--;
4601 return l.currentScope = null, l
4603 $broadcast: function(e, t) {
4610 preventDefault: function() {
4611 o.defaultPrevented = !0
4613 defaultPrevented: !1
4615 if (!n.$$listenerCount[e]) return o;
4616 for (var a, s, l, c = q([o], arguments, 1); r = i;) {
4617 for (s = 0, l = (a = (o.currentScope = r).$$listeners[e] || []).length; s < l; s++)
4622 } else a.splice(s, 1), s--, l--;
4623 if (!(i = r.$$listenerCount[e] && r.$$childHead || r !== n && r.$$nextSibling))
4624 for (; r !== n && !(i = r.$$nextSibling);) r = r.$parent
4626 return o.currentScope = null, o
4630 v = g.$$asyncQueue = [],
4631 b = g.$$postDigestQueue = [],
4632 n = g.$$applyAsyncQueue = [],
4637 if (g.$$phase) throw k("inprog", "{0} already in progress", g.$$phase);
4646 for (; e.$$watchersCount += t, e = e.$parent;);
4649 function o(e, t, n) {
4650 for (; e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n], e = e.$parent;);
4656 for (; n.length;) try {
4667 var i = /^\s*(https?|s?ftp|mailto|tel|file):/,
4668 o = /^\s*((https?|ftp|file|blob):|data:image\/)/;
4669 this.aHrefSanitizationWhitelist = function(e) {
4670 return O(e) ? (i = e, this) : i
4671 }, this.imgSrcSanitizationWhitelist = function(e) {
4672 return O(e) ? (o = e, this) : o
4673 }, this.$get = function() {
4674 return function(e, t) {
4676 r = fi(e && e.trim()).href;
4677 return "" === r || r.match(n) ? e : "unsafe:" + r
4682 compile: function(e) {
4698 }, Ar(e, i.$filter);
4700 if (this.stage = "assign", t = Or(e)) {
4701 this.state.computing = "assign";
4702 var r = this.nextId();
4703 this.recurse(t, r), this.return_(r), n = "fn.assign=" + this.generateFunction("assign", "s,v,l")
4706 i.stage = "inputs", ve(o, function(e, t) {
4712 }, i.state.computing = n;
4714 i.recurse(e, r), i.return_(r), i.state.inputs.push({
4718 }), this.state.computing = "fn", this.stage = "main", this.recurse(e);
4719 var a = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + n + this.watchFns() + "return fn;",
4720 s = new Function("$filter", "getStringValue", "ifDefined", "plus", a)(this.$filter, _r, kr, xr);
4721 return this.state = this.stage = void 0, s
4725 watchFns: function() {
4727 e = this.state.inputs,
4729 return ve(e, function(e) {
4730 t.push("var " + e.name + "=" + n.generateFunction(e.name, "s")), e.isPure && t.push(e.name, ".isPure=" + JSON.stringify(e.isPure) + ";")
4731 }), e.length && t.push("fn.inputs=[" + e.map(function(e) {
4733 }).join(",") + "];"), t.join("")
4735 generateFunction: function(e, t) {
4736 return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
4738 filterPrefix: function() {
4741 return ve(this.state.filters, function(e, t) {
4742 n.push(e + "=$filter(" + r.escape(t) + ")")
4743 }), n.length ? "var " + n.join(",") + ";" : ""
4745 varsPrefix: function(e) {
4746 return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
4749 return this.state[e].body.join("")
4751 recurse: function(n, t, e, r, i, o) {
4752 var a, s, l, c, u, d = this;
4753 if (r = r || _e, !o && O(n.watchId)) return t = t || this.nextId(), void this.if_("i", this.lazyAssign(t, this.computedMember("i", n.watchId)), this.lazyRecurse(n, t, e, r, i, !0));
4756 ve(n.body, function(e, t) {
4757 d.recurse(e.expression, void 0, void 0, function(e) {
4759 }), t !== n.body.length - 1 ? d.current().body.push(s, ";") : d.return_(s)
4763 c = this.escape(n.value), this.assign(t, c), r(t || c);
4765 case Cr.UnaryExpression:
4766 this.recurse(n.argument, void 0, void 0, function(e) {
4768 }), c = n.operator + "(" + this.ifDefined(s, 0) + ")", this.assign(t, c), r(c);
4770 case Cr.BinaryExpression:
4771 this.recurse(n.left, void 0, void 0, function(e) {
4773 }), this.recurse(n.right, void 0, void 0, function(e) {
4775 }), c = "+" === n.operator ? this.plus(a, s) : "-" === n.operator ? this.ifDefined(a, 0) + n.operator + this.ifDefined(s, 0) : "(" + a + ")" + n.operator + "(" + s + ")", this.assign(t, c), r(c);
4777 case Cr.LogicalExpression:
4778 t = t || this.nextId(), d.recurse(n.left, t), d.if_("&&" === n.operator ? t : d.not(t), d.lazyRecurse(n.right, t)), r(t);
4780 case Cr.ConditionalExpression:
4781 t = t || this.nextId(), d.recurse(n.test, t), d.if_(t, d.lazyRecurse(n.alternate, t), d.lazyRecurse(n.consequent, t)), r(t);
4784 t = t || this.nextId(), e && (e.context = "inputs" === d.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", n.name) + "?l:s"), e.computed = !1, e.name = n.name), d.if_("inputs" === d.stage || d.not(d.getHasOwnProperty("l", n.name)), function() {
4785 d.if_("inputs" === d.stage || "s", function() {
4786 i && 1 !== i && d.if_(d.isNull(d.nonComputedMember("s", n.name)), d.lazyAssign(d.nonComputedMember("s", n.name), "{}")), d.assign(t, d.nonComputedMember("s", n.name))
4788 }, t && d.lazyAssign(t, d.nonComputedMember("l", n.name))), r(t);
4790 case Cr.MemberExpression:
4791 a = e && (e.context = this.nextId()) || this.nextId(), t = t || this.nextId(), d.recurse(n.object, a, void 0, function() {
4792 d.if_(d.notNull(a), function() {
4793 n.computed ? (s = d.nextId(), d.recurse(n.property, s), d.getStringValue(s), i && 1 !== i && d.if_(d.not(d.computedMember(a, s)), d.lazyAssign(d.computedMember(a, s), "{}")), c = d.computedMember(a, s), d.assign(t, c), e && (e.computed = !0, e.name = s)) : (i && 1 !== i && d.if_(d.isNull(d.nonComputedMember(a, n.property.name)), d.lazyAssign(d.nonComputedMember(a, n.property.name), "{}")), c = d.nonComputedMember(a, n.property.name), d.assign(t, c), e && (e.computed = !1, e.name = n.property.name))
4795 d.assign(t, "undefined")
4799 case Cr.CallExpression:
4800 t = t || this.nextId(), n.filter ? (s = d.filter(n.callee.name), l = [], ve(n.arguments, function(e) {
4802 d.recurse(e, t), l.push(t)
4803 }), c = s + "(" + l.join(",") + ")", d.assign(t, c), r(t)) : (s = d.nextId(), a = {}, l = [], d.recurse(n.callee, s, a, function() {
4804 d.if_(d.notNull(s), function() {
4805 ve(n.arguments, function(e) {
4806 d.recurse(e, n.constant ? void 0 : d.nextId(), void 0, function(e) {
4809 }), c = a.name ? d.member(a.context, a.name, a.computed) + "(" + l.join(",") + ")" : s + "(" + l.join(",") + ")", d.assign(t, c)
4811 d.assign(t, "undefined")
4815 case Cr.AssignmentExpression:
4816 s = this.nextId(), a = {}, this.recurse(n.left, void 0, a, function() {
4817 d.if_(d.notNull(a.context), function() {
4818 d.recurse(n.right, s), c = d.member(a.context, a.name, a.computed) + n.operator + s, d.assign(t, c), r(t || c)
4822 case Cr.ArrayExpression:
4823 l = [], ve(n.elements, function(e) {
4824 d.recurse(e, n.constant ? void 0 : d.nextId(), void 0, function(e) {
4827 }), c = "[" + l.join(",") + "]", this.assign(t, c), r(t || c);
4829 case Cr.ObjectExpression:
4830 u = !(l = []), ve(n.properties, function(e) {
4831 e.computed && (u = !0)
4832 }), u ? (t = t || this.nextId(), this.assign(t, "{}"), ve(n.properties, function(e) {
4833 e.computed ? (a = d.nextId(), d.recurse(e.key, a)) : a = e.key.type === Cr.Identifier ? e.key.name : "" + e.key.value, s = d.nextId(), d.recurse(e.value, s), d.assign(d.member(t, a, e.computed), s)
4834 })) : (ve(n.properties, function(t) {
4835 d.recurse(t.value, n.constant ? void 0 : d.nextId(), void 0, function(e) {
4836 l.push(d.escape(t.key.type === Cr.Identifier ? t.key.name : "" + t.key.value) + ":" + e)
4838 }), c = "{" + l.join(",") + "}", this.assign(t, c)), r(t || c);
4840 case Cr.ThisExpression:
4841 this.assign(t, "s"), r(t || "s");
4843 case Cr.LocalsExpression:
4844 this.assign(t, "l"), r(t || "l");
4846 case Cr.NGValueParameter:
4847 this.assign(t, "v"), r(t || "v")
4850 getHasOwnProperty: function(e, t) {
4851 var n = e + "." + t,
4852 r = this.current().own;
4853 return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
4855 assign: function(e, t) {
4856 if (e) return this.current().body.push(e, "=", t, ";"), e
4858 filter: function(e) {
4859 return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
4861 ifDefined: function(e, t) {
4862 return "ifDefined(" + e + "," + this.escape(t) + ")"
4864 plus: function(e, t) {
4865 return "plus(" + e + "," + t + ")"
4867 return_: function(e) {
4868 this.current().body.push("return ", e, ";")
4870 if_: function(e, t, n) {
4873 var r = this.current().body;
4874 r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
4878 return "!(" + e + ")"
4880 isNull: function(e) {
4883 notNull: function(e) {
4886 nonComputedMember: function(e, t) {
4887 return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t) ? e + "." + t : e + '["' + t.replace(/[^$_a-zA-Z0-9]/g, this.stringEscapeFn) + '"]'
4889 computedMember: function(e, t) {
4890 return e + "[" + t + "]"
4892 member: function(e, t, n) {
4893 return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
4895 getStringValue: function(e) {
4896 this.assign(e, "getStringValue(" + e + ")")
4898 lazyRecurse: function(e, t, n, r, i, o) {
4901 a.recurse(e, t, n, r, i, o)
4904 lazyAssign: function(e, t) {
4910 stringEscapeRegex: /[^ a-zA-Z0-9]/g,
4911 stringEscapeFn: function(e) {
4912 return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
4914 escape: function(e) {
4915 if (Ce(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
4916 if (E(e)) return e.toString();
4917 if (!0 === e) return "true";
4918 if (!1 === e) return "false";
4919 if (null === e) return "null";
4920 if (void 0 === e) return "undefined";
4921 throw br("esc", "IMPOSSIBLE")
4923 nextId: function(e, t) {
4924 var n = "v" + this.state.nextId++;
4925 return e || this.current().vars.push(n + (t ? "=" + t : "")), n
4927 current: function() {
4928 return this.state[this.state.computing]
4931 compile: function(e) {
4933 Ar(e, i.$filter), (t = Or(e)) && (r = this.recurse(t));
4934 var o, n = Sr(e.body);
4935 n && (o = [], ve(n, function(e, t) {
4936 var n = i.recurse(e);
4937 n.isPure = e.isPure, e.input = n, o.push(n), e.watchId = t
4940 ve(e.body, function(e) {
4941 a.push(i.recurse(e.expression))
4943 var s = 0 === e.body.length ? _e : 1 === e.body.length ? a[0] : function(t, n) {
4945 return ve(a, function(e) {
4949 return r && (s.assign = function(e, t, n) {
4951 }), o && (s.inputs = o), s
4953 recurse: function(e, l, t) {
4954 var a, c, u, n = this;
4955 if (e.input) return this.inputs(e.input, e.watchId);
4958 return this.value(e.value, l);
4959 case Cr.UnaryExpression:
4960 return c = this.recurse(e.argument), this["unary" + e.operator](c, l);
4961 case Cr.BinaryExpression:
4962 case Cr.LogicalExpression:
4963 return a = this.recurse(e.left), c = this.recurse(e.right), this["binary" + e.operator](a, c, l);
4964 case Cr.ConditionalExpression:
4965 return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), l);
4967 return n.identifier(e.name, l, t);
4968 case Cr.MemberExpression:
4969 return a = this.recurse(e.object, !1, !!t), e.computed || (c = e.property.name), e.computed && (c = this.recurse(e.property)), e.computed ? this.computedMember(a, c, l, t) : this.nonComputedMember(a, c, l, t);
4970 case Cr.CallExpression:
4971 return u = [], ve(e.arguments, function(e) {
4972 u.push(n.recurse(e))
4973 }), e.filter && (c = this.$filter(e.callee.name)), e.filter || (c = this.recurse(e.callee, !0)), e.filter ? function(e, t, n, r) {
4974 for (var i = [], o = 0; o < u.length; ++o) i.push(u[o](e, t, n, r));
4975 var a = c.apply(void 0, i, r);
4981 } : function(e, t, n, r) {
4982 var i, o = c(e, t, n, r);
4983 if (null != o.value) {
4984 for (var a = [], s = 0; s < u.length; ++s) a.push(u[s](e, t, n, r));
4985 i = o.value.apply(o.context, a)
4991 case Cr.AssignmentExpression:
4992 return a = this.recurse(e.left, !0, 1), c = this.recurse(e.right),
4993 function(e, t, n, r) {
4994 var i = a(e, t, n, r),
4996 return i.context[i.name] = o, l ? {
5000 case Cr.ArrayExpression:
5001 return u = [], ve(e.elements, function(e) {
5002 u.push(n.recurse(e))
5004 function(e, t, n, r) {
5005 for (var i = [], o = 0; o < u.length; ++o) i.push(u[o](e, t, n, r));
5010 case Cr.ObjectExpression:
5011 return u = [], ve(e.properties, function(e) {
5012 e.computed ? u.push({
5013 key: n.recurse(e.key),
5015 value: n.recurse(e.value)
5017 key: e.key.type === Cr.Identifier ? e.key.name : "" + e.key.value,
5019 value: n.recurse(e.value)
5022 function(e, t, n, r) {
5023 for (var i = {}, o = 0; o < u.length; ++o) u[o].computed ? i[u[o].key(e, t, n, r)] = u[o].value(e, t, n, r) : i[u[o].key] = u[o].value(e, t, n, r);
5028 case Cr.ThisExpression:
5029 return function(e) {
5034 case Cr.LocalsExpression:
5035 return function(e, t) {
5040 case Cr.NGValueParameter:
5041 return function(e, t, n) {
5048 "unary+": function(o, a) {
5049 return function(e, t, n, r) {
5050 var i = o(e, t, n, r);
5051 return i = O(i) ? +i : 0, a ? {
5056 "unary-": function(o, a) {
5057 return function(e, t, n, r) {
5058 var i = o(e, t, n, r);
5059 return i = O(i) ? -i : -0, a ? {
5064 "unary!": function(o, a) {
5065 return function(e, t, n, r) {
5066 var i = !o(e, t, n, r);
5072 "binary+": function(o, a, s) {
5073 return function(e, t, n, r) {
5074 var i = xr(o(e, t, n, r), a(e, t, n, r));
5080 "binary-": function(s, l, c) {
5081 return function(e, t, n, r) {
5082 var i = s(e, t, n, r),
5084 a = (O(i) ? i : 0) - (O(o) ? o : 0);
5090 "binary*": function(o, a, s) {
5091 return function(e, t, n, r) {
5092 var i = o(e, t, n, r) * a(e, t, n, r);
5098 "binary/": function(o, a, s) {
5099 return function(e, t, n, r) {
5100 var i = o(e, t, n, r) / a(e, t, n, r);
5106 "binary%": function(o, a, s) {
5107 return function(e, t, n, r) {
5108 var i = o(e, t, n, r) % a(e, t, n, r);
5114 "binary===": function(o, a, s) {
5115 return function(e, t, n, r) {
5116 var i = o(e, t, n, r) === a(e, t, n, r);
5122 "binary!==": function(o, a, s) {
5123 return function(e, t, n, r) {
5124 var i = o(e, t, n, r) !== a(e, t, n, r);
5130 "binary==": function(o, a, s) {
5131 return function(e, t, n, r) {
5132 var i = o(e, t, n, r) == a(e, t, n, r);
5138 "binary!=": function(o, a, s) {
5139 return function(e, t, n, r) {
5140 var i = o(e, t, n, r) != a(e, t, n, r);
5146 "binary<": function(o, a, s) {
5147 return function(e, t, n, r) {
5148 var i = o(e, t, n, r) < a(e, t, n, r);
5154 "binary>": function(o, a, s) {
5155 return function(e, t, n, r) {
5156 var i = o(e, t, n, r) > a(e, t, n, r);
5162 "binary<=": function(o, a, s) {
5163 return function(e, t, n, r) {
5164 var i = o(e, t, n, r) <= a(e, t, n, r);
5170 "binary>=": function(o, a, s) {
5171 return function(e, t, n, r) {
5172 var i = o(e, t, n, r) >= a(e, t, n, r);
5178 "binary&&": function(o, a, s) {
5179 return function(e, t, n, r) {
5180 var i = o(e, t, n, r) && a(e, t, n, r);
5186 "binary||": function(o, a, s) {
5187 return function(e, t, n, r) {
5188 var i = o(e, t, n, r) || a(e, t, n, r);
5194 "ternary?:": function(o, a, s, l) {
5195 return function(e, t, n, r) {
5196 var i = o(e, t, n, r) ? a(e, t, n, r) : s(e, t, n, r);
5202 value: function(e, t) {
5211 identifier: function(a, s, l) {
5212 return function(e, t, n, r) {
5213 var i = t && a in t ? t : e;
5214 l && 1 !== l && i && null == i[a] && (i[a] = {});
5215 var o = i ? i[a] : void 0;
5223 computedMember: function(s, l, c, u) {
5224 return function(e, t, n, r) {
5225 var i, o, a = s(e, t, n, r);
5226 return null != a && (i = _r(i = l(e, t, n, r)), u && 1 !== u && a && !a[i] && (a[i] = {}), o = a[i]), c ? {
5233 nonComputedMember: function(a, s, l, c) {
5234 return function(e, t, n, r) {
5235 var i = a(e, t, n, r);
5236 c && 1 !== c && i && null == i[s] && (i[s] = {});
5237 var o = null != i ? i[s] : void 0;
5245 inputs: function(i, o) {
5246 return function(e, t, n, r) {
5247 return r ? r[o] : i(e, t, n)
5252 parse: function(e) {
5253 var t, n = this.getAst(e),
5254 r = this.astCompiler.compile(n.ast);
5255 return r.literal = 0 === (t = n.ast).body.length || 1 === t.body.length && (t.body[0].expression.type === Cr.Literal || t.body[0].expression.type === Cr.ArrayExpression || t.body[0].expression.type === Cr.ObjectExpression), r.constant = n.ast.constant, r.oneTime = n.oneTime, r
5257 getAst: function(e) {
5259 return ":" === (e = e.trim()).charAt(0) && ":" === e.charAt(1) && (t = !0, e = e.substring(2)), {
5260 ast: this.ast.ast(e),
5269 MEDIA_URL: "mediaUrl",
5271 RESOURCE_URL: "resourceUrl",
5277 return e.replace(Kr, tt)
5282 return O(e) && ve(e, function(e) {
5283 t.push(function(e) {
5284 if ("self" === e) return e;
5286 if (-1 < e.indexOf("***")) throw Yr("iwcard", "Illegal sequence *** in string matcher. String: {0}", e);
5287 return e = I(e).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"), new RegExp("^" + e + "$")
5289 if (k(e)) return new RegExp("^" + e.source + "$");
5290 throw Yr("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
5296 this.SCE_CONTEXTS = Gr;
5299 this.resourceUrlWhitelist = function(e) {
5300 return arguments.length && (s = Xr(e)), s
5301 }, this.resourceUrlBlacklist = function(e) {
5302 return arguments.length && (l = Xr(e)), l
5303 }, this.$get = ["$injector", "$$sanitizeUri", function(e, r) {
5304 var i = function(e) {
5305 throw Yr("unsafe", "Attempting to use an unsafe value in a safe context.")
5309 return "self" === e ? hi(t, ui) || hi(t, de.document.baseURI ? de.document.baseURI : (li || ((li = de.document.createElement("a")).href = ".", li = li.cloneNode(!1)), li.href)) : !!e.exec(t.href)
5313 var t = function(e) {
5314 this.$$unwrapTrustedValue = function() {
5318 return e && (t.prototype = new e), t.prototype.valueOf = function() {
5319 return this.$$unwrapTrustedValue()
5320 }, t.prototype.toString = function() {
5321 return this.$$unwrapTrustedValue().toString()
5324 e.has("$sanitize") && (i = e.get("$sanitize"));
5327 return a[Gr.HTML] = t(n), a[Gr.CSS] = t(n), a[Gr.MEDIA_URL] = t(n), a[Gr.URL] = t(a[Gr.MEDIA_URL]), a[Gr.JS] = t(n), a[Gr.RESOURCE_URL] = t(a[Gr.URL]), {
5328 trustAs: function(e, t) {
5329 var n = a.hasOwnProperty(e) ? a[e] : null;
5330 if (!n) throw Yr("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
5331 if (null === t || we(t) || "" === t) return t;
5332 if ("string" != typeof t) throw Yr("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
5335 getTrusted: function(e, t) {
5336 if (null === t || we(t) || "" === t) return t;
5337 var n = a.hasOwnProperty(e) ? a[e] : null;
5338 if (n && t instanceof n) return t.$$unwrapTrustedValue();
5339 if (Te(t.$$unwrapTrustedValue) && (t = t.$$unwrapTrustedValue()), e === Gr.MEDIA_URL || e === Gr.URL) return r(t.toString(), e === Gr.MEDIA_URL);
5340 if (e === Gr.RESOURCE_URL) {
5342 var t, n, r = fi(e.toString()),
5344 for (t = 0, n = s.length; t < n; t++)
5349 for (t = 0, n = l.length; t < n; t++)
5355 throw Yr("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}", t.toString())
5357 if (e === Gr.HTML) return i(t);
5358 throw Yr("unsafe", "Attempting to use an unsafe value in a safe context.")
5360 valueOf: function(e) {
5361 return e instanceof n ? e.$$unwrapTrustedValue() : e
5369 this.enabled = function(e) {
5370 return arguments.length && (t = !!e), t
5371 }, this.$get = ["$parse", "$sceDelegate", function(r, e) {
5372 if (t && fe < 8) throw Yr("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.");
5374 i.isEnabled = function() {
5376 }, i.trustAs = e.trustAs, i.getTrusted = e.getTrusted, i.valueOf = e.valueOf, t || (i.trustAs = i.getTrusted = function(e, t) {
5378 }, i.valueOf = $e), i.parseAs = function(t, e) {
5380 return n.literal && n.constant ? n : r(e, function(e) {
5381 return i.getTrusted(t, e)
5387 return ve(Gr, function(t, e) {
5389 i[Zr("parse_as_" + n)] = function(e) {
5391 }, i[Zr("get_trusted_" + n)] = function(e) {
5393 }, i[Zr("trust_as_" + n)] = function(e) {
5401 this.$get = ["$window", "$document", function(e, t) {
5403 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,
5404 i = _((/android (\d+)/.exec(me((e.navigator || {}).userAgent)) || [])[1]),
5405 o = /Boxee/i.test((e.navigator || {}).userAgent),
5407 s = a.body && a.body.style,
5410 return s && (l = !!("transition" in s || "webkitTransition" in s), c = !!("animation" in s || "webkitAnimation" in s)), {
5411 history: !(!r || i < 4 || o),
5412 hasEvent: function(e) {
5413 if ("input" === e && fe) return !1;
5415 var t = a.createElement("div");
5416 n[e] = "on" + e in t
5429 this.$get = D(function(e) {
5437 c = this.ALL_TASKS_TYPE = "$$all$$",
5438 u = this.DEFAULT_TASK_TYPE = "$$default$$";
5446 for (var t = r.length - 1; 0 <= t; --t) {
5448 if (n.type === e) return r.splice(t, 1), n.cb
5451 this.completeTask = function(e, t) {
5456 l[a = (a = t) || u] && (l[a]--, l[c]--);
5460 for (var i, o = r ? f : d; i = o(t);) try {
5467 }, this.incTaskCount = function(e) {
5468 l[e = e || u] = (l[e] || 0) + 1, l[c] = (l[c] || 0) + 1
5469 }, this.notifyWhenNoPendingTasks = function(e, t) {
5470 l[t = t || c] ? r.push({
5476 var ri = M("$templateRequest");
5480 this.httpOptions = function(e) {
5481 return e ? (c = e, this) : c
5482 }, this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(r, i, o, a, s) {
5484 l.totalPendingRequests++, Ce(t) && !we(i.get(t)) || (t = s.getTrustedResourceUrl(t));
5485 var e = o.defaults && o.defaults.transformResponse;
5486 return ke(e) ? e = e.filter(function(e) {
5488 }) : e === Fn && (e = null), o.get(t, be({
5490 transformResponse: e
5491 }, c)).finally(function() {
5492 l.totalPendingRequests--
5493 }).then(function(e) {
5494 return i.put(t, e.data)
5496 n || (e = ri("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", t, e.status, e.statusText), r(e));
5500 return l.totalPendingRequests = 0, l
5505 this.$get = ["$rootScope", "$browser", "$location", function(t, n, r) {
5507 findBindings: function(e, n, r) {
5508 var t = e.getElementsByClassName("ng-binding"),
5510 return ve(t, function(t) {
5511 var e = y.element(t).data("$binding");
5512 e && ve(e, function(e) {
5513 r ? new RegExp("(^|\\s)" + I(n) + "(\\s|\\||$)").test(e) && i.push(t) : -1 !== e.indexOf(n) && i.push(t)
5517 findModels: function(e, t, n) {
5518 for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
5519 var o = "[" + r[i] + "model" + (n ? "=" : "*=") + '"' + t + '"]',
5520 a = e.querySelectorAll(o);
5521 if (a.length) return a
5524 getLocation: function() {
5527 setLocation: function(e) {
5528 e !== r.url() && (r.url(e), t.$digest())
5530 whenStable: function(e) {
5531 n.notifyWhenNoOutstandingRequests(e)
5537 var ai = M("$timeout");
5540 this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(l, c, u, d, f) {
5543 function e(e, t, n) {
5544 Te(e) || (n = t, t = e, e = _e);
5545 var r, i = Re(arguments, 3),
5547 a = (o ? d : u).defer(),
5549 return r = c.defer(function() {
5551 a.resolve(e.apply(null, i))
5555 delete h[s.$$timeoutId]
5558 }, t, "$timeout"), s.$$timeoutId = r, h[r] = a, s
5560 return e.cancel = function(e) {
5562 if (!e.hasOwnProperty("$$timeoutId")) throw ai("badprom", "`$timeout.cancel()` called with a promise that was not generated by `$timeout()`.");
5563 if (!h.hasOwnProperty(e.$$timeoutId)) return !1;
5564 var t = e.$$timeoutId,
5566 return Vr(n.promise), n.reject("canceled"), delete h[t], c.defer.cancel(t)
5570 var li, ci = de.document.createElement("a"),
5571 ui = fi(de.location.href);
5572 ci.href = "http://[::1]";
5573 var di = "[::1]" === ci.hostname;
5576 if (!Ce(e)) return e;
5578 fe && (ci.setAttribute("href", t), t = ci.href), ci.setAttribute("href", t);
5579 var n = ci.hostname;
5580 return !di && -1 < n.indexOf(":") && (n = "[" + n + "]"), {
5582 protocol: ci.protocol ? ci.protocol.replace(/:$/, "") : "",
5584 search: ci.search ? ci.search.replace(/^\?/, "") : "",
5585 hash: ci.hash ? ci.hash.replace(/^#/, "") : "",
5588 pathname: "/" === ci.pathname.charAt(0) ? ci.pathname : "/" + ci.pathname
5593 return e = fi(e), t = fi(t), e.protocol === t.protocol && e.host === t.host
5607 return decodeURIComponent(t)
5613 var e, t, n, r, i, o = function(e) {
5615 return e.cookie || ""
5621 for (e = (l = o).split("; "), s = {}, n = 0; n < e.length; n++) 0 < (r = (t = e[n]).indexOf("=")) && (i = c(t.substring(0, r)), we(s[i]) && (s[i] = c(t.substring(r + 1))));
5636 return ve(e, function(e, t) {
5640 return r.factory(e + i, t)
5642 this.register = o, this.$get = ["$injector", function(t) {
5643 return function(e) {
5646 }], o("currency", Ci), o("date", Pi), o("filter", bi), o("json", Hi), o("limitTo", Fi), o("lowercase", ji), o("number", ki), o("orderBy", Ui), o("uppercase", Li)
5650 return function(e, t, n, r) {
5652 if (null == e) return e;
5653 throw M("filter")("notarray", "Expected array but received: {0}", e)
5656 switch (r = r || "$", _i(t)) {
5666 i = function(t, n, r, i) {
5667 var o = Ee(t) && r in t;
5668 !0 === n ? n = Ie : Te(n) || (n = function(e, t) {
5669 return !we(e) && (null === e || null === t ? e === t : !(Ee(t) || Ee(e) && !$(e)) && (e = me("" + e), t = me("" + t), -1 !== e.indexOf(t)))
5671 return function(e) {
5672 return o && !Ee(e) ? yi(e, t[r], n, r, !1) : yi(e, t, n, r, i)
5679 return Array.prototype.filter.call(e, i)
5683 function yi(e, t, n, r, i, o) {
5686 if ("string" === s && "!" === t.charAt(0)) return !yi(e, t.substring(1), n, r, i);
5687 if (ke(e)) return e.some(function(e) {
5688 return yi(e, t, n, r, i)
5695 if (l.charAt && "$" !== l.charAt(0) && yi(e[l], t, n, r, !0)) return !0;
5696 return !o && yi(e, t, n, r, !1)
5698 if ("object" !== s) return n(e, t);
5701 if (!Te(c) && !we(c)) {
5703 if (!yi(u ? e : e[l], c, n, r, u, u)) return !1
5715 return null === e ? "null" : typeof e
5717 mi.$inject = ["$document"], vi.$inject = ["$provide"];
5723 var i = e.NUMBER_FORMATS;
5724 return function(e, t, n) {
5725 we(t) && (t = i.CURRENCY_SYM), we(n) && (n = i.PATTERNS[1].maxFrac);
5726 var r = t ? /\u00A4/g : /\s*\u00A4\s*/g;
5727 return null == e ? e : xi(e, i.PATTERNS[1], i.GROUP_SEP, i.DECIMAL_SEP, n).replace(r, t)
5732 var n = e.NUMBER_FORMATS;
5733 return function(e, t) {
5734 return null == e ? e : xi(e, n.PATTERNS[0], n.GROUP_SEP, n.DECIMAL_SEP, t)
5738 function xi(e, t, n, r, i) {
5739 if (!Ce(e) && !E(e) || isNaN(e)) return "";
5740 var o, a = !isFinite(e),
5742 l = Math.abs(e) + "",
5746 (function(e, t, n, r) {
5749 a = (t = we(t) ? Math.min(Math.max(n, o), r) : +t) + e.i,
5752 i.splice(Math.max(e.i, a));
5753 for (var l = a; l < i.length; l++) i[l] = 0
5755 o = Math.max(0, o), e.i = 1, i.length = Math.max(1, a = t + 1), i[0] = 0;
5756 for (var c = 1; c < a; c++) i[c] = 0
5760 for (var u = 0; a < u; u--) i.unshift(0), e.i++;
5763 for (; o < Math.max(0, t); o++) i.push(0);
5764 var d = i.reduceRight(function(e, t, n, r) {
5765 return t += e, r[n] = t % 10, Math.floor(t / 10)
5767 d && (i.unshift(d), e.i++)
5768 })(o = function(e) {
5769 var t, n, r, i, o, a = 0;
5770 for (-1 < (n = e.indexOf(wi)) && (e = e.replace(wi, "")), 0 < (r = e.search(/e/i)) ? (n < 0 && (n = r), n += +e.slice(r + 1), e = e.substring(0, r)) : n < 0 && (n = e.length), r = 0; e.charAt(r) === Ei; r++);
5771 if (r === (o = e.length)) t = [0], n = 1;
5773 for (o--; e.charAt(o) === Ei;) o--;
5774 for (n -= r, t = [], i = 0; r <= o; r++, i++) t[i] = +e.charAt(r)
5776 return $i < n && (t = t.splice(0, $i - 1), a = n - 1, n = 1), {
5781 }(l), i, t.minFrac, t.maxFrac);
5786 for (s = u.reduce(function(e, t) {
5788 }, !0); d < 0;) u.unshift(0), d++;
5789 0 < d ? h = u.splice(d, u.length) : (h = u, u = [0]);
5791 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(""));
5792 u.length && p.unshift(u.join("")), c = p.join(n), h.length && (c += r + h.join("")), f && (c += "e+" + f)
5794 return e < 0 && !s ? t.negPre + c + t.negSuf : t.posPre + c + t.posSuf
5797 function Ti(e, t, n, r) {
5799 for ((e < 0 || r && e <= 0) && (r ? e = 1 - e : (e = -e, i = "-")), e = "" + e; e.length < t;) e = Ei + e;
5800 return n && (e = e.substr(e.length - t)), i + e
5803 function Mi(n, r, i, o, a) {
5806 var t = e["get" + n]();
5807 return (0 < i || -i < t) && (t += i), 0 === t && -12 === i && (t = 12), Ti(t, r, o, a)
5811 function Ai(r, i, o) {
5812 return function(e, t) {
5813 var n = e["get" + r]();
5814 return t[f((o ? "STANDALONE" : "") + (i ? "SHORT" : "") + r)][n]
5819 var t = new Date(e, 0, 1).getDay();
5820 return new Date(e, 0, (t <= 4 ? 5 : 12) - t)
5824 return function(e) {
5825 var t, n = Si(e.getFullYear()),
5826 r = +(t = e, new Date(t.getFullYear(), t.getMonth(), t.getDate() + (4 - t.getDay()))) - +n;
5827 return Ti(1 + Math.round(r / 6048e5), i)
5832 return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
5834 Ci.$inject = ["$locale"];
5836 yyyy: Mi("FullYear", 4, 0, !(ki.$inject = ["$locale"]), !0),
5837 yy: Mi("FullYear", 2, 0, !0, !0),
5838 y: Mi("FullYear", 1, 0, !1, !0),
5840 MMM: Ai("Month", !0),
5841 MM: Mi("Month", 2, 1),
5842 M: Mi("Month", 1, 1),
5843 LLLL: Ai("Month", !1, !0),
5848 hh: Mi("Hours", 2, -12),
5849 h: Mi("Hours", 1, -12),
5850 mm: Mi("Minutes", 2),
5851 m: Mi("Minutes", 1),
5852 ss: Mi("Seconds", 2),
5853 s: Mi("Seconds", 1),
5854 sss: Mi("Milliseconds", 3),
5858 return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
5860 Z: function(e, t, n) {
5862 i = 0 <= r ? "+" : "";
5863 return i += Ti(Math[0 < r ? "floor" : "ceil"](r / 60), 2) + Ti(Math.abs(r % 60), 2)
5870 GGGG: function(e, t) {
5871 return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
5874 Ii = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,
5878 var d = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
5879 return function(t, e, n) {
5882 if (e = e || "mediumDate", e = l.DATETIME_FORMATS[e] || e, Ce(t) && (t = Ri.test(t) ? _(t) : function(e) {
5884 if (t = e.match(d)) {
5885 var n = new Date(0),
5888 o = t[8] ? n.setUTCFullYear : n.setFullYear,
5889 a = t[8] ? n.setUTCHours : n.setHours;
5890 t[9] && (r = _(t[9] + t[10]), i = _(t[9] + t[11])), o.call(n, _(t[1]), _(t[2]) - 1, _(t[3]));
5891 var s = _(t[4] || 0) - r,
5892 l = _(t[5] || 0) - i,
5894 u = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
5895 return a.call(n, s, l, c, u), n
5898 }(t)), E(t) && (t = new Date(t)), !C(t) || !isFinite(t.getTime())) return t;
5899 for (; e;) e = (i = Ii.exec(e)) ? (a = q(a, i, 1)).pop() : (a.push(e), null);
5900 var s = t.getTimezoneOffset();
5901 return n && (s = W(n, s), t = G(t, n, !0)), ve(a, function(e) {
5902 r = Ni[e], o += r ? r(t, l.DATETIME_FORMATS, s) : "''" === e ? "'" : e.replace(/(^'|'$)/g, "").replace(/''/g, "'")
5908 return function(e, t) {
5909 return we(t) && (t = 2), V(e, t)
5912 Pi.$inject = ["$locale"];
5917 return function(e, t, n) {
5918 return t = Math.abs(Number(t)) === 1 / 0 ? Number(t) : _(t), S(t) ? e : (E(e) && (e = e.toString()), R(e) ? (n = (n = !n || isNaN(n) ? 0 : _(n)) < 0 ? Math.max(0, e.length + n) : n, 0 <= t ? qi(e, n, n + t) : 0 === n ? qi(e, t, e.length) : qi(e, Math.max(0, n + t), n)) : e)
5922 function qi(e, t, n) {
5923 return Ce(e) ? e.slice(t, n) : a.call(e, t, n)
5927 return function(e, t, n, r) {
5928 if (null == e) return e;
5929 if (!R(e)) throw M("orderBy")("notarray", "Expected array but received: {0}", e);
5930 ke(t) || (t = [t]), 0 === t.length && (t = ["+"]);
5931 var o = t.map(function(e) {
5935 else if (Ce(e) && ("+" !== e.charAt(0) && "-" !== e.charAt(0) || (t = "-" === e.charAt(0) ? -1 : 1, e = e.substring(1)), "" !== e && (n = l(e)).constant)) {
5948 i = Array.prototype.map.call(e, function(t, n) {
5956 predicateValues: o.map(function(e) {
5957 return function(e, t) {
5959 null === e ? n = "null" : "object" === n && (e = function(e) {
5960 if (Te(e.valueOf) && c(e = e.valueOf())) return e;
5961 if ($(e) && c(e = e.toString())) return e;
5973 return i.sort(function(e, t) {
5974 for (var n = 0, r = o.length; n < r; n++) {
5975 var i = s(e.predicateValues[n], t.predicateValues[n]);
5976 if (i) return i * o[n].descending * a
5978 return (s(e.tieBreaker, t.tieBreaker) || u(e.tieBreaker, t.tieBreaker)) * a
5979 }), e = i.map(function(e) {
6002 "string" === r ? (o = o.toLowerCase(), a = a.toLowerCase()) : "object" === r && (Ee(o) && (o = e.index), Ee(a) && (a = t.index)), o !== a && (n = o < a ? -1 : 1)
6003 } else n = "undefined" === r ? 1 : "undefined" === i ? -1 : "null" === r ? 1 : "null" === i ? -1 : r < i ? -1 : 1;
6009 return Te(e) && (e = {
6011 }), e.restrict = e.restrict || "AC", D(e)
6013 Ui.$inject = ["$parse"];
6016 compile: function(e, t) {
6017 if (!t.href && !t.xlinkHref) return function(e, t) {
6018 if ("a" === t[0].nodeName.toLowerCase()) {
6019 var n = "[object SVGAnimatedString]" === ge.call(t.prop("href")) ? "xlink:href" : "href";
6020 t.on("click", function(e) {
6021 t.attr(n) || e.preventDefault()
6028 ve(Dt, function(e, r) {
6029 if ("multiple" !== e) {
6030 var i = $n("ng-" + r),
6032 "checked" === e && (t = function(e, t, n) {
6033 n.ngModel !== n[i] && o(e, 0, n)
6034 }), zi[i] = function() {
6043 function o(e, t, n) {
6044 e.$watch(n[i], function(e) {
6048 }), ve(Nt, function(e, i) {
6049 zi[i] = function() {
6052 link: function(e, t, n) {
6053 if ("ngPattern" === i && "/" === n.ngPattern.charAt(0)) {
6054 var r = n.ngPattern.match(o);
6055 if (r) return void n.$set("ngPattern", new RegExp(r[1], r[2]))
6057 e.$watch(n[i], function(e) {
6063 }), ve(["src", "srcset", "href"], function(a) {
6064 var s = $n("ng-" + a);
6065 zi[s] = ["$sce", function(o) {
6068 link: function(e, t, n) {
6071 "href" === a && "[object SVGAnimatedString]" === ge.call(t.prop("href")) && (i = "xlinkHref", n.$attr[i] = "xlink:href", r = null), n.$set(s, o.getTrustedMediaUrl(n[s])), n.$observe(s, function(e) {
6072 e ? (n.$set(i, e), fe && r && t.prop(r, n[i])) : "href" === a && n.$set(i, null)
6080 $getControls: D([]),
6081 $$renameControl: function(e, t) {
6092 Gi = "ng-submitted";
6094 function Ki(e, t, n, r, i) {
6095 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 = Wi, this.$$element = e, this.$$animate = r, Ji(this)
6097 Ki.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"], Ki.prototype = {
6098 $rollbackViewValue: function() {
6099 ve(this.$$controls, function(e) {
6100 e.$rollbackViewValue()
6103 $commitViewValue: function() {
6104 ve(this.$$controls, function(e) {
6105 e.$commitViewValue()
6108 $addControl: function(e) {
6109 le(e.$name, "input"), this.$$controls.push(e), e.$name && (this[e.$name] = e), e.$$parentForm = this
6111 $getControls: function() {
6112 return We(this.$$controls)
6114 $$renameControl: function(e, t) {
6116 this[n] === e && delete this[n], (this[t] = e).$name = t
6118 $removeControl: function(n) {
6119 n.$name && this[n.$name] === n && delete this[n.$name], ve(this.$pending, function(e, t) {
6120 this.$setValidity(t, null, n)
6121 }, this), ve(this.$error, function(e, t) {
6122 this.$setValidity(t, null, n)
6123 }, this), ve(this.$$success, function(e, t) {
6124 this.$setValidity(t, null, n)
6125 }, this), Oe(this.$$controls, n), n.$$parentForm = Wi
6127 $setDirty: function() {
6128 this.$$animate.removeClass(this.$$element, Zo), this.$$animate.addClass(this.$$element, Xo), this.$dirty = !0, this.$pristine = !1, this.$$parentForm.$setDirty()
6130 $setPristine: function() {
6131 this.$$animate.setClass(this.$$element, Zo, Xo + " " + Gi), this.$dirty = !1, this.$pristine = !0, this.$submitted = !1, ve(this.$$controls, function(e) {
6135 $setUntouched: function() {
6136 ve(this.$$controls, function(e) {
6140 $setSubmitted: function() {
6141 for (var e = this; e.$$parentForm && e.$$parentForm !== Wi;) e = e.$$parentForm;
6144 $$setSubmitted: function() {
6145 this.$$animate.addClass(this.$$element, Gi), this.$submitted = !0, ve(this.$$controls, function(e) {
6146 e.$$setSubmitted && e.$$setSubmitted()
6151 set: function(e, t, n) {
6153 r ? -1 === r.indexOf(n) && r.push(n) : e[t] = [n]
6155 unset: function(e, t, n) {
6157 r && (Oe(r, n), 0 === r.length && delete e[t])
6160 var Zi = function(n) {
6161 return ["$timeout", "$parse", function(l, t) {
6164 restrict: n ? "EAC" : "E",
6165 require: ["form", "^^?form"],
6167 compile: function(e, t) {
6168 e.addClass(Zo).addClass(Go);
6169 var s = t.name ? "name" : !(!n || !t.ngForm) && "ngForm";
6171 pre: function(t, e, n, r) {
6173 if (!("action" in n)) {
6174 var o = function(e) {
6175 t.$apply(function() {
6176 i.$commitViewValue(), i.$setSubmitted()
6177 }), e.preventDefault()
6179 e[0].addEventListener("submit", o), e.on("$destroy", function() {
6181 e[0].removeEventListener("submit", o)
6184 }(r[1] || i.$$parentForm).$addControl(i);
6185 var a = s ? c(i.$name) : _e;
6186 s && (a(t, i), n.$observe(s, function(e) {
6187 i.$name !== e && (a(t, void 0), i.$$parentForm.$$renameControl(i, e), (a = c(i.$name))(t, i))
6188 })), e.on("$destroy", function() {
6189 i.$$parentForm.$removeControl(i), a(t, void 0), be(i, Wi)
6197 return "" === e ? t('this[""]').assign : t(e).assign || _e
6205 e.$$classCache = {}, e.$$classCache[Ko] = !(e.$$classCache[Go] = e.$$element.hasClass(Go))
6213 function a(e, t, n) {
6214 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)
6217 function s(e, t, n) {
6218 t = t ? "-" + je(t, "-") : "", a(e, Go + t, !0 === n), a(e, Ko + t, !1 === n)
6220 t.prototype.$setValidity = function(e, t, n) {
6222 we(t) ? function(e, t, n, r) {
6223 e[t] || (e[t] = {});
6225 }(this, "$pending", e, n) : function(e, t, n, r) {
6226 e[t] && o(e[t], n, r);
6227 to(e[t]) && (e[t] = void 0)
6228 }(this, "$pending", e, n), Ae(t) ? t ? (o(this.$error, e, n), i(this.$$success, e, n)) : (i(this.$error, e, n), o(this.$$success, e, n)) : (o(this.$error, e, n), o(this.$$success, e, n)), this.$pending ? (a(this, Yi, !0), this.$valid = this.$invalid = void 0, s(this, "", null)) : (a(this, Yi, !1), this.$valid = to(this.$error), this.$invalid = !this.$valid, s(this, "", this.$valid)), s(this, e, r = this.$pending && this.$pending[e] ? void 0 : !this.$error[e] && (!!this.$$success[e] || null)), this.$$parentForm.$setValidity(e, r, this)
6235 if (e.hasOwnProperty(t)) return !1;
6238 var no = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,
6239 ro = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
6240 io = /^(?=.{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])?)*$/,
6241 oo = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
6242 ao = /^(\d{4,})-(\d{2})-(\d{2})$/,
6243 so = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6244 lo = /^(\d{4,})-W(\d\d)$/,
6245 co = /^(\d{4,})-(\d\d)$/,
6246 uo = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6247 fo = "keydown wheel mousedown",
6249 ve("date,datetime-local,month,time,week".split(","), function(e) {
6253 text: function(e, t, n, r, i, o) {
6254 go(e, t, n, r, i, o), mo(r)
6256 date: bo("date", ao, vo(ao, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
6257 "datetime-local": bo("datetimelocal", so, vo(so, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
6258 time: bo("time", uo, vo(uo, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
6259 week: bo("week", lo, function(e, t) {
6273 return t && (o = t.getHours(), a = t.getMinutes(), s = t.getSeconds(), l = t.getMilliseconds()), new Date(r, 0, c.getDate() + u, o, a, s, l)
6278 month: bo("month", co, vo(co, ["yyyy", "MM"]), "yyyy-MM"),
6279 number: function(e, t, n, r, i, o, a, s) {
6281 if (yo(e, t, n, r, "number"), _o(r), go(e, t, n, r, i, o), O(n.min) || n.ngMin) {
6282 var c = n.min || s(n.ngMin)(e);
6283 l = $o(c), r.$validators.min = function(e, t) {
6284 return r.$isEmpty(t) || we(l) || l <= t
6285 }, n.$observe("min", function(e) {
6286 e !== c && (l = $o(e), c = e, r.$validate())
6289 if (O(n.max) || n.ngMax) {
6290 var u = n.max || s(n.ngMax)(e),
6292 r.$validators.max = function(e, t) {
6293 return r.$isEmpty(t) || we(d) || t <= d
6294 }, n.$observe("max", function(e) {
6295 e !== u && (d = $o(e), u = e, r.$validate())
6298 if (O(n.step) || n.ngStep) {
6299 var f = n.step || s(n.ngStep)(e),
6301 r.$validators.step = function(e, t) {
6302 return r.$isEmpty(t) || we(h) || Co(t, l || 0, h)
6303 }, n.$observe("step", function(e) {
6304 e !== f && (h = $o(e), f = e, r.$validate())
6308 url: function(e, t, n, r, i, o) {
6309 go(e, t, n, r, i, o), mo(r), r.$validators.url = function(e, t) {
6311 return r.$isEmpty(n) || ro.test(n)
6314 email: function(e, t, n, r, i, o) {
6315 go(e, t, n, r, i, o), mo(r), r.$validators.email = function(e, t) {
6317 return r.$isEmpty(n) || io.test(n)
6320 radio: function(e, n, r, i) {
6321 var o = !r.ngTrim || "false" !== Se(r.ngTrim);
6322 we(r.name) && n.attr("name", l());
6323 n.on("change", function(e) {
6325 n[0].checked && (t = r.value, o && (t = Se(t)), i.$setViewValue(t, e && e.type))
6326 }), i.$render = function() {
6328 o && (e = Se(e)), n[0].checked = e === i.$viewValue
6329 }, r.$observe("value", i.$render)
6331 range: function(e, r, i, n, t, o) {
6332 yo(e, r, i, n, "range"), _o(n), go(e, r, i, n, t, o);
6333 var a = n.$$hasNativeValidators && "range" === r[0].type,
6335 l = a ? 100 : void 0,
6342 n.$render = a && O(u.rangeUnderflow) && O(u.rangeOverflow) ? function() {
6343 p(), n.$setViewValue(r.val())
6344 } : p, d && (s = $o(i.min), n.$validators.min = a ? function() {
6346 } : function(e, t) {
6347 return n.$isEmpty(t) || we(s) || s <= t
6348 }, m("min", function(e) {
6349 if (s = $o(e), S(n.$modelValue)) return;
6352 t < s && (t = s, r.val(t)), n.$setViewValue(t)
6353 } else n.$validate()
6355 f && (l = $o(i.max), n.$validators.max = a ? function() {
6357 } : function(e, t) {
6358 return n.$isEmpty(t) || we(l) || t <= l
6359 }, m("max", function(e) {
6360 if (l = $o(e), S(n.$modelValue)) return;
6363 l < t && (r.val(l), t = l < s ? s : l), n.$setViewValue(t)
6364 } else n.$validate()
6366 h && (c = $o(i.step), n.$validators.step = a ? function() {
6367 return !u.stepMismatch
6368 } : function(e, t) {
6369 return n.$isEmpty(t) || we(c) || Co(t, s || 0, c)
6370 }, m("step", function(e) {
6371 if (c = $o(e), S(n.$modelValue)) return;
6372 a ? n.$viewValue !== r.val() && n.$setViewValue(r.val()) : n.$validate()
6378 i.$observe(e, function(e) {
6383 checkbox: function(e, t, n, r, i, o, a, s) {
6384 var l = ko(s, e, "ngTrueValue", n.ngTrueValue, !0),
6385 c = ko(s, e, "ngFalseValue", n.ngFalseValue, !1);
6386 t.on("change", function(e) {
6387 r.$setViewValue(t[0].checked, e && e.type)
6388 }), r.$render = function() {
6389 t[0].checked = r.$viewValue
6390 }, r.$isEmpty = function(e) {
6392 }, r.$formatters.push(function(e) {
6394 }), r.$parsers.push(function(e) {
6406 t.$formatters.push(function(e) {
6407 return t.$isEmpty(e) ? e : e.toString()
6411 function go(e, r, i, o, t, a) {
6412 var s, l = me(r[0].type);
6415 r.on("compositionstart", function() {
6417 }), r.on("compositionupdate", function(e) {
6418 (we(e.data) || "" === e.data) && (c = !1)
6419 }), r.on("compositionend", function() {
6423 var u = function(e) {
6424 if (s && (a.defer.cancel(s), s = null), !c) {
6427 "password" === l || i.ngTrim && "false" === i.ngTrim || (t = Se(t)), (o.$viewValue !== t || "" === t && o.$$hasNativeValidators) && o.$setViewValue(t, n)
6430 if (t.hasEvent("input")) r.on("input", u);
6432 var n = function(e, t, n) {
6433 s || (s = a.defer(function() {
6434 s = null, t && t.value === n || u(e)
6437 r.on("keydown", function(e) {
6439 91 === t || 15 < t && t < 19 || 37 <= t && t <= 40 || n(e, this, this.value)
6440 }), t.hasEvent("paste") && r.on("paste cut drop", n)
6442 r.on("change", u), ho[l] && o.$$hasNativeValidators && l === i.type && r.on(fo, function(e) {
6447 s = a.defer(function() {
6448 s = null, t.badInput === n && t.typeMismatch === r || u(e)
6451 }), o.$render = function() {
6452 var e = o.$isEmpty(o.$viewValue) ? "" : o.$viewValue;
6453 r.val() !== e && r.val(e)
6458 return function(e, t) {
6462 if ('"' === e.charAt(0) && '"' === e.charAt(e.length - 1) && (e = e.substring(1, e.length - 1)), no.test(e)) return new Date(e);
6463 if (o.lastIndex = 0, n = o.exec(e)) {
6464 n.shift(), r = t ? {
6465 yyyy: t.getFullYear(),
6466 MM: t.getMonth() + 1,
6471 sss: t.getMilliseconds() / 1e3
6480 }, ve(n, function(e, t) {
6481 t < a.length && (r[a[t]] = +e)
6483 var i = new Date(r.yyyy, r.MM - 1, r.dd, r.HH, r.mm, r.ss || 0, 1e3 * r.sss || 0);
6484 return r.yyyy < 100 && i.setFullYear(r.yyyy), i
6491 function bo(b, y, _, $) {
6492 return function(e, t, n, i, r, o, a, s) {
6493 yo(e, t, n, i, b), go(0, t, n, i, r, o);
6494 var l, c, u = "time" === b || "datetimelocal" === b;
6495 if (i.$parsers.push(function(e) {
6496 return i.$isEmpty(e) ? null : y.test(e) ? v(e, l) : void(i.$$parserName = b)
6497 }), i.$formatters.push(function(e) {
6498 if (e && !C(e)) throw na("datefmt", "Expected `{0}` to be a date", e);
6501 var t = i.$options.getOption("timezone");
6502 return t && (l = G(l, c = t, !0)),
6505 u && Ce(i.$options.getOption("timeSecondsFormat")) && (n = $.replace("ss.sss", i.$options.getOption("timeSecondsFormat")).replace(/:$/, ""));
6506 var r = a("date")(e, n, t);
6507 u && i.$options.getOption("timeStripZeroSeconds") && (r = r.replace(/(?::00)?(?:\.000)?$/, ""));
6511 return c = l = null, ""
6512 }), O(n.min) || n.ngMin) {
6513 var d = n.min || s(n.ngMin)(e),
6515 i.$validators.min = function(e) {
6516 return !m(e) || we(f) || _(e) >= f
6517 }, n.$observe("min", function(e) {
6518 e !== d && (f = g(e), d = e, i.$validate())
6521 if (O(n.max) || n.ngMax) {
6522 var h = n.max || s(n.ngMax)(e),
6524 i.$validators.max = function(e) {
6525 return !m(e) || we(p) || _(e) <= p
6526 }, n.$observe("max", function(e) {
6527 e !== h && (p = g(e), h = e, i.$validate())
6532 return e && !(e.getTime && e.getTime() != e.getTime())
6536 return O(e) && !C(e) ? v(e) || void 0 : e
6540 var n = i.$options.getOption("timezone");
6541 c && c !== n && (t = Y(t, W(c)));
6543 return !isNaN(r) && n && (r = G(r, n)), r
6548 function yo(e, n, t, r, i) {
6550 (r.$$hasNativeValidators = Ee(o.validity)) && r.$parsers.push(function(e) {
6551 var t = n.prop(d) || {};
6552 if (!t.badInput && !t.typeMismatch) return e;
6558 t.$parsers.push(function(e) {
6559 return t.$isEmpty(e) ? null : oo.test(e) ? parseFloat(e) : void(t.$$parserName = "number")
6560 }), t.$formatters.push(function(e) {
6561 if (!t.$isEmpty(e)) {
6562 if (!E(e)) throw na("numfmt", "Expected `{0}` to be a number", e);
6570 return O(e) && !E(e) && (e = parseFloat(e)), S(e) ? void 0 : e
6574 return (0 | e) === e
6578 var t = e.toString(),
6580 if (-1 !== n) return t.length - n - 1;
6581 if (-1 < e && e < 1) {
6582 var r = /e-(\d+)$/.exec(t);
6583 if (r) return Number(r[1])
6588 function Co(e, t, n) {
6594 var s = i ? Eo(r) : 0,
6597 u = Math.max(s, l, c),
6598 d = Math.pow(10, u);
6599 r *= d, t *= d, n *= d, i && (r = Math.round(r)), o && (t = Math.round(t)), a && (n = Math.round(n))
6601 return (r - t) % n == 0
6604 function ko(e, t, n, r, i) {
6607 if (!(o = e(r)).constant) throw na("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
6612 var xo = ["$browser", "$sniffer", "$filter", "$parse", function(i, o, a, s) {
6615 require: ["?ngModel"],
6617 pre: function(e, t, n, r) {
6618 r[0] && (po[me(n.type)] || po.text)(e, t, n, r[0], o, i, a, s)
6628 return this.getAttribute("value") || ""
6631 this.setAttribute("value", e)
6637 compile: function(e, t) {
6638 if ("hidden" === me(t.type)) return {
6639 pre: function(e, t, n, r) {
6641 i.parentNode && i.parentNode.insertBefore(i, i.nextSibling), Object.defineProperty && Object.defineProperty(i, "value", o)
6647 Mo = /^(true|false|\d+)$/,
6649 function r(e, t, n) {
6650 var r = O(n) ? n : 9 === fe ? "" : null;
6651 e.prop("value", r), t.$set("value", n)
6656 compile: function(e, t) {
6657 return Mo.test(t.ngValue) ? function(e, t, n) {
6658 r(t, n, e.$eval(n.ngValue))
6659 } : function(e, t, n) {
6660 e.$watch(n.ngValue, function(e) {
6667 So = ["$compile", function(r) {
6670 compile: function(e) {
6671 return r.$$addBindingClass(e),
6673 r.$$addBindingInfo(t, n.ngBind), t = t[0], e.$watch(n.ngBind, function(e) {
6674 t.textContent = ue(e)
6680 Do = ["$interpolate", "$compile", function(i, o) {
6682 compile: function(e) {
6683 return o.$$addBindingClass(e),
6685 var r = i(t.attr(n.$attr.ngBindTemplate));
6686 o.$$addBindingInfo(t, r.expressions), t = t[0], n.$observe("ngBindTemplate", function(e) {
6687 t.textContent = we(e) ? "" : e
6693 Oo = ["$sce", "$parse", "$compile", function(o, n, a) {
6696 compile: function(e, t) {
6697 var r = n(t.ngBindHtml),
6698 i = n(t.ngBindHtml, function(e) {
6701 return a.$$addBindingClass(e),
6703 a.$$addBindingInfo(n, e.ngBindHtml), t.$watch(i, function() {
6705 n.html(o.getTrustedHtml(e) || "")
6714 link: function(e, t, n, r) {
6715 r.$viewChangeListeners.push(function() {
6723 return i = "ngClass" + i, ["$parse", function(n) {
6726 link: function(e, t, l) {
6727 var c, r = t.data("$classCounts"),
6732 return ve(e, function(e) {
6733 (0 < t || r[e]) && (r[e] = (r[e] || 0) + t, r[e] === +(0 < t) && n.push(e))
6736 r || (r = Fe(), t.data("$classCounts", r)), "ngClass" !== i && (o || (o = n("$index", function(e) {
6738 })), e.$watch(o, function(e) {
6739 e === f ? (n = d(p(n = c), 1), l.$addClass(n)) : (t = d(p(t = c), -1), l.$removeClass(t));
6743 })), e.$watch(n(l[i], a), function(e) {
6744 u === f && (t = e, n = p(c), r = p(t), i = h(n, r), o = h(r, n), a = d(i, -1), s = d(o, 1), l.$addClass(s), l.$removeClass(a));
6745 var t, n, r, i, o, a, s;
6753 if (!e || !e.length) return [];
6754 if (!t || !t.length) return e;
6756 e: for (var r = 0; r < e.length; r++) {
6757 for (var i = e[r], o = 0; o < t.length; o++)
6758 if (i === t[o]) continue e;
6765 return e && e.split(" ")
6771 return ke(t) ? e = t.map(a).join(" ") : Ee(t) ? e = Object.keys(t).filter(function(e) {
6773 }).join(" ") : Ce(t) || (e = t + ""), e
6776 var Ro = Io("", !0),
6780 compile: function(e, t) {
6781 t.$set("ngCloak", void 0), e.removeClass("ng-cloak")
6798 function Uo(n, i, o, a, s, l) {
6801 compile: function(e, t) {
6803 return function(n, e) {
6804 e.on(s, function(e) {
6805 var t = function() {
6811 if (l) n.$evalAsync(t);
6822 ve("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(r) {
6823 var i = $n("ng-" + r);
6824 Fo[i] = ["$parse", "$rootScope", "$exceptionHandler", function(e, t, n) {
6825 return Uo(e, t, n, i, r, qo[r])
6828 var Vo = ["$animate", "$compile", function(l, c) {
6831 transclude: "element",
6836 link: function(e, n, r, t, i) {
6838 e.$watch(r.ngIf, function(e) {
6839 e ? a || i(function(e, t) {
6840 a = t, e[e.length++] = c.$$createComment("end ngIf", r.ngIf), o = {
6842 }, l.enter(e, n.parent(), n)
6843 }) : (s && (s.remove(), s = null), a && (a.$destroy(), a = null), o && (s = ce(o.clone), l.leave(s).done(function(e) {
6844 !1 !== e && (s = null)
6850 Bo = ["$templateRequest", "$anchorScroll", "$animate", function(g, v, b) {
6855 transclude: "element",
6857 compile: function(e, t) {
6858 var n = t.ngInclude || t.src,
6861 return function(a, s, e, l, c) {
6864 t && (t.remove(), t = null), u && (u.$destroy(), u = null), d && (b.leave(d).done(function(e) {
6865 !1 !== e && (t = null)
6866 }), t = d, d = null)
6868 a.$watch(n, function(r) {
6869 var i = function(e) {
6870 !1 === e || !O(m) || m && !a.$eval(m) || v()
6873 r ? (g(r, !0).then(function(e) {
6874 if (!a.$$destroyed && o === f) {
6877 var n = c(t, function(e) {
6878 h(), b.enter(e, null, s).done(i)
6880 d = n, (u = t).$emit("$includeContentLoaded", r), a.$eval(p)
6883 a.$$destroyed || o === f && (h(), a.$emit("$includeContentError", r))
6884 }), a.$emit("$includeContentRequested", r)) : (h(), l.template = null)
6890 zo = ["$compile", function(i) {
6894 require: "ngInclude",
6895 link: function(e, t, n, r) {
6896 if (ge.call(t[0]).match(/SVG/)) return t.empty(), void i(ut(r.template, de.document).childNodes)(e, function(e) {
6899 futureParentElement: t
6901 t.html(r.template), i(t.contents())(e)
6907 compile: function() {
6909 pre: function(e, t, n) {
6920 link: function(e, t, n, r) {
6921 var i = n.ngList || ", ",
6922 o = "false" !== n.ngTrim,
6924 r.$parsers.push(function(e) {
6927 return e && ve(e.split(a), function(e) {
6928 e && t.push(o ? Se(e) : e)
6931 }), r.$formatters.push(function(e) {
6932 if (ke(e)) return e.join(i)
6933 }), r.$isEmpty = function(e) {
6934 return !e || !e.length
6943 Qo = "ng-untouched",
6946 ta = "ng-not-empty",
6949 function ra(e, t, n, r, i, o, a, s, l) {
6951 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 = l(n.name || "", !1)(e), this.$$parentForm = Wi, this.$options = ia, 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.$$parserName = "parse", this.$$currentValidationRunId = 0, this.$$scope = e, this.$$rootScope = e.$root, this.$$attr = n, this.$$element = r, this.$$animate = o, this.$$timeout = a, this.$$parse = i, this.$$q = s, this.$$exceptionHandler = t, Ji(this), (c = this).$$scope.$watch(function(e) {
6952 var t = c.$$ngModelGet(e);
6953 return t === c.$modelValue || c.$modelValue != c.$modelValue && t != t || c.$$setModelValue(t), t
6956 ra.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"], ra.prototype = {
6957 $$initGetterSetters: function() {
6958 if (this.$options.getOption("getterSetter")) {
6959 var n = this.$$parse(this.$$attr.ngModel + "()"),
6960 r = this.$$parse(this.$$attr.ngModel + "($$$p)");
6961 this.$$ngModelGet = function(e) {
6962 var t = this.$$parsedNgModel(e);
6963 return Te(t) && (t = n(e)), t
6964 }, this.$$ngModelSet = function(e, t) {
6965 Te(this.$$parsedNgModel(e)) ? r(e, {
6967 }) : this.$$parsedNgModelAssign(e, t)
6969 } else if (!this.$$parsedNgModel.assign) throw na("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, He(this.$$element))
6972 $isEmpty: function(e) {
6973 return we(e) || "" === e || null === e || e != e
6975 $$updateEmptyClasses: function(e) {
6976 this.$isEmpty(e) ? (this.$$animate.removeClass(this.$$element, ta), this.$$animate.addClass(this.$$element, ea)) : (this.$$animate.removeClass(this.$$element, ea), this.$$animate.addClass(this.$$element, ta))
6978 $setPristine: function() {
6979 this.$dirty = !1, this.$pristine = !0, this.$$animate.removeClass(this.$$element, Xo), this.$$animate.addClass(this.$$element, Zo)
6981 $setDirty: function() {
6982 this.$dirty = !0, this.$pristine = !1, this.$$animate.removeClass(this.$$element, Zo), this.$$animate.addClass(this.$$element, Xo), this.$$parentForm.$setDirty()
6984 $setUntouched: function() {
6985 this.$touched = !1, this.$untouched = !0, this.$$animate.setClass(this.$$element, Qo, Jo)
6987 $setTouched: function() {
6988 this.$touched = !0, this.$untouched = !1, this.$$animate.setClass(this.$$element, Jo, Qo)
6990 $rollbackViewValue: function() {
6991 this.$$timeout.cancel(this.$$pendingDebounce), this.$viewValue = this.$$lastCommittedViewValue, this.$render()
6993 $validate: function() {
6994 if (!S(this.$modelValue)) {
6995 var e = this.$$lastCommittedViewValue,
6996 t = this.$$rawModelValue,
6998 r = this.$modelValue,
6999 i = this.$options.getOption("allowInvalid"),
7001 this.$$runValidators(t, e, function(e) {
7002 i || n === e || (o.$modelValue = e ? t : void 0, o.$modelValue !== r && o.$$writeModelToScope())
7006 $$runValidators: function(r, i, t) {
7007 this.$$currentValidationRunId++;
7008 var o, a, s, n = this.$$currentValidationRunId,
7011 var e = l.$$parserName; {
7012 if (!we(l.$$parserValid)) return l.$$parserValid || (ve(l.$validators, function(e, t) {
7014 }), ve(l.$asyncValidators, function(e, t) {
7016 })), c(e, l.$$parserValid), l.$$parserValid;
7020 })() ? (o = !0, ve(l.$validators, function(e, t) {
7021 var n = Boolean(e(r, i));
7023 }), o || (ve(l.$asyncValidators, function(e, t) {
7025 }), 0) ? (a = [], s = !0, ve(l.$asyncValidators, function(e, t) {
7027 if (!T(n)) throw na("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", n);
7028 c(t, void 0), a.push(n.then(function() {
7033 }), a.length ? l.$$q.all(a).then(function() {
7035 }, _e) : e(!0)) : e(!1)) : e(!1);
7038 n === l.$$currentValidationRunId && l.$setValidity(e, t)
7042 n === l.$$currentValidationRunId && t(e)
7045 $commitViewValue: function() {
7046 var e = this.$viewValue;
7047 this.$$timeout.cancel(this.$$pendingDebounce), (this.$$lastCommittedViewValue !== e || "" === e && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(e), this.$$lastCommittedViewValue = e, this.$pristine && this.$setDirty(), this.$$parseAndValidate())
7049 $$parseAndValidate: function() {
7050 var t = this.$$lastCommittedViewValue,
7052 if (this.$$parserValid = !we(t) || void 0, this.$setValidity(this.$$parserName, null), this.$$parserName = "parse", this.$$parserValid)
7053 for (var e = 0; e < this.$parsers.length; e++)
7054 if (we(t = this.$parsers[e](t))) {
7055 this.$$parserValid = !1;
7057 } S(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
7058 var r = this.$modelValue,
7059 i = this.$options.getOption("allowInvalid");
7062 n.$modelValue !== r && n.$$writeModelToScope()
7064 this.$$rawModelValue = t, i && (this.$modelValue = t, o()), this.$$runValidators(t, this.$$lastCommittedViewValue, function(e) {
7065 i || (n.$modelValue = e ? t : void 0, o())
7068 $$writeModelToScope: function() {
7069 this.$$ngModelSet(this.$$scope, this.$modelValue), ve(this.$viewChangeListeners, function(e) {
7073 this.$$exceptionHandler(e)
7077 $setViewValue: function(e, t) {
7078 this.$viewValue = e, this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(t)
7080 $$debounceViewValueCommit: function(e) {
7081 var t = this.$options.getOption("debounce");
7082 E(t[e]) ? t = t[e] : E(t.default) && -1 === this.$options.getOption("updateOn").indexOf(e) ? t = t.default : E(t["*"]) && (t = t["*"]), this.$$timeout.cancel(this.$$pendingDebounce);
7084 0 < t ? this.$$pendingDebounce = this.$$timeout(function() {
7085 n.$commitViewValue()
7086 }, t) : this.$$rootScope.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
7087 n.$commitViewValue()
7090 $overrideModelOptions: function(e) {
7091 this.$options = this.$options.createChild(e), this.$$setUpdateOnEvents()
7093 $processModelValue: function() {
7094 var e = this.$$format();
7095 this.$viewValue !== e && (this.$$updateEmptyClasses(e), this.$viewValue = this.$$lastCommittedViewValue = e, this.$render(), this.$$runValidators(this.$modelValue, this.$viewValue, _e))
7097 $$format: function() {
7098 for (var e = this.$formatters, t = e.length, n = this.$modelValue; t--;) n = e[t](n);
7101 $$setModelValue: function(e) {
7102 this.$modelValue = this.$$rawModelValue = e, this.$$parserValid = void 0, this.$processModelValue()
7104 $$setUpdateOnEvents: function() {
7105 this.$$updateEvents && this.$$element.off(this.$$updateEvents, this.$$updateEventHandler), this.$$updateEvents = this.$options.getOption("updateOn"), this.$$updateEvents && this.$$element.on(this.$$updateEvents, this.$$updateEventHandler)
7107 $$updateEventHandler: function(e) {
7108 this.$$debounceViewValueCommit(e && e.type)
7112 set: function(e, t) {
7115 unset: function(e, t) {
7119 var ia, oa = ["$rootScope", function(a) {
7122 require: ["ngModel", "^?form", "^?ngModelOptions"],
7125 compile: function(e) {
7126 return e.addClass(Zo).addClass(Qo).addClass(Go), {
7127 pre: function(e, t, n, r) {
7129 o = r[1] || i.$$parentForm,
7131 a && (i.$options = a.$options), i.$$initGetterSetters(), o.$addControl(i), n.$observe("name", function(e) {
7132 i.$name !== e && i.$$parentForm.$$renameControl(i, e)
7133 }), e.$on("$destroy", function() {
7134 i.$$parentForm.$removeControl(i)
7137 post: function(e, t, n, r) {
7143 i.$$setUpdateOnEvents(), t.on("blur", function() {
7144 i.$touched || (a.$$phase ? e.$evalAsync(o) : e.$apply(o))
7151 aa = /(\s+|^)default(\s+|$)/;
7157 getOption: function(e) {
7158 return this.$$options[e]
7160 createChild: function(n) {
7162 return ve(n = be({}, n), function(e, t) {
7163 "$inherit" === e ? "*" === t ? r = !0 : (n[t] = this.$$options[t], "updateOn" === t && (n.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === t && (n.updateOnDefault = !1, n[t] = Se(e.replace(aa, function() {
7164 return n.updateOnDefault = !0, " "
7166 }, this), r && (delete n["*"], ca(n, this.$$options)), ca(n, ia.$$options), new sa(n)
7170 updateOnDefault: !0,
7176 var la = function() {
7178 this.$$attrs = e, this.$$scope = t
7180 return e.$inject = ["$attrs", "$scope"], e.prototype = {
7181 $onInit: function() {
7182 var e = this.parentCtrl ? this.parentCtrl.$options : ia,
7183 t = this.$$scope.$eval(this.$$attrs.ngModelOptions);
7184 this.$options = e.createChild(t)
7190 parentCtrl: "?^^ngModelOptions"
7192 bindToController: !0,
7198 ve(e, function(e, t) {
7199 O(n[t]) || (n[t] = e)
7206 da = M("ngOptions"),
7207 fa = /^\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]+?))?$/,
7208 ha = ["$compile", "$document", "$parse", function(g, v, C) {
7209 var b = de.document.createElement("option"),
7210 y = de.document.createElement("optgroup");
7214 require: ["select", "ngModel"],
7216 pre: function(e, t, n, r) {
7217 r[0].registerOption = _e
7219 post: function(e, a, t, n) {
7220 for (var s = n[0], l = n[1], c = t.multiple, r = 0, i = a.children(), o = i.length; r < o; r++)
7221 if ("" === i[r].value) {
7222 s.hasEmptyOption = !0, s.emptyOption = i.eq(r);
7225 var u, d = !!s.emptyOption;
7226 he(b.cloneNode(!1)).val("?");
7227 var f = function(e, t, f) {
7228 var d = e.match(fa);
7229 if (!d) throw da("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, He(t));
7230 var n = d[5] || d[7],
7232 i = / as /.test(d[0]) && d[1],
7234 o = C(d[2] ? d[1] : n),
7237 m = h ? function(e, t) {
7242 g = function(e, t) {
7243 return m(e, $(e, t))
7245 v = C(d[2] || d[1]),
7250 $ = r ? function(e, t) {
7251 return s[r] = t, s[n] = e, s
7256 function w(e, t, n, r, i) {
7257 this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
7262 if (!r && R(e)) t = e;
7264 for (var n in t = [], e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n);
7270 getWatchables: C(_, function(e) {
7271 for (var t = [], n = E(e = e || []), r = n.length, i = 0; i < r; i++) {
7272 var o = e === n ? i : n[i],
7276 if (t.push(l), d[2] || d[1]) {
7287 getOptions: function() {
7288 for (var e = [], t = {}, n = _(f) || [], r = E(n), i = r.length, o = 0; o < i; o++) {
7289 var a = n === r ? o : r[o],
7294 d = new w(u, c, v(f, l), b(f, l), y(f, l));
7300 getOptionFromViewValue: function(e) {
7303 getViewValueFromOption: function(e) {
7304 return h ? j(e.viewValue) : e.viewValue
7309 }(t.ngOptions, a, e),
7310 h = v[0].createDocumentFragment();
7313 var n, r, i = b.cloneNode(!1);
7314 t.appendChild(i), r = i, ((n = e).element = r).disabled = n.disabled, n.label !== r.label && (r.label = n.label, r.textContent = n.label), r.value = n.selectValue
7318 var t = u.getOptionFromViewValue(e),
7320 return n && !n.selected && (n.selected = !0), t
7322 s.generateUnknownOptionValue = function(e) {
7324 }, c ? (s.writeValue = function(e) {
7326 var t = e && e.map(m) || [];
7327 u.items.forEach(function(e) {
7328 e.element.selected && !H(t, e) && (e.element.selected = !1)
7331 }, s.readValue = function() {
7332 var e = a.val() || [],
7334 return ve(e, function(e) {
7335 var t = u.selectValueMap[e];
7336 t && !t.disabled && n.push(u.getViewValueFromOption(t))
7338 }, f.trackBy && e.$watchCollection(function() {
7339 if (ke(l.$viewValue)) return l.$viewValue.map(function(e) {
7340 return f.getTrackByValue(e)
7344 })) : (s.writeValue = function(e) {
7346 var t = a[0].options[a[0].selectedIndex],
7347 n = u.getOptionFromViewValue(e);
7348 t && t.removeAttribute("selected"), n ? (a[0].value !== n.selectValue && (s.removeUnknownOption(), a[0].value = n.selectValue, n.element.selected = !0), n.element.setAttribute("selected", "selected")) : s.selectUnknownOrEmptyOption(e)
7350 }, s.readValue = function() {
7351 var e = u.selectValueMap[a.val()];
7352 return e && !e.disabled ? (s.unselectEmptyOption(), s.removeUnknownOption(), u.getViewValueFromOption(e)) : null
7353 }, f.trackBy && e.$watch(function() {
7354 return f.getTrackByValue(l.$viewValue)
7357 })), d && (g(s.emptyOption)(e), a.prepend(s.emptyOption), s.emptyOption[0].nodeType === Ve ? (s.hasEmptyOption = !1, s.registerOption = function(e, t) {
7358 "" === t.val() && (s.hasEmptyOption = !0, s.emptyOption = t, s.emptyOption.removeClass("ng-scope"), l.$render(), t.on("$destroy", function() {
7359 var e = s.$isEmptyOptionSelected();
7360 s.hasEmptyOption = !1, s.emptyOption = void 0, e && l.$render()
7362 }) : s.emptyOption.removeClass("ng-scope")), e.$watchCollection(f.getWatchables, function() {
7363 var e = u && s.readValue();
7365 for (var t = u.items.length - 1; 0 <= t; t--) {
7367 O(n.group) ? Mt(n.element.parentNode) : Mt(n.element)
7371 if (u.items.forEach(function(e) {
7373 O(e.group) ? ((t = r[e.group]) || (t = y.cloneNode(!1), h.appendChild(t), t.label = null === e.group ? "null" : e.group, r[e.group] = t), p(e, t)) : p(e, h)
7374 }), a[0].appendChild(h), l.$render(), !l.$isEmpty(e)) {
7375 var i = s.readValue(),
7377 (o ? Ie(e, i) : e === i) || (l.$setViewValue(i), l.$render())
7384 pa = ["$locale", "$interpolate", "$log", function(p, m, g) {
7386 b = /^when(Minus)?(.+)$/;
7388 link: function(i, o, a) {
7390 l = a.$attr.when && o.attr(a.$attr.when),
7392 u = i.$eval(l) || {},
7394 t = m.startSymbol(),
7396 r = t + e + "-" + c + n,
7402 ve(a, function(e, t) {
7405 var r = (n[1] ? "-" : "") + me(n[2]);
7406 u[r] = o.attr(a.$attr[t])
7408 }), ve(u, function(e, t) {
7409 d[t] = m(e.replace(v, r))
7410 }), i.$watch(e, function(e) {
7411 var t = parseFloat(e),
7413 if (n || t in u || (t = p.pluralCat(t - c)), !(t === s || n && S(s))) {
7416 we(r) ? (null != e && g.debug("ngPluralize: no rule defined for '" + t + "' in " + l), f = _e, h()) : f = i.$watch(r, h), s = t
7423 ga = ["$parse", function(t) {
7427 compile: function(e, i) {
7430 s = a.assign || function() {
7431 throw ma("nonassign", 'Expression in ngRef="{0}" is non-assignable!', i.ngRef)
7433 return function(e, t, n) {
7435 if (n.hasOwnProperty("ngRefRead")) {
7436 if ("$element" === n.ngRefRead) r = t;
7437 else if (!(r = t.data("$" + n.ngRefRead + "Controller"))) throw ma("noctrl", 'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"', n.ngRefRead, i.ngRef)
7438 } else r = t.data("$" + o + "Controller");
7439 s(e, r = r || t), t.on("$destroy", function() {
7440 a(e) === r && s(e, null)
7446 va = ["$parse", "$animate", "$compile", function(s, A, l) {
7447 var S = "$$NG_REMOVED",
7449 O = function(e, t, n, r, i, o, a) {
7450 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))
7452 N = function(e, t, n) {
7455 I = function(e, t) {
7461 transclude: "element",
7465 compile: function(e, t) {
7467 E = l.$$createComment("end ngRepeat", w),
7468 n = w.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
7469 if (!n) throw D("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", w);
7474 if (!(n = r.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/))) throw D("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", r);
7475 var k, x = n[3] || n[1],
7477 if (C && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(C) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(C))) throw D("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", C);
7483 k = function(e, t, n, r) {
7484 return T && (M[T] = t), M[x] = n, M.$index = r, a(e, M)
7487 return function(b, y, e, t, _) {
7489 b.$watchCollection(i, function(e) {
7490 var r, t, n, i, o, a, s, l, c, u, d, f, h, p = y[0],
7492 if (C && (b[C] = e), R(e)) c = e, l = k || N;
7494 for (var g in l = k || I, c = [], e) pe.call(e, g) && "$" !== g.charAt(0) && c.push(g);
7495 for (i = c.length, d = new Array(i), r = 0; r < i; r++)
7496 if (o = e === c ? r : c[r], a = e[o], s = l(b, o, a, r), $[s]) u = $[s], delete $[s], m[s] = u, d[r] = u;
7498 if (m[s]) throw ve(d, function(e) {
7499 e && e.scope && ($[e.id] = e)
7500 }), D("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", w, s, a);
7506 } for (var v in M && (M[x] = void 0), $) {
7507 if (f = ce((u = $[v]).clone), A.leave(f), f[0].parentNode)
7508 for (r = 0, t = f.length; r < t; r++) f[r][S] = !0;
7511 for (r = 0; r < i; r++)
7512 if (o = e === c ? r : c[r], a = e[o], (u = d[r]).scope) {
7514 (n = n.nextSibling) && n[S];);
7515 u.clone[0] !== n && A.move(ce(u.clone), null, p), p = (h = u).clone[h.clone.length - 1], O(u.scope, r, x, a, T, o, i)
7516 } else _(function(e, t) {
7518 var n = E.cloneNode(!1);
7519 e[e.length++] = n, A.enter(e, null, p), p = n, u.clone = e, m[u.id] = u, O(u.scope, r, x, a, T, o, i)
7528 ya = "ng-hide-animate",
7529 _a = ["$animate", function(r) {
7533 link: function(e, t, n) {
7534 e.$watch(n.ngShow, function(e) {
7535 r[e ? "removeClass" : "addClass"](t, ba, {
7542 $a = ["$animate", function(r) {
7546 link: function(e, t, n) {
7547 e.$watch(n.ngHide, function(e) {
7548 r[e ? "addClass" : "removeClass"](t, ba, {
7555 wa = Vi(function(e, t, n) {
7556 e.$watchCollection(n.ngStyle, function(n, e) {
7557 e && n !== e && (n || (n = {}), ve(e, function(e, t) {
7558 null == n[t] && (n[t] = "")
7562 Ea = ["$animate", "$compile", function(u, d) {
7564 require: "ngSwitch",
7565 controller: ["$scope", function() {
7568 link: function(e, t, n, i) {
7569 var r = n.ngSwitch || n.on,
7574 c = function(t, n) {
7575 return function(e) {
7576 !1 !== e && t.splice(n, 1)
7579 e.$watch(r, function(e) {
7580 for (var t, n; s.length;) u.cancel(s.pop());
7581 for (t = 0, n = l.length; t < n; ++t) {
7582 var r = ce(a[t].clone);
7583 l[t].$destroy(), (s[t] = u.leave(r)).done(c(s, t))
7585 a.length = 0, l.length = 0, (o = i.cases["!" + e] || i.cases["?"]) && ve(o, function(i) {
7586 i.transclude(function(e, t) {
7589 e[e.length++] = d.$$createComment("end ngSwitchWhen");
7593 a.push(r), u.enter(e, n.parent(), n)
7601 transclude: "element",
7603 require: "^ngSwitch",
7605 link: function(e, t, n, r, i) {
7606 ve(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter(function(e, t, n) {
7607 return n[t - 1] !== e
7609 r.cases["!" + e] = r.cases["!" + e] || [], r.cases["!" + e].push({
7617 transclude: "element",
7619 require: "^ngSwitch",
7621 link: function(e, t, n, r, i) {
7622 r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
7628 xa = M("ngTransclude"),
7629 Ta = ["$compile", function(t) {
7632 compile: function(e) {
7633 var s = t(e.contents());
7635 function(e, n, t, r, i) {
7636 if (!i) throw xa("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", He(n));
7637 t.ngTransclude === t.$attr.ngTransclude && (t.ngTransclude = "");
7638 var o = t.ngTransclude || t.ngTranscludeSlot;
7646 e.length && function(e) {
7647 for (var t = 0, n = e.length; t < n; t++) {
7649 if (r.nodeType !== Ue || r.nodeValue.trim()) return !0
7651 }(e) ? n.append(e) : (a(), t.$destroy())
7652 }, null, o), o && !i.isSlotFilled(o) && a()
7657 Ma = ["$templateCache", function(i) {
7661 compile: function(e, t) {
7662 if ("text/ng-template" === t.type) {
7676 e.prop("selected", t), e.attr("selected", t)
7678 var Da = ["$element", "$scope", function(i, t) {
7681 s.selectValueMap = {}, s.ngModelCtrl = Aa, s.multiple = !1, s.unknownOption = he(de.document.createElement("option")), s.hasEmptyOption = !1, s.emptyOption = void 0, s.renderUnknownOption = function(e) {
7682 var t = s.generateUnknownOptionValue(e);
7683 s.unknownOption.val(t), i.prepend(s.unknownOption), Sa(s.unknownOption, !0), i.val(t)
7684 }, s.updateUnknownOption = function(e) {
7685 var t = s.generateUnknownOptionValue(e);
7686 s.unknownOption.val(t), Sa(s.unknownOption, !0), i.val(t)
7687 }, s.generateUnknownOptionValue = function(e) {
7688 return "? " + jt(e) + " ?"
7689 }, s.removeUnknownOption = function() {
7690 s.unknownOption.parent() && s.unknownOption.remove()
7691 }, s.selectEmptyOption = function() {
7692 s.emptyOption && (i.val(""), Sa(s.emptyOption, !0))
7693 }, s.unselectEmptyOption = function() {
7694 s.hasEmptyOption && Sa(s.emptyOption, !1)
7695 }, t.$on("$destroy", function() {
7696 s.renderUnknownOption = _e
7697 }), s.readValue = function() {
7699 t = e in s.selectValueMap ? s.selectValueMap[e] : e;
7700 return s.hasOption(t) ? t : null
7701 }, s.writeValue = function(e) {
7702 var t = i[0].options[i[0].selectedIndex];
7703 if (t && Sa(he(t), !1), s.hasOption(e)) {
7704 s.removeUnknownOption();
7706 i.val(n in s.selectValueMap ? n : e);
7707 var r = i[0].options[i[0].selectedIndex];
7709 } else s.selectUnknownOrEmptyOption(e)
7710 }, s.addOption = function(e, t) {
7711 if (t[0].nodeType !== Ve) {
7712 le(e, '"option value"'), "" === e && (s.hasEmptyOption = !0, s.emptyOption = t);
7713 var n = r.get(e) || 0;
7714 r.set(e, n + 1), l()
7716 }, s.removeOption = function(e) {
7718 t && (1 === t ? (r.delete(e), "" === e && (s.hasEmptyOption = !1, s.emptyOption = void 0)) : r.set(e, t - 1))
7719 }, s.hasOption = function(e) {
7721 }, s.$hasEmptyOption = function() {
7722 return s.hasEmptyOption
7723 }, s.$isUnknownOptionSelected = function() {
7724 return i[0].options[0] === s.unknownOption[0]
7725 }, s.$isEmptyOptionSelected = function() {
7726 return s.hasEmptyOption && i[0].options[i[0].selectedIndex] === s.emptyOption[0]
7728 var e = !(s.selectUnknownOrEmptyOption = function(e) {
7729 null == e && s.emptyOption ? (s.removeUnknownOption(), s.selectEmptyOption()) : s.unknownOption.parent().length ? s.updateUnknownOption(e) : s.renderUnknownOption(e)
7733 e || (e = !0, t.$$postDigest(function() {
7734 e = !1, s.ngModelCtrl.$render()
7740 n || (n = !0, t.$$postDigest(function() {
7741 t.$$destroyed || (n = !1, s.ngModelCtrl.$setViewValue(s.readValue()), e && s.ngModelCtrl.$render())
7744 s.registerOption = function(e, r, i, t, n) {
7746 i.$attr.ngValue ? i.$observe("value", function(e) {
7747 var t, n = r.prop("selected");
7748 O(a) && (s.removeOption(o), delete s.selectValueMap[a], t = !0), a = jt(e), o = e, s.selectValueMap[a] = e, s.addOption(e, r), r.attr("value", a), t && n && c()
7749 }) : t ? i.$observe("value", function(e) {
7752 var n = r.prop("selected");
7753 O(o) && (s.removeOption(o), t = !0), o = e, s.addOption(e, r), t && n && c()
7754 }) : n ? e.$watch(n, function(e, t) {
7756 var n = r.prop("selected");
7757 t !== e && s.removeOption(t), s.addOption(e, r), t && n && c()
7758 }) : s.addOption(i.value, r);
7759 i.$observe("disabled", function(e) {
7760 ("true" === e || e && r.prop("selected")) && (s.multiple ? c(!0) : (s.ngModelCtrl.$setViewValue(null), s.ngModelCtrl.$render()))
7761 }), r.on("$destroy", function() {
7762 var e = s.readValue(),
7764 s.removeOption(t), l(), (s.multiple && e && -1 !== e.indexOf(t) || e === t) && c(!0)
7771 require: ["select", "?ngModel"],
7775 pre: function(e, t, n, r) {
7778 if (!o) return void(i.registerOption = _e);
7779 if (i.ngModelCtrl = o, t.on("change", function() {
7780 i.removeUnknownOption(), e.$apply(function() {
7781 o.$setViewValue(i.readValue())
7784 i.multiple = !0, i.readValue = function() {
7786 return ve(t.find("option"), function(e) {
7787 if (e.selected && !e.disabled) {
7789 n.push(t in i.selectValueMap ? i.selectValueMap[t] : t)
7792 }, i.writeValue = function(r) {
7793 ve(t.find("option"), function(e) {
7794 var t = !!r && (H(r, e.value) || H(r, i.selectValueMap[e.value])),
7796 t !== n && Sa(he(e), t)
7800 e.$watch(function() {
7801 s !== o.$viewValue || Ie(a, o.$viewValue) || (a = We(o.$viewValue), o.$render()), s = o.$viewValue
7802 }), o.$isEmpty = function(e) {
7803 return !e || 0 === e.length
7807 post: function(e, t, n, r) {
7811 i.$render = function() {
7812 o.writeValue(i.$viewValue)
7818 Na = ["$interpolate", function(n) {
7822 compile: function(e, t) {
7824 return O(t.ngValue) || (O(t.value) ? a = n(t.value, !0) : (s = n(e.text(), !0)) || t.$set("value", e.text())),
7826 var r = "$selectController",
7828 o = i.data(r) || i.parent().data(r);
7829 o && o.registerOption(e, t, n, a, s)
7834 Ia = ["$parse", function(o) {
7837 require: "?ngModel",
7838 link: function(e, t, n, r) {
7840 var i = n.hasOwnProperty("required") || o(n.ngRequired)(e);
7841 n.ngRequired || (n.required = !0), r.$validators.required = function(e, t) {
7842 return !i || !r.$isEmpty(t)
7843 }, n.$observe("required", function(e) {
7844 i !== e && (i = e, r.$validate())
7850 Ra = ["$parse", function(n) {
7853 require: "?ngModel",
7854 compile: function(e, t) {
7856 return t.ngPattern && (a = t.ngPattern, s = "/" === t.ngPattern.charAt(0) && o.test(t.ngPattern) ? function() {
7858 } : n(t.ngPattern)),
7859 function(e, n, t, r) {
7862 t.ngPattern ? i = s(e) : a = t.pattern;
7863 var o = ja(i, a, n);
7864 t.$observe("pattern", function(e) {
7866 o = ja(e, a, n), (t && t.toString()) !== (o && o.toString()) && r.$validate()
7867 }), r.$validators.pattern = function(e, t) {
7868 return r.$isEmpty(t) || we(o) || o.test(t)
7875 Pa = ["$parse", function(a) {
7878 require: "?ngModel",
7879 link: function(e, t, n, r) {
7881 var i = n.maxlength || a(n.ngMaxlength)(e),
7883 n.$observe("maxlength", function(e) {
7884 i !== e && (o = La(e), i = e, r.$validate())
7885 }), r.$validators.maxlength = function(e, t) {
7886 return o < 0 || r.$isEmpty(t) || t.length <= o
7892 Ha = ["$parse", function(a) {
7895 require: "?ngModel",
7896 link: function(e, t, n, r) {
7898 var i = n.minlength || a(n.ngMinlength)(e),
7900 n.$observe("minlength", function(e) {
7901 i !== e && (o = La(e) || -1, i = e, r.$validate())
7902 }), r.$validators.minlength = function(e, t) {
7903 return r.$isEmpty(t) || t.length >= o
7910 function ja(e, t, n) {
7912 if (Ce(e) && (e = new RegExp("^" + e + "$")), !e.test) throw M("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", t, e, He(n));
7919 return S(t) ? -1 : t
7921 de.angular.bootstrap ? de.console && console.log("WARNING: Tried to load AngularJS more than once.") : (! function() {
7925 (t = we(e) ? de.jQuery : e ? de[e] : void 0) && t.fn.on ? be((he = t).fn, {
7927 isolateScope: St.isolateScope,
7928 controller: St.controller,
7929 injector: St.injector,
7930 inheritedData: St.inheritedData
7931 }) : he = ft, i = he.cleanData, he.cleanData = function(e) {
7932 for (var t, n, r = 0; null != (n = e[r]); r++)(t = (he._data(n) || {}).events) && t.$destroy && he(n).triggerHandler("$destroy");
7934 }, y.element = he, ae = !0
7937 errorHandlingConfig: e,
7965 reloadWithDebugInfo: re,
7968 $$encodeUriSegment: X,
7969 $$encodeUriQuery: Q,
7973 }), (v = function(e) {
7974 var d = M("$injector"),
7977 function t(e, t, n) {
7978 return e[t] || (e[t] = n())
7980 var n = t(e, "angular", Object);
7981 return n.$$minErr = n.$$minErr || M, t(n, "module", function() {
7983 return function(s, l, c) {
7985 return function(e, t) {
7986 if ("hasOwnProperty" === e) throw f("badname", "hasOwnProperty is not a valid {0} name", t)
7987 }(s, "module"), l && e.hasOwnProperty(s) && (e[s] = null), t(e, s, function() {
7988 if (!l) throw d("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.", s);
7992 n = r("$injector", "invoke", "push", e),
7999 if (!Ee(e)) throw f("aobj", "Argument '{0}' must be an object", "value");
8006 provider: i("$provide", "provider"),
8007 factory: i("$provide", "factory"),
8008 service: i("$provide", "service"),
8009 value: r("$provide", "value"),
8010 constant: r("$provide", "constant", "unshift"),
8011 decorator: i("$provide", "decorator", e),
8012 animation: i("$animateProvider", "register"),
8013 filter: i("$filterProvider", "register"),
8014 controller: i("$controllerProvider", "register"),
8015 directive: i("$compileProvider", "directive"),
8016 component: i("$compileProvider", "component"),
8019 return t.push(e), this
8022 return c && n(c), a;
8024 function r(e, t, n, r) {
8025 return r || (r = o),
8027 return r[n || "push"]([e, t, arguments]), a
8031 function i(n, r, i) {
8032 return i || (i = o),
8034 return t && Te(t) && (t.$$moduleName = s), i.push([n, r, arguments]), a
8040 }(de))("ng", ["ngLocale"], ["$provide", function(e) {
8043 }), e.provider("$compile", vn).directive({
8072 ngSwitchDefault: ka,
8091 }).directive(zi).directive(Fo), e.provider({
8097 $$AnimateRunner: cn,
8098 $$animateAsyncRun: ln,
8103 $$isDocumentHidden: Mn,
8104 $exceptionHandler: An,
8109 $$intervalFactory: Qn,
8111 $httpParamSerializer: jn,
8112 $httpParamSerializerJQLike: Ln,
8115 $jsonpCallbacks: Jn,
8125 $$taskTrackerFactory: ti,
8127 $templateRequest: ii,
8137 angularVersion: "1.7.8"
8138 }), y.module("ngLocale", [], ["$provide", function(e) {
8141 e.value("$locale", {
8143 AMPMS: ["AM", "PM"],
8144 DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8145 ERANAMES: ["Before Christ", "Anno Domini"],
8148 MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8149 SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8150 SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8151 STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8152 WEEKENDRANGE: [5, 6],
8153 fullDate: "EEEE, MMMM d, y",
8154 longDate: "MMMM d, y",
8155 medium: "MMM d, y h:mm:ss a",
8156 mediumDate: "MMM d, y",
8157 mediumTime: "h:mm:ss a",
8158 short: "M/d/yy h:mm a",
8159 shortDate: "M/d/yy",
8190 pluralCat: function(e, t) {
8192 r = function(e, t) {
8194 void 0 === i && (i = Math.min((n = e, -1 == (r = (n += "").indexOf(".")) ? 0 : n.length - r - 1), 3));
8195 var o = Math.pow(10, i);
8201 return 1 == n && 0 == r.v ? i : o
8204 }]), he(function() {
8207 }(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>'),
8209 "object" == typeof exports && "undefined" != typeof module ? t(exports, require("angular")) : "function" == typeof define && define.amd ? define(["exports", "angular"], t) : t((e = e || self)["@uirouter/angularjs"] = {}, e.angular)
8210 }(this, function(m, e) {
8212 $r.$inject = ["state"];
8214 E = e && e.module ? e : t;
8217 var e = [].slice.apply(arguments, [1]),
8219 return function e(t) {
8220 return t.length >= r ? n.apply(null, t) : function() {
8221 return e(t.concat([].slice.apply(arguments)))
8230 for (var e = r, t = n[r].apply(this, arguments); e--;) t = n[e].call(this, t);
8236 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8237 return n.apply(null, [].slice.call(arguments).reverse())
8239 var y = function(t) {
8240 return function(e) {
8244 v = c(function(e, t, n) {
8245 return n && n[e] === t
8248 return l.apply(null, e.split(".").map(y))
8252 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8253 return !n.apply(null, e)
8259 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8260 return n.apply(null, e) && r.apply(null, e)
8266 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8267 return n.apply(null, e) || r.apply(null, e)
8270 var u = function(n) {
8271 return function(e) {
8272 return e.reduce(function(e, t) {
8278 return function(e) {
8279 return e.reduce(function(e, t) {
8285 return function(e) {
8286 return null != e && e.constructor === t || e instanceof t
8290 return function(e) {
8301 return function(e) {
8302 return e[t].apply(e, n)
8307 return function(e) {
8308 for (var t = 0; t < n.length; t++)
8309 if (n[t][0](e)) return n[t][1](e)
8312 var s = Object.prototype.toString,
8314 return function(e) {
8315 return typeof e === t
8328 return null !== e && "object" == typeof e
8332 return "[object Date]" === s.call(e)
8335 return "[object RegExp]" === s.call(e)
8339 if (S(e) && e.length) {
8340 var t = e.slice(0, -1),
8342 return !(t.filter(d(M)).length || n.filter(d(x)).length)
8346 var I = r(A, l(y("then"), x)),
8347 R = function(r, e) {
8348 return e.reduce(function(e, t) {
8349 return e[t] = (n = r + "." + t + "()", function() {
8350 throw new Error("No implementation for " + n + ". The framework specific code did not implement this method.")
8359 H = "object" == typeof self && self.self === self && self || "object" == typeof global && global.global === global && global || void 0,
8360 j = H.angular || {},
8361 L = j.fromJson || JSON.parse.bind(JSON),
8362 F = j.toJson || JSON.stringify.bind(JSON),
8363 q = j.forEach || function(t, n, e) {
8364 if (S(t)) return t.forEach(n, e);
8365 Object.keys(t).forEach(function(e) {
8369 U = Object.assign || Me,
8378 function W(t, r, n, e, i) {
8379 void 0 === i && (i = !1);
8380 var o = function(e) {
8381 return t()[e].bind(n())
8383 return (e = e || Object.keys(t())).reduce(function(e, t) {
8385 return e[t] = i ? (n = t, function() {
8386 return r[n] = o(n), r[n].apply(null, arguments)
8390 var Y = function(e, t) {
8391 return U(Object.create(e), t)
8396 return -1 !== e.indexOf(t)
8401 var n = e.indexOf(t);
8402 return 0 <= n && e.splice(n, 1), e
8409 var ee = function(t) {
8410 return t.slice().forEach(function(e) {
8411 "function" == typeof e && e(), Z(t, e)
8416 for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
8417 var r = U.apply(void 0, [{}].concat(t.reverse()));
8418 return U(r, ie(e || {}, Object.keys(r)))
8420 var ne = function(e, t) {
8426 for (var r in e.path) {
8427 if (e.path[r] !== t.path[r]) break;
8435 for (var r in e) - 1 !== t.indexOf(r) && (n[r] = e[r]);
8440 return Object.keys(n).filter(d(G(e))).reduce(function(e, t) {
8441 return e[t] = n[t], e
8452 i = t ? function(e) {
8454 } : function(e, t) {
8457 return q(e, function(e, t) {
8464 return q(e, function(e, t) {
8465 r || n(e, t) && (r = e)
8470 function ue(e, n, r) {
8471 return r = r || (S(e) ? [] : {}), q(e, function(e, t) {
8472 return r[t] = n(e, t)
8475 var de = function(t) {
8476 return Object.keys(t).map(function(e) {
8480 fe = function(e, t) {
8483 he = function(e, t) {
8486 pe = function(e, t) {
8489 me = function(e, t) {
8490 return S(t) ? e.concat(t.reduce(me, [])) : ge(e, t)
8496 var ve = function(e, t) {
8497 return G(e, t) ? e : ge(e, t)
8500 return e.reduce(pe, [])
8503 return e.reduce(me, [])
8509 return void 0 === r && (r = "assert failure"),
8512 if (!t) throw new Error(x(r) ? r(e) : r);
8516 var Ee = function(t) {
8517 return Object.keys(t).map(function(e) {
8523 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8524 if (0 === e.length) return [];
8525 for (var n = e.reduce(function(e, t) {
8526 return Math.min(t.length, e)
8527 }, 9007199254740991), r = [], i = function(t) {
8533 r.push([e[0][t], e[1][t]]);
8536 r.push([e[0][t], e[1][t], e[2][t]]);
8539 r.push([e[0][t], e[1][t], e[2][t], e[3][t]]);
8542 r.push(e.map(function(e) {
8546 }, o = 0; o < n; o++) i(o);
8552 if (S(t) && (n = t[0], r = t[1]), !M(n)) throw new Error("invalid parameters to applyPairs");
8557 return e.length && e[e.length - 1] || void 0
8561 return t && Object.keys(t).forEach(function(e) {
8563 }), t || (t = {}), U(t, e)
8567 for (var t = 1; t < arguments.length; t++) {
8568 var n = arguments[t];
8570 for (var r = Object.keys(n), i = 0; i < r.length; i++) e[r[i]] = n[r[i]]
8576 if (e === t) return !0;
8577 if (null === e || null === t) return !1;
8578 if (e != e && t != t) return !0;
8580 if (n !== typeof t || "object" !== n) return !1;
8581 var r, i, o = [e, t];
8582 if (u(S)(o)) return i = t, (r = e).length === i.length && Ce(r, i).reduce(function(e, t) {
8583 return e && Ae(t[0], t[1])
8585 if (u(D)(o)) return e.getTime() === t.getTime();
8586 if (u(O)(o)) return e.toString() === t.toString();
8587 if (u(x)(o)) return !0;
8588 if ([x, S, D, O].map(f).reduce(function(e, t) {
8593 if (!Ae(e[s], t[s])) return !1;
8597 if (!a[s]) return !1;
8600 var Se, De = function(e) {
8601 return e.catch(function(e) {
8606 return De(P.$q.reject(e))
8610 this.text = e, this.glob = e.split(".");
8611 var t = this.text.split(".").map(function(e) {
8612 return "**" === e ? "(?:|(?:\\.[^.]*)*)" : "*" === e ? "\\.[^.]*" : "\\." + e
8614 this.regexp = new RegExp("^" + t + "$")
8616 return t.is = function(e) {
8617 return !!/[!,*]+/.exec(e)
8618 }, t.fromString = function(e) {
8619 return t.is(e) ? new t(e) : null
8620 }, t.prototype.matches = function(e) {
8621 return this.regexp.test("." + e)
8626 void 0 === e && (e = []), void 0 === t && (t = null), this._items = e, this._limit = t, this._evictListeners = [], this.onEvict = Q(this._evictListeners)
8628 return e.prototype.enqueue = function(e) {
8629 var t = this._items;
8630 return t.push(e), this._limit && t.length > this._limit && this.evict(), e
8631 }, e.prototype.evict = function() {
8632 var t = this._items.shift();
8633 return this._evictListeners.forEach(function(e) {
8636 }, e.prototype.dequeue = function() {
8637 if (this.size()) return this._items.splice(0, 1)[0]
8638 }, e.prototype.clear = function() {
8639 var e = this._items;
8640 return this._items = [], e
8641 }, e.prototype.size = function() {
8642 return this._items.length
8643 }, e.prototype.remove = function(e) {
8644 var t = this._items.indexOf(e);
8645 return -1 < t && this._items.splice(t, 1)[0]
8646 }, e.prototype.peekTail = function() {
8647 return this._items[this._items.length - 1]
8648 }, e.prototype.peekHead = function() {
8649 if (this.size()) return this._items[0]
8652 (Se = m.RejectType || (m.RejectType = {}))[Se.SUPERSEDED = 2] = "SUPERSEDED", Se[Se.ABORTED = 3] = "ABORTED", Se[Se.INVALID = 4] = "INVALID", Se[Se.IGNORED = 5] = "IGNORED", Se[Se.ERROR = 6] = "ERROR";
8655 function r(e, t, n) {
8656 this.$id = Re++, this.type = e, this.message = t, this.detail = n
8658 return r.isRejectionPromise = function(e) {
8659 return e && "function" == typeof e.then && h(r)(e._transitionRejection)
8660 }, r.superseded = function(e, t) {
8661 var n = new r(m.RejectType.SUPERSEDED, "The transition has been superseded by a different transition", e);
8662 return t && t.redirected && (n.redirected = !0), n
8663 }, r.redirected = function(e) {
8664 return r.superseded(e, {
8667 }, r.invalid = function(e) {
8668 return new r(m.RejectType.INVALID, "This transition is invalid", e)
8669 }, r.ignored = function(e) {
8670 return new r(m.RejectType.IGNORED, "The transition was ignored", e)
8671 }, r.aborted = function(e) {
8672 return new r(m.RejectType.ABORTED, "The transition has been aborted", e)
8673 }, r.errored = function(e) {
8674 return new r(m.RejectType.ERROR, "The transition errored", e)
8675 }, r.normalize = function(e) {
8676 return h(r)(e) ? e : r.errored(e)
8677 }, r.prototype.toString = function() {
8678 var e, t = (e = this.detail) && e.toString !== Object.prototype.toString ? e.toString() : Be(e);
8679 return "Transition Rejection($id: " + this.$id + " type: " + this.type + ", message: " + this.message + ", detail: " + t + ")"
8680 }, r.prototype.toPromise = function() {
8681 return U(Oe(this), {
8682 _transitionRejection: this
8688 return t.length <= e ? t : t.substr(0, e - 3) + "..."
8692 for (; t.length < e;) t += " ";
8697 return e.replace(/^([A-Z])/, function(e) {
8698 return e.toLowerCase()
8699 }).replace(/([A-Z])/g, function(e) {
8700 return "-" + e.toLowerCase()
8706 n = t.match(/^(function [^ ]+\([^)]*\))/),
8709 return i && r.match(/function \(/) ? "function " + i + r.substr(9) : r
8713 var t = S(e) ? e.slice(-1)[0] : e;
8714 return t && t.toString() || "undefined"
8716 var Ue = Pe.isRejectionPromise,
8718 [_, p("undefined")],
8720 [I, p("[Promise]")],
8722 return e._transitionRejection.toString()
8725 return A(e) && !S(e) && e.constructor !== Object && x(e.toString)
8738 if (-1 !== t.indexOf(e)) return "[circular ref]";
8743 return _(e) ? n(e) : JSON.stringify(e, function(e, t) {
8745 }).replace(/\\"/g, '"')
8747 var ze = function(n) {
8748 return function(e) {
8749 if (!e) return ["", ""];
8750 var t = e.indexOf(n);
8751 return -1 === t ? [e, ""] : [e.substr(0, t), e.substr(t + 1)]
8754 We = new RegExp("^(?:[a-z]+:)?//[^/]+/"),
8756 return e.replace(/\/[^/]*$/, "")
8762 return e ? e.replace(/^#/, "") : ""
8766 var t = new RegExp("(" + e + ")", "g");
8767 return function(e) {
8768 return e.split(t).filter(B)
8773 return M(xe(e)) && M(t) ? e.slice(0, -1).concat(xe(e) + t) : ge(e, t)
8777 if (!e) return "ui-view (defunct)";
8778 var t = e.creationContext ? e.creationContext.name || "(root)" : "(none)";
8779 return "[ui-view#" + e.id + " " + e.$type + ":" + e.fqn + " (" + e.name + "@" + t + ")]"
8783 return T(e) ? m.Category[e] : m.Category[m.Category[e]]
8785 var nt, rt = Function.prototype.bind.call(console.log, console),
8786 it = x(console.table) ? console.table.bind(console) : rt.bind(console);
8787 (nt = m.Category || (m.Category = {}))[nt.RESOLVE = 0] = "RESOLVE", nt[nt.TRANSITION = 1] = "TRANSITION", nt[nt.HOOK = 2] = "HOOK", nt[nt.UIVIEW = 3] = "UIVIEW", nt[nt.VIEWCONFIG = 4] = "VIEWCONFIG";
8789 at = C("router.$id"),
8791 return "Transition #" + ot(e) + "-" + at(e)
8795 this._enabled = {}, this.approximateDigests = 0
8797 return e.prototype._set = function(t, e) {
8799 e.length || (e = Object.keys(m.Category).map(function(e) {
8800 return parseInt(e, 10)
8801 }).filter(function(e) {
8803 }).map(function(e) {
8804 return m.Category[e]
8805 })), e.map(tt).forEach(function(e) {
8806 return n._enabled[e] = t
8808 }, e.prototype.enable = function() {
8809 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8811 }, e.prototype.disable = function() {
8812 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8814 }, e.prototype.enabled = function(e) {
8815 return !!this._enabled[tt(e)]
8816 }, e.prototype.traceTransitionStart = function(e) {
8817 this.enabled(m.Category.TRANSITION) && console.log(st(e) + ": Started -> " + Be(e))
8818 }, e.prototype.traceTransitionIgnored = function(e) {
8819 this.enabled(m.Category.TRANSITION) && console.log(st(e) + ": Ignored <> " + Be(e))
8820 }, e.prototype.traceHookInvocation = function(e, t, n) {
8821 if (this.enabled(m.Category.HOOK)) {
8822 var r = C("traceData.hookType")(n) || "internal",
8823 i = C("traceData.context.state.name")(n) || C("traceData.context")(n) || "unknown",
8824 o = Fe(e.registeredHook.callback);
8825 console.log(st(t) + ": Hook -> " + r + " context: " + i + ", " + He(200, o))
8827 }, e.prototype.traceHookResult = function(e, t, n) {
8828 this.enabled(m.Category.HOOK) && console.log(st(t) + ": <- Hook returned: " + He(200, Be(e)))
8829 }, e.prototype.traceResolvePath = function(e, t, n) {
8830 this.enabled(m.Category.RESOLVE) && console.log(st(n) + ": Resolving " + e + " (" + t + ")")
8831 }, e.prototype.traceResolvableResolved = function(e, t) {
8832 this.enabled(m.Category.RESOLVE) && console.log(st(t) + ": <- Resolved " + e + " to: " + He(200, Be(e.data)))
8833 }, e.prototype.traceError = function(e, t) {
8834 this.enabled(m.Category.TRANSITION) && console.log(st(t) + ": <- Rejected " + Be(t) + ", reason: " + e)
8835 }, e.prototype.traceSuccess = function(e, t) {
8836 this.enabled(m.Category.TRANSITION) && console.log(st(t) + ": <- Success " + Be(t) + ", final state: " + e.name)
8837 }, e.prototype.traceUIViewEvent = function(e, t, n) {
8838 void 0 === n && (n = ""), this.enabled(m.Category.UIVIEW) && console.log("ui-view: " + je(30, e) + " " + et(t) + n)
8839 }, e.prototype.traceUIViewConfigUpdated = function(e, t) {
8840 this.enabled(m.Category.UIVIEW) && this.traceUIViewEvent("Updating", e, " with ViewConfig from context='" + t + "'")
8841 }, e.prototype.traceUIViewFill = function(e, t) {
8842 this.enabled(m.Category.UIVIEW) && this.traceUIViewEvent("Fill", e, " with: " + He(200, t))
8843 }, e.prototype.traceViewSync = function(e) {
8844 if (this.enabled(m.Category.VIEWCONFIG)) {
8845 var a = "uiview component fqn",
8846 t = e.map(function(e) {
8847 var t, n = e.uiView,
8850 o = r && r.viewDecl.$context.name + ": (" + r.viewDecl.$name + ")";
8851 return (t = {})[a] = i, t["view config state (view name)"] = o, t
8852 }).sort(function(e, t) {
8853 return (e[a] || "").localeCompare(t[a] || "")
8857 }, e.prototype.traceViewServiceEvent = function(e, t) {
8859 this.enabled(m.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + e + " " + (r = (n = t).viewDecl, i = r.$context.name || "(root)", "[View#" + n.$id + " from '" + i + "' state]: target ui-view: '" + r.$uiViewName + "@" + r.$uiViewContextAnchor + "'"))
8860 }, e.prototype.traceViewServiceUIViewEvent = function(e, t) {
8861 this.enabled(m.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + e + " " + et(t))
8867 this.pattern = /.*/, this.inherit = !0, U(this, e)
8869 return e.prototype.is = function(e, t) {
8871 }, e.prototype.encode = function(e, t) {
8873 }, e.prototype.decode = function(e, t) {
8875 }, e.prototype.equals = function(e, t) {
8877 }, e.prototype.$subPattern = function() {
8878 var e = this.pattern.toString();
8879 return e.substr(1, e.length - 2)
8880 }, e.prototype.toString = function() {
8881 return "{ParamType:" + this.name + "}"
8882 }, e.prototype.$normalize = function(e) {
8883 return this.is(e) ? e : this.decode(e)
8884 }, e.prototype.$asArray = function(e, t) {
8885 if (!e) return this;
8886 if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
8887 return new dt(this, e)
8895 return S(e) ? e : k(e) ? [e] : []
8899 return function(e) {
8900 if (S(e) && 0 === e.length) return e;
8901 var t = ue(a(e), n);
8902 return !0 === r ? 0 === se(t, function(e) {
8904 }).length : function(e) {
8909 return "auto" === i ? e[0] : e;
8918 return function(e, t) {
8921 if (n.length !== r.length) return !1;
8922 for (var i = 0; i < n.length; i++)
8923 if (!o(n[i], r[i])) return !1;
8926 } ["encode", "decode", "equals", "$normalize"].forEach(function(e) {
8927 var t = r[e].bind(r),
8928 n = "equals" === e ? l : s;
8936 is: s(r.is.bind(r), !0),
8940 var ft, ht = Object.prototype.hasOwnProperty,
8942 return 0 === ["value", "type", "squash", "array", "dynamic"].filter(ht.bind(e || {})).length
8945 function mt(e, t, n) {
8946 var r = !1 === n.reloadOnSearch && t === m.DefType.SEARCH || void 0,
8947 i = le([n.dynamic, r], k),
8957 } : e, t.__cacheable = !0;
8958 var n = N(e.value) ? e.value : t;
8962 }(n && n.params && n.params[e]);
8964 }(ft = m.DefType || (m.DefType = {}))[ft.PATH = 0] = "PATH", ft[ft.SEARCH = 1] = "SEARCH", ft[ft.CONFIG = 2] = "CONFIG";
8965 var gt, vt = function() {
8966 function r(e, t, n, r, i) {
8967 var o = mt(e, n, i);
8968 t = function(e, t, n, r, i) {
8969 if (e.type && t && "string" !== t.name) throw new Error("Param '" + r + "' has two type configurations.");
8970 if (e.type && t && "string" === t.name && i.type(e.type)) return i.type(e.type);
8972 if (e.type) return e.type instanceof ut ? e.type : i.type(e.type);
8973 var o = n === m.DefType.CONFIG ? "any" : n === m.DefType.PATH ? "path" : n === m.DefType.SEARCH ? "query" : "string";
8975 }(o, t, n, e, r.paramTypes);
8976 var a, s, l = (a = {
8977 array: n === m.DefType.SEARCH && "auto"
8978 }, s = e.match(/\[\]$/) ? {
8980 } : {}, U(a, s, o).array);
8981 t = l ? t.$asArray(l, n === m.DefType.SEARCH) : t;
8982 var c = void 0 !== o.value || n === m.DefType.SEARCH,
8983 u = k(o.dynamic) ? !!o.dynamic : !!t.dynamic,
8984 d = k(o.raw) ? !!o.raw : !!t.raw,
8985 f = function(e, t, n) {
8987 if (!t || !1 === r) return !1;
8988 if (!k(r) || null == r) return n;
8989 if (!0 === r || M(r)) return r;
8990 throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
8991 }(o, c, r.defaultSquashPolicy()),
8992 h = function(e, t, n, r) {
8995 to: n || t ? void 0 : ""
8998 to: n || t ? void 0 : ""
9000 o = S(e.replace) ? e.replace : [];
9005 var a = ue(o, y("from"));
9006 return se(i, function(e) {
9007 return -1 === a.indexOf(e.from)
9010 p = k(o.inherit) ? !!o.inherit : !!t.inherit;
9025 return r.values = function(e, t) {
9026 void 0 === t && (t = {});
9027 for (var n = {}, r = 0, i = e; r < i.length; r++) {
9029 n[o.id] = o.value(t[o.id])
9032 }, r.changed = function(e, t, n) {
9033 return void 0 === t && (t = {}), void 0 === n && (n = {}), e.filter(function(e) {
9034 return !e.type.equals(t[e.id], n[e.id])
9036 }, r.equals = function(e, t, n) {
9037 return void 0 === t && (t = {}), void 0 === n && (n = {}), 0 === r.changed(e, t, n).length
9038 }, r.validates = function(e, t) {
9039 return void 0 === t && (t = {}), e.map(function(e) {
9040 return e.validates(t[e.id])
9042 }, r.prototype.isDefaultValue = function(e) {
9043 return this.isOptional && this.type.equals(this.value(), e)
9044 }, r.prototype.value = function(e) {
9046 return e = function(e) {
9047 for (var t = 0, n = i.replace; t < n.length; t++) {
9049 if (r.from === e) return r.to
9052 }(e), _(e) ? function() {
9053 if (i._defaultValueCache) return i._defaultValueCache.defaultValue;
9054 if (!P.$injector) throw new Error("Injectable functions cannot be called at configuration time");
9055 var e = P.$injector.invoke(i.config.$$fn);
9056 if (null != e && !i.type.is(e)) throw new Error("Default value (" + e + ") for parameter '" + i.id + "' is not an instance of ParamType (" + i.type.name + ")");
9057 return i.config.$$fn.__cacheable && (i._defaultValueCache = {
9060 }() : this.type.$normalize(e)
9061 }, r.prototype.isSearch = function() {
9062 return this.location === m.DefType.SEARCH
9063 }, r.prototype.validates = function(e) {
9064 if ((_(e) || null === e) && this.isOptional) return !0;
9065 var t = this.type.$normalize(e);
9066 if (!this.type.is(t)) return !1;
9067 var n = this.type.encode(t);
9068 return !(M(n) && !this.type.pattern.exec(n))
9069 }, r.prototype.toString = function() {
9070 return "{Param:" + this.id + " " + this.type + " squash: '" + this.squash + "' optional: " + this.isOptional + "}"
9075 this.enqueue = !0, this.typeQueue = [], this.defaultTypes = ie(e.prototype, ["hash", "string", "query", "path", "int", "bool", "date", "json", "any"]);
9076 this.types = Y(ue(this.defaultTypes, function(e, t) {
9082 return e.prototype.dispose = function() {
9084 }, e.prototype.type = function(e, t, n) {
9085 if (!k(t)) return this.types[e];
9086 if (this.types.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
9087 return this.types[e] = new ut(U({
9089 }, t)), n && (this.typeQueue.push({
9092 }), this.enqueue || this._flushTypeQueue()), this
9093 }, e.prototype._flushTypeQueue = function() {
9094 for (; this.typeQueue.length;) {
9095 var e = this.typeQueue.shift();
9096 if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
9097 U(this.types[e.name], P.$injector.invoke(e.def))
9102 var t = function(e) {
9103 return null != e ? e.toString() : e
9110 equals: function(e, t) {
9115 }, U(bt.prototype, {
9125 decode: function(e) {
9126 return parseInt(e, 10)
9129 return !w(e) && this.decode(e.toString()) === e
9134 encode: function(e) {
9137 decode: function(e) {
9138 return 0 !== parseInt(e, 10)
9144 encode: function(e) {
9145 return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : void 0
9147 decode: function(e) {
9148 if (this.is(e)) return e;
9149 var t = this.capture.exec(e);
9150 return t ? new Date(t[1], t[2] - 1, t[3]) : void 0
9153 return e instanceof Date && !isNaN(e.valueOf())
9155 equals: function(n, r) {
9156 return ["getFullYear", "getMonth", "getDate"].reduce(function(e, t) {
9157 return e && n[t]() === r[t]()
9160 pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
9161 capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
9179 var yt = function() {
9181 void 0 === e && (e = {}), U(this, e)
9183 return e.prototype.$inherit = function(e, t, n) {
9184 var r, i = re(t, n),
9188 if (i[s] && i[s].params && (r = Object.keys(i[s].params)).length)
9189 for (var l in r) 0 <= a.indexOf(r[l]) || (a.push(r[l]), o[r[l]] = this[r[l]]);
9195 if (e instanceof r) {
9197 this.state = t.state, this.paramSchema = t.paramSchema.slice(), this.paramValues = U({}, t.paramValues), this.resolvables = t.resolvables.slice(), this.views = t.views && t.views.slice()
9200 this.state = n, this.paramSchema = n.parameters({
9202 }), this.paramValues = {}, this.resolvables = n.resolvables.map(function(e) {
9207 return r.prototype.clone = function() {
9209 }, r.prototype.applyRawParams = function(r) {
9210 return this.paramValues = this.paramSchema.reduce(function(e, t) {
9211 return ke(e, [(n = t).id, n.value(r[n.id])]);
9214 }, r.prototype.parameter = function(e) {
9215 return le(this.paramSchema, v("id", e))
9216 }, r.prototype.equals = function(e, t) {
9217 var n = this.diff(e, t);
9218 return n && 0 === n.length
9219 }, r.prototype.diff = function(e, t) {
9220 if (this.state !== e.state) return !1;
9221 var n = t ? t(this) : this.paramSchema;
9222 return vt.changed(n, this.paramValues, e.paramValues)
9223 }, r.clone = function(e) {
9228 function r(e, t, n, r) {
9229 this._stateRegistry = e, this._identifier = t, this._identifier = t, this._params = U({}, n || {}), this._options = U({}, r || {}), this._definition = e.matcher.find(t, this._options.relative)
9231 return r.prototype.name = function() {
9232 return this._definition && this._definition.name || this._identifier
9233 }, r.prototype.identifier = function() {
9234 return this._identifier
9235 }, r.prototype.params = function() {
9237 }, r.prototype.$state = function() {
9238 return this._definition
9239 }, r.prototype.state = function() {
9240 return this._definition && this._definition.self
9241 }, r.prototype.options = function() {
9242 return this._options
9243 }, r.prototype.exists = function() {
9244 return !(!this._definition || !this._definition.self)
9245 }, r.prototype.valid = function() {
9246 return !this.error()
9247 }, r.prototype.error = function() {
9248 var e = this.options().relative;
9249 if (this._definition || !e) return this._definition ? this._definition.self ? void 0 : "State '" + this.name() + "' has an invalid definition" : "No such state '" + this.name() + "'";
9250 var t = e.name ? e.name : e;
9251 return "Could not resolve '" + this.name() + "' from state '" + t + "'"
9252 }, r.prototype.toString = function() {
9253 return "'" + this.name() + "'" + Be(this.params())
9254 }, r.prototype.withState = function(e) {
9255 return new r(this._stateRegistry, e, this._params, this._options)
9256 }, r.prototype.withParams = function(e, t) {
9257 void 0 === t && (t = !1);
9258 var n = t ? e : U({}, this._params, e);
9259 return new r(this._stateRegistry, this._identifier, n, this._options)
9260 }, r.prototype.withOptions = function(e, t) {
9261 void 0 === t && (t = !1);
9262 var n = t ? e : U({}, this._options, e);
9263 return new r(this._stateRegistry, this._identifier, this._params, n)
9264 }, r.isDef = function(e) {
9265 return e && e.state && (M(e.state) || M(e.state.name))
9270 return f.makeTargetState = function(e, t) {
9271 var n = xe(t).state;
9272 return new $t(e, n, t.map(y("paramValues")).reduce(ne, {}), {})
9273 }, f.buildPath = function(e) {
9275 return e.$state().path.map(function(e) {
9276 return new _t(e).applyRawParams(t)
9278 }, f.buildToPath = function(e, t) {
9279 var n = f.buildPath(t);
9280 return t.options().inherit ? f.inheritParams(e, n, Object.keys(t.params())) : n
9281 }, f.applyViewConfigs = function(i, o, t) {
9282 o.filter(function(e) {
9283 return G(t, e.state)
9284 }).forEach(function(t) {
9285 var e = de(t.state.views || {}),
9286 n = f.subPath(o, function(e) {
9289 r = e.map(function(e) {
9290 return i.createViewConfig(n, e)
9292 t.views = r.reduce(pe, [])
9294 }, f.inheritParams = function(l, e, c) {
9295 void 0 === c && (c = []);
9296 var u = l.map(function(e) {
9297 return e.paramSchema
9298 }).reduce(pe, []).filter(function(e) {
9301 return e.map(function(e) {
9302 var t = U({}, e && e.paramValues),
9305 var r, i, o, a = oe((r = l, i = e.state, o = le(r, v("state", i)), U({}, o && o.paramValues) || {}), u),
9307 return new _t(e.state).applyRawParams(s)
9309 }, f.treeChanges = function(e, r, t) {
9310 for (var n, i, o, a, s, l, c = Math.min(e.length, r.length), u = 0; u < c && e[u].state !== t && (n = e[u], i = r[u], n.equals(i, f.nonDynamicParams));) u++;
9311 a = (o = e).slice(0, u), s = o.slice(u);
9312 var d = a.map(function(e, t) {
9314 return n.paramValues = r[t].paramValues, n
9316 return l = r.slice(u), {
9320 retainedWithToParams: d,
9324 }, f.matching = function(e, t, i) {
9326 return Ce(e, t).reduce(function(e, t) {
9329 return (o = o || !n.equals(r, i)) ? e : e.concat(n)
9331 }, f.equals = function(e, t, n) {
9332 return e.length === t.length && f.matching(e, t, n).length === e.length
9333 }, f.subPath = function(e, t) {
9336 return -1 === r ? void 0 : e.slice(0, r + 1)
9337 }, f.nonDynamicParams = function(e) {
9338 return e.state.parameters({
9340 }).filter(function(e) {
9343 }, f.paramValues = function(e) {
9344 return e.reduce(function(e, t) {
9345 return U(e, t.paramValues)
9365 function a(e, t, n, r, i) {
9366 if (this.resolved = !1, this.promise = void 0, e instanceof a) U(this, e);
9368 if (w(e)) throw new Error("new Resolvable(): token argument is required");
9369 if (!x(t)) throw new Error("new Resolvable(): resolveFn argument must be a function");
9370 this.token = e, this.policy = r, this.resolveFn = t, this.deps = n || [], this.data = i, this.resolved = void 0 !== i, this.promise = this.resolved ? P.$q.when(this.data) : void 0
9371 } else if (A(e) && e.token && (e.hasOwnProperty("resolveFn") || e.hasOwnProperty("data"))) {
9373 return new a(o.token, o.resolveFn, o.deps, o.policy, o.data)
9376 return a.prototype.getPolicy = function(e) {
9377 var t = this.policy || {},
9378 n = e && e.resolvePolicy || {};
9380 when: t.when || n.when || Ct.when,
9381 async: t.async || n.async || Ct.async
9383 }, a.prototype.resolve = function(t, n) {
9386 i = t.findNode(this),
9388 a = "RXWAIT" === this.getPolicy(o).async ? function(e) {
9390 return t.take(1).toPromise().then(function() {
9394 return this.promise = e.when().then(function() {
9395 return e.all(t.getDependencies(r).map(function(e) {
9398 }).then(function(e) {
9399 return r.resolveFn.apply(null, e)
9400 }).then(a).then(function(e) {
9401 return r.data = e, r.resolved = !0, r.resolveFn = null, ct.traceResolvableResolved(r, n), r.data
9403 }, a.prototype.get = function(e, t) {
9404 return this.promise || this.resolve(e, t)
9405 }, a.prototype.toString = function() {
9406 return "Resolvable(token: " + Be(this.token) + ", requires: [" + this.deps.map(Be) + "])"
9407 }, a.prototype.clone = function() {
9409 }, a.fromData = function(e, t) {
9410 return new a(e, function() {
9416 Tt = [xt.EAGER, xt.LAZY],
9418 At = "Native Injector",
9423 return e.prototype.getTokens = function() {
9424 return this._path.reduce(function(e, t) {
9425 return e.concat(t.resolvables.map(function(e) {
9428 }, []).reduce(ve, [])
9429 }, e.prototype.getResolvable = function(t) {
9430 return xe(this._path.map(function(e) {
9431 return e.resolvables
9432 }).reduce(pe, []).filter(function(e) {
9433 return e.token === t
9435 }, e.prototype.getPolicy = function(e) {
9436 var t = this.findNode(e);
9437 return e.getPolicy(t.state)
9438 }, e.prototype.subContext = function(t) {
9439 return new e(wt.subPath(this._path, function(e) {
9440 return e.state === t
9442 }, e.prototype.addResolvables = function(e, t) {
9443 var n = le(this._path, v("state", t)),
9444 r = e.map(function(e) {
9447 n.resolvables = n.resolvables.filter(function(e) {
9448 return -1 === r.indexOf(e.token)
9450 }, e.prototype.resolvePath = function(e, s) {
9452 void 0 === e && (e = "LAZY");
9453 var c = (G(Tt, e) ? e : "LAZY") === Et.when.EAGER ? Mt : Tt;
9454 ct.traceResolvePath(this._path, e, s);
9455 var u = function(t, n) {
9456 return function(e) {
9457 return G(t, l.getPolicy(e)[n])
9460 t = this._path.reduce(function(e, t) {
9461 var n = t.resolvables.filter(u(c, "when")),
9462 r = n.filter(u(["NOWAIT"], "async")),
9463 i = n.filter(d(u(["NOWAIT"], "async"))),
9464 o = l.subContext(t.state),
9466 return t.get(o, s).then(function(e) {
9473 return r.forEach(a), e.concat(i.map(a))
9476 }, e.prototype.injector = function() {
9477 return this._injector || (this._injector = new Dt(this))
9478 }, e.prototype.findNode = function(t) {
9479 return le(this._path, function(e) {
9480 return G(e.resolvables, t)
9482 }, e.prototype.getDependencies = function(t) {
9484 n = this.findNode(t),
9485 i = (wt.subPath(this._path, function(e) {
9487 }) || this._path).reduce(function(e, t) {
9488 return e.concat(t.resolvables)
9489 }, []).filter(function(e) {
9492 return t.deps.map(function(t) {
9493 var e = i.filter(function(e) {
9494 return e.token === t
9496 if (e.length) return xe(e);
9497 var n = r.injector().getNative(t);
9498 if (_(n)) throw new Error("Could not find Dependency Injection token: " + Be(t));
9499 return new kt(t, function() {
9507 this.context = e, this.native = this.get(At) || P.$injector
9509 return e.prototype.get = function(e) {
9510 var t = this.context.getResolvable(e);
9512 if ("NOWAIT" === this.context.getPolicy(t).async) return t.get(this.context);
9513 if (!t.resolved) throw new Error("Resolvable async .get() not complete:" + Be(t.token));
9516 return this.getNative(e)
9517 }, e.prototype.getAsync = function(e) {
9518 var t = this.context.getResolvable(e);
9519 return t ? t.get(this.context) : P.$q.when(this.native.get(e))
9520 }, e.prototype.getNative = function(e) {
9521 return this.native && this.native.get(e)
9530 return e.self.$$state = function() {
9536 return e.parent && e.parent.data && (e.data = e.self.data = Y(e.parent.data, e.data)), e.data
9538 var Rt = function(a, s) {
9539 return function(e) {
9541 if (t && t.url && t.name && t.name.match(/\.\*\*$/)) {
9543 Te(t, n), n.url += "{remainder:any}", t = n
9547 if (!M(e)) return !1;
9548 var t = "^" === e.charAt(0);
9550 val: t ? e.substring(1) : e,
9554 o = i ? a.compile(i.val, {
9557 if (!o) return null;
9558 if (!a.isMatcher(o)) throw new Error("Invalid url '" + o + "' in state '" + e + "'");
9559 return i && i.root ? o : (r && r.navigable || s()).url.append(o)
9564 return e.parent ? e.parent.path.concat(e) : [e]
9568 var t = e.parent ? U({}, e.parent.includes) : {};
9569 return t[e.name] = !0, t
9573 var t, n, r = function(e) {
9574 return e.provide || e.token
9577 [y("resolveFn"), function(e) {
9578 return new kt(r(e), e.resolveFn, e.deps, e.policy)
9580 [y("useFactory"), function(e) {
9581 return new kt(r(e), e.useFactory, e.deps || e.dependencies, e.policy)
9583 [y("useClass"), function(e) {
9584 return new kt(r(e), function() {
9585 return new e.useClass
9588 [y("useValue"), function(e) {
9589 return new kt(r(e), function() {
9591 }, [], e.policy, e.useValue)
9593 [y("useExisting"), function(e) {
9594 return new kt(r(e), B, [e.useExisting], e.policy)
9598 [l(y("val"), M), function(e) {
9599 return new kt(e.token, B, [e.val], e.policy)
9601 [l(y("val"), S), function(e) {
9602 return new kt(e.token, xe(e.val), e.val.slice(0, -1), e.policy)
9604 [l(y("val"), x), function(e) {
9605 return new kt(e.token, e.val, (t = e.val, n = P.$injector, t.$inject || n && n.annotate(t, n.strictDi) || "deferred"), e.policy);
9610 [h(kt), function(e) {
9614 return !(!e.token || !e.resolveFn)
9617 return !(!e.provide && !e.token || !(e.useValue || e.useFactory || e.useExisting || e.useClass))
9620 return !!(e && e.val && (M(e.val) || S(e.val) || x(e.val)))
9622 [p(!0), function(e) {
9623 throw new Error("Invalid resolve value: " + Be(e))
9627 return (S(s) ? s : (t = s, n = e.resolvePolicy || {}, Object.keys(t || {}).map(function(e) {
9636 var Lt, Ft, qt = function() {
9644 return "" === e.name
9649 parent: [function(e) {
9650 return a(e) ? null : t.find(i.parentName(e)) || o()
9654 navigable: [(n = a, function(e) {
9655 return !n(e) && e.url ? e : e.parent ? e.parent.navigable : null
9657 params: [(r = e.paramFactory, function(n) {
9658 var e = n.url && n.url.parameters({
9661 t = de(ce(oe(n.params || {}, e.map(y("id"))), function(e, t) {
9662 return r.fromConfig(t, null, n.self)
9664 return e.concat(t).map(function(e) {
9674 return e.prototype.builder = function(e, t) {
9675 var n = this.builders,
9677 return M(e) && !k(t) ? 1 < r.length ? r : r[0] : M(e) && x(t) ? (n[e] = r, n[e].push(t), function() {
9678 return n[e].splice(n[e].indexOf(t, 1)) && null
9680 }, e.prototype.build = function(e) {
9681 var t = this.matcher,
9683 r = this.parentName(e);
9684 if (r && !t.find(r, void 0, !1)) return null;
9686 if (n.hasOwnProperty(i)) {
9687 var o = n[i].reduce(function(t, n) {
9688 return function(e) {
9694 }, e.prototype.parentName = function(e) {
9695 var t = e.name || "",
9697 if ("**" === n.pop() && n.pop(), n.length) {
9698 if (e.parent) throw new Error("States that specify the 'parent:' property should not have a '.' in their name (" + t + ")");
9701 return e.parent ? M(e.parent) ? e.parent : e.parent.name : ""
9702 }, e.prototype.name = function(e) {
9704 if (-1 !== t.indexOf(".") || !e.parent) return t;
9705 var n = M(e.parent) ? e.parent : e.parent.name;
9706 return n ? n + "." + t : t
9711 return n.create(e || {})
9713 return n.create = function(e) {
9714 e = n.isStateClass(e) ? new e : e;
9715 var t = Y(Y(e, n.prototype));
9716 return e.$$state = function() {
9718 }, t.self = e, t.__stateObjectCache = {
9719 nameGlob: Ne.fromString(t.name)
9721 }, n.prototype.is = function(e) {
9722 return this === e || this.self === e || this.fqn() === e
9723 }, n.prototype.fqn = function() {
9724 if (!(this.parent && this.parent instanceof this.constructor)) return this.name;
9725 var e = this.parent.fqn();
9726 return e ? e + "." + this.name : this.name
9727 }, n.prototype.root = function() {
9728 return this.parent && this.parent.root() || this
9729 }, n.prototype.parameters = function(t) {
9730 return ((t = te(t, {
9733 })).inherit && this.parent && this.parent.parameters() || []).concat(de(this.params)).filter(function(e) {
9734 return !t.matchingKeys || t.matchingKeys.hasOwnProperty(e.id)
9736 }, n.prototype.parameter = function(e, t) {
9737 return void 0 === t && (t = {}), this.url && this.url.parameter(e, t) || le(de(this.params), v("id", e)) || t.inherit && this.parent && this.parent.parameter(e)
9738 }, n.prototype.toString = function() {
9740 }, n.isStateClass = function(e) {
9741 return x(e) && !0 === e.__uiRouterState
9742 }, n.isState = function(e) {
9743 return A(e.__stateObjectCache)
9750 return e.prototype.isRelative = function(e) {
9751 return 0 === (e = e || "").indexOf(".") || 0 === e.indexOf("^")
9752 }, e.prototype.find = function(e, t, n) {
9753 if (void 0 === n && (n = !0), e || "" === e) {
9756 this.isRelative(i) && (i = this.resolvePath(i, t));
9757 var o = this._states[i];
9758 if (o && (r || !(r || o !== e && o.self !== e))) return o;
9760 var a = de(this._states).filter(function(e) {
9761 return e.__stateObjectCache.nameGlob && e.__stateObjectCache.nameGlob.matches(i)
9763 return 1 < a.length && console.log("stateMatcher.find: Found multiple matches for " + i + " using glob: ", a.map(function(e) {
9768 }, e.prototype.resolvePath = function(e, t) {
9769 if (!t) throw new Error("No reference point given for path '" + e + "'");
9770 for (var n = this.find(t), r = e.split("."), i = r.length, o = 0, a = n; o < i; o++)
9771 if ("" !== r[o] || 0 !== o) {
9772 if ("^" !== r[o]) break;
9773 if (!a.parent) throw new Error("Path '" + e + "' not valid for state '" + n.name + "'");
9776 var s = r.slice(o).join(".");
9777 return a.name + (a.name && s ? "." : "") + s
9781 function e(e, t, n, r) {
9782 this.router = e, this.states = t, this.builder = n, this.listeners = r, this.queue = []
9784 return e.prototype.dispose = function() {
9786 }, e.prototype.register = function(e) {
9790 if (!M(r)) throw new Error("State must have a valid name");
9791 if (this.states.hasOwnProperty(r) || G(t.map(y("name")), r)) throw new Error("State '" + r + "' is already defined");
9792 return t.push(n), this.flush(), n
9793 }, e.prototype.flush = function() {
9794 for (var t = this, e = this.queue, n = this.states, r = this.builder, i = [], o = [], a = {}, s = function(e) {
9795 return t.states.hasOwnProperty(e) && t.states[e]
9797 i.length && t.listeners.forEach(function(e) {
9798 return e("registered", i.map(function(e) {
9809 if (h && h.name === u) throw new Error("State '" + u + "' is already defined");
9810 var p = s(u + ".**");
9811 p && this.router.stateRegistry.deregister(p), n[u] = c, this.attachRoute(c), 0 <= f && o.splice(f, 1), i.push(c)
9814 if (a[u] = e.length, 0 <= f && m === e.length) return e.push(c), l(), n;
9815 f < 0 && o.push(c), e.push(c)
9819 }, e.prototype.attachRoute = function(e) {
9820 if (!e.abstract && e.url) {
9821 var t = this.router.urlService.rules;
9822 t.rule(t.urlRuleFactory.create(e))
9828 this.router = e, this.states = {}, this.listeners = [], this.matcher = new Vt(this.states), this.builder = new qt(this.matcher, e.urlMatcherFactory), this.stateQueue = new Bt(e, this.states, this.builder, this.listeners), this._registerRoot()
9830 return e.prototype._registerRoot = function() {
9831 (this._root = this.stateQueue.register({
9843 })).navigable = null
9844 }, e.prototype.dispose = function() {
9846 this.stateQueue.dispose(), this.listeners = [], this.get().forEach(function(e) {
9847 return t.get(e) && t.deregister(e)
9849 }, e.prototype.onStatesChanged = function(e) {
9850 return this.listeners.push(e),
9852 Z(this.listeners)(e)
9854 }, e.prototype.root = function() {
9856 }, e.prototype.register = function(e) {
9857 return this.stateQueue.register(e)
9858 }, e.prototype._deregisterTree = function(e) {
9860 r = this.get().map(function(e) {
9864 var e = r.filter(function(e) {
9865 return -1 !== t.indexOf(e.parent)
9867 return 0 === e.length ? e : e.concat(i(e))
9870 o = [e].concat(t).reverse();
9871 return o.forEach(function(e) {
9872 var t = n.router.urlService.rules;
9873 t.rules().filter(v("state", e)).forEach(function(e) {
9874 return t.removeRule(e)
9875 }), delete n.states[e.name]
9877 }, e.prototype.deregister = function(e) {
9878 var t = this.get(e);
9879 if (!t) throw new Error("Can't deregister state; not found: " + e);
9880 var n = this._deregisterTree(t.$$state());
9881 return this.listeners.forEach(function(e) {
9882 return e("deregistered", n.map(function(e) {
9886 }, e.prototype.get = function(e, t) {
9888 if (0 === arguments.length) return Object.keys(this.states).map(function(e) {
9889 return n.states[e].self
9891 var r = this.matcher.find(e, t);
9892 return r && r.self || null
9893 }, e.prototype.decorator = function(e, t) {
9894 return this.builder.builder(e, t)
9897 (Lt = m.TransitionHookPhase || (m.TransitionHookPhase = {}))[Lt.CREATE = 0] = "CREATE", Lt[Lt.BEFORE = 1] = "BEFORE", Lt[Lt.RUN = 2] = "RUN", Lt[Lt.SUCCESS = 3] = "SUCCESS", Lt[Lt.ERROR = 4] = "ERROR", (Ft = m.TransitionHookScope || (m.TransitionHookScope = {}))[Ft.TRANSITION = 0] = "TRANSITION", Ft[Ft.STATE = 1] = "STATE";
9905 function o(e, t, n, r) {
9907 this.transition = e, this.stateContext = t, this.registeredHook = n, this.options = r, this.isSuperseded = function() {
9908 return i.type.hookPhase === m.TransitionHookPhase.RUN && !i.options.transition.isActive()
9909 }, this.options = te(r, Wt), this.type = n.eventType
9911 return o.chain = function(e, t) {
9912 return e.reduce(function(e, t) {
9913 return e.then(function() {
9914 return t.invokeHook()
9916 }, t || P.$q.when())
9917 }, o.invokeHooks = function(e, t) {
9918 for (var n = 0; n < e.length; n++) {
9919 var r = e[n].invokeHook();
9921 var i = e.slice(n + 1);
9922 return o.chain(i, r).then(t)
9926 }, o.runAllHooks = function(e) {
9927 e.forEach(function(e) {
9928 return e.invokeHook()
9930 }, o.prototype.logError = function(e) {
9931 this.transition.router.stateService.defaultErrorHandler()(e)
9932 }, o.prototype.invokeHook = function() {
9934 n = this.registeredHook;
9935 if (!n._deregistered) {
9936 var e = this.getNotCurrentRejection();
9938 var r = this.options;
9939 ct.traceHookInvocation(this, this.transition, r);
9940 var i = function(e) {
9941 return n.eventType.getErrorHandler(t)(e)
9944 return n.eventType.getResultHandler(t)(e)
9947 var a = n.callback.call(r.bind, t.transition, t.stateContext);
9948 return !this.type.synchronous && I(a) ? a.catch(function(e) {
9949 return Pe.normalize(e).toPromise()
9950 }).then(o, i) : o(a)
9952 return i(Pe.normalize(e))
9954 n.invokeLimit && ++n.invokeCount >= n.invokeLimit && n.deregister()
9957 }, o.prototype.handleHookResult = function(e) {
9959 n = this.getNotCurrentRejection();
9960 return n || (I(e) ? e.then(function(e) {
9961 return t.handleHookResult(e)
9962 }) : (ct.traceHookResult(e, this.transition, this.options), !1 === e ? Pe.aborted("Hook aborted transition").toPromise() : h($t)(e) ? Pe.redirected(e).toPromise() : void 0))
9963 }, o.prototype.getNotCurrentRejection = function() {
9964 var e = this.transition.router;
9965 return e._disposed ? Pe.aborted("UIRouter instance #" + e.$id + " has been stopped (disposed)").toPromise() : this.transition._aborted ? Pe.aborted().toPromise() : this.isSuperseded() ? Pe.superseded(this.options.current()).toPromise() : void 0
9966 }, o.prototype.toString = function() {
9967 var e = this.options,
9968 t = this.registeredHook;
9969 return (C("traceData.hookType")(e) || "internal") + " context: " + (C("traceData.context.state.name")(e) || C("traceData.context")(e) || "unknown") + ", " + He(200, qe(t.callback))
9970 }, o.HANDLE_RESULT = function(t) {
9971 return function(e) {
9972 return t.handleHookResult(e)
9974 }, o.LOG_REJECTED_RESULT = function(t) {
9975 return function(e) {
9976 I(e) && e.catch(function(e) {
9977 return t.logError(Pe.normalize(e))
9980 }, o.LOG_ERROR = function(t) {
9981 return function(e) {
9982 return t.logError(e)
9984 }, o.REJECT_ERROR = function(e) {
9985 return function(e) {
9988 }, o.THROW_ERROR = function(e) {
9989 return function(e) {
9995 function Gt(e, t, n) {
9996 var i = M(t) ? [t] : t;
9997 return !!(x(i) ? i : function(e) {
9998 for (var t = i, n = 0; n < t.length; n++) {
9999 var r = new Ne(t[n]);
10000 if (r && r.matches(e.name) || !r && t[n] === e.name) return !0
10005 var Kt = function() {
10006 function e(e, t, n, r, i, o) {
10007 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
10009 return e.prototype._matchingNodes = function(e, t, n) {
10010 if (!0 === t) return e;
10011 var r = e.filter(function(e) {
10012 return Gt(e.state, t, n)
10014 return r.length ? r : null
10015 }, e.prototype._getDefaultMatchCriteria = function() {
10016 return ce(this.tranSvc._pluginapi._getPathTypes(), function() {
10019 }, e.prototype._getMatchingNodes = function(o, a) {
10021 l = U(this._getDefaultMatchCriteria(), this.matchCriteria);
10022 return de(this.tranSvc._pluginapi._getPathTypes()).reduce(function(e, t) {
10023 var n = t.scope === m.TransitionHookScope.STATE,
10024 r = o[t.name] || [],
10025 i = n ? r : [xe(r)];
10026 return e[t.name] = s._matchingNodes(i, l[t.name], a), e
10028 }, e.prototype.matches = function(e, t) {
10029 var n = this._getMatchingNodes(e, t);
10030 return de(n).every(B) ? n : null
10031 }, e.prototype.deregister = function() {
10032 this.removeHookFromRegistry(this), this._deregistered = !0
10036 function Zt(e, i, o) {
10037 var a = (e._registeredHooks = e._registeredHooks || {})[o.name] = [],
10040 function t(e, t, n) {
10041 void 0 === n && (n = {});
10042 var r = new Kt(i, o, t, e, s, n);
10043 return a.push(r), r.deregister.bind(r)
10045 return e[o.name] = t
10047 var Xt = function() {
10049 this.transition = e
10051 return e.prototype.buildHooksForPhase = function(e) {
10053 return this.transition.router.transitionService._pluginapi._getEvents(e).map(function(e) {
10054 return t.buildHooks(e)
10055 }).reduce(pe, []).filter(B)
10056 }, e.prototype.buildHooks = function(o) {
10057 var a = this.transition,
10058 e = a.treeChanges(),
10059 t = this.getMatchingHooks(o, e, a);
10063 current: a.options().current
10065 return t.map(function(i) {
10066 return i.matches(e, a)[o.criteriaMatchPath.name].map(function(e) {
10074 n = o.criteriaMatchPath.scope === m.TransitionHookScope.STATE ? e.state.self : null,
10075 r = new Yt(a, n, i, t);
10082 }).reduce(pe, []).sort(function(i) {
10083 void 0 === i && (i = !1);
10084 return function(e, t) {
10085 var n = i ? -1 : 1,
10086 r = (e.node.state.path.length - t.node.state.path.length) * n;
10087 return 0 !== r ? r : t.hook.priority - e.hook.priority
10089 }(o.reverseSort)).map(function(e) {
10090 return e.transitionHook
10092 }, e.prototype.getMatchingHooks = function(t, n, r) {
10093 var e = t.hookPhase === m.TransitionHookPhase.CREATE,
10094 i = this.transition.router.transitionService;
10095 return (e ? [i] : [this.transition, i]).map(function(e) {
10096 return e.getHooks(t.name)
10097 }).filter(_e(S, "broken event named: " + t.name)).reduce(pe, []).filter(function(e) {
10098 return e.matches(n, r)
10102 var Qt = y("self"),
10104 function t(e, t, n) {
10106 if (this._deferred = P.$q.defer(), this.promise = this._deferred.promise, this._registeredHooks = {}, this._hookBuilder = new Xt(this), this.isActive = function() {
10107 return r.router.globals.transition === r
10108 }, this.router = n, !(this._targetState = t).valid()) throw new Error(t.error());
10109 this._options = U({
10111 }, t.options()), this.$id = n.transitionService._transitionCount++;
10112 var i = wt.buildToPath(e, t);
10113 this._treeChanges = wt.treeChanges(e, i, this._options.reloadState), this.createTransitionHookRegFns();
10114 var o = this._hookBuilder.buildHooksForPhase(m.TransitionHookPhase.CREATE);
10115 Yt.invokeHooks(o, function() {
10117 }), this.applyViewConfigs(n)
10119 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() {
10121 this.router.transitionService._pluginapi._getEvents().filter(function(e) {
10122 return e.hookPhase !== m.TransitionHookPhase.CREATE
10123 }).forEach(function(e) {
10124 return Zt(t, t.router.transitionService, e)
10126 }, t.prototype.getHooks = function(e) {
10127 return this._registeredHooks[e]
10128 }, t.prototype.applyViewConfigs = function(e) {
10129 var t = this._treeChanges.entering.map(function(e) {
10132 wt.applyViewConfigs(e.transitionService.$view, this._treeChanges.to, t)
10133 }, t.prototype.$from = function() {
10134 return xe(this._treeChanges.from).state
10135 }, t.prototype.$to = function() {
10136 return xe(this._treeChanges.to).state
10137 }, t.prototype.from = function() {
10138 return this.$from().self
10139 }, t.prototype.to = function() {
10140 return this.$to().self
10141 }, t.prototype.targetState = function() {
10142 return this._targetState
10143 }, t.prototype.is = function(e) {
10144 return e instanceof t ? this.is({
10146 from: e.$from().name
10147 }) : !(e.to && !Gt(this.$to(), e.to, this) || e.from && !Gt(this.$from(), e.from, this))
10148 }, t.prototype.params = function(e) {
10149 return void 0 === e && (e = "to"), Object.freeze(this._treeChanges[e].map(y("paramValues")).reduce(ne, {}))
10150 }, t.prototype.paramsChanged = function() {
10151 var e = this.params("from"),
10152 n = this.params("to"),
10153 t = [].concat(this._treeChanges.to).concat(this._treeChanges.from).map(function(e) {
10154 return e.paramSchema
10155 }).reduce(me, []).reduce(ve, []);
10156 return vt.changed(t, e, n).reduce(function(e, t) {
10157 return e[t.id] = n[t.id], e
10159 }, t.prototype.injector = function(t, e) {
10160 void 0 === e && (e = "to");
10161 var n = this._treeChanges[e];
10162 return t && (n = wt.subPath(n, function(e) {
10163 return e.state === t || e.state.name === t
10164 })), new St(n).injector()
10165 }, t.prototype.getResolveTokens = function(e) {
10166 return void 0 === e && (e = "to"), new St(this._treeChanges[e]).getTokens()
10167 }, t.prototype.addResolvable = function(e, t) {
10168 void 0 === t && (t = ""), e = h(kt)(e) ? e : new kt(e);
10169 var n = "string" == typeof t ? t : t.name,
10170 r = this._treeChanges.to,
10171 i = le(r, function(e) {
10172 return e.state.name === n
10174 new St(r).addResolvables([e], i.state)
10175 }, t.prototype.redirectedFrom = function() {
10176 return this._options.redirectedFrom || null
10177 }, t.prototype.originalTransition = function() {
10178 var e = this.redirectedFrom();
10179 return e && e.originalTransition() || this
10180 }, t.prototype.options = function() {
10181 return this._options
10182 }, t.prototype.entering = function() {
10183 return ue(this._treeChanges.entering, y("state")).map(Qt)
10184 }, t.prototype.exiting = function() {
10185 return ue(this._treeChanges.exiting, y("state")).map(Qt).reverse()
10186 }, t.prototype.retained = function() {
10187 return ue(this._treeChanges.retained, y("state")).map(Qt)
10188 }, t.prototype.views = function(e, t) {
10189 void 0 === e && (e = "entering");
10190 var n = this._treeChanges[e];
10191 return (n = t ? n.filter(v("state", t)) : n).map(y("views")).filter(B).reduce(pe, [])
10192 }, t.prototype.treeChanges = function(e) {
10193 return e ? this._treeChanges[e] : this._treeChanges
10194 }, t.prototype.redirect = function(e) {
10195 for (var t = 1, n = this; null != (n = n.redirectedFrom());)
10196 if (20 < ++t) throw new Error("Too many consecutive Transition redirects (20+)");
10198 redirectedFrom: this,
10201 "url" === this.options().source && !1 !== e.options().location && (r.location = "replace");
10202 var i = U({}, this.options(), e.options(), r);
10203 e = e.withOptions(i, !0);
10204 var o, a = this.router.transitionService.create(this._treeChanges.from, e),
10205 s = this._treeChanges.entering,
10206 l = a._treeChanges.entering;
10207 return wt.matching(l, s, wt.nonDynamicParams).filter(d((o = e.options().reloadState, function(e) {
10208 return o && e.state.includes[o.name]
10209 }))).forEach(function(e, t) {
10210 e.resolvables = s[t].resolvables
10212 }, t.prototype._changedParams = function() {
10213 var e = this._treeChanges;
10214 if (!this._options.reload && (!e.exiting.length && !e.entering.length && e.to.length === e.from.length && !Ce(e.to, e.from).map(function(e) {
10215 return e[0].state !== e[1].state
10216 }).reduce(he, !1))) {
10217 var t = e.to.map(function(e) {
10218 return e.paramSchema
10220 n = [e.to, e.from].map(function(e) {
10221 return e.map(function(e) {
10222 return e.paramValues
10225 return Ce(t, n[0], n[1]).map(function(e) {
10229 return vt.changed(t, n, r)
10232 }, t.prototype.dynamic = function() {
10233 var e = this._changedParams();
10234 return !!e && e.map(function(e) {
10237 }, t.prototype.ignored = function() {
10238 return !!this._ignoredReason()
10239 }, t.prototype._ignoredReason = function() {
10240 var e = this.router.globals.transition,
10241 r = this._options.reloadState,
10242 t = function(e, t) {
10243 if (e.length !== t.length) return !1;
10244 var n = wt.matching(e, t);
10245 return e.length === n.filter(function(e) {
10246 return !r || !e.state.includes[r.name]
10249 n = this.treeChanges(),
10250 i = e && e.treeChanges();
10251 return i && t(i.to, n.to) && t(i.exiting, n.exiting) ? "SameAsPending" : 0 === n.exiting.length && 0 === n.entering.length && t(n.from, n.to) ? "SameAsCurrent" : void 0
10252 }, t.prototype.run = function() {
10254 n = Yt.runAllHooks,
10256 return t._hookBuilder.buildHooksForPhase(e)
10258 e = r(m.TransitionHookPhase.BEFORE);
10259 return Yt.invokeHooks(e, function() {
10260 var e = t.router.globals;
10261 return e.lastStartedTransitionId = t.$id, e.transition = t, e.transitionHistory.enqueue(t), ct.traceTransitionStart(t), P.$q.when(void 0)
10262 }).then(function() {
10263 var e = r(m.TransitionHookPhase.RUN);
10264 return Yt.invokeHooks(e, function() {
10265 return P.$q.when(void 0)
10267 }).then(function() {
10268 ct.traceSuccess(t.$to(), t), t.success = !0, t._deferred.resolve(t.to()), n(r(m.TransitionHookPhase.SUCCESS))
10270 ct.traceError(e, t), t.success = !1, t._deferred.reject(e), t._error = e, n(r(m.TransitionHookPhase.ERROR))
10272 }, t.prototype.valid = function() {
10273 return !this.error() || void 0 !== this.success
10274 }, t.prototype.abort = function() {
10275 _(this.success) && (this._aborted = !0)
10276 }, t.prototype.error = function() {
10277 var e = this.$to();
10278 if (e.self.abstract) return Pe.invalid("Cannot transition to abstract state '" + e.name + "'");
10279 var t = e.parameters(),
10281 r = t.filter(function(e) {
10282 return !e.validates(n[e.id])
10285 var i = r.map(function(e) {
10286 return "[" + e.id + ":" + Be(n[e.id]) + "]"
10288 o = "The following parameter values are not valid for state '" + e.name + "': " + i;
10289 return Pe.invalid(o)
10291 return !1 === this.success ? this._error : void 0
10292 }, t.prototype.toString = function() {
10293 var e = this.from(),
10296 return null !== e["#"] && void 0 !== e["#"] ? e : oe(e, ["#"])
10298 return "Transition#" + this.$id + "( '" + (A(e) ? e.name : e) + "'" + Be(n(this._treeChanges.from.map(y("paramValues")).reduce(ne, {}))) + " -> " + (this.valid() ? "" : "(X) ") + "'" + (A(t) ? t.name : t) + "'" + Be(n(this.params())) + " )"
10302 function en(e, t) {
10304 r = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
10306 switch (t.squash) {
10308 n = ["(", ")" + (t.isOptional ? "?" : "")];
10311 r = r.replace(/\/$/, ""), n = ["(?:/(", ")|/)?"];
10314 n = ["(" + t.squash + "|", ")?"]
10316 return r + n[0] + t.type.pattern.source + n[1]
10324 caseInsensitive: !0
10327 function g(o, a, e, t) {
10331 }, this._children = [], this._params = [], this._segments = [], this._compiled = [], this.config = t = te(t, nn), this.pattern = o;
10332 for (var n, r, i, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, c = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, u = [], d = 0, f = function(e) {
10333 if (!g.nameValidator.test(e)) throw new Error("Invalid parameter name '" + e + "' in pattern '" + o + "'");
10334 if (le(s._params, v("id", e))) throw new Error("Duplicate parameter name '" + e + "' in pattern '" + o + "'")
10335 }, h = function(e, t) {
10336 var n, r = e[2] || e[3],
10337 i = t ? e[4] : e[4] || ("*" === e[1] ? "[\\s\\S]*" : null);
10341 segment: o.substring(d, e.index),
10342 type: i ? a.type(i) || (n = i, Y(a.type(t ? "query" : "path"), {
10343 pattern: new RegExp(n, s.config.caseInsensitive ? "i" : void 0)
10347 (n = l.exec(o)) && !(0 <= (r = h(n, !1)).segment.indexOf("?"));) f(r.id), this._params.push(e.fromPath(r.id, r.type, t.state)), this._segments.push(r.segment), u.push([r.segment, xe(this._params)]), d = l.lastIndex;
10348 var p = (i = o.substring(d)).indexOf("?");
10350 var m = i.substring(p);
10351 if (i = i.substring(0, p), 0 < m.length)
10352 for (d = 0; n = c.exec(m);) f((r = h(n, !0)).id), this._params.push(e.fromSearch(r.id, r.type, t.state)), d = l.lastIndex
10354 this._segments.push(i), this._compiled = u.map(function(e) {
10355 return en.apply(null, e)
10358 return g.encodeDashes = function(e) {
10359 return encodeURIComponent(e).replace(/-/g, function(e) {
10360 return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
10362 }, g.pathSegmentsAndParams = function(e) {
10363 return Ce(e._segments, e._params.filter(function(e) {
10364 return e.location === m.DefType.PATH
10365 }).concat(void 0)).reduce(pe, []).filter(function(e) {
10366 return "" !== e && k(e)
10368 }, g.queryParams = function(e) {
10369 return e._params.filter(function(e) {
10370 return e.location === m.DefType.SEARCH
10372 }, g.compare = function(e, t) {
10373 var n = function(e) {
10374 return e._cache.weights = e._cache.weights || (t = e, t._cache.segments = t._cache.segments || t._cache.path.map(g.pathSegmentsAndParams).reduce(pe, []).reduce(Je, []).map(function(e) {
10375 return M(e) ? tn(e) : e
10376 }).reduce(pe, [])).map(function(e) {
10377 return "/" === e ? 1 : M(e) ? 2 : e instanceof vt ? 3 : void 0
10383 ! function(e, t, n) {
10384 for (var r = Math.max(e.length, t.length); e.length < r;) e.push(n);
10385 for (; t.length < r;) t.push(n)
10387 var o, a, s = Ce(r, i);
10388 for (a = 0; a < s.length; a++)
10389 if (0 !== (o = s[a][0] - s[a][1])) return o;
10391 }, g.prototype.append = function(e) {
10392 return this._children.push(e), e._cache = {
10393 path: this._cache.path.concat(e),
10397 }, g.prototype.isRoot = function() {
10398 return this._cache.path[0] === this
10399 }, g.prototype.toString = function() {
10400 return this.pattern
10401 }, g.prototype.exec = function(e, r, t, n) {
10403 void 0 === r && (r = {}), void 0 === n && (n = {});
10404 var o, a, s, l = (o = this._cache, a = "pattern", s = function() {
10405 return new RegExp(["^", be(i._cache.path.map(y("_compiled"))).join(""), !1 === i.config.strict ? "/?" : "", "$"].join(""), i.config.caseInsensitive ? "i" : void 0)
10406 }, o[a] = o[a] || s()).exec(e);
10407 if (!l) return null;
10408 var c, u = this.parameters(),
10409 d = u.filter(function(e) {
10410 return !e.isSearch()
10412 f = u.filter(function(e) {
10413 return e.isSearch()
10415 h = this._cache.path.map(function(e) {
10416 return e._segments.length - 1
10417 }).reduce(function(e, t) {
10421 if (h !== l.length - 1) throw new Error("Unbalanced capture group in route '" + this.pattern + "'");
10422 for (var m = 0; m < h; m++) {
10423 for (var g = d[m], v = l[m + 1], b = 0; b < g.replace.length; b++) g.replace[b].from === v && (v = g.replace[b].to);
10424 v && !0 === g.array && (void 0, v = ue(ue((c = function(e) {
10425 return e.split("").reverse().join("")
10426 })(v).split(/-(?!\\)/), c), function(e) {
10427 return e.replace(/\\-/g, "-")
10428 }).reverse()), k(v) && (v = g.type.decode(v)), p[g.id] = g.value(v)
10430 return f.forEach(function(e) {
10431 for (var t = r[e.id], n = 0; n < e.replace.length; n++) e.replace[n].from === t && (t = e.replace[n].to);
10432 k(t) && (t = e.type.decode(t)), p[e.id] = e.value(t)
10433 }), t && (p["#"] = t), p
10434 }, g.prototype.parameters = function(e) {
10435 return void 0 === e && (e = {}), !1 === e.inherit ? this._params : be(this._cache.path.map(function(e) {
10438 }, g.prototype.parameter = function(r, e) {
10440 void 0 === e && (e = {});
10441 var t = this._cache.parent;
10442 return function() {
10443 for (var e = 0, t = i._params; e < t.length; e++) {
10445 if (n.id === r) return n
10447 }() || !1 !== e.inherit && t && t.parameter(r, e) || null
10448 }, g.prototype.validates = function(r) {
10449 return r = r || {}, this.parameters().filter(function(e) {
10450 return r.hasOwnProperty(e.id)
10451 }).map(function(e) {
10452 return n = r[(t = e).id], !t || t.validates(n);
10455 }, g.prototype.format = function(a) {
10456 void 0 === a && (a = {});
10457 var e = this._cache.path,
10458 t = e.map(g.pathSegmentsAndParams).reduce(pe, []).map(function(e) {
10459 return M(e) ? e : r(e)
10461 n = e.map(g.queryParams).reduce(pe, []).map(r);
10462 if (t.concat(n).filter(function(e) {
10463 return !1 === e.isValid
10464 }).length) return null;
10467 var t = e.value(a[e.id]),
10468 n = e.validates(t),
10469 r = e.isDefaultValue(t),
10470 i = !!r && e.squash,
10471 o = e.type.encode(t);
10481 var i = t.reduce(function(e, t) {
10482 if (M(t)) return e + t;
10486 return !0 === n ? e.match(/\/$/) ? e.slice(0, -1) : e : M(n) ? e + n : !1 !== n ? e : null == r ? e : S(r) ? e + ue(r, g.encodeDashes).join("-") : i.raw ? e + r : e + encodeURIComponent(r)
10488 o = n.map(function(e) {
10492 i = e.isDefaultValue;
10493 if (!(null == r || i && !1 !== n) && (S(r) || (r = [r]), 0 !== r.length)) return t.raw || (r = ue(r, encodeURIComponent)), r.map(function(e) {
10494 return t.id + "=" + e
10496 }).filter(B).reduce(pe, []).join("&");
10497 return i + (o ? "?" + o : "") + (a["#"] ? "#" + a["#"] : "")
10498 }, g.nameValidator = /^\w+([-.]+\w+)*(?:\[\])?$/, g
10501 return (on = Object.assign || function(e) {
10502 for (var t, n = 1, r = arguments.length; n < r; n++)
10503 for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
10505 }).apply(this, arguments)
10511 return e.prototype.fromConfig = function(e, t, n) {
10512 return new vt(e, t, m.DefType.CONFIG, this.router.urlService.config, n)
10513 }, e.prototype.fromPath = function(e, t, n) {
10514 return new vt(e, t, m.DefType.PATH, this.router.urlService.config, n)
10515 }, e.prototype.fromSearch = function(e, t, n) {
10516 return new vt(e, t, m.DefType.SEARCH, this.router.urlService.config, n)
10522 this.router = e, this.paramFactory = new an(this.router), this.caseInsensitive = function(e) {
10523 return r.router.urlService.config.caseInsensitive(e)
10524 }, this.defaultSquashPolicy = function(e) {
10525 return r.router.urlService.config.defaultSquashPolicy(e)
10526 }, this.strictMode = function(e) {
10527 return r.router.urlService.config.strictMode(e)
10528 }, this.type = function(e, t, n) {
10529 return r.router.urlService.config.type(e, t, n) || r
10535 return e.prototype.compile = function(e, t) {
10536 var n = this.router.urlService.config,
10537 r = t && !t.state && t.params;
10544 strict: n._isStrictMode,
10545 caseInsensitive: n._isCaseInsensitive
10547 return new rn(e, n.paramTypes, this.paramFactory, U(i, t))
10548 }, e.prototype.isMatcher = function(n) {
10549 if (!A(n)) return !1;
10551 return q(rn.prototype, function(e, t) {
10552 x(e) && (r = r && k(n[t]) && x(n[t]))
10554 }, e.prototype.$get = function() {
10555 var e = this.router.urlService.config;
10556 return e.paramTypes.enqueue = !1, e.paramTypes._flushTypeQueue(), this
10563 return e.prototype.compile = function(e) {
10564 return this.router.urlMatcherFactory.compile(e)
10565 }, e.prototype.create = function(e, t) {
10570 return i(n.compile(e))
10572 [h(rn), function(e) {
10573 return n.fromUrlMatcher(e, t)
10576 return n.fromState(e, n.router)
10578 [h(RegExp), function(e) {
10579 return n.fromRegExp(e, t)
10582 return new cn(e, t)
10586 if (!o) throw new Error("invalid 'what' in when()");
10588 }, e.prototype.fromUrlMatcher = function(n, t) {
10590 M(t) && (t = this.router.urlMatcherFactory.compile(t)), h(rn)(t) && (e = function(e) {
10595 matchPriority: function(t) {
10596 var e = n.parameters().filter(function(e) {
10597 return e.isOptional
10599 return e.length ? e.filter(function(e) {
10601 }).length / e.length : 1e-6
10605 return U(new cn(function(e) {
10606 var t = n.exec(e.path, e.search, e.hash);
10607 return n.validates(t) && t
10609 }, e.prototype.fromState = function(r, i) {
10614 return U(this.fromUrlMatcher(r.url, function(e) {
10615 var t = i.stateService,
10617 t.href(r, e) !== t.href(n.current, n.params) && t.transitionTo(r, e, {
10622 }, e.prototype.fromRegExp = function(t, e) {
10623 if (t.global || t.sticky) throw new Error("Rule RegExp must not be global or sticky");
10624 var n = M(e) ? function(n) {
10625 return e.replace(/\$(\$|\d{1,2})/, function(e, t) {
10626 return n["$" === t ? 0 : Number(t)]
10633 return U(new cn(function(e) {
10634 return t.exec(e.path)
10636 }, e.isUrlRule = function(t) {
10637 return t && ["type", "match", "handler"].every(function(e) {
10642 cn = function(e, t) {
10644 this.match = e, this.type = "RAW", this.matchPriority = function(e) {
10646 }, this.handler = t || B
10648 var un, dn = function() {
10651 this.router = e, this.sync = function(e) {
10652 return r.router.urlService.sync(e)
10653 }, this.listen = function(e) {
10654 return r.router.urlService.listen(e)
10655 }, this.deferIntercept = function(e) {
10656 return r.router.urlService.deferIntercept(e)
10657 }, this.match = function(e) {
10658 return r.router.urlService.match(e)
10659 }, this.initial = function(e) {
10660 return r.router.urlService.rules.initial(e)
10661 }, this.otherwise = function(e) {
10662 return r.router.urlService.rules.otherwise(e)
10663 }, this.removeRule = function(e) {
10664 return r.router.urlService.rules.removeRule(e)
10665 }, this.rule = function(e) {
10666 return r.router.urlService.rules.rule(e)
10667 }, this.rules = function() {
10668 return r.router.urlService.rules.rules()
10669 }, this.sort = function(e) {
10670 return r.router.urlService.rules.sort(e)
10671 }, this.when = function(e, t, n) {
10672 return r.router.urlService.rules.when(e, t, n)
10673 }, this.urlRuleFactory = new ln(e)
10675 return e.prototype.update = function(e) {
10676 var t = this.router.locationService;
10677 e ? this.location = t.url() : t.url() !== this.location && t.url(this.location, !0)
10678 }, e.prototype.push = function(e, t, n) {
10679 var r = n && !!n.replace;
10680 this.router.urlService.url(e.format(t || {}), r)
10681 }, e.prototype.href = function(e, t, n) {
10682 var r = e.format(t);
10683 if (null == r) return null;
10687 var i, o, a, s, l = this.router.urlService.config,
10689 if (c || null === r || (r = "#" + l.hashPrefix() + r), i = r, o = c, a = n.absolute, r = "/" === (s = l.baseHref()) ? i : o ? Ye(s) + i : a ? s.slice(1) + i : i, !n.absolute || !r) return r;
10690 var u = !c && r ? "/" : "",
10692 f = 80 === d || 443 === d ? "" : ":" + d;
10693 return [l.protocol(), "://", l.host(), f, u, r].join("")
10694 }, Object.defineProperty(e.prototype, "interceptDeferred", {
10696 return this.router.urlService.interceptDeferred
10705 this.router = e, this._uiViews = [], this._viewConfigs = [], this._viewConfigFactories = {}, this._listeners = [], this._pluginapi = {
10706 _rootViewContext: this._rootViewContext.bind(this),
10707 _viewConfigFactory: this._viewConfigFactory.bind(this),
10708 _registeredUIView: function(t) {
10709 return le(n._uiViews, function(e) {
10710 return n.router.$id + "." + e.id === t
10713 _registeredUIViews: function() {
10716 _activeViewConfigs: function() {
10717 return n._viewConfigs
10719 _onSync: function(e) {
10720 return n._listeners.push(e),
10722 return Z(n._listeners, e)
10727 return l.normalizeUIViewTarget = function(e, t) {
10728 void 0 === t && (t = "");
10729 var n = t.split("@"),
10730 r = n[0] || "$default",
10731 i = M(n[1]) ? n[1] : "^",
10732 o = /^(\^(?:\.\^)*)\.(.*$)/.exec(r);
10733 o && (i = o[1], r = o[2]), "!" === r.charAt(0) && (r = r.substr(1), i = "");
10734 /^(\^(?:\.\^)*)$/.exec(i) ? i = i.split(".").reduce(function(e, t) {
10736 }, e).name : "." === i && (i = e.name);
10739 uiViewContextAnchor: i
10741 }, l.prototype._rootViewContext = function(e) {
10742 return this._rootContext = e || this._rootContext
10743 }, l.prototype._viewConfigFactory = function(e, t) {
10744 this._viewConfigFactories[e] = t
10745 }, l.prototype.createViewConfig = function(e, t) {
10746 var n = this._viewConfigFactories[t.$type];
10747 if (!n) throw new Error("ViewService: No view config factory registered for type " + t.$type);
10749 return S(r) ? r : [r]
10750 }, l.prototype.deactivateViewConfig = function(e) {
10751 ct.traceViewServiceEvent("<- Removing", e), Z(this._viewConfigs, e)
10752 }, l.prototype.activateViewConfig = function(e) {
10753 ct.traceViewServiceEvent("-> Registering", e), this._viewConfigs.push(e)
10754 }, l.prototype.sync = function() {
10756 r = this._uiViews.map(function(e) {
10761 for (var t = e.viewDecl.$context, n = 0; ++n && t.parent;) t = t.parent;
10764 var o = c(function(e, t, n, r) {
10765 return t * (e(n) - e(r))
10767 e = this._uiViews.sort(o(function(e) {
10768 var t = function(e) {
10769 return e && e.parent ? t(e.parent) + 1 : 1
10771 return 1e4 * e.fqn.split(".").length + t(e.creationContext)
10772 }, 1)).map(function(e) {
10773 var t = n._viewConfigs.filter(l.matches(r, e));
10774 return 1 < t.length && t.sort(o(i, -1)), {
10779 t = e.map(function(e) {
10780 return e.viewConfig
10782 a = this._viewConfigs.filter(function(e) {
10784 }).map(function(e) {
10790 e.forEach(function(e) {
10791 -1 !== n._uiViews.indexOf(e.uiView) && e.uiView.configUpdated(e.viewConfig)
10793 var s = e.concat(a);
10794 this._listeners.forEach(function(e) {
10796 }), ct.traceViewSync(s)
10797 }, l.prototype.registerUIView = function(t) {
10798 ct.traceViewServiceUIViewEvent("-> Registering", t);
10799 var e = this._uiViews;
10800 return e.filter(function(e) {
10801 return e.fqn === t.fqn && e.$type === t.$type
10802 }).length && ct.traceViewServiceUIViewEvent("!!!! duplicate uiView named:", t), e.push(t), this.sync(),
10804 -1 !== e.indexOf(t) ? (ct.traceViewServiceUIViewEvent("<- Deregistering", t), Z(e)(t)) : ct.traceViewServiceUIViewEvent("Tried removing non-registered uiView", t)
10806 }, l.prototype.available = function() {
10807 return this._uiViews.map(y("fqn"))
10808 }, l.prototype.active = function() {
10809 return this._uiViews.filter(y("$config")).map(y("name"))
10810 }, l.matches = function(s, l) {
10811 return function(e) {
10812 if (l.$type !== e.viewDecl.$type) return !1;
10813 var t = e.viewDecl,
10814 n = t.$uiViewName.split("."),
10815 r = l.fqn.split(".");
10816 if (!V(n, r.slice(0 - n.length))) return !1;
10817 var i = 1 - n.length || void 0,
10818 o = r.slice(0, i).join("."),
10819 a = s[o].creationContext;
10820 return t.$uiViewContextAnchor === (a && a.name)
10826 this.params = new yt, this.lastStartedTransitionId = -1, this.transitionHistory = new Ie([], 1), this.successfulTransitions = new Ie([], 1)
10828 return e.prototype.dispose = function() {
10829 this.transitionHistory.clear(), this.successfulTransitions.clear(), this.transition = null
10834 if (!(x(e) || M(e) || h($t)(e) || $t.isDef(e))) throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");
10835 return x(e) ? e : p(e)
10837 un = function(e, t) {
10838 var n, r, i, o, a, s, l, c, u = (n = e, (t.priority || 0) - (n.priority || 0));
10839 return 0 !== u ? u : (r = t, 0 !== (u = ((i = {
10845 })[e.type] || 0) - (i[r.type] || 0)) ? u : (a = t, 0 !== (u = (o = e).urlMatcher && a.urlMatcher ? rn.compare(o.urlMatcher, a.urlMatcher) : 0) ? u : (l = t, (c = {
10848 })[(s = e).type] && c[l.type] ? 0 : (s.$id || 0) - (l.$id || 0))))
10850 var mn = function() {
10852 this.router = e, this._sortFn = un, this._rules = [], this._id = 0, this.urlRuleFactory = new ln(e)
10854 return e.prototype.dispose = function(e) {
10855 this._rules = [], delete this._otherwiseFn
10856 }, e.prototype.initial = function(e) {
10858 this.rule(this.urlRuleFactory.create(function(e, t) {
10859 return 0 === t.globals.transitionHistory.size() && !!/^\/?$/.exec(e.path)
10861 }, e.prototype.otherwise = function(e) {
10863 this._otherwiseFn = this.urlRuleFactory.create(p(!0), t), this._sorted = !1
10864 }, e.prototype.removeRule = function(e) {
10866 }, e.prototype.rule = function(e) {
10868 if (!ln.isUrlRule(e)) throw new Error("invalid rule");
10869 return e.$id = this._id++, e.priority = e.priority || 0, this._rules.push(e), this._sorted = !1,
10871 return t.removeRule(e)
10873 }, e.prototype.rules = function() {
10874 return this.ensureSorted(), this._rules.concat(this._otherwiseFn ? [this._otherwiseFn] : [])
10875 }, e.prototype.sort = function(e) {
10876 for (var t = this.stableSort(this._rules, this._sortFn = e || this._sortFn), n = 0, r = 0; r < t.length; r++) t[r]._group = n, r < t.length - 1 && 0 !== this._sortFn(t[r], t[r + 1]) && n++;
10877 this._rules = t, this._sorted = !0
10878 }, e.prototype.ensureSorted = function() {
10879 this._sorted || this.sort()
10880 }, e.prototype.stableSort = function(e, r) {
10881 var t = e.map(function(e, t) {
10887 return t.sort(function(e, t) {
10888 var n = r(e.elem, t.elem);
10889 return 0 === n ? e.idx - t.idx : n
10890 }), t.map(function(e) {
10893 }, e.prototype.when = function(e, t, n) {
10894 var r = this.urlRuleFactory.create(e, t);
10895 return k(n && n.priority) && (r.priority = n.priority), this.rule(r), r
10901 this.router = e, this.paramTypes = new bt, this._isCaseInsensitive = !1, this._isStrictMode = !0, this._defaultSquashPolicy = !1, this.dispose = function() {
10902 return t.paramTypes.dispose()
10903 }, this.baseHref = function() {
10904 return t.router.locationConfig.baseHref()
10905 }, this.hashPrefix = function(e) {
10906 return t.router.locationConfig.hashPrefix(e)
10907 }, this.host = function() {
10908 return t.router.locationConfig.host()
10909 }, this.html5Mode = function() {
10910 return t.router.locationConfig.html5Mode()
10911 }, this.port = function() {
10912 return t.router.locationConfig.port()
10913 }, this.protocol = function() {
10914 return t.router.locationConfig.protocol()
10917 return e.prototype.caseInsensitive = function(e) {
10918 return this._isCaseInsensitive = k(e) ? e : this._isCaseInsensitive
10919 }, e.prototype.defaultSquashPolicy = function(e) {
10920 if (k(e) && !0 !== e && !1 !== e && !M(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
10921 return this._defaultSquashPolicy = k(e) ? e : this._defaultSquashPolicy
10922 }, e.prototype.strictMode = function(e) {
10923 return this._isStrictMode = k(e) ? e : this._isStrictMode
10924 }, e.prototype.type = function(e, t, n) {
10925 var r = this.paramTypes.type(e, t, n);
10926 return k(t) ? this : r
10932 this.router = e, this.interceptDeferred = !1, this.rules = new mn(this.router), this.config = new gn(this.router), this.url = function(e, t, n) {
10933 return r.router.locationService.url(e, t, n)
10934 }, this.path = function() {
10935 return r.router.locationService.path()
10936 }, this.search = function() {
10937 return r.router.locationService.search()
10938 }, this.hash = function() {
10939 return r.router.locationService.hash()
10940 }, this.onChange = function(e) {
10941 return r.router.locationService.onChange(e)
10944 return e.prototype.dispose = function() {
10945 this.listen(!1), this.rules.dispose()
10946 }, e.prototype.parts = function() {
10949 search: this.search(),
10952 }, e.prototype.sync = function(e) {
10953 if (!e || !e.defaultPrevented) {
10954 var t = this.router,
10956 r = t.stateService,
10959 search: n.search(),
10965 return n.url(e, !0)
10967 [$t.isDef, function(e) {
10968 return r.go(e.state, e.params, e.options)
10970 [h($t), function(e) {
10971 return r.go(e.state(), e.params(), e.options())
10973 ])(o && o.rule.handler(o.match, i, this.router))
10975 }, e.prototype.listen = function(e) {
10977 if (!1 !== e) return this._stopListeningFn = this._stopListeningFn || this.router.urlService.onChange(function(e) {
10980 this._stopListeningFn && this._stopListeningFn(), delete this._stopListeningFn
10981 }, e.prototype.deferIntercept = function(e) {
10982 void 0 === e && (e = !0), this.interceptDeferred = e
10983 }, e.prototype.match = function(e) {
10990 for (var n, r, i, o = this.rules.rules(), a = 0; a < o.length && (!n || n.rule._group === o[a]._group); a++) {
10991 var s = (r = o[a], void 0, (i = r.match(e, t.router)) && {
10994 weight: r.matchPriority(i)
10996 n = !n || s && s.weight > n.weight ? s : n
11002 yn = R("LocationServices", ["url", "path", "search", "hash", "onChange"]),
11003 _n = R("LocationConfig", ["port", "protocol", "host", "baseHref", "html5Mode", "hashPrefix"]),
11006 void 0 === e && (e = yn), void 0 === t && (t = _n), this.locationService = e, this.locationConfig = t, this.$id = bn++, this._disposed = !1, this._disposables = [], this.trace = ct, this.viewService = new fn(this), this.globals = new hn, this.transitionService = new Vn(this), this.urlMatcherFactory = new sn(this), this.urlRouter = new dn(this), this.urlService = new vn(this), this.stateRegistry = new zt(this), this.stateService = new Bn(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.urlService), this.disposable(e), this.disposable(t)
11008 return e.prototype.disposable = function(e) {
11009 this._disposables.push(e)
11010 }, e.prototype.dispose = function(e) {
11012 e && x(e.dispose) ? e.dispose(this) : (this._disposed = !0, this._disposables.slice().forEach(function(e) {
11014 "function" == typeof e.dispose && e.dispose(t), Z(t._disposables, e)
11017 }, e.prototype.plugin = function(e, t) {
11018 void 0 === t && (t = {});
11019 var n = new e(this, t);
11020 if (!n.name) throw new Error("Required property `name` missing on plugin: " + n);
11021 return this._disposables.push(n), this._plugins[n.name] = n
11022 }, e.prototype.getPlugin = function(e) {
11023 return e ? this._plugins[e] : de(this._plugins)
11028 t.addResolvable(kt.fromData($n, t.router), ""), t.addResolvable(kt.fromData(Jt, t), ""), t.addResolvable(kt.fromData("$transition$", t), ""), t.addResolvable(kt.fromData("$stateParams", t.params()), ""), t.entering().forEach(function(e) {
11029 t.addResolvable(kt.fromData("$state$", e), e)
11032 var En = G(["$transition$", Jt]),
11034 var t = de(e.treeChanges()).reduce(pe, []).reduce(ve, []),
11036 return En(e.token) ? kt.fromData(e.token, null) : e
11038 t.forEach(function(e) {
11039 e.resolvables = e.resolvables.map(n)
11043 var e = t.to().redirectTo;
11045 var n = t.router.stateService;
11046 return x(e) ? P.$q.when(e(t)).then(r) : r(e)
11050 if (e) return e instanceof $t ? e : M(e) ? n.target(e, t.params(), t.options()) : e.state || e.params ? n.target(e.state || t.to(), e.params || t.params(), t.options()) : void 0
11055 return function(e, t) {
11056 return (0, t.$$state()[n])(e, t)
11059 var Tn = xn("onExit"),
11060 Mn = xn("onRetain"),
11061 An = xn("onEnter"),
11063 return new St(e.treeChanges().to).resolvePath("EAGER", e).then(z)
11065 Dn = function(e, t) {
11066 return new St(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY", e).then(z)
11069 return new St(e.treeChanges().to).resolvePath("LAZY", e).then(z)
11073 n = e.views("entering");
11074 if (n.length) return t.all(n.map(function(e) {
11075 return t.when(e.load())
11079 var t = e.views("entering"),
11080 n = e.views("exiting");
11081 if (t.length || n.length) {
11082 var r = e.router.viewService;
11083 n.forEach(function(e) {
11084 return r.deactivateViewConfig(e)
11085 }), t.forEach(function(e) {
11086 return r.activateViewConfig(e)
11091 var t = e.router.globals,
11093 t.transition === e && (t.transition = null)
11095 e.onSuccess({}, function() {
11096 t.successfulTransitions.enqueue(e), t.$current = e.$to(), t.current = t.$current.self, Te(e.params(), t.params)
11099 }), e.promise.then(n, n)
11102 var t = e.options(),
11103 n = e.router.stateService,
11104 r = e.router.urlRouter;
11105 if ("url" !== t.source && t.location && n.$current.navigable) {
11107 replace: "replace" === t.location
11109 r.push(n.$current.navigable.url, n.params, i)
11115 var e = a.entering().filter(function(e) {
11116 return !!e.$$state().lazyLoad
11117 }).map(function(e) {
11120 return P.$q.all(e).then(function() {
11121 if ("url" !== a.originalTransition().options().source) {
11122 var e = a.targetState();
11123 return s.stateService.target(e.identifier(), e.params(), e.options())
11125 var t = s.urlService,
11126 n = t.match(t.parts()),
11128 if (r && "STATE" === r.type) {
11131 return s.stateService.target(i, o, a.options())
11133 s.urlService.sync()
11137 function jn(t, n) {
11138 var r = n.$$state().lazyLoad,
11141 e = r._promise = P.$q.when(r(t, n)).then(function(e) {
11142 e && Array.isArray(e.states) && e.states.forEach(function(e) {
11143 return t.router.stateRegistry.register(e)
11146 }).then(function(e) {
11147 return delete n.lazyLoad, delete n.$$state().lazyLoad, delete r._promise, e
11149 return delete r._promise, P.$q.reject(e)
11154 var Ln = function(e, t, n, r, i, o, a, s) {
11155 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
11159 var t = e._ignoredReason();
11161 ct.traceTransitionIgnored(e);
11162 var n = e.router.globals.transition;
11163 return "SameAsCurrent" === t && n && n.abort(), Pe.ignored().toPromise()
11168 if (!e.valid()) throw new Error(e.error().toString())
11177 current: function() {
11184 this._transitionCount = 0, this._eventTypes = [], this._registeredHooks = {}, this._criteriaPaths = {}, this._router = e, this.$view = e.viewService, this._deregisterHookFns = {}, this._pluginapi = W(p(this), {}, p(this), ["_definePathType", "_defineEvent", "_getPathTypes", "_getEvents", "getHooks"]), this._defineCorePaths(), this._defineCoreEvents(), this._registerCoreTransitionHooks(), e.globals.successfulTransitions.onEvict(Cn)
11186 return e.prototype.onCreate = function(e, t, n) {}, e.prototype.onBefore = function(e, t, n) {}, e.prototype.onStart = function(e, t, n) {}, e.prototype.onExit = function(e, t, n) {}, e.prototype.onRetain = function(e, t, n) {}, e.prototype.onEnter = function(e, t, n) {}, e.prototype.onFinish = function(e, t, n) {}, e.prototype.onSuccess = function(e, t, n) {}, e.prototype.onError = function(e, t, n) {}, e.prototype.dispose = function(e) {
11187 de(this._registeredHooks).forEach(function(t) {
11188 return t.forEach(function(e) {
11189 e._deregistered = !0, Z(t, e)
11192 }, e.prototype.create = function(e, t) {
11193 return new Jt(e, t, this._router)
11194 }, e.prototype._defineCoreEvents = function() {
11195 var e = m.TransitionHookPhase,
11197 n = this._criteriaPaths;
11198 this._defineEvent("onCreate", e.CREATE, 0, n.to, !1, t.LOG_REJECTED_RESULT, t.THROW_ERROR, !0), this._defineEvent("onBefore", e.BEFORE, 0, n.to), this._defineEvent("onStart", e.RUN, 0, n.to), this._defineEvent("onExit", e.RUN, 100, n.exiting, !0), this._defineEvent("onRetain", e.RUN, 200, n.retained), this._defineEvent("onEnter", e.RUN, 300, n.entering), this._defineEvent("onFinish", e.RUN, 400, n.to), this._defineEvent("onSuccess", e.SUCCESS, 0, n.to, !1, t.LOG_REJECTED_RESULT, t.LOG_ERROR, !0), this._defineEvent("onError", e.ERROR, 0, n.to, !1, t.LOG_REJECTED_RESULT, t.LOG_ERROR, !0)
11199 }, e.prototype._defineCorePaths = function() {
11200 var e = m.TransitionHookScope.STATE,
11201 t = m.TransitionHookScope.TRANSITION;
11202 this._definePathType("to", t), this._definePathType("from", t), this._definePathType("exiting", e), this._definePathType("retained", e), this._definePathType("entering", e)
11203 }, e.prototype._defineEvent = function(e, t, n, r, i, o, a, s) {
11204 void 0 === i && (i = !1), void 0 === o && (o = Yt.HANDLE_RESULT), void 0 === a && (a = Yt.REJECT_ERROR), void 0 === s && (s = !1);
11205 var l = new Ln(e, t, n, r, i, o, a, s);
11206 this._eventTypes.push(l), Zt(this, this, l)
11207 }, e.prototype._getEvents = function(t) {
11208 return (k(t) ? this._eventTypes.filter(function(e) {
11209 return e.hookPhase === t
11210 }) : this._eventTypes.slice()).sort(function(e, t) {
11211 var n = e.hookPhase - t.hookPhase;
11212 return 0 === n ? e.hookOrder - t.hookOrder : n
11214 }, e.prototype._definePathType = function(e, t) {
11215 this._criteriaPaths[e] = {
11219 }, e.prototype._getPathTypes = function() {
11220 return this._criteriaPaths
11221 }, e.prototype.getHooks = function(e) {
11222 return this._registeredHooks[e]
11223 }, e.prototype._registerCoreTransitionHooks = function() {
11224 var e = this._deregisterHookFns;
11225 e.addCoreResolves = this.onCreate({}, wn), e.ignored = this.onBefore({}, Fn, {
11227 }), e.invalid = this.onBefore({}, qn, {
11229 }), e.redirectTo = this.onStart({
11231 return !!e.redirectTo
11233 }, kn), e.onExit = this.onExit({
11234 exiting: function(e) {
11237 }, Tn), e.onRetain = this.onRetain({
11238 retained: function(e) {
11239 return !!e.onRetain
11241 }, Mn), e.onEnter = this.onEnter({
11242 entering: function(e) {
11245 }, An), e.eagerResolve = this.onStart({}, Sn, {
11247 }), e.lazyResolve = this.onEnter({
11251 }), e.resolveAll = this.onFinish({}, On, {
11253 }), e.loadViews = this.onFinish({}, Nn), e.activateViews = this.onSuccess({}, In), e.updateGlobals = this.onCreate({}, Rn), e.updateUrl = this.onSuccess({}, Pn, {
11255 }), e.lazyLoad = this.onBefore({
11256 entering: function(e) {
11257 return !!e.lazyLoad
11264 this.router = e, this.invalidCallbacks = [], this._defaultErrorHandler = function(e) {
11265 e instanceof Error && e.stack ? (console.error(e), console.error(e.stack)) : e instanceof Pe ? (console.error(e.toString()), e.detail && e.detail.stack && console.error(e.detail.stack)) : console.error(e)
11267 var t = Object.keys(n.prototype).filter(d(G(["current", "$current", "params", "transition"])));
11268 W(p(n.prototype), this, p(this), t)
11270 return Object.defineProperty(n.prototype, "transition", {
11272 return this.router.globals.transition
11276 }), Object.defineProperty(n.prototype, "params", {
11278 return this.router.globals.params
11282 }), Object.defineProperty(n.prototype, "current", {
11284 return this.router.globals.current
11288 }), Object.defineProperty(n.prototype, "$current", {
11290 return this.router.globals.$current
11294 }), n.prototype.dispose = function() {
11295 this.defaultErrorHandler(z), this.invalidCallbacks = []
11296 }, n.prototype._handleInvalidTargetState = function(e, n) {
11298 i = wt.makeTargetState(this.router.stateRegistry, e),
11299 t = this.router.globals,
11301 return t.transitionHistory.peekTail()
11304 s = new Ie(this.invalidCallbacks.slice()),
11305 l = new St(e).injector(),
11307 if (e instanceof $t) {
11309 return (t = r.target(t.identifier(), t.params(), t.options())).valid() ? o() !== a ? Pe.superseded().toPromise() : r.transitionTo(t.identifier(), t.params(), t.options()) : Pe.invalid(t.error()).toPromise()
11312 return function t() {
11313 var e = s.dequeue();
11314 return void 0 === e ? Pe.invalid(n.error()).toPromise() : P.$q.when(e(n, i, l)).then(c).then(function(e) {
11318 }, n.prototype.onInvalid = function(e) {
11319 return this.invalidCallbacks.push(e),
11321 Z(this.invalidCallbacks)(e)
11323 }, n.prototype.reload = function(e) {
11324 return this.transitionTo(this.current, this.params, {
11325 reload: !k(e) || e,
11329 }, n.prototype.go = function(e, t, n) {
11331 relative: this.$current,
11334 return this.transitionTo(e, t, r)
11335 }, n.prototype.target = function(e, t, n) {
11336 if (void 0 === n && (n = {}), A(n.reload) && !n.reload.name) throw new Error("Invalid reload state object");
11337 var r = this.router.stateRegistry;
11338 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 '" + (M(n.reload) ? n.reload : n.reload.name) + "'");
11339 return new $t(this.router.stateRegistry, e, t, n)
11340 }, n.prototype.getCurrentPath = function() {
11342 t = this.router.globals.successfulTransitions.peekTail();
11343 return t ? t.treeChanges().to : [new _t(e.router.stateRegistry.root())]
11344 }, n.prototype.transitionTo = function(e, t, n) {
11346 void 0 === t && (t = {}), void 0 === n && (n = {});
11347 var a = this.router,
11351 current: function() {
11352 return s.transition
11355 var r = this.target(e, t, n),
11356 i = this.getCurrentPath();
11357 if (!r.exists()) return this._handleInvalidTargetState(i, r);
11358 if (!r.valid()) return Oe(r.error());
11359 var l = function(i) {
11360 return function(e) {
11361 if (e instanceof Pe) {
11362 var t = a.globals.lastStartedTransitionId <= i.$id;
11363 if (e.type === m.RejectType.IGNORED) return t && a.urlRouter.update(), P.$q.when(s.current);
11365 if (e.type === m.RejectType.SUPERSEDED && e.redirected && n instanceof $t) {
11366 var r = i.redirect(n);
11367 return r.run().catch(l(r))
11369 if (e.type === m.RejectType.ABORTED) return t && a.urlRouter.update(), P.$q.reject(e)
11371 return o.defaultErrorHandler()(e), P.$q.reject(e)
11374 c = this.router.transitionService.create(i, r),
11375 u = c.run().catch(l(c));
11376 return De(u), U(u, {
11379 }, n.prototype.is = function(e, t, n) {
11381 relative: this.$current
11383 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11385 if (this.$current !== r) return !1;
11387 var i = r.parameters({
11391 return vt.equals(i, vt.values(i, t), this.params)
11393 }, n.prototype.includes = function(e, t, n) {
11395 relative: this.$current
11397 var r = M(e) && Ne.fromString(e);
11399 if (!r.matches(this.$current.name)) return !1;
11400 e = this.$current.name
11402 var i = this.router.stateRegistry.matcher.find(e, n.relative),
11403 o = this.$current.includes;
11405 if (!k(o[i.name])) return !1;
11407 var a = i.parameters({
11411 return vt.equals(a, vt.values(a, t), this.params)
11413 }, n.prototype.href = function(e, t, n) {
11418 relative: this.$current
11420 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11421 if (!k(r)) return null;
11422 n.inherit && (t = this.params.$inherit(t, this.$current, r));
11423 var i = r && n.lossy ? r.navigable : r;
11424 return i && void 0 !== i.url && null !== i.url ? this.router.urlRouter.href(i.url, t, {
11425 absolute: n.absolute
11427 }, n.prototype.defaultErrorHandler = function(e) {
11428 return this._defaultErrorHandler = e || this._defaultErrorHandler
11429 }, n.prototype.get = function(e, t) {
11430 var n = this.router.stateRegistry;
11431 return 0 === arguments.length ? n.get() : n.get(e, t || this.$current)
11432 }, n.prototype.lazyLoad = function(e, t) {
11433 var n = this.get(e);
11434 if (!n || !n.lazyLoad) throw new Error("Can not lazy load " + e);
11435 var r = this.getCurrentPath(),
11436 i = wt.makeTargetState(this.router.stateRegistry, r);
11437 return jn(t = t || this.router.transitionService.create(r, i), n)
11441 when: function(n) {
11442 return new Promise(function(e, t) {
11446 reject: function(n) {
11447 return new Promise(function(e, t) {
11451 defer: function() {
11453 return n.promise = new Promise(function(e, t) {
11454 n.resolve = e, n.reject = t
11458 if (S(e)) return Promise.all(e);
11460 var t = Object.keys(e).map(function(t) {
11461 return e[t].then(function(e) {
11468 return zn.all(t).then(function(e) {
11469 return e.reduce(function(e, t) {
11470 return e[t.key] = t.val, e
11477 Yn = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
11484 return null != Kn.get(e)
11486 invoke: function(e, t, n) {
11487 var r = U({}, Wn, n || {}),
11488 i = Kn.annotate(e),
11489 o = _e(function(e) {
11490 return r.hasOwnProperty(e)
11492 return "DI can't find injectable: '" + e + "'"
11494 a = i.filter(o).map(function(e) {
11497 return x(e) ? e.apply(t, a) : e.slice(-1)[0].apply(t, a)
11499 annotate: function(e) {
11500 if (!N(e)) throw new Error("Not an injectable function: " + e);
11501 if (e && e.$inject) return e.$inject;
11502 if (S(e)) return e.slice(0, -1);
11503 var t = e.toString().replace(Yn, "");
11504 return t.slice(t.indexOf("(") + 1, t.indexOf(")")).match(Gn) || []
11507 Zn = function(e, t) {
11510 return e.hasOwnProperty(n) ? S(e[n]) ? e[n].push(r) : e[n] = [e[n], r] : e[n] = r, e
11513 return e.split("&").filter(B).map(Ze).reduce(Zn, {})
11517 var t = function(e) {
11531 var Jn = function(e) {
11535 i = Object.keys(n).map(function(t) {
11537 return (S(e) ? e : [e]).map(function(e) {
11540 }).reduce(pe, []).join("&");
11541 return t + (i ? "?" + i : "") + (r ? "#" + r : "")
11544 function er(r, i, o, a) {
11545 return function(e) {
11546 var t = e.locationService = new o(e),
11547 n = e.locationConfig = new a(e, i);
11552 dispose: function(e) {
11553 e.dispose(t), e.dispose(n)
11558 var tr, nr, rr, ir = function() {
11561 this.fireAfterUpdate = t, this._listeners = [], this._listener = function(t) {
11562 return n._listeners.forEach(function(e) {
11565 }, this.hash = function() {
11566 return Qn(n._get()).hash
11567 }, this.path = function() {
11568 return Qn(n._get()).path
11569 }, this.search = function() {
11570 return Xn(Qn(n._get()).search)
11571 }, this._location = H.location, this._history = H.history
11573 return e.prototype.url = function(t, e) {
11574 return void 0 === e && (e = !0), k(t) && t !== this._get() && (this._set(null, null, t, e), this.fireAfterUpdate && this._listeners.forEach(function(e) {
11579 }, e.prototype.onChange = function(e) {
11581 return this._listeners.push(e),
11583 return Z(t._listeners, e)
11585 }, e.prototype.dispose = function(e) {
11586 ee(this._listeners)
11589 or = (tr = function(e, t) {
11590 return (tr = Object.setPrototypeOf || {
11593 instanceof Array && function(e, t) {
11595 } || function(e, t) {
11596 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11598 }, function(e, t) {
11600 this.constructor = e
11602 tr(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
11606 var t = n.call(this, e, !1) || this;
11607 return H.addEventListener("hashchange", t._listener, !1), t
11609 return or(e, n), e.prototype._get = function() {
11610 return Xe(this._location.hash)
11611 }, e.prototype._set = function(e, t, n, r) {
11612 this._location.hash = n
11613 }, e.prototype.dispose = function(e) {
11614 n.prototype.dispose.call(this, e), H.removeEventListener("hashchange", this._listener)
11617 sr = (nr = function(e, t) {
11618 return (nr = Object.setPrototypeOf || {
11621 instanceof Array && function(e, t) {
11623 } || function(e, t) {
11624 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11626 }, function(e, t) {
11628 this.constructor = e
11630 nr(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
11634 return t.call(this, e, !0) || this
11636 return sr(e, t), e.prototype._get = function() {
11638 }, e.prototype._set = function(e, t, n, r) {
11642 cr = (rr = function(e, t) {
11643 return (rr = Object.setPrototypeOf || {
11646 instanceof Array && function(e, t) {
11648 } || function(e, t) {
11649 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11651 }, function(e, t) {
11653 this.constructor = e
11655 rr(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
11659 var t = n.call(this, e, !0) || this;
11660 return t._config = e.urlService.config, H.addEventListener("popstate", t._listener, !1), t
11662 return cr(e, n), e.prototype._getBasePrefix = function() {
11663 return Ye(this._config.baseHref())
11664 }, e.prototype._get = function() {
11665 var e = this._location,
11669 r = Ke(r)[1], n = Ge(n)[1];
11670 var i = this._getBasePrefix(),
11671 o = t === this._config.baseHref(),
11672 a = t.substr(0, i.length) === i;
11673 return (t = o ? "/" : a ? t.substring(i.length) : t) + (r ? "?" + r : "") + (n ? "#" + n : "")
11674 }, e.prototype._set = function(e, t, n, r) {
11675 var i = this._getBasePrefix(),
11676 o = n && "/" !== n[0] ? "/" : "",
11677 a = "" === n || "/" === n ? this._config.baseHref() : i + o + n;
11678 r ? this._history.replaceState(e, t, a) : this._history.pushState(e, t, a)
11679 }, e.prototype.dispose = function(e) {
11680 n.prototype.dispose.call(this, e), H.removeEventListener("popstate", this._listener)
11685 this.dispose = z, this._baseHref = "", this._port = 80, this._protocol = "http", this._host = "localhost", this._hashPrefix = "", this.port = function() {
11687 }, this.protocol = function() {
11689 }, this.host = function() {
11691 }, this.baseHref = function() {
11693 }, this.html5Mode = function() {
11695 }, this.hashPrefix = function(e) {
11696 return k(e) ? t._hashPrefix = e : t._hashPrefix
11701 void 0 === t && (t = !1), this._isHtml5 = t, this._baseHref = void 0, this._hashPrefix = ""
11703 return e.prototype.port = function() {
11704 return location.port ? Number(location.port) : "https" === this.protocol() ? 443 : 80
11705 }, e.prototype.protocol = function() {
11706 return location.protocol.replace(/:/g, "")
11707 }, e.prototype.host = function() {
11708 return location.hostname
11709 }, e.prototype.html5Mode = function() {
11710 return this._isHtml5
11711 }, e.prototype.hashPrefix = function(e) {
11712 return k(e) ? this._hashPrefix = e : this._hashPrefix
11713 }, e.prototype.baseHref = function(e) {
11714 return k(e) && (this._baseHref = e), _(this._baseHref) && (this._baseHref = this.getBaseHref()), this._baseHref
11715 }, e.prototype.getBaseHref = function() {
11716 var e = document.getElementsByTagName("base")[0];
11717 return e && e.href ? e.href.replace(/^([^/:]*:)?\/\/[^/]*/, "") : this._isHtml5 ? "/" : location.pathname || "/"
11718 }, e.prototype.dispose = function() {}, e
11722 return P.$injector = Kn, {
11723 name: "vanilla.services",
11726 dispose: function() {
11731 var pr = er("vanilla.hashBangLocation", !1, ar, fr),
11732 mr = er("vanilla.pushStateLocation", !0, ur, fr),
11733 gr = er("vanilla.memoryLocation", !1, lr, dr),
11736 return e.prototype.dispose = function(e) {}, e
11738 br = Object.freeze({
11747 createProxyFunctions: W,
11775 assertPredicate: _e,
11784 silenceUncaughtInPromise: De,
11785 silentRejection: Oe,
11808 isNullOrUndefined: w,
11822 functionToString: Fe,
11825 beforeAfterSubstr: ze,
11827 stripLastPathElement: Ye,
11833 joinNeighborsR: Je,
11848 resolvePolicies: Et,
11849 defaultResolvePolicy: Ct,
11851 NATIVE_INJECTOR_TOKEN: At,
11852 ResolveContext: St,
11853 resolvablesBuilder: jt,
11857 StateQueueManager: Bt,
11861 get TransitionHookPhase() {
11862 return m.TransitionHookPhase
11864 get TransitionHookScope() {
11865 return m.TransitionHookScope
11869 RegisteredHook: Kt,
11872 return m.RejectType
11876 TransitionHook: Yt,
11877 TransitionEventType: Ln,
11878 defaultTransOpts: Un,
11879 TransitionService: Vn,
11884 UrlMatcherFactory: sn,
11886 UrlRuleFactory: ln,
11890 UIRouterGlobals: hn,
11894 BaseLocationServices: ir,
11895 HashLocationService: ar,
11896 MemoryLocationService: lr,
11897 PushStateLocationService: ur,
11898 MemoryLocationConfig: dr,
11899 BrowserLocationConfig: fr,
11900 keyValsToObjectR: Zn,
11904 locationPluginFactory: er,
11905 servicesPlugin: hr,
11906 hashLocationPlugin: pr,
11907 pushStateLocationPlugin: mr,
11908 memoryLocationPlugin: gr,
11909 UIRouterPluginBase: vr
11914 return function(e, t) {
11915 return n = n || P.$injector.get("$templateFactory"), [new Er(e, t, n)]
11918 var _r = function(e, n) {
11919 return e.reduce(function(e, t) {
11920 return e || k(n[t])
11925 if (!r.parent) return {};
11926 var i = ["component", "bindings", "componentProvider"],
11927 o = ["templateProvider", "templateUrl", "template", "notify", "async"].concat(["controller", "controllerProvider", "controllerAs", "resolveAs"]),
11929 if (k(r.views) && _r(e, r)) throw new Error("State '" + r.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): " + e.filter(function(e) {
11936 return q(t, function(e, t) {
11937 if (t = t || "$default", M(e) && (e = {
11939 }), e = U({}, e), _r(i, e) && _r(o, e)) throw new Error("Cannot combine: " + i.join("|") + " with: " + o.join("|") + " in stateview: '" + t + "@" + r.name + "'");
11940 e.resolveAs = e.resolveAs || "$resolve", e.$type = "ng1", e.$context = r, e.$name = t;
11941 var n = fn.normalizeUIViewTarget(e.$context, e.$name);
11942 e.$uiViewName = n.uiViewName, e.$uiViewContextAnchor = n.uiViewContextAnchor, a[t] = e
11947 function e(e, t, n) {
11949 this.path = e, this.viewDecl = t, this.factory = n, this.$id = wr++, this.loaded = !1, this.getTemplate = function(e, t) {
11950 return r.component ? r.factory.makeComponentTemplate(e, t, r.component, r.viewDecl.bindings) : r.template
11953 return e.prototype.load = function() {
11956 n = new St(this.path),
11957 r = this.path.reduce(function(e, t) {
11958 return U(e, t.paramValues)
11961 template: e.when(this.factory.fromConfig(this.viewDecl, r, n)),
11962 controller: e.when(this.getController(n))
11964 return e.all(i).then(function(e) {
11965 return ct.traceViewServiceEvent("Loaded", t), t.controller = e.controller, U(t, e.template), t
11967 }, e.prototype.getController = function(e) {
11968 var t = this.viewDecl.controllerProvider;
11969 if (!N(t)) return this.viewDecl.controller;
11970 var n = P.$injector.annotate(t),
11971 r = S(t) ? xe(t) : t;
11972 return new kt("", r, n).get(e)
11978 this._useHttp = E.version.minor < 3, this.$get = ["$http", "$templateCache", "$injector", function(e, t, n) {
11979 return r.$templateRequest = n.has && n.has("$templateRequest") && n.get("$templateRequest"), r.$http = e, r.$templateCache = t, r
11982 return e.prototype.useHttpService = function(e) {
11984 }, e.prototype.fromConfig = function(e, t, n) {
11985 var r = function(e) {
11986 return P.$q.when(e).then(function(e) {
11993 return P.$q.when(e).then(function(e) {
11999 return k(e.template) ? r(this.fromString(e.template, t)) : k(e.templateUrl) ? r(this.fromUrl(e.templateUrl, t)) : k(e.templateProvider) ? r(this.fromProvider(e.templateProvider, t, n)) : k(e.component) ? i(e.component) : k(e.componentProvider) ? i(this.fromComponentProvider(e.componentProvider, t, n)) : r("<ui-view></ui-view>")
12000 }, e.prototype.fromString = function(e, t) {
12001 return x(e) ? e(t) : e
12002 }, e.prototype.fromUrl = function(e, t) {
12003 return x(e) && (e = e(t)), null == e ? null : this._useHttp ? this.$http.get(e, {
12004 cache: this.$templateCache,
12006 Accept: "text/html"
12008 }).then(function(e) {
12010 }) : this.$templateRequest(e)
12011 }, e.prototype.fromProvider = function(e, t, n) {
12012 var r = P.$injector.annotate(e),
12013 i = S(e) ? xe(e) : e;
12014 return new kt("", i, r).get(n)
12015 }, e.prototype.fromComponentProvider = function(e, t, n) {
12016 var r = P.$injector.annotate(e),
12017 i = S(e) ? xe(e) : e;
12018 return new kt("", i, r).get(n)
12019 }, e.prototype.makeComponentTemplate = function(l, c, e, u) {
12021 var d = 3 <= E.version.minor ? "::" : "",
12024 return /^(x|data)-/.exec(t) ? "x-" + t : t
12027 var t = P.$injector.get(e + "Directive");
12028 if (!t || !t.length) throw new Error("Unable to find component named '" + e + "'");
12029 return t.map(kr).reduce(pe, [])
12030 }(e).map(function(e) {
12034 if (l.attr(r) && !u[t]) return r + "='" + l.attr(r) + "'";
12036 if ("@" === n) return r + "='{{" + d + "$resolve." + i + "}}'";
12037 if ("&" !== n) return r + "='" + d + "$resolve." + i + "'";
12038 var o = c.getResolvable(i),
12040 s = a && P.$injector.annotate(a) || [];
12041 return r + "='$resolve." + i + (S(a) ? "[" + (a.length - 1) + "]" : "") + "(" + s.join(",") + ")'"
12044 return "<" + n + " " + t + "></" + n + ">"
12047 var kr = function(e) {
12048 return A(e.bindToController) ? xr(e.bindToController) : xr(e.scope)
12051 return Object.keys(t || {}).map(function(e) {
12052 return [e, /^([=<@&])[?]?(.*)/.exec(t[e])]
12053 }).filter(function(e) {
12054 return k(e) && S(e[1])
12055 }).map(function(e) {
12057 name: e[1][2] || e[0],
12064 this.stateRegistry = e, this.stateService = t, W(p(n.prototype), this, p(this))
12066 return n.prototype.decorator = function(e, t) {
12067 return this.stateRegistry.decorator(e, t) || this
12068 }, n.prototype.state = function(e, t) {
12069 return A(e) ? t = e : t.name = e, this.stateRegistry.register(t), this
12070 }, n.prototype.onInvalid = function(e) {
12071 return this.stateService.onInvalid(e)
12075 return function(e, t) {
12077 o = "onExit" === n ? "from" : "to";
12078 return i ? function(e, t) {
12079 var n = new St(e.treeChanges(o)).subContext(t.$$state()),
12084 return P.$injector.invoke(i, this, r)
12090 this._urlListeners = [], this.$locationProvider = e;
12092 W(t, this, t, ["hashPrefix"])
12094 return e.monkeyPatchPathParameterType = function(e) {
12095 var t = e.urlMatcherFactory.type("path");
12096 t.encode = function(e) {
12097 return null != e ? e.toString().replace(/(~|\/)/g, function(e) {
12103 }, t.decode = function(e) {
12104 return null != e ? e.toString().replace(/(~~|~2F)/g, function(e) {
12111 }, e.prototype.dispose = function() {}, e.prototype.onChange = function(e) {
12113 return this._urlListeners.push(e),
12115 return Z(t._urlListeners)(e)
12117 }, e.prototype.html5Mode = function() {
12118 var e = this.$locationProvider.html5Mode();
12119 return (e = A(e) ? e.enabled : e) && this.$sniffer.history
12120 }, e.prototype.baseHref = function() {
12121 return this._baseHref || (this._baseHref = this.$browser.baseHref() || this.$window.location.pathname)
12122 }, e.prototype.url = function(e, t, n) {
12123 return void 0 === t && (t = !1), k(e) && this.$location.url(e), t && this.$location.replace(), n && this.$location.state(n), this.$location.url()
12124 }, e.prototype._runtimeServices = function(e, t, n, r, i) {
12126 this.$location = t, this.$sniffer = n, this.$browser = r, this.$window = i, e.$on("$locationChangeSuccess", function(t) {
12127 return o._urlListeners.forEach(function(e) {
12132 W(a, this, a, ["replace", "path", "search", "hash"]), W(a, this, a, ["port", "protocol", "host"])
12139 return n.injectableHandler = function(t, n) {
12140 return function(e) {
12141 return P.$injector.invoke(n, null, {
12143 $stateParams: t.globals.params
12146 }, n.prototype.$get = function() {
12147 var e = this.router.urlService;
12148 return this.router.urlRouter.update(!0), e.interceptDeferred || e.listen(), this.router.urlRouter
12149 }, n.prototype.rule = function(e) {
12151 if (!x(e)) throw new Error("'rule' must be a function");
12152 var n = new cn(function() {
12153 return e(P.$injector, t.router.locationService)
12155 return this.router.urlService.rules.rule(n), this
12156 }, n.prototype.otherwise = function(e) {
12158 n = this.router.urlService.rules;
12159 if (M(e)) n.otherwise(e);
12161 if (!x(e)) throw new Error("'rule' must be a string or function");
12162 n.otherwise(function() {
12163 return e(P.$injector, t.router.locationService)
12167 }, n.prototype.when = function(e, t) {
12168 return (S(t) || x(t)) && (t = n.injectableHandler(this.router, t)), this.router.urlService.rules.when(e, t), this
12169 }, n.prototype.deferIntercept = function(e) {
12170 this.router.urlService.deferIntercept(e)
12173 E.module("ui.router.angular1", []);
12174 var Dr = E.module("ui.router.init", ["ng"]),
12175 Or = E.module("ui.router.util", ["ui.router.init"]),
12176 Nr = E.module("ui.router.router", ["ui.router.util"]),
12177 Ir = E.module("ui.router.state", ["ui.router.router", "ui.router.util", "ui.router.angular1"]),
12178 Rr = E.module("ui.router", ["ui.router.init", "ui.router.state", "ui.router.angular1"]),
12179 Pr = (E.module("ui.router.compat", ["ui.router"]), null);
12182 (Pr = this.router = new $n).stateProvider = new Tr(Pr.stateRegistry, Pr.stateService), Pr.stateRegistry.decorator("views", $r), Pr.stateRegistry.decorator("onExit", Mr("onExit")), Pr.stateRegistry.decorator("onRetain", Mr("onRetain")), Pr.stateRegistry.decorator("onEnter", Mr("onEnter")), Pr.viewService._pluginapi._viewConfigFactory("ng1", yr());
12183 var s = Pr.locationService = Pr.locationConfig = new Ar(e);
12185 function t(e, t, n, r, i, o, a) {
12186 return s._runtimeServices(i, e, r, t, n), delete Pr.router, delete Pr.$get, Pr
12188 return Ar.monkeyPatchPathParameterType(Pr), ((Pr.router = Pr).$get = t).$inject = ["$location", "$browser", "$window", "$sniffer", "$rootScope", "$http", "$templateCache"], Pr
12190 Hr.$inject = ["$locationProvider"];
12191 var jr = function(n) {
12192 return ["$uiRouterProvider", function(e) {
12193 var t = e.router[n];
12194 return t.$get = function() {
12200 function Lr(t, e, n) {
12201 if (P.$injector = t, P.$q = e, !t.hasOwnProperty("strictDi")) try {
12202 t.invoke(function(e) {})
12204 t.strictDi = !!/strict mode/.exec(e && e.toString())
12206 n.stateRegistry.get().map(function(e) {
12207 return e.$$state().resolvables
12208 }).reduce(pe, []).filter(function(e) {
12209 return "deferred" === e.deps
12210 }).forEach(function(e) {
12211 return e.deps = t.annotate(e.resolveFn, t.strictDi)
12214 Lr.$inject = ["$injector", "$q", "$uiRouter"];
12217 e.$watch(function() {
12218 ct.approximateDigests++
12221 Fr.$inject = ["$rootScope"], Dr.provider("$uiRouter", Hr), Nr.provider("$urlRouter", ["$uiRouterProvider", function(e) {
12222 return e.urlRouterProvider = new Sr(e)
12223 }]), Or.provider("$urlService", jr("urlService")), Or.provider("$urlMatcherFactory", ["$uiRouterProvider", function() {
12224 return Pr.urlMatcherFactory
12225 }]), Or.provider("$templateFactory", function() {
12227 }), Ir.provider("$stateRegistry", jr("stateRegistry")), Ir.provider("$uiRouterGlobals", jr("globals")), Ir.provider("$transitions", jr("transitionService")), Ir.provider("$state", ["$uiRouterProvider", function() {
12228 return U(Pr.stateProvider, {
12230 return Pr.stateService
12233 }]), Ir.factory("$stateParams", ["$uiRouter", function(e) {
12234 return e.globals.params
12235 }]), Rr.factory("$view", function() {
12236 return Pr.viewService
12237 }), Rr.service("$trace", function() {
12239 }), Rr.run(Fr), Or.run(["$urlMatcherFactory", function(e) {}]), Ir.run(["$state", function(e) {}]), Nr.run(["$urlRouter", function(e) {}]), Dr.run(Lr);
12240 var qr, Ur, Vr, Br, zr = function(n) {
12241 return n.getTokens().filter(M).map(function(e) {
12242 var t = n.getResolvable(e);
12243 return [e, "NOWAIT" === n.getPolicy(t).async ? t.promise : t.data]
12248 var t, n = e.match(/^\s*({[^}]*})\s*$/);
12249 if (n && (e = "(" + n[1] + ")"), !(t = e.replace(/\n/g, " ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/)) || 4 !== t.length) throw new Error("Invalid state ref '" + e + "'");
12251 state: t[1] || null,
12252 paramExpr: t[3] || null
12257 var t = e.parent().inheritedData("$uiView"),
12258 n = C("$cfg.path")(t);
12259 return n ? xe(n).state.name : void 0
12262 function Gr(e, t, n) {
12263 var r, i = n.uiState || e.current.name,
12265 relative: Yr(t) || r.$current,
12268 }), n.uiStateOpts || {}),
12269 a = e.href(i, n.uiStateParams, o);
12272 uiStateParams: n.uiStateParams,
12279 var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
12280 n = "FORM" === e[0].nodeName;
12282 attr: n ? "action" : t ? "xlink:href" : "href",
12283 isAnchor: "A" === e.prop("tagName").toUpperCase(),
12288 function Zr(o, a, s, l, c) {
12289 return function(e) {
12290 var t = e.which || e.button,
12292 if (!(1 < t || e.ctrlKey || e.metaKey || e.shiftKey || o.attr("target"))) {
12293 var r = s(function() {
12294 o.attr("disabled") || a.go(n.uiState, n.uiStateParams, n.uiStateOpts)
12296 e.preventDefault();
12297 var i = l.isAnchor && !n.href ? 1 : 0;
12298 e.preventDefault = function() {
12299 i-- <= 0 && s.cancel(r)
12305 function Xr(i, e, o, t) {
12307 t && (a = t.events), S(a) || (a = ["click"]);
12308 for (var n = i.on ? "on" : "bind", r = 0, s = a; r < s.length; r++) {
12312 e.$on("$destroy", function() {
12313 for (var e = i.off ? "off" : "unbind", t = 0, n = a; t < n.length; t++) {
12321 var e = function(e, t, n) {
12322 return r.is(e, t, n)
12324 return e.$stateful = !0, e
12328 var e = function(e, t, n) {
12329 return r.includes(e, t, n)
12331 return e.$stateful = !0, e
12334 function ei(m, g, v, e, b, t) {
12335 var y = C("viewDecl.controllerAs"),
12336 _ = C("viewDecl.resolveAs");
12340 compile: function(e) {
12344 var e = n.data("$uiView");
12345 if (!e) return n.html(p), void m(n.contents())(t);
12346 var r = e.$cfg || {
12350 i = r.path && new St(r.path);
12351 n.html(r.getTemplate(n, i) || p), ct.traceUIViewFill(e.$uiView, n.html());
12352 var o = m(n.contents()),
12358 var u = g(a, U({}, c, {
12362 s && (t[s] = u, t[s][l] = c), n.data("$ngControllerController", u), n.children().data("$ngControllerController", u), ri(b, v, u, t, r)
12364 if (M(r.component)) var d = Le(r.component),
12365 f = new RegExp("^(x-|data-)?" + d + "$", "i"),
12366 h = t.$watch(function() {
12367 var e = [].slice.call(n[0].children).filter(function(e) {
12368 return e && e.tagName && f.exec(e.tagName)
12370 return e && E.element(e).data("$" + r.component + "Controller")
12372 e && (ri(b, v, e, t, r), h())
12379 qr = ["$uiRouter", "$timeout", function(f, h) {
12380 var p = f.stateService;
12383 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12384 link: function(e, t, n, r) {
12396 s && s(), a && (s = a.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && n.$set(o.attr, e.href)
12398 l.uiState = u.state, l.uiStateOpts = n.uiSrefOpts ? e.$eval(n.uiSrefOpts) : {}, u.paramExpr && (e.$watch(u.paramExpr, function(e) {
12399 l.uiStateParams = U({}, e), d()
12400 }, !0), l.uiStateParams = U({}, e.$eval(u.paramExpr))), d(), e.$on("$destroy", f.stateRegistry.onStatesChanged(d)), e.$on("$destroy", f.transitionService.onSuccess({}, d)), o.clickable && (i = Zr(t, p, h, o, c), Xr(t, e, i, l.uiStateOpts))
12403 }], Ur = ["$uiRouter", "$timeout", function(h, p) {
12404 var m = h.stateService;
12407 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12408 link: function(n, e, r, t) {
12416 u = ["uiState", "uiStateParams", "uiStateOpts"],
12417 d = u.reduce(function(e, t) {
12423 s && s(), a && (s = a.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && r.$set(o.attr, e.href)
12425 u.forEach(function(t) {
12426 l[t] = r[t] ? n.$eval(r[t]) : null, r.$observe(t, function(e) {
12427 d[t](), d[t] = n.$watch(e, function(e) {
12431 }), f(), n.$on("$destroy", h.stateRegistry.onStatesChanged(f)), n.$on("$destroy", h.transitionService.onSuccess({}, f)), o.clickable && (i = Zr(e, m, p, o, c), Xr(e, n, i, l.uiStateOpts))
12434 }], Vr = ["$state", "$stateParams", "$interpolate", "$uiRouter", function(p, e, m, g) {
12437 controller: ["$scope", "$element", "$attrs", function(s, l, e) {
12438 var c, r, t, n, i, u = [];
12439 c = m(e.uiSrefActiveEq || "", !1)(s);
12441 r = s.$eval(e.uiSrefActive)
12445 e.promise.then(h, z)
12453 A(e) && (u = [], q(e, function(e, t) {
12454 var n = function(e, t) {
12456 f(n.state, s.$eval(n.paramExpr), t)
12458 M(e) ? n(e, t) : S(e) && q(e, function(e) {
12464 function f(e, t, n) {
12466 state: p.get(e, Yr(l)) || {
12479 var t = function(e) {
12480 return e.split(/\s/).filter(B)
12483 return e.map(function(e) {
12484 return e.activeClass
12485 }).map(t).reduce(pe, [])
12487 n = e(u).concat(t(c)).reduce(ve, []),
12488 r = e(u.filter(function(e) {
12489 return p.includes(e.state.name, e.params)
12491 i = !!u.filter(function(e) {
12492 return p.is(e.state.name, e.params)
12493 }).length ? t(c) : [],
12494 o = r.concat(i).reduce(ve, []),
12495 a = n.filter(function(e) {
12498 s.$evalAsync(function() {
12499 o.forEach(function(e) {
12500 return l.addClass(e)
12501 }), a.forEach(function(e) {
12502 return l.removeClass(e)
12506 d(r = r || m(e.uiSrefActive || "", !1)(s)), this.$$addStateInfo = function(e, t) {
12507 if (!(A(r) && 0 < u.length)) {
12508 var n = f(e, t, r);
12511 }, s.$on("$destroy", (t = g.stateRegistry.onStatesChanged(a), n = g.transitionService.onStart({}, o), i = s.$on("$stateChangeSuccess", h), function() {
12513 })), g.globals.transition && o(g.globals.transition), h()
12516 }], E.module("ui.router.state").directive("uiSref", qr).directive("uiSrefActive", Vr).directive("uiSrefActiveEq", Vr).directive("uiState", Ur), Qr.$inject = ["$state"], Jr.$inject = ["$state"], E.module("ui.router.state").filter("isState", Qr).filter("includedByState", Jr), Br = ["$view", "$animate", "$uiViewScroll", "$interpolate", "$q", function(i, o, b, y, _) {
12520 $context: i._pluginapi._rootViewContext()
12530 transclude: "element",
12531 compile: function(e, t, v) {
12532 return function(a, s, e) {
12533 var l, c, u, d, t, f = e.onload || "",
12536 enter: function(e, t, n) {
12537 2 < E.version.minor ? o.enter(e, null, t).then(n) : o.enter(e, null, t, n)
12539 leave: function(e, t) {
12540 2 < E.version.minor ? o.leave(e).then(t) : o.leave(e, t)
12543 n = s.inheritedData("$uiView") || $,
12544 m = y(e.uiView || e.name || "")(a) || "$default",
12549 fqn: n.$uiView.fqn ? n.$uiView.fqn + "." + m : m,
12551 configUpdated: function(e) {
12552 if (e && !(e instanceof Er)) return;
12553 if (t = d, n = e, t === n) return;
12555 ct.traceUIViewConfigUpdated(g, e && e.viewDecl && e.viewDecl.$context), r(d = e)
12557 get creationContext() {
12558 var e = C("$cfg.viewDecl.$context")(n),
12559 t = C("$uiView.creationContext")(n);
12573 $animEnter: n.promise,
12574 $animLeave: r.promise,
12577 t.$emit("$viewContentLoading", m), c = v(t, function(e) {
12578 e.data("$uiViewAnim", o), e.data("$uiView", i), p.enter(e, s, function() {
12579 n.resolve(), u && u.$emit("$viewContentAnimationEnded"), (k(h) && !h || a.$eval(h)) && b(e)
12582 if (l && (ct.traceUIViewEvent("Removing (previous) el", l.data("$uiView")), l.remove(), l = null), u && (ct.traceUIViewEvent("Destroying scope", g), u.$destroy(), u = null), c) {
12583 var e = c.data("$uiViewAnim");
12584 ct.traceUIViewEvent("Animate out", e), p.leave(c, function() {
12585 e.$$animLeave.resolve(), l = null
12586 }), l = c, c = null
12589 }), (u = t).$emit("$viewContentLoaded", e || d), u.$eval(f)
12591 ct.traceUIViewEvent("Linking", g), s.data("$uiView", {
12593 }), r(), t = i.registerUIView(g), a.$on("$destroy", function() {
12594 ct.traceUIViewEvent("Destroying/Unregistering", g), t()
12600 }], ei.$inject = ["$compile", "$controller", "$transitions", "$view", "$q", "$timeout"];
12601 var ti = "function" == typeof E.module("ui.router").component,
12604 function ri(r, e, c, t, n) {
12605 !x(c.$onInit) || n.viewDecl.component && ti || c.$onInit();
12606 var u = xe(n.path).state.self,
12610 if (x(c.uiOnParamsChanged)) {
12611 var d = new St(n.path).getResolvable("$transition$").data;
12612 t.$on("$destroy", e.onSuccess({}, function(e) {
12613 if (e !== d && -1 === e.exiting().indexOf(u)) {
12614 var n = e.params("to"),
12615 r = e.params("from"),
12617 return e.paramSchema
12619 i = e.treeChanges("to").map(t).reduce(pe, []),
12620 o = e.treeChanges("from").map(t).reduce(pe, []),
12621 a = i.filter(function(e) {
12622 var t = o.indexOf(e);
12623 return -1 === t || !o[t].type.equals(n[e.id], r[e.id])
12626 var s = a.map(function(e) {
12629 l = se(n, function(e, t) {
12630 return -1 !== s.indexOf(t)
12632 c.uiOnParamsChanged(l, e)
12637 if (x(c.uiCanExit)) {
12639 a = "_uiCanExitIds",
12641 return !!e && (e[a] && !0 === e[a][o] || s(e.redirectedFrom()))
12646 t.$on("$destroy", e.onBefore(l, function(e) {
12647 var t, n = e[a] = e[a] || {};
12648 return s(e) || (t = r.when(c.uiCanExit(e))).then(function(e) {
12649 return n[o] = !1 !== e
12654 E.module("ui.router.state").directive("uiView", Br), E.module("ui.router.state").directive("uiView", ei), E.module("ui.router.state").provider("$uiViewScroll", function() {
12656 this.useAnchorScroll = function() {
12658 }, this.$get = ["$anchorScroll", "$timeout", function(e, t) {
12659 return n ? e : function(e) {
12660 return t(function() {
12661 e[0].scrollIntoView()
12666 m.default = "ui.router", m.core = br, m.watchDigests = Fr, m.getLocals = zr, m.getNg1ViewConfigFactory = yr, m.ng1ViewsBuilder = $r, m.Ng1ViewConfig = Er, m.StateProvider = Tr, m.UrlRouterProvider = Sr, m.root = H, m.fromJson = L, m.toJson = F, m.forEach = q, m.extend = U, m.equals = V, m.identity = B, m.noop = z, m.createProxyFunctions = W, m.inherit = Y, m.inArray = G, m._inArray = K, m.removeFrom = Z, m._removeFrom = X, m.pushTo = Q, m._pushTo = J, m.deregAll = ee, m.defaults = te, m.mergeR = ne, m.ancestors = re, m.pick = ie, m.omit = oe, m.pluck = ae, m.filter = se, m.find = le, m.mapObj = ce, m.map = ue, m.values = de, m.allTrueR = fe, m.anyTrueR = he, m.unnestR = pe, m.flattenR = me, m.pushR = ge, m.uniqR = ve, m.unnest = be, m.flatten = ye, m.assertPredicate = _e, m.assertMap = $e, m.assertFn = we, m.pairs = Ee, m.arrayTuples = Ce, m.applyPairs = ke, m.tail = xe, m.copy = Te, m._extend = Me, m.silenceUncaughtInPromise = De, m.silentRejection = Oe, m.makeStub = R, m.services = P, m.Glob = Ne, m.curry = c, m.compose = n, m.pipe = l, m.prop = y, m.propEq = v, m.parse = C, m.not = d, m.and = r, m.or = i, m.all = u, m.any = f, m.is = h, m.eq = o, m.val = p, m.invoke = a, m.pattern = g, m.isUndefined = _, m.isDefined = k, m.isNull = $, m.isNullOrUndefined = w, m.isFunction = x, m.isNumber = T, m.isString = M, m.isObject = A, m.isArray = S, m.isDate = D, m.isRegExp = O, m.isInjectable = N, m.isPromise = I, m.Queue = Ie, m.maxLength = He, m.padString = je, m.kebobString = Le, m.functionToString = Fe, m.fnToString = qe, m.stringify = Be, m.beforeAfterSubstr = ze, m.hostRegex = We, m.stripLastPathElement = Ye, m.splitHash = Ge, m.splitQuery = Ke, m.splitEqual = Ze, m.trimHashVal = Xe, m.splitOnDelim = Qe, m.joinNeighborsR = Je, m.Trace = lt, m.trace = ct, m.Param = vt, m.ParamTypes = bt, m.StateParams = yt, m.ParamType = ut, m.PathNode = _t, m.PathUtils = wt, m.resolvePolicies = Et, m.defaultResolvePolicy = Ct, m.Resolvable = kt, m.NATIVE_INJECTOR_TOKEN = At, m.ResolveContext = St, m.resolvablesBuilder = jt, m.StateBuilder = qt, m.StateObject = Ut, m.StateMatcher = Vt, m.StateQueueManager = Bt, m.StateRegistry = zt, m.StateService = Bn, m.TargetState = $t, m.HookBuilder = Xt, m.matchState = Gt, m.RegisteredHook = Kt, m.makeEvent = Zt, m.Rejection = Pe, m.Transition = Jt, m.TransitionHook = Yt, m.TransitionEventType = Ln, m.defaultTransOpts = Un, m.TransitionService = Vn, m.UrlRules = mn, m.UrlConfig = gn, m.UrlMatcher = rn, m.ParamFactory = an, m.UrlMatcherFactory = sn, m.UrlRouter = dn, m.UrlRuleFactory = ln, m.BaseUrlRule = cn, m.UrlService = vn, m.ViewService = fn, m.UIRouterGlobals = hn, m.UIRouter = $n, m.$q = zn, m.$injector = Kn, m.BaseLocationServices = ir, m.HashLocationService = ar, m.MemoryLocationService = lr, m.PushStateLocationService = ur, m.MemoryLocationConfig = dr, m.BrowserLocationConfig = fr, m.keyValsToObjectR = Zn, m.getParams = Xn, m.parseUrl = Qn, m.buildUrl = Jn, m.locationPluginFactory = er, m.servicesPlugin = hr, m.hashLocationPlugin = pr, m.pushStateLocationPlugin = mr, m.memoryLocationPlugin = gr, m.UIRouterPluginBase = vr, Object.defineProperty(m, "__esModule", {
12671 var na, ra = "Expected a function",
12672 ia = "__lodash_hash_undefined__",
12673 oa = "__lodash_placeholder__",
12674 aa = 9007199254740991,
12682 ["curryRight", 16],
12685 ["partialRight", 64],
12688 ua = "[object Arguments]",
12689 da = "[object Array]",
12690 fa = "[object Boolean]",
12691 ha = "[object Date]",
12692 pa = "[object Error]",
12693 ma = "[object Function]",
12694 ga = "[object GeneratorFunction]",
12695 va = "[object Map]",
12696 ba = "[object Number]",
12697 ya = "[object Object]",
12698 _a = "[object Promise]",
12699 $a = "[object RegExp]",
12700 wa = "[object Set]",
12701 Ea = "[object String]",
12702 Ca = "[object Symbol]",
12703 ka = "[object WeakMap]",
12704 xa = "[object ArrayBuffer]",
12705 Ta = "[object DataView]",
12706 Ma = "[object Float32Array]",
12707 Aa = "[object Float64Array]",
12708 Sa = "[object Int8Array]",
12709 Da = "[object Int16Array]",
12710 Oa = "[object Int32Array]",
12711 Na = "[object Uint8Array]",
12712 Ia = "[object Uint8ClampedArray]",
12713 Ra = "[object Uint16Array]",
12714 Pa = "[object Uint32Array]",
12715 Ha = /\b__p \+= '';/g,
12716 ja = /\b(__p \+=) '' \+/g,
12717 La = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
12718 Fa = /&(?:amp|lt|gt|quot|#39);/g,
12720 Ua = RegExp(Fa.source),
12721 Va = RegExp(qa.source),
12722 Ba = /<%-([\s\S]+?)%>/g,
12723 za = /<%([\s\S]+?)%>/g,
12724 Wa = /<%=([\s\S]+?)%>/g,
12725 Ya = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
12727 Ka = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
12728 Za = /[\\^$.*+?()[\]{}|]/g,
12729 Xa = RegExp(Za.source),
12733 ts = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
12734 ns = /\{\n\/\* \[wrapped with (.+)\] \*/,
12736 is = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
12738 as = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
12740 ls = /^[-+]0x[0-9a-f]+$/i,
12742 us = /^\[object .+?Constructor\]$/,
12743 ds = /^0o[0-7]+$/i,
12744 fs = /^(?:0|[1-9]\d*)$/,
12745 hs = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
12747 ms = /['\n\r\u2028\u2029\\]/g,
12748 e = "\\ud800-\\udfff",
12749 t = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
12750 n = "\\u2700-\\u27bf",
12751 r = "a-z\\xdf-\\xf6\\xf8-\\xff",
12752 i = "A-Z\\xc0-\\xd6\\xd8-\\xde",
12753 o = "\\ufe0e\\ufe0f",
12754 a = "\\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",
12761 h = "[^" + e + a + u + n + r + i + "]",
12762 p = "\\ud83c[\\udffb-\\udfff]",
12763 m = "[^" + e + "]",
12764 g = "(?:\\ud83c[\\udde6-\\uddff]){2}",
12765 v = "[\\ud800-\\udbff][\\udc00-\\udfff]",
12767 y = "(?:" + f + "|" + h + ")",
12768 _ = "(?:" + b + "|" + h + ")",
12769 $ = "(?:['’](?:d|ll|m|re|s|t|ve))?",
12770 w = "(?:['’](?:D|LL|M|RE|S|T|VE))?",
12771 E = "(?:" + c + "|" + p + ")" + "?",
12772 C = "[" + o + "]?",
12773 k = C + E + ("(?:\\u200d(?:" + [m, g, v].join("|") + ")" + C + E + ")*"),
12774 x = "(?:" + [d, g, v].join("|") + ")" + k,
12775 T = "(?:" + [m + c + "?", c, g, v, s].join("|") + ")",
12776 gs = RegExp("['’]", "g"),
12777 vs = RegExp(c, "g"),
12778 M = RegExp(p + "(?=" + p + ")|" + T + k, "g"),
12779 bs = RegExp([b + "?" + f + "+" + $ + "(?=" + [l, b, "$"].join("|") + ")", _ + "+" + w + "(?=" + [l, b + y, "$"].join("|") + ")", b + "?" + y + "+" + $, b + "+" + w, "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", u, x].join("|"), "g"),
12780 A = RegExp("[\\u200d" + e + t + o + "]"),
12781 ys = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
12782 _s = ["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"],
12785 ws[Ma] = ws[Aa] = ws[Sa] = ws[Da] = ws[Oa] = ws[Na] = ws[Ia] = ws[Ra] = ws[Pa] = !0, ws[ua] = ws[da] = ws[xa] = ws[fa] = ws[Ta] = ws[ha] = ws[pa] = ws[ma] = ws[va] = ws[ba] = ws[ya] = ws[$a] = ws[wa] = ws[Ea] = ws[ka] = !1;
12787 Es[ua] = Es[da] = Es[xa] = Es[Ta] = Es[fa] = Es[ha] = Es[Ma] = Es[Aa] = Es[Sa] = Es[Da] = Es[Oa] = Es[va] = Es[ba] = Es[ya] = Es[$a] = Es[wa] = Es[Ea] = Es[Ca] = Es[Na] = Es[Ia] = Es[Ra] = Es[Pa] = !0, Es[pa] = Es[ma] = Es[ka] = !1;
12798 D = "object" == typeof global && global && global.Object === Object && global,
12799 O = "object" == typeof self && self && self.Object === Object && self,
12800 xs = D || O || Function("return this")(),
12801 N = "object" == typeof exports && exports && !exports.nodeType && exports,
12802 I = N && "object" == typeof module && module && !module.nodeType && module,
12803 Ts = I && I.exports === N,
12804 R = Ts && D.process,
12807 var e = I && I.require && I.require("util").types;
12808 return e || R && R.binding && R.binding("util")
12811 Ms = P && P.isArrayBuffer,
12812 As = P && P.isDate,
12814 Ds = P && P.isRegExp,
12816 Ns = P && P.isTypedArray;
12818 function Is(e, t, n) {
12819 switch (n.length) {
12823 return e.call(t, n[0]);
12825 return e.call(t, n[0], n[1]);
12827 return e.call(t, n[0], n[1], n[2])
12829 return e.apply(t, n)
12832 function Rs(e, t, n, r) {
12833 for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
12840 function Ps(e, t) {
12841 for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
12845 function Hs(e, t) {
12846 for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
12850 function js(e, t) {
12851 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12852 if (!t(e[n], n, e)) return !1;
12856 function Ls(e, t) {
12857 for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
12859 t(a, n, e) && (o[i++] = a)
12864 function Fs(e, t) {
12865 return !!(null == e ? 0 : e.length) && -1 < Ks(e, t, 0)
12868 function qs(e, t, n) {
12869 for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
12870 if (n(t, e[r])) return !0;
12874 function Us(e, t) {
12875 for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
12879 function Vs(e, t) {
12880 for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
12884 function Bs(e, t, n, r) {
12886 o = null == e ? 0 : e.length;
12887 for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
12891 function zs(e, t, n, r) {
12892 var i = null == e ? 0 : e.length;
12893 for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
12897 function Ws(e, t) {
12898 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12899 if (t(e[n], n, e)) return !0;
12902 var H = Js("length");
12904 function Ys(e, r, t) {
12906 return t(e, function(e, t, n) {
12907 if (r(e, t, n)) return i = t, !1
12911 function Gs(e, t, n, r) {
12912 for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
12913 if (t(e[o], o, e)) return o;
12917 function Ks(e, t, n) {
12918 return t == t ? function(e, t, n) {
12922 if (e[r] === t) return r;
12924 }(e, t, n) : Gs(e, Xs, n)
12927 function Zs(e, t, n, r) {
12928 for (var i = n - 1, o = e.length; ++i < o;)
12929 if (r(e[i], t)) return i;
12937 function Qs(e, t) {
12938 var n = null == e ? 0 : e.length;
12939 return n ? tl(e, t) / n : sa
12943 return function(e) {
12944 return null == e ? na : e[t]
12949 return function(e) {
12950 return null == t ? na : t[e]
12954 function el(e, r, i, o, t) {
12955 return t(e, function(e, t, n) {
12956 i = o ? (o = !1, e) : r(i, e, t, n)
12960 function tl(e, t) {
12961 for (var n, r = -1, i = e.length; ++r < i;) {
12963 o !== na && (n = n === na ? o : n + o)
12968 function nl(e, t) {
12969 for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
12974 return function(e) {
12979 function il(t, e) {
12980 return Us(e, function(e) {
12985 function ol(e, t) {
12989 function al(e, t) {
12990 for (var n = -1, r = e.length; ++n < r && -1 < Ks(t, e[n], 0););
12994 function sl(e, t) {
12995 for (var n = e.length; n-- && -1 < Ks(t, e[n], 0););
13209 return e.forEach(function(e, t) {
13214 function hl(t, n) {
13215 return function(e) {
13220 function pl(e, t) {
13221 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
13223 a !== t && a !== oa || (e[n] = oa, o[i++] = n)
13231 return e.forEach(function(e) {
13237 return dl(e) ? function(e) {
13238 var t = M.lastIndex = 0;
13239 for (; M.test(e);) ++t;
13245 return dl(e) ? e.match(M) || [] : e.split("")
13254 var yl = function e(t) {
13255 var n, M = (t = null == t ? xs : yl.defaults(xs.Object(), t, yl.pick(xs, _s))).Array,
13267 l = t["__core-js_shared__"],
13269 k = d.hasOwnProperty,
13271 h = (n = /[^.]+$/.exec(l && l.keys && l.keys.IE_PROTO || "")) ? "Symbol(src)_1." + n : "",
13275 y = v("^" + c.call(k).replace(Za, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
13276 _ = Ts ? t.Buffer : na,
13279 E = _ ? _.allocUnsafe : na,
13280 x = hl(C.getPrototypeOf, C),
13282 S = d.propertyIsEnumerable,
13284 O = $ ? $.isConcatSpreadable : na,
13285 N = $ ? $.iterator : na,
13286 I = $ ? $.toStringTag : na,
13289 var e = Fn(C, "defineProperty");
13290 return e({}, "", {}), e
13293 P = t.clearTimeout !== xs.clearTimeout && t.clearTimeout,
13294 H = r && r.now !== xs.Date.now && r.now,
13295 j = t.setTimeout !== xs.setTimeout && t.setTimeout,
13298 q = C.getOwnPropertySymbols,
13299 U = _ ? _.isBuffer : na,
13309 Q = Fn(t, "DataView"),
13311 ee = Fn(t, "Promise"),
13313 ne = Fn(t, "WeakMap"),
13314 re = Fn(C, "create"),
13322 de = $ ? $.prototype : na,
13323 fe = de ? de.valueOf : na,
13324 he = de ? de.toString : na;
13327 if (Di(e) && !_i(e) && !(e instanceof be)) {
13328 if (e instanceof ve) return e;
13329 if (k.call(e, "__wrapped__")) return mr(e)
13333 var me = function() {
13335 return function(e) {
13336 if (!Si(e)) return {};
13337 if (T) return T(e);
13340 return n.prototype = na, t
13346 function ve(e, t) {
13347 this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = na
13351 this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = la, this.__views__ = []
13356 n = null == e ? 0 : e.length;
13357 for (this.clear(); ++t < n;) {
13359 this.set(r[0], r[1])
13365 n = null == e ? 0 : e.length;
13366 for (this.clear(); ++t < n;) {
13368 this.set(r[0], r[1])
13374 n = null == e ? 0 : e.length;
13375 for (this.clear(); ++t < n;) {
13377 this.set(r[0], r[1])
13383 n = null == e ? 0 : e.length;
13384 for (this.__data__ = new $e; ++t < n;) this.add(e[t])
13388 var t = this.__data__ = new _e(e);
13392 function Ce(e, t) {
13395 i = !n && !r && Ci(e),
13396 o = !n && !r && !i && Li(e),
13397 a = n || r || i || o,
13398 s = a ? nl(e.length, u) : [],
13400 for (var c in e) !t && !k.call(e, c) || a && ("length" == c || i && ("offset" == c || "parent" == c) || o && ("buffer" == c || "byteLength" == c || "byteOffset" == c) || Yn(c, l)) || s.push(c);
13406 return t ? e[wt(0, t - 1)] : na
13409 function xe(e, t) {
13410 return cr(rn(e), Re(t, 0, e.length))
13417 function Me(e, t, n) {
13418 (n === na || gi(e[t], n)) && (n !== na || t in e) || Ne(e, t, n)
13421 function Ae(e, t, n) {
13423 k.call(e, t) && gi(r, n) && (n !== na || t in e) || Ne(e, t, n)
13426 function Se(e, t) {
13427 for (var n = e.length; n--;)
13428 if (gi(e[n][0], t)) return n;
13432 function De(e, r, i, o) {
13433 return Fe(e, function(e, t, n) {
13438 function Oe(e, t) {
13439 return e && on(t, so(t), e)
13442 function Ne(e, t, n) {
13443 "__proto__" == t && R ? R(e, t, {
13451 function Ie(e, t) {
13452 for (var n = -1, r = t.length, i = M(r), o = null == e; ++n < r;) i[n] = o ? na : no(e, t[n]);
13456 function Re(e, t, n) {
13457 return e == e && (n !== na && (e = e <= n ? e : n), t !== na && (e = t <= e ? e : t)), e
13460 function Pe(n, r, i, e, t, o) {
13464 if (i && (a = t ? i(n, e, t, o) : i(n)), a !== na) return a;
13465 if (!Si(n)) return n;
13466 var u, d, f, h, p, m, g, v, b, y = _i(n);
13468 if (v = (g = n).length, b = new g.constructor(v), v && "string" == typeof g[0] && k.call(g, "index") && (b.index = g.index, b.input = g.input), a = b, !s) return rn(n, a)
13471 $ = _ == ma || _ == ga;
13472 if (Ci(n)) return Xt(n, s);
13473 if (_ == ya || _ == ua || $ && !t) {
13474 if (a = l || $ ? {} : zn(n), !s) return l ? (m = f = n, h = (p = a) && on(m, lo(m), p), on(f, Un(f), h)) : (d = Oe(a, u = n), on(u, qn(u), d))
13476 if (!Es[_]) return t ? n : {};
13477 a = function(e, t, n) {
13478 var r, i, o, a, s, l = e.constructor;
13486 return a = e, s = n ? Qt(a.buffer) : a.buffer, new a.constructor(s, a.byteOffset, a.byteLength);
13503 return (o = new(i = e).constructor(i.source, ss.exec(i))).lastIndex = i.lastIndex, o;
13507 return r = e, fe ? C(fe.call(r)) : {}
13515 o.set(n, a), Pi(n) ? n.forEach(function(e) {
13516 a.add(Pe(e, r, i, e, n, o))
13517 }) : Oi(n) && n.forEach(function(e, t) {
13518 a.set(t, Pe(e, r, i, t, n, o))
13520 var E = y ? na : (c ? l ? Nn : On : l ? lo : so)(n);
13521 return Ps(E || n, function(e, t) {
13522 E && (e = n[t = e]), Ae(a, t, Pe(e, r, i, t, n, o))
13526 function He(e, t, n) {
13528 if (null == e) return !r;
13529 for (e = C(e); r--;) {
13533 if (a === na && !(i in e) || !o(a)) return !1
13538 function je(e, t, n) {
13539 if ("function" != typeof e) throw new A(ra);
13540 return or(function() {
13545 function Le(e, t, n, r) {
13553 n && (t = Us(t, rl(n))), r ? (o = qs, a = !1) : 200 <= t.length && (o = ol, a = !1, t = new we(t));
13554 e: for (; ++i < s;) {
13556 d = null == n ? u : n(u);
13557 if (u = r || 0 !== u ? u : 0, a && d == d) {
13558 for (var f = c; f--;)
13559 if (t[f] === d) continue e;
13561 } else o(t, d, r) || l.push(u)
13565 pe.templateSettings = {
13573 }, (pe.prototype = ge.prototype).constructor = pe, (ve.prototype = me(ge.prototype)).constructor = ve, (be.prototype = me(ge.prototype)).constructor = be, ye.prototype.clear = function() {
13574 this.__data__ = re ? re(null) : {}, this.size = 0
13575 }, ye.prototype.delete = function(e) {
13576 var t = this.has(e) && delete this.__data__[e];
13577 return this.size -= t ? 1 : 0, t
13578 }, ye.prototype.get = function(e) {
13579 var t = this.__data__;
13582 return n === ia ? na : n
13584 return k.call(t, e) ? t[e] : na
13585 }, ye.prototype.has = function(e) {
13586 var t = this.__data__;
13587 return re ? t[e] !== na : k.call(t, e)
13588 }, ye.prototype.set = function(e, t) {
13589 var n = this.__data__;
13590 return this.size += this.has(e) ? 0 : 1, n[e] = re && t === na ? ia : t, this
13591 }, _e.prototype.clear = function() {
13592 this.__data__ = [], this.size = 0
13593 }, _e.prototype.delete = function(e) {
13594 var t = this.__data__,
13596 return !(n < 0 || (n == t.length - 1 ? t.pop() : D.call(t, n, 1), --this.size, 0))
13597 }, _e.prototype.get = function(e) {
13598 var t = this.__data__,
13600 return n < 0 ? na : t[n][1]
13601 }, _e.prototype.has = function(e) {
13602 return -1 < Se(this.__data__, e)
13603 }, _e.prototype.set = function(e, t) {
13604 var n = this.__data__,
13606 return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
13607 }, $e.prototype.clear = function() {
13608 this.size = 0, this.__data__ = {
13613 }, $e.prototype.delete = function(e) {
13614 var t = jn(this, e).delete(e);
13615 return this.size -= t ? 1 : 0, t
13616 }, $e.prototype.get = function(e) {
13617 return jn(this, e).get(e)
13618 }, $e.prototype.has = function(e) {
13619 return jn(this, e).has(e)
13620 }, $e.prototype.set = function(e, t) {
13621 var n = jn(this, e),
13623 return n.set(e, t), this.size += n.size == r ? 0 : 1, this
13624 }, we.prototype.add = we.prototype.push = function(e) {
13625 return this.__data__.set(e, ia), this
13626 }, we.prototype.has = function(e) {
13627 return this.__data__.has(e)
13628 }, Ee.prototype.clear = function() {
13629 this.__data__ = new _e, this.size = 0
13630 }, Ee.prototype.delete = function(e) {
13631 var t = this.__data__,
13633 return this.size = t.size, n
13634 }, Ee.prototype.get = function(e) {
13635 return this.__data__.get(e)
13636 }, Ee.prototype.has = function(e) {
13637 return this.__data__.has(e)
13638 }, Ee.prototype.set = function(e, t) {
13639 var n = this.__data__;
13640 if (n instanceof _e) {
13641 var r = n.__data__;
13642 if (!J || r.length < 199) return r.push([e, t]), this.size = ++n.size, this;
13643 n = this.__data__ = new $e(r)
13645 return n.set(e, t), this.size = n.size, this
13650 function Ue(e, r) {
13652 return Fe(e, function(e, t, n) {
13653 return i = !!r(e, t, n)
13657 function Ve(e, t, n) {
13658 for (var r = -1, i = e.length; ++r < i;) {
13661 if (null != a && (s === na ? a == a && !ji(a) : n(a, s))) var s = a,
13667 function Be(e, r) {
13669 return Fe(e, function(e, t, n) {
13670 r(e, t, n) && i.push(e)
13674 function ze(e, t, n, r, i) {
13677 for (n || (n = Wn), i || (i = []); ++o < a;) {
13679 0 < t && n(s) ? 1 < t ? ze(s, t - 1, n, r, i) : Vs(i, s) : r || (i[i.length] = s)
13686 function Ge(e, t) {
13687 return e && We(e, t, so)
13690 function Ke(e, t) {
13691 return e && Ye(e, t, so)
13694 function Ze(t, e) {
13695 return Ls(e, function(e) {
13700 function Xe(e, t) {
13701 for (var n = 0, r = (t = Yt(t, e)).length; null != e && n < r;) e = e[hr(t[n++])];
13702 return n && n == r ? e : na
13705 function Qe(e, t, n) {
13707 return _i(e) ? r : Vs(r, n(e))
13711 return null == e ? e === na ? "[object Undefined]" : "[object Null]" : I && I in C(e) ? function(e) {
13712 var t = k.call(e, I),
13719 return r && (t ? e[I] = n : delete e[I]), i
13720 }(e) : (t = e, p.call(t));
13724 function et(e, t) {
13728 function tt(e, t) {
13729 return null != e && k.call(e, t)
13732 function nt(e, t) {
13733 return null != e && t in C(e)
13736 function rt(e, t, n) {
13737 for (var r = n ? qs : Fs, i = e[0].length, o = e.length, a = o, s = M(o), l = 1 / 0, c = []; a--;) {
13739 a && t && (u = Us(u, rl(t))), l = Y(u.length, l), s[a] = !n && (t || 120 <= i && 120 <= u.length) ? new we(a && u) : na
13744 e: for (; ++d < i && c.length < l;) {
13747 if (h = n || 0 !== h ? h : 0, !(f ? ol(f, p) : r(c, p, n))) {
13748 for (a = o; --a;) {
13750 if (!(m ? ol(m, p) : r(e[a], p, n))) continue e
13752 f && f.push(p), c.push(h)
13758 function it(e, t, n) {
13759 var r = null == (e = nr(e, t = Yt(t, e))) ? e : e[hr(xr(t))];
13760 return null == r ? na : Is(r, e, n)
13764 return Di(e) && Je(e) == ua
13767 function at(e, t, n, r, i) {
13768 return e === t || (null == e || null == t || !Di(e) && !Di(t) ? e != e && t != t : function(e, t, n, r, i, o) {
13771 l = a ? da : Vn(e),
13772 c = s ? da : Vn(t),
13773 u = (l = l == ua ? ya : l) == ya,
13774 d = (c = c == ua ? ya : c) == ya,
13777 if (!Ci(t)) return !1;
13780 if (f && !u) return o || (o = new Ee), a || Li(e) ? Sn(e, t, n, r, i, o) : function(e, t, n, r, i, o, a) {
13783 if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
13784 e = e.buffer, t = t.buffer;
13786 return !(e.byteLength != t.byteLength || !o(new w(e), new w(t)));
13792 return e.name == t.name && e.message == t.message;
13795 return e == t + "";
13800 if (s || (s = ml), e.size != t.size && !l) return !1;
13802 if (c) return c == t;
13803 r |= 2, a.set(e, t);
13804 var u = Sn(s(e), s(t), r, i, o, a);
13805 return a.delete(e), u;
13807 if (fe) return fe.call(e) == fe.call(t)
13810 }(e, t, l, n, r, i, o);
13812 var h = u && k.call(e, "__wrapped__"),
13813 p = d && k.call(t, "__wrapped__");
13815 var m = h ? e.value() : e,
13816 g = p ? t.value() : t;
13817 return o || (o = new Ee), i(m, g, n, r, o)
13820 return !!f && (o || (o = new Ee), function(e, t, n, r, i, o) {
13825 if (l != c && !a) return !1;
13826 for (var u = l; u--;) {
13828 if (!(a ? d in t : k.call(t, d))) return !1
13831 if (f && o.get(t)) return f == t;
13833 o.set(e, t), o.set(t, e);
13834 for (var p = a; ++u < l;) {
13838 if (r) var v = a ? r(g, m, d, t, e, o) : r(m, g, d, e, t, o);
13839 if (!(v === na ? m === g || i(m, g, n, r, o) : v)) {
13843 p || (p = "constructor" == d)
13846 var b = e.constructor,
13848 b != y && "constructor" in e && "constructor" in t && !("function" == typeof b && b instanceof b && "function" == typeof y && y instanceof y) && (h = !1)
13850 return o.delete(e), o.delete(t), h
13851 }(e, t, n, r, i, o))
13852 }(e, t, n, r, at, i))
13855 function st(e, t, n, r) {
13859 if (null == e) return !o;
13860 for (e = C(e); i--;) {
13862 if (a && s[2] ? s[1] !== e[s[0]] : !(s[0] in e)) return !1
13865 var l = (s = n[i])[0],
13869 if (c === na && !(l in e)) return !1
13872 if (r) var f = r(c, u, l, e, t, d);
13873 if (!(f === na ? at(u, c, 3, r, d) : f)) return !1
13880 return !(!Si(e) || (t = e, h && h in t)) && (Ti(e) ? y : us).test(pr(e));
13885 return "function" == typeof e ? e : null == e ? Io : "object" == typeof e ? _i(e) ? mt(e[0], e[1]) : pt(e) : Vo(e)
13889 if (!Qn(e)) return z(e);
13891 for (var n in C(e)) k.call(e, n) && "constructor" != n && t.push(n);
13896 if (!Si(e)) return function(e) {
13899 for (var n in C(e)) t.push(n);
13904 for (var r in e)("constructor" != r || !t && k.call(e, r)) && n.push(r);
13908 function ft(e, t) {
13912 function ht(e, r) {
13914 o = wi(e) ? M(e.length) : [];
13915 return Fe(e, function(e, t, n) {
13916 o[++i] = r(e, t, n)
13922 return 1 == n.length && n[0][2] ? er(n[0][0], n[0][1]) : function(e) {
13923 return e === t || st(e, t, n)
13927 function mt(n, r) {
13928 return Kn(n) && Jn(r) ? er(hr(n), r) : function(e) {
13930 return t === na && t === r ? ro(e, n) : at(r, t, 3)
13934 function gt(r, i, o, a, s) {
13935 r !== i && We(i, function(e, t) {
13936 if (s || (s = new Ee), Si(e)) ! function(e, t, n, r, i, o, a) {
13940 if (c) return Me(e, n, c);
13941 var u = o ? o(s, l, n + "", e, t, a) : na,
13946 p = !f && !h && Li(l);
13947 u = l, f || h || p ? u = _i(s) ? s : Ei(s) ? rn(s) : h ? Xt(l, !(d = !1)) : p ? Jt(l, !(d = !1)) : [] : Ii(l) || yi(l) ? yi(u = s) ? u = Yi(s) : Si(s) && !Ti(s) || (u = zn(l)) : d = !1
13949 d && (a.set(l, u), i(u, l, r, o, a), a.delete(l)), Me(e, n, u)
13950 }(r, i, t, o, gt, a, s);
13952 var n = a ? a(rr(r, t), e, t + "", r, i, s) : na;
13953 n === na && (n = e), Me(r, t, n)
13958 function vt(e, t) {
13960 if (n) return Yn(t += t < 0 ? n : 0, n) ? e[t] : na
13963 function bt(e, r, n) {
13965 return r = Us(r.length ? r : [Io], rl(Hn())),
13968 for (e.sort(t); n--;) e[n] = e[n].value;
13970 }(ht(e, function(t, e, n) {
13972 criteria: Us(r, function(e) {
13978 }), function(e, t) {
13979 return function(e, t, n) {
13980 for (var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; ++r < a;) {
13981 var l = en(i[r], o[r]);
13983 if (s <= r) return l;
13985 return l * ("desc" == c ? -1 : 1)
13988 return e.index - t.index
13993 function yt(e, t, n) {
13994 for (var r = -1, i = t.length, o = {}; ++r < i;) {
13997 n(s, a) && Tt(o, Yt(a, e), s)
14002 function _t(e, t, n, r) {
14003 var i = r ? Zs : Ks,
14007 for (e === t && (t = rn(t)), n && (s = Us(e, rl(n))); ++o < a;)
14008 for (var l = 0, c = t[o], u = n ? n(c) : c; - 1 < (l = i(s, u, l, r));) s !== e && D.call(s, l, 1), D.call(e, l, 1);
14012 function $t(e, t) {
14013 for (var n = e ? t.length : 0, r = n - 1; n--;) {
14015 if (n == r || i !== o) {
14017 Yn(i) ? D.call(e, i, 1) : Lt(e, i)
14023 function wt(e, t) {
14024 return e + F(Z() * (t - e + 1))
14027 function Et(e, t) {
14029 if (!e || t < 1 || aa < t) return n;
14030 for (; t % 2 && (n += e), (t = F(t / 2)) && (e += e), t;);
14034 function Ct(e, t) {
14035 return ar(tr(e, t, Io), e + "")
14042 function xt(e, t) {
14044 return cr(n, Re(t, 0, n.length))
14047 function Tt(e, t, n, r) {
14048 if (!Si(e)) return e;
14049 for (var i = -1, o = (t = Yt(t, e)).length, a = o - 1, s = e; null != s && ++i < o;) {
14054 (c = r ? r(u, l, s) : na) === na && (c = Si(u) ? u : Yn(t[i + 1]) ? [] : {})
14056 Ae(s, l, c), s = s[l]
14060 var Mt = ie ? function(e, t) {
14061 return ie.set(e, t), e
14063 At = R ? function(e, t) {
14064 return R(e, "toString", {
14076 function Dt(e, t, n) {
14079 t < 0 && (t = i < -t ? 0 : i + t), (n = i < n ? i : n) < 0 && (n += i), i = n < t ? 0 : n - t >>> 0, t >>>= 0;
14080 for (var o = M(i); ++r < i;) o[r] = e[r + t];
14084 function Ot(e, r) {
14086 return Fe(e, function(e, t, n) {
14087 return !(i = r(e, t, n))
14091 function Nt(e, t, n) {
14093 i = null == e ? r : e.length;
14094 if ("number" == typeof t && t == t && i <= 2147483647) {
14096 var o = r + i >>> 1,
14098 null !== a && !ji(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
14102 return It(e, t, Io, n)
14105 function It(e, t, n, r) {
14107 for (var i = 0, o = null == e ? 0 : e.length, a = t != t, s = null === t, l = ji(t), c = t === na; i < o;) {
14108 var u = F((i + o) / 2),
14114 if (a) var g = r || p;
14115 else g = c ? p && (r || f) : s ? p && f && (r || !h) : l ? p && f && !h && (r || !m) : !h && !m && (r ? d <= t : d < t);
14116 g ? i = u + 1 : o = u
14118 return Y(o, 4294967294)
14121 function Rt(e, t) {
14122 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
14125 if (!n || !gi(s, l)) {
14127 o[i++] = 0 === a ? 0 : a
14134 return "number" == typeof e ? e : ji(e) ? sa : +e
14138 if ("string" == typeof e) return e;
14139 if (_i(e)) return Us(e, Ht) + "";
14140 if (ji(e)) return he ? he.call(e) : "";
14142 return "0" == t && 1 / e == -1 / 0 ? "-0" : t
14145 function jt(e, t, n) {
14152 if (n) a = !1, i = qs;
14153 else if (200 <= o) {
14154 var c = t ? null : Cn(e);
14155 if (c) return ml(c);
14156 a = !1, i = ol, l = new we
14157 } else l = t ? [] : s;
14158 e: for (; ++r < o;) {
14161 if (u = n || 0 !== u ? u : 0, a && d == d) {
14162 for (var f = l.length; f--;)
14163 if (l[f] === d) continue e;
14164 t && l.push(d), s.push(u)
14165 } else i(l, d, n) || (l !== s && l.push(d), s.push(u))
14170 function Lt(e, t) {
14171 return null == (e = nr(e, t = Yt(t, e))) || delete e[hr(xr(t))]
14174 function Ft(e, t, n, r) {
14175 return Tt(e, t, n(Xe(e, t)), r)
14178 function qt(e, t, n, r) {
14179 for (var i = e.length, o = r ? i : -1;
14180 (r ? o-- : ++o < i) && t(e[o], o, e););
14181 return n ? Dt(e, r ? 0 : o, r ? o + 1 : i) : Dt(e, r ? o + 1 : 0, r ? i : o)
14184 function Ut(e, t) {
14186 return n instanceof be && (n = n.value()), Bs(t, function(e, t) {
14187 return t.func.apply(t.thisArg, Vs([e], t.args))
14191 function Vt(e, t, n) {
14193 if (r < 2) return r ? jt(e[0]) : [];
14194 for (var i = -1, o = M(r); ++i < r;)
14195 for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = Le(o[i] || a, e[s], t, n));
14196 return jt(ze(o, 1), t, n)
14199 function Bt(e, t, n) {
14200 for (var r = -1, i = e.length, o = t.length, a = {}; ++r < i;) {
14201 var s = r < o ? t[r] : na;
14208 return Ei(e) ? e : []
14212 return "function" == typeof e ? e : Io
14215 function Yt(e, t) {
14216 return _i(e) ? e : Kn(e, t) ? [e] : fr(Gi(e))
14220 function Kt(e, t, n) {
14222 return n = n === na ? r : n, !t && r <= n ? e : Dt(e, t, n)
14224 var Zt = P || function(e) {
14225 return xs.clearTimeout(e)
14228 function Xt(e, t) {
14229 if (t) return e.slice();
14231 r = E ? E(n) : new e.constructor(n);
14232 return e.copy(r), r
14236 var t = new e.constructor(e.byteLength);
14237 return new w(t).set(new w(e)), t
14240 function Jt(e, t) {
14241 var n = t ? Qt(e.buffer) : e.buffer;
14242 return new e.constructor(n, e.byteOffset, e.length)
14245 function en(e, t) {
14255 if (!s && !c && !o && t < e || o && a && l && !s && !c || r && a && l || !n && l || !i) return 1;
14256 if (!r && !o && !c && e < t || c && n && i && !r && !o || s && n && i || !a && i || !l) return -1
14261 function tn(e, t, n, r) {
14262 for (var i = -1, o = e.length, a = n.length, s = -1, l = t.length, c = W(o - a, 0), u = M(l + c), d = !r; ++s < l;) u[s] = t[s];
14263 for (; ++i < a;)(d || i < o) && (u[n[i]] = e[i]);
14264 for (; c--;) u[s++] = e[i++];
14268 function nn(e, t, n, r) {
14269 for (var i = -1, o = e.length, a = -1, s = n.length, l = -1, c = t.length, u = W(o - s, 0), d = M(u + c), f = !r; ++i < u;) d[i] = e[i];
14270 for (var h = i; ++l < c;) d[h + l] = t[l];
14271 for (; ++a < s;)(f || i < o) && (d[h + n[a]] = e[i++]);
14275 function rn(e, t) {
14278 for (t || (t = M(r)); ++n < r;) t[n] = e[n];
14282 function on(e, t, n, r) {
14285 for (var o = -1, a = t.length; ++o < a;) {
14287 l = r ? r(n[s], e[s], s, n, e) : na;
14288 l === na && (l = e[s]), i ? Ne(n, s, l) : Ae(n, s, l)
14293 function an(i, o) {
14294 return function(e, t) {
14295 var n = _i(e) ? Rs : De,
14297 return n(e, i, Hn(t, 2), r)
14302 return Ct(function(e, t) {
14305 i = 1 < r ? t[r - 1] : na,
14306 o = 2 < r ? t[2] : na;
14307 for (i = 3 < s.length && "function" == typeof i ? (r--, i) : na, o && Gn(t[0], t[1], o) && (i = r < 3 ? na : i, r = 1), e = C(e); ++n < r;) {
14315 function ln(o, a) {
14316 return function(e, t) {
14317 if (null == e) return e;
14318 if (!wi(e)) return o(e, t);
14319 for (var n = e.length, r = a ? n : -1, i = C(e);
14320 (a ? r-- : ++r < n) && !1 !== t(i[r], r, i););
14326 return function(e, t, n) {
14327 for (var r = -1, i = C(e), o = n(e), a = o.length; a--;) {
14328 var s = o[l ? a : ++r];
14329 if (!1 === t(i[s], s, i)) break
14336 return function(e) {
14337 var t = dl(e = Gi(e)) ? vl(e) : na,
14338 n = t ? t[0] : e.charAt(0),
14339 r = t ? Kt(t, 1).join("") : e.slice(1);
14345 return function(e) {
14346 return Bs(Mo(_o(e).replace(gs, "")), t, "")
14351 return function() {
14353 switch (e.length) {
14357 return new r(e[0]);
14359 return new r(e[0], e[1]);
14361 return new r(e[0], e[1], e[2]);
14363 return new r(e[0], e[1], e[2], e[3]);
14365 return new r(e[0], e[1], e[2], e[3], e[4]);
14367 return new r(e[0], e[1], e[2], e[3], e[4], e[5]);
14369 return new r(e[0], e[1], e[2], e[3], e[4], e[5], e[6])
14371 var t = me(r.prototype),
14373 return Si(n) ? n : t
14378 return function(e, t, n) {
14382 e = so(e), t = function(e) {
14383 return i(r[e], e, r)
14386 var o = a(e, t, n);
14387 return -1 < o ? r[i ? e[o] : o] : na
14392 return Dn(function(i) {
14395 t = ve.prototype.thru;
14396 for (l && i.reverse(); e--;) {
14398 if ("function" != typeof n) throw new A(ra);
14399 if (t && !a && "wrapper" == Rn(n)) var a = new ve([], !0)
14401 for (e = a ? e : o; ++e < o;) {
14402 var r = Rn(n = i[e]),
14403 s = "wrapper" == r ? In(n) : na;
14404 a = s && Zn(s[0]) && 424 == s[1] && !s[4].length && 1 == s[9] ? a[Rn(s[0])].apply(a, s[3]) : 1 == n.length && Zn(n) ? a[r]() : a.thru(n)
14406 return function() {
14409 if (a && 1 == e.length && _i(t)) return a.plant(t).value();
14410 for (var n = 0, r = o ? i[n].apply(this, e) : t; ++n < o;) r = i[n].call(this, r);
14416 function mn(c, u, d, f, h, p, m, g, v, b) {
14422 C = $ ? na : fn(c);
14423 return function e() {
14424 for (var t = arguments.length, n = M(t), r = t; r--;) n[r] = arguments[r];
14425 if (w) var i = Pn(e),
14426 o = function(e, t) {
14427 for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
14430 if (f && (n = tn(n, f, h, w)), p && (n = nn(n, p, m, w)), t -= o, w && t < b) {
14432 return wn(c, u, mn, e.placeholder, d, n, a, g, v, b - t)
14434 var s = _ ? d : this,
14436 return t = n.length, g ? n = function(e, t) {
14437 for (var n = e.length, r = Y(t.length, n), i = rn(e); r--;) {
14439 e[r] = Yn(o, n) ? i[o] : na
14442 }(n, g) : E && 1 < t && n.reverse(), y && v < t && (n.length = v), this && this !== xs && this instanceof e && (l = C || fn(l)), l.apply(s, n)
14446 function gn(a, s) {
14447 return function(e, t) {
14448 return n = e, r = a, i = s(t), o = {}, Ge(n, function(e, t, n) {
14455 function vn(r, i) {
14456 return function(e, t) {
14458 if (e === na && t === na) return i;
14459 if (e !== na && (n = e), t !== na) {
14460 if (n === na) return t;
14461 t = "string" == typeof e || "string" == typeof t ? (e = Ht(e), Ht(t)) : (e = Pt(e), Pt(t)), n = r(e, t)
14468 return Dn(function(e) {
14469 return e = Us(e, rl(Hn())), Ct(function(t) {
14471 return r(e, function(e) {
14478 function yn(e, t) {
14479 var n = (t = t === na ? " " : Ht(t)).length;
14480 if (n < 2) return n ? Et(t, e) : t;
14481 var r = Et(t, L(e / gl(t)));
14482 return dl(t) ? Kt(vl(r), 0, e).join("") : r.slice(0, e)
14486 return function(e, t, n) {
14487 return n && "number" != typeof n && Gn(e, t, n) && (t = n = na), e = Vi(e), t === na ? (t = e, e = 0) : t = Vi(t),
14488 function(e, t, n, r) {
14489 for (var i = -1, o = W(L((t - e) / (n || 1)), 0), a = M(o); o--;) a[r ? o : ++i] = e, e += n;
14491 }(e, t, n = n === na ? e < t ? 1 : -1 : Vi(n), r)
14496 return function(e, t) {
14497 return "string" == typeof e && "string" == typeof t || (e = Wi(e), t = Wi(t)), n(e, t)
14501 function wn(e, t, n, r, i, o, a, s, l, c) {
14503 t |= u ? 32 : 64, 4 & (t &= ~(u ? 64 : 32)) || (t &= -4);
14504 var d = [e, t, i, u ? o : na, u ? a : na, u ? na : o, u ? na : a, s, l, c],
14505 f = n.apply(na, d);
14506 return Zn(e) && ir(f, d), f.placeholder = r, sr(f, e, t)
14511 return function(e, t) {
14512 if (e = Wi(e), (t = null == t ? 0 : Y(Bi(t), 292)) && V(e)) {
14513 var n = (Gi(e) + "e").split("e");
14514 return +((n = (Gi(r(n[0] + "e" + (+n[1] + t))) + "e").split("e"))[0] + "e" + (+n[1] - t))
14519 var Cn = te && 1 / ml(new te([, -0]))[1] == 1 / 0 ? function(e) {
14524 return function(e) {
14525 var t, n, r, i, o = Vn(e);
14526 return o == va ? fl(e) : o == wa ? (t = e, n = -1, r = Array(t.size), t.forEach(function(e) {
14528 }), r) : Us(a(i = e), function(e) {
14534 function xn(e, t, n, r, i, o, a, s) {
14536 if (!l && "function" != typeof e) throw new A(ra);
14537 var c = r ? r.length : 0;
14538 if (c || (t &= -97, r = i = na), a = a === na ? a : W(Bi(a), 0), s = s === na ? s : Bi(s), c -= i ? i.length : 0, 64 & t) {
14543 var f, h, p, m, g, v, b, y, _, $, w, E, C, k = l ? na : In(e),
14544 x = [e, t, n, r, i, u, d, o, a, s];
14545 if (k && function(e, t) {
14550 a = 128 == r && 8 == n || 128 == r && 256 == n && e[7].length <= t[8] || 384 == r && t[7].length <= t[8] && 8 == n;
14552 1 & r && (e[2] = t[2], i |= 1 & n ? 0 : 4);
14556 e[3] = l ? tn(l, s, t[4]) : s, e[4] = l ? pl(e[3], oa) : t[4]
14557 }(s = t[5]) && (l = e[5], e[5] = l ? nn(l, s, t[6]) : s, e[6] = l ? pl(e[5], oa) : t[6]), (s = t[7]) && (e[7] = s), 128 & r && (e[8] = null == e[8] ? t[8] : Y(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i
14559 }(x, k), e = x[0], t = x[1], n = x[2], r = x[3], i = x[4], !(s = x[9] = x[9] === na ? l ? 0 : e.length : W(x[9] - c, 0)) && 24 & t && (t &= -25), t && 1 != t) T = 8 == t || 16 == t ? (b = t, y = s, _ = fn(v = e), function e() {
14560 for (var t = arguments.length, n = M(t), r = t, i = Pn(e); r--;) n[r] = arguments[r];
14561 var o = t < 3 && n[0] !== i && n[t - 1] !== i ? [] : pl(n, i);
14562 return (t -= o.length) < y ? wn(v, b, mn, e.placeholder, na, n, o, na, na, y - t) : Is(this && this !== xs && this instanceof e ? _ : v, this, n)
14563 }) : 32 != t && 33 != t || i.length ? mn.apply(na, x) : (h = n, p = r, m = 1 & t, g = fn(f = e), function e() {
14564 for (var t = -1, n = arguments.length, r = -1, i = p.length, o = M(i + n), a = this && this !== xs && this instanceof e ? g : f; ++r < i;) o[r] = p[r];
14565 for (; n--;) o[r++] = arguments[++t];
14566 return Is(a, m ? h : this, o)
14568 else var T = (w = n, E = 1 & t, C = fn($ = e), function e() {
14569 return (this && this !== xs && this instanceof e ? C : $).apply(E ? w : this, arguments)
14571 return sr((k ? Mt : ir)(T, x), e, t)
14574 function Tn(e, t, n, r) {
14575 return e === na || gi(e, d[n]) && !k.call(r, n) ? t : e
14578 function Mn(e, t, n, r, i, o) {
14579 return Si(e) && Si(t) && (o.set(t, e), gt(e, t, na, Mn, o), o.delete(t)), e
14583 return Ii(e) ? na : e
14586 function Sn(e, t, n, r, i, o) {
14590 if (s != l && !(a && s < l)) return !1;
14592 if (c && o.get(t)) return c == t;
14595 f = 2 & n ? new we : na;
14596 for (o.set(e, t), o.set(t, e); ++u < s;) {
14599 if (r) var m = a ? r(p, h, u, t, e, o) : r(h, p, u, e, t, o);
14606 if (!Ws(t, function(e, t) {
14607 if (!ol(f, t) && (h === e || i(h, e, n, r, o))) return f.push(t)
14612 } else if (h !== p && !i(h, p, n, r, o)) {
14617 return o.delete(e), o.delete(t), d
14621 return ar(tr(e, na, $r), e + "")
14625 return Qe(e, so, qn)
14629 return Qe(e, lo, Un)
14631 var In = ie ? function(e) {
14636 for (var t = e.name + "", n = oe[t], r = k.call(oe, t) ? n.length : 0; r--;) {
14639 if (null == o || o == e) return i.name
14645 return (k.call(pe, "placeholder") ? pe : e).placeholder
14649 var e = pe.iteratee || Ro;
14650 return e = e === Ro ? ct : e, arguments.length ? e(arguments[0], arguments[1]) : e
14653 function jn(e, t) {
14654 var n, r, i = e.__data__;
14655 return ("string" == (r = typeof(n = t)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== n : null === n) ? i["string" == typeof t ? "string" : "hash"] : i.map
14659 for (var t = so(e), n = t.length; n--;) {
14662 t[n] = [r, i, Jn(i)]
14667 function Fn(e, t) {
14668 var n, r, i = (r = t, null == (n = e) ? na : n[r]);
14669 return lt(i) ? i : na
14671 var qn = q ? function(t) {
14672 return null == t ? [] : (t = C(t), Ls(q(t), function(e) {
14673 return S.call(t, e)
14676 Un = q ? function(e) {
14677 for (var t = []; e;) Vs(t, qn(e)), e = x(e);
14682 function Bn(e, t, n) {
14683 for (var r = -1, i = (t = Yt(t, e)).length, o = !1; ++r < i;) {
14685 if (!(o = null != e && n(e, a))) break;
14688 return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Ai(i) && Yn(a, i) && (_i(e) || yi(e))
14692 return "function" != typeof e.constructor || Qn(e) ? {} : me(x(e))
14696 return _i(e) || yi(e) || !!(O && e && e[O])
14699 function Yn(e, t) {
14701 return !!(t = null == t ? aa : t) && ("number" == n || "symbol" != n && fs.test(e)) && -1 < e && e % 1 == 0 && e < t
14704 function Gn(e, t, n) {
14705 if (!Si(n)) return !1;
14707 return !!("number" == r ? wi(n) && Yn(t, n.length) : "string" == r && t in n) && gi(n[t], e)
14710 function Kn(e, t) {
14711 if (_i(e)) return !1;
14713 return !("number" != n && "symbol" != n && "boolean" != n && null != e && !ji(e)) || Ga.test(e) || !Ya.test(e) || null != t && e in C(t)
14719 if ("function" != typeof n || !(t in be.prototype)) return !1;
14720 if (e === n) return !0;
14722 return !!r && e === r[0]
14723 }(Q && Vn(new Q(new ArrayBuffer(1))) != Ta || J && Vn(new J) != va || ee && Vn(ee.resolve()) != _a || te && Vn(new te) != wa || ne && Vn(new ne) != ka) && (Vn = function(e) {
14725 n = t == ya ? e.constructor : na,
14726 r = n ? pr(n) : "";
14727 if (r) switch (r) {
14741 var Xn = l ? Ti : Yo;
14744 var t = e && e.constructor;
14745 return e === ("function" == typeof t && t.prototype || d)
14749 return e == e && !Si(e)
14752 function er(t, n) {
14753 return function(e) {
14754 return null != e && e[t] === n && (n !== na || t in C(e))
14758 function tr(o, a, s) {
14759 return a = W(a === na ? o.length - 1 : a, 0),
14761 for (var e = arguments, t = -1, n = W(e.length - a, 0), r = M(n); ++t < n;) r[t] = e[a + t];
14763 for (var i = M(a + 1); ++t < a;) i[t] = e[t];
14764 return i[a] = s(r), Is(o, this, i)
14768 function nr(e, t) {
14769 return t.length < 2 ? e : Xe(e, Dt(t, 0, -1))
14772 function rr(e, t) {
14773 if (("constructor" !== t || "function" != typeof e[t]) && "__proto__" != t) return e[t]
14776 or = j || function(e, t) {
14777 return xs.setTimeout(e, t)
14781 function sr(e, t, n) {
14782 var r, i, o, a = t + "";
14783 return ar(e, function(e, t) {
14787 return t[r] = (1 < n ? "& " : "") + t[r], t = t.join(2 < n ? ", " : " "), e.replace(ts, "{\n/* [wrapped with " + t + "] */\n")
14788 }(a, (o = a.match(ns), r = o ? o[1].split(rs) : [], i = n, Ps(ca, function(e) {
14789 var t = "_." + e[0];
14790 i & e[1] && !Fs(r, t) && r.push(t)
14797 return function() {
14800 if (i = e, 0 < t) {
14801 if (800 <= ++r) return arguments[0]
14803 return n.apply(na, arguments)
14807 function cr(e, t) {
14811 for (t = t === na ? r : t; ++n < t;) {
14814 e[o] = e[n], e[n] = a
14816 return e.length = t, e
14818 var ur, dr, fr = (dr = (ur = ui(function(e) {
14820 return 46 === e.charCodeAt(0) && i.push(""), e.replace(Ka, function(e, t, n, r) {
14821 i.push(n ? r.replace(os, "$1") : t || e)
14824 return 500 === dr.size && dr.clear(), e
14828 if ("string" == typeof e || ji(e)) return e;
14830 return "0" == t && 1 / e == -1 / 0 ? "-0" : t
14846 if (e instanceof be) return e.clone();
14847 var t = new ve(e.__wrapped__, e.__chain__);
14848 return t.__actions__ = rn(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
14850 var gr = Ct(function(e, t) {
14851 return Ei(e) ? Le(e, ze(t, 1, Ei, !0)) : []
14853 vr = Ct(function(e, t) {
14855 return Ei(n) && (n = na), Ei(e) ? Le(e, ze(t, 1, Ei, !0), Hn(n, 2)) : []
14857 br = Ct(function(e, t) {
14859 return Ei(n) && (n = na), Ei(e) ? Le(e, ze(t, 1, Ei, !0), na, n) : []
14862 function yr(e, t, n) {
14863 var r = null == e ? 0 : e.length;
14865 var i = null == n ? 0 : Bi(n);
14866 return i < 0 && (i = W(r + i, 0)), Gs(e, Hn(t, 3), i)
14869 function _r(e, t, n) {
14870 var r = null == e ? 0 : e.length;
14873 return n !== na && (i = Bi(n), i = n < 0 ? W(r + i, 0) : Y(i, r - 1)), Gs(e, Hn(t, 3), i, !0)
14877 return null != e && e.length ? ze(e, 1) : []
14881 return e && e.length ? e[0] : na
14883 var Er = Ct(function(e) {
14885 return t.length && t[0] === e[0] ? rt(t) : []
14887 Cr = Ct(function(e) {
14890 return t === xr(n) ? t = na : n.pop(), n.length && n[0] === e[0] ? rt(n, Hn(t, 2)) : []
14892 kr = Ct(function(e) {
14895 return (t = "function" == typeof t ? t : na) && n.pop(), n.length && n[0] === e[0] ? rt(n, na, t) : []
14899 var t = null == e ? 0 : e.length;
14900 return t ? e[t - 1] : na
14904 function Mr(e, t) {
14905 return e && e.length && t && t.length ? _t(e, t) : e
14907 var Ar = Dn(function(e, t) {
14908 var n = null == e ? 0 : e.length,
14910 return $t(e, Us(t, function(e) {
14911 return Yn(e, n) ? +e : e
14916 return null == e ? e : X.call(e)
14918 var Dr = Ct(function(e) {
14919 return jt(ze(e, 1, Ei, !0))
14921 Or = Ct(function(e) {
14923 return Ei(t) && (t = na), jt(ze(e, 1, Ei, !0), Hn(t, 2))
14925 Nr = Ct(function(e) {
14927 return t = "function" == typeof t ? t : na, jt(ze(e, 1, Ei, !0), na, t)
14931 if (!t || !t.length) return [];
14933 return t = Ls(t, function(e) {
14934 if (Ei(e)) return n = W(e.length, n), !0
14935 }), nl(n, function(e) {
14936 return Us(t, Js(e))
14940 function Rr(e, t) {
14941 if (!e || !e.length) return [];
14943 return null == t ? n : Us(n, function(e) {
14944 return Is(t, na, e)
14947 var Pr = Ct(function(e, t) {
14948 return Ei(e) ? Le(e, t) : []
14950 Hr = Ct(function(e) {
14951 return Vt(Ls(e, Ei))
14953 jr = Ct(function(e) {
14955 return Ei(t) && (t = na), Vt(Ls(e, Ei), Hn(t, 2))
14957 Lr = Ct(function(e) {
14959 return t = "function" == typeof t ? t : na, Vt(Ls(e, Ei), na, t)
14962 var qr = Ct(function(e) {
14964 n = 1 < t ? e[t - 1] : na;
14965 return n = "function" == typeof n ? (e.pop(), n) : na, Rr(e, n)
14970 return t.__chain__ = !0, t
14973 function Vr(e, t) {
14976 var Br = Dn(function(t) {
14979 r = this.__wrapped__,
14983 return !(1 < n || this.__actions__.length) && r instanceof be && Yn(e) ? ((r = r.slice(e, +e + (n ? 1 : 0))).__actions__.push({
14987 }), new ve(r, this.__chain__).thru(function(e) {
14988 return n && !e.length && e.push(na), e
14991 var zr = an(function(e, t, n) {
14992 k.call(e, n) ? ++e[n] : Ne(e, n, 1)
14997 function Gr(e, t) {
14998 return (_i(e) ? Ps : Fe)(e, Hn(t, 3))
15001 function Kr(e, t) {
15002 return (_i(e) ? Hs : qe)(e, Hn(t, 3))
15004 var Zr = an(function(e, t, n) {
15005 k.call(e, n) ? e[n].push(t) : Ne(e, n, [t])
15007 var Xr = Ct(function(e, t, n) {
15009 i = "function" == typeof t,
15010 o = wi(e) ? M(e.length) : [];
15011 return Fe(e, function(e) {
15012 o[++r] = i ? Is(t, e, n) : it(e, t, n)
15015 Qr = an(function(e, t, n) {
15019 function Jr(e, t) {
15020 return (_i(e) ? Us : ht)(e, Hn(t, 3))
15022 var ei = an(function(e, t, n) {
15023 e[n ? 0 : 1].push(t)
15030 var ti = Ct(function(e, t) {
15031 if (null == e) return [];
15033 return 1 < n && Gn(e, t[0], t[1]) ? t = [] : 2 < n && Gn(t[0], t[1], t[2]) && (t = [t[0]]), bt(e, ze(t, 1), [])
15035 ni = H || function() {
15036 return xs.Date.now()
15039 function ri(e, t, n) {
15040 return t = n ? na : t, t = e && null == t ? e.length : t, xn(e, 128, na, na, na, na, t)
15043 function ii(e, t) {
15045 if ("function" != typeof t) throw new A(ra);
15048 return 0 < --e && (n = t.apply(this, arguments)), e <= 1 && (t = na), n
15051 var oi = Ct(function(e, t, n) {
15054 var i = pl(n, Pn(oi));
15057 return xn(e, r, t, n, i)
15059 ai = Ct(function(e, t, n) {
15062 var i = pl(n, Pn(ai));
15065 return xn(t, r, e, n, i)
15068 function si(r, i, e) {
15069 var o, a, s, l, c, u, d = 0,
15073 if ("function" != typeof r) throw new A(ra);
15078 return o = a = na, d = e, l = r.apply(n, t)
15083 return u === na || i <= t || t < 0 || h && s <= e - d
15087 var e, t, n = ni();
15088 if (m(n)) return v(n);
15089 c = or(g, (t = i - ((e = n) - u), h ? Y(t, s - (e - d)) : t))
15093 return c = na, t && o ? p(e) : (o = a = na, l)
15099 if (o = arguments, a = this, u = t, n) {
15100 if (c === na) return d = e = u, c = or(g, i), f ? p(e) : l;
15101 if (h) return Zt(c), c = or(g, i), p(u)
15103 return c === na && (c = or(g, i)), l
15105 return i = Wi(i) || 0, Si(e) && (f = !!e.leading, s = (h = "maxWait" in e) ? W(Wi(e.maxWait) || 0, i) : s, t = "trailing" in e ? !!e.trailing : t), n.cancel = function() {
15106 c !== na && Zt(c), d = 0, o = u = a = c = na
15107 }, n.flush = function() {
15108 return c === na ? l : v(ni())
15111 var li = Ct(function(e, t) {
15114 ci = Ct(function(e, t, n) {
15115 return je(e, Wi(t) || 0, n)
15118 function ui(i, o) {
15119 if ("function" != typeof i || null != o && "function" != typeof o) throw new A(ra);
15120 var a = function() {
15122 t = o ? o.apply(this, e) : e[0],
15124 if (n.has(t)) return n.get(t);
15125 var r = i.apply(this, e);
15126 return a.cache = n.set(t, r) || n, r
15128 return a.cache = new(ui.Cache || $e), a
15132 if ("function" != typeof t) throw new A(ra);
15133 return function() {
15135 switch (e.length) {
15137 return !t.call(this);
15139 return !t.call(this, e[0]);
15141 return !t.call(this, e[0], e[1]);
15143 return !t.call(this, e[0], e[1], e[2])
15145 return !t.apply(this, e)
15149 var fi = Gt(function(r, i) {
15150 var o = (i = 1 == i.length && _i(i[0]) ? Us(i[0], rl(Hn())) : Us(ze(i, 1), rl(Hn()))).length;
15151 return Ct(function(e) {
15152 for (var t = -1, n = Y(e.length, o); ++t < n;) e[t] = i[t].call(this, e[t]);
15153 return Is(r, this, e)
15156 hi = Ct(function(e, t) {
15157 var n = pl(t, Pn(hi));
15158 return xn(e, 32, na, t, n)
15160 pi = Ct(function(e, t) {
15161 var n = pl(t, Pn(pi));
15162 return xn(e, 64, na, t, n)
15164 mi = Dn(function(e, t) {
15165 return xn(e, 256, na, na, na, t)
15168 function gi(e, t) {
15169 return e === t || e != e && t != t
15172 bi = $n(function(e, t) {
15175 yi = ot(function() {
15177 }()) ? ot : function(e) {
15178 return Di(e) && k.call(e, "callee") && !S.call(e, "callee")
15181 $i = Ms ? rl(Ms) : function(e) {
15182 return Di(e) && Je(e) == xa
15186 return null != e && Ai(e.length) && !Ti(e)
15190 return Di(e) && wi(e)
15193 ki = As ? rl(As) : function(e) {
15194 return Di(e) && Je(e) == ha
15198 if (!Di(e)) return !1;
15200 return t == pa || "[object DOMException]" == t || "string" == typeof e.message && "string" == typeof e.name && !Ii(e)
15204 if (!Si(e)) return !1;
15206 return t == ma || t == ga || "[object AsyncFunction]" == t || "[object Proxy]" == t
15210 return "number" == typeof e && e == Bi(e)
15214 return "number" == typeof e && -1 < e && e % 1 == 0 && e <= aa
15219 return null != e && ("object" == t || "function" == t)
15223 return null != e && "object" == typeof e
15225 var Oi = Ss ? rl(Ss) : function(e) {
15226 return Di(e) && Vn(e) == va
15230 return "number" == typeof e || Di(e) && Je(e) == ba
15234 if (!Di(e) || Je(e) != ya) return !1;
15236 if (null === t) return !0;
15237 var n = k.call(t, "constructor") && t.constructor;
15238 return "function" == typeof n && n instanceof n && c.call(n) == m
15240 var Ri = Ds ? rl(Ds) : function(e) {
15241 return Di(e) && Je(e) == $a
15243 var Pi = Os ? rl(Os) : function(e) {
15244 return Di(e) && Vn(e) == wa
15248 return "string" == typeof e || !_i(e) && Di(e) && Je(e) == Ea
15252 return "symbol" == typeof e || Di(e) && Je(e) == Ca
15254 var Li = Ns ? rl(Ns) : function(e) {
15255 return Di(e) && Ai(e.length) && !!ws[Je(e)]
15258 qi = $n(function(e, t) {
15264 if (wi(e)) return Hi(e) ? vl(e) : rn(e);
15265 if (N && e[N]) return function(e) {
15266 for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
15270 return (t == va ? fl : t == wa ? ml : vo)(e)
15274 return e ? (e = Wi(e)) !== 1 / 0 && e !== -1 / 0 ? e == e ? e : 0 : 17976931348623157e292 * (e < 0 ? -1 : 1) : 0 === e ? e : 0
15280 return t == t ? n ? t - n : t : 0
15284 return e ? Re(Bi(e), 0, la) : 0
15288 if ("number" == typeof e) return e;
15289 if (ji(e)) return sa;
15291 var t = "function" == typeof e.valueOf ? e.valueOf() : e;
15292 e = Si(t) ? t + "" : t
15294 if ("string" != typeof e) return 0 === e ? e : +e;
15295 e = e.replace(Qa, "");
15296 var n = cs.test(e);
15297 return n || ds.test(e) ? ks(e.slice(2), n ? 2 : 8) : ls.test(e) ? sa : +e
15301 return on(e, lo(e))
15305 return null == e ? "" : Ht(e)
15307 var Ki = sn(function(e, t) {
15308 if (Qn(t) || wi(t)) on(t, so(t), e);
15310 for (var n in t) k.call(t, n) && Ae(e, n, t[n])
15312 Zi = sn(function(e, t) {
15315 Xi = sn(function(e, t, n, r) {
15318 Qi = sn(function(e, t, n, r) {
15322 var eo = Ct(function(e, t) {
15326 i = 2 < r ? t[2] : na;
15327 for (i && Gn(t[0], t[1], i) && (r = 1); ++n < r;)
15328 for (var o = t[n], a = lo(o), s = -1, l = a.length; ++s < l;) {
15331 (u === na || gi(u, d[c]) && !k.call(e, c)) && (e[c] = o[c])
15335 to = Ct(function(e) {
15336 return e.push(na, Mn), Is(uo, na, e)
15339 function no(e, t, n) {
15340 var r = null == e ? na : Xe(e, t);
15341 return r === na ? n : r
15344 function ro(e, t) {
15345 return null != e && Bn(e, t, nt)
15347 var io = gn(function(e, t, n) {
15348 null != t && "function" != typeof t.toString && (t = p.call(t)), e[t] = n
15350 oo = gn(function(e, t, n) {
15351 null != t && "function" != typeof t.toString && (t = p.call(t)), k.call(e, t) ? e[t].push(n) : e[t] = [n]
15356 return wi(e) ? Ce(e) : ut(e)
15360 return wi(e) ? Ce(e, !0) : dt(e)
15362 var co = sn(function(e, t, n) {
15365 uo = sn(function(e, t, n, r) {
15368 fo = Dn(function(t, e) {
15370 if (null == t) return n;
15372 e = Us(e, function(e) {
15373 return e = Yt(e, t), r || (r = 1 < e.length), e
15374 }), on(t, Nn(t), n), r && (n = Pe(n, 7, An));
15375 for (var i = e.length; i--;) Lt(n, e[i]);
15378 var ho = Dn(function(e, t) {
15379 return null == e ? {} : yt(n = e, t, function(e, t) {
15385 function po(e, n) {
15386 if (null == e) return {};
15387 var t = Us(Nn(e), function(e) {
15390 return n = Hn(n), yt(e, t, function(e, t) {
15398 return null == e ? [] : il(e, so(e))
15400 var bo = dn(function(e, t, n) {
15401 return t = t.toLowerCase(), e + (n ? yo(t) : t)
15405 return To(Gi(e).toLowerCase())
15409 return (e = Gi(e)) && e.replace(hs, ll).replace(vs, "")
15411 var $o = dn(function(e, t, n) {
15412 return e + (n ? "-" : "") + t.toLowerCase()
15414 wo = dn(function(e, t, n) {
15415 return e + (n ? " " : "") + t.toLowerCase()
15417 Eo = un("toLowerCase");
15418 var Co = dn(function(e, t, n) {
15419 return e + (n ? "_" : "") + t.toLowerCase()
15421 var ko = dn(function(e, t, n) {
15422 return e + (n ? " " : "") + To(t)
15424 var xo = dn(function(e, t, n) {
15425 return e + (n ? " " : "") + t.toUpperCase()
15427 To = un("toUpperCase");
15429 function Mo(e, t, n) {
15430 return e = Gi(e), (t = n ? na : t) === na ? (r = e, ys.test(r) ? e.match(bs) || [] : e.match(is) || []) : e.match(t) || [];
15433 var Ao = Ct(function(e, t) {
15435 return Is(e, na, t)
15437 return xi(e) ? e : new i(e)
15440 So = Dn(function(t, e) {
15441 return Ps(e, function(e) {
15442 e = hr(e), Ne(t, e, oi(t[e], t))
15447 return function() {
15459 return ct("function" == typeof e ? e : Pe(e, 1))
15461 var Po = Ct(function(t, n) {
15462 return function(e) {
15466 Ho = Ct(function(t, n) {
15467 return function(e) {
15472 function jo(r, t, e) {
15475 null != e || Si(t) && (i.length || !n.length) || (e = t, t = r, r = this, i = Ze(t, so(t)));
15476 var o = !(Si(e) && "chain" in e && !e.chain),
15478 return Ps(i, function(e) {
15480 r[e] = n, a && (r.prototype[e] = function() {
15481 var e = this.__chain__;
15483 var t = r(this.__wrapped__);
15484 return (t.__actions__ = rn(this.__actions__)).push({
15488 }), t.__chain__ = e, t
15490 return n.apply(r, Vs([this.value()], arguments))
15501 return Kn(e) ? Js(hr(e)) : (t = e, function(e) {
15516 var Go = vn(function(e, t) {
15520 Zo = vn(function(e, t) {
15524 var Qo, Jo = vn(function(e, t) {
15528 ta = vn(function(e, t) {
15531 return pe.after = function(e, t) {
15532 if ("function" != typeof t) throw new A(ra);
15535 if (--e < 1) return t.apply(this, arguments)
15537 }, pe.ary = ri, pe.assign = Ki, pe.assignIn = Zi, pe.assignInWith = Xi, pe.assignWith = Qi, pe.at = Ji, pe.before = ii, pe.bind = oi, pe.bindAll = So, pe.bindKey = ai, pe.castArray = function() {
15538 if (!arguments.length) return [];
15539 var e = arguments[0];
15540 return _i(e) ? e : [e]
15541 }, pe.chain = Ur, pe.chunk = function(e, t, n) {
15542 t = (n ? Gn(e, t, n) : t === na) ? 1 : W(Bi(t), 0);
15543 var r = null == e ? 0 : e.length;
15544 if (!r || t < 1) return [];
15545 for (var i = 0, o = 0, a = M(L(r / t)); i < r;) a[o++] = Dt(e, i, i += t);
15547 }, pe.compact = function(e) {
15548 for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
15553 }, pe.concat = function() {
15554 var e = arguments.length;
15556 for (var t = M(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
15557 return Vs(_i(n) ? rn(n) : [n], ze(t, 1))
15558 }, pe.cond = function(r) {
15559 var i = null == r ? 0 : r.length,
15561 return r = i ? Us(r, function(e) {
15562 if ("function" != typeof e[1]) throw new A(ra);
15563 return [t(e[0]), e[1]]
15564 }) : [], Ct(function(e) {
15565 for (var t = -1; ++t < i;) {
15567 if (Is(n[0], this, e)) return Is(n[1], this, e)
15570 }, pe.conforms = function(e) {
15571 return t = Pe(e, 1), n = so(t),
15576 }, pe.constant = Do, pe.countBy = zr, pe.create = function(e, t) {
15578 return null == t ? n : Oe(n, t)
15579 }, pe.curry = function e(t, n, r) {
15580 var i = xn(t, 8, na, na, na, na, na, n = r ? na : n);
15581 return i.placeholder = e.placeholder, i
15582 }, pe.curryRight = function e(t, n, r) {
15583 var i = xn(t, 16, na, na, na, na, na, n = r ? na : n);
15584 return i.placeholder = e.placeholder, i
15585 }, pe.debounce = si, pe.defaults = eo, pe.defaultsDeep = to, pe.defer = li, pe.delay = ci, pe.difference = gr, pe.differenceBy = vr, pe.differenceWith = br, pe.drop = function(e, t, n) {
15586 var r = null == e ? 0 : e.length;
15587 return r ? Dt(e, (t = n || t === na ? 1 : Bi(t)) < 0 ? 0 : t, r) : []
15588 }, pe.dropRight = function(e, t, n) {
15589 var r = null == e ? 0 : e.length;
15590 return r ? Dt(e, 0, (t = r - (t = n || t === na ? 1 : Bi(t))) < 0 ? 0 : t) : []
15591 }, pe.dropRightWhile = function(e, t) {
15592 return e && e.length ? qt(e, Hn(t, 3), !0, !0) : []
15593 }, pe.dropWhile = function(e, t) {
15594 return e && e.length ? qt(e, Hn(t, 3), !0) : []
15595 }, pe.fill = function(e, t, n, r) {
15596 var i = null == e ? 0 : e.length;
15597 return i ? (n && "number" != typeof n && Gn(e, t, n) && (n = 0, r = i), function(e, t, n, r) {
15599 for ((n = Bi(n)) < 0 && (n = i < -n ? 0 : i + n), (r = r === na || i < r ? i : Bi(r)) < 0 && (r += i), r = r < n ? 0 : zi(r); n < r;) e[n++] = t;
15601 }(e, t, n, r)) : []
15602 }, pe.filter = function(e, t) {
15603 return (_i(e) ? Ls : Be)(e, Hn(t, 3))
15604 }, pe.flatMap = function(e, t) {
15605 return ze(Jr(e, t), 1)
15606 }, pe.flatMapDeep = function(e, t) {
15607 return ze(Jr(e, t), 1 / 0)
15608 }, pe.flatMapDepth = function(e, t, n) {
15609 return n = n === na ? 1 : Bi(n), ze(Jr(e, t), n)
15610 }, pe.flatten = $r, pe.flattenDeep = function(e) {
15611 return null != e && e.length ? ze(e, 1 / 0) : []
15612 }, pe.flattenDepth = function(e, t) {
15613 return null != e && e.length ? ze(e, t = t === na ? 1 : Bi(t)) : []
15614 }, pe.flip = function(e) {
15616 }, pe.flow = Oo, pe.flowRight = No, pe.fromPairs = function(e) {
15617 for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
15622 }, pe.functions = function(e) {
15623 return null == e ? [] : Ze(e, so(e))
15624 }, pe.functionsIn = function(e) {
15625 return null == e ? [] : Ze(e, lo(e))
15626 }, pe.groupBy = Zr, pe.initial = function(e) {
15627 return null != e && e.length ? Dt(e, 0, -1) : []
15628 }, pe.intersection = Er, pe.intersectionBy = Cr, pe.intersectionWith = kr, pe.invert = io, pe.invertBy = oo, pe.invokeMap = Xr, pe.iteratee = Ro, pe.keyBy = Qr, pe.keys = so, pe.keysIn = lo, pe.map = Jr, pe.mapKeys = function(e, r) {
15630 return r = Hn(r, 3), Ge(e, function(e, t, n) {
15631 Ne(i, r(e, t, n), e)
15633 }, pe.mapValues = function(e, r) {
15635 return r = Hn(r, 3), Ge(e, function(e, t, n) {
15636 Ne(i, t, r(e, t, n))
15638 }, pe.matches = function(e) {
15639 return pt(Pe(e, 1))
15640 }, pe.matchesProperty = function(e, t) {
15641 return mt(e, Pe(t, 1))
15642 }, pe.memoize = ui, pe.merge = co, pe.mergeWith = uo, pe.method = Po, pe.methodOf = Ho, pe.mixin = jo, pe.negate = di, pe.nthArg = function(t) {
15643 return t = Bi(t), Ct(function(e) {
15646 }, pe.omit = fo, pe.omitBy = function(e, t) {
15647 return po(e, di(Hn(t)))
15648 }, pe.once = function(e) {
15650 }, pe.orderBy = function(e, t, n, r) {
15651 return null == e ? [] : (_i(t) || (t = null == t ? [] : [t]), _i(n = r ? na : n) || (n = null == n ? [] : [n]), bt(e, t, n))
15652 }, pe.over = Fo, pe.overArgs = fi, pe.overEvery = qo, pe.overSome = Uo, pe.partial = hi, pe.partialRight = pi, pe.partition = ei, pe.pick = ho, pe.pickBy = po, pe.property = Vo, pe.propertyOf = function(t) {
15653 return function(e) {
15654 return null == t ? na : Xe(t, e)
15656 }, pe.pull = Tr, pe.pullAll = Mr, pe.pullAllBy = function(e, t, n) {
15657 return e && e.length && t && t.length ? _t(e, t, Hn(n, 2)) : e
15658 }, pe.pullAllWith = function(e, t, n) {
15659 return e && e.length && t && t.length ? _t(e, t, na, n) : e
15660 }, pe.pullAt = Ar, pe.range = Bo, pe.rangeRight = zo, pe.rearg = mi, pe.reject = function(e, t) {
15661 return (_i(e) ? Ls : Be)(e, di(Hn(t, 3)))
15662 }, pe.remove = function(e, t) {
15664 if (!e || !e.length) return n;
15668 for (t = Hn(t, 3); ++r < o;) {
15670 t(a, r, e) && (n.push(a), i.push(r))
15673 }, pe.rest = function(e, t) {
15674 if ("function" != typeof e) throw new A(ra);
15675 return Ct(e, t = t === na ? t : Bi(t))
15676 }, pe.reverse = Sr, pe.sampleSize = function(e, t, n) {
15677 return t = (n ? Gn(e, t, n) : t === na) ? 1 : Bi(t), (_i(e) ? xe : xt)(e, t)
15678 }, pe.set = function(e, t, n) {
15679 return null == e ? e : Tt(e, t, n)
15680 }, pe.setWith = function(e, t, n, r) {
15681 return r = "function" == typeof r ? r : na, null == e ? e : Tt(e, t, n, r)
15682 }, pe.shuffle = function(e) {
15683 return (_i(e) ? Te : St)(e)
15684 }, pe.slice = function(e, t, n) {
15685 var r = null == e ? 0 : e.length;
15686 return r ? (n = n && "number" != typeof n && Gn(e, t, n) ? (t = 0, r) : (t = null == t ? 0 : Bi(t), n === na ? r : Bi(n)), Dt(e, t, n)) : []
15687 }, pe.sortBy = ti, pe.sortedUniq = function(e) {
15688 return e && e.length ? Rt(e) : []
15689 }, pe.sortedUniqBy = function(e, t) {
15690 return e && e.length ? Rt(e, Hn(t, 2)) : []
15691 }, pe.split = function(e, t, n) {
15692 return n && "number" != typeof n && Gn(e, t, n) && (t = n = na), (n = n === na ? la : n >>> 0) ? (e = Gi(e)) && ("string" == typeof t || null != t && !Ri(t)) && !(t = Ht(t)) && dl(e) ? Kt(vl(e), 0, n) : e.split(t, n) : []
15693 }, pe.spread = function(r, i) {
15694 if ("function" != typeof r) throw new A(ra);
15695 return i = null == i ? 0 : W(Bi(i), 0), Ct(function(e) {
15698 return t && Vs(n, t), Is(r, this, n)
15700 }, pe.tail = function(e) {
15701 var t = null == e ? 0 : e.length;
15702 return t ? Dt(e, 1, t) : []
15703 }, pe.take = function(e, t, n) {
15704 return e && e.length ? Dt(e, 0, (t = n || t === na ? 1 : Bi(t)) < 0 ? 0 : t) : []
15705 }, pe.takeRight = function(e, t, n) {
15706 var r = null == e ? 0 : e.length;
15707 return r ? Dt(e, (t = r - (t = n || t === na ? 1 : Bi(t))) < 0 ? 0 : t, r) : []
15708 }, pe.takeRightWhile = function(e, t) {
15709 return e && e.length ? qt(e, Hn(t, 3), !1, !0) : []
15710 }, pe.takeWhile = function(e, t) {
15711 return e && e.length ? qt(e, Hn(t, 3)) : []
15712 }, pe.tap = function(e, t) {
15714 }, pe.throttle = function(e, t, n) {
15717 if ("function" != typeof e) throw new A(ra);
15718 return Si(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), si(e, t, {
15723 }, pe.thru = Vr, pe.toArray = Ui, pe.toPairs = mo, pe.toPairsIn = go, pe.toPath = function(e) {
15724 return _i(e) ? Us(e, hr) : ji(e) ? [e] : rn(fr(Gi(e)))
15725 }, pe.toPlainObject = Yi, pe.transform = function(e, r, i) {
15727 n = t || Ci(e) || Li(e);
15728 if (r = Hn(r, 4), null == i) {
15729 var o = e && e.constructor;
15730 i = n ? t ? new o : [] : Si(e) && Ti(o) ? me(x(e)) : {}
15732 return (n ? Ps : Ge)(e, function(e, t, n) {
15733 return r(i, e, t, n)
15735 }, pe.unary = function(e) {
15737 }, pe.union = Dr, pe.unionBy = Or, pe.unionWith = Nr, pe.uniq = function(e) {
15738 return e && e.length ? jt(e) : []
15739 }, pe.uniqBy = function(e, t) {
15740 return e && e.length ? jt(e, Hn(t, 2)) : []
15741 }, pe.uniqWith = function(e, t) {
15742 return t = "function" == typeof t ? t : na, e && e.length ? jt(e, na, t) : []
15743 }, pe.unset = function(e, t) {
15744 return null == e || Lt(e, t)
15745 }, pe.unzip = Ir, pe.unzipWith = Rr, pe.update = function(e, t, n) {
15746 return null == e ? e : Ft(e, t, Wt(n))
15747 }, pe.updateWith = function(e, t, n, r) {
15748 return r = "function" == typeof r ? r : na, null == e ? e : Ft(e, t, Wt(n), r)
15749 }, pe.values = vo, pe.valuesIn = function(e) {
15750 return null == e ? [] : il(e, lo(e))
15751 }, pe.without = Pr, pe.words = Mo, pe.wrap = function(e, t) {
15752 return hi(Wt(t), e)
15753 }, pe.xor = Hr, pe.xorBy = jr, pe.xorWith = Lr, pe.zip = Fr, pe.zipObject = function(e, t) {
15754 return Bt(e || [], t || [], Ae)
15755 }, pe.zipObjectDeep = function(e, t) {
15756 return Bt(e || [], t || [], Tt)
15757 }, pe.zipWith = qr, pe.entries = mo, pe.entriesIn = go, pe.extend = Zi, pe.extendWith = Xi, jo(pe, pe), pe.add = Go, pe.attempt = Ao, pe.camelCase = bo, pe.capitalize = yo, pe.ceil = Ko, pe.clamp = function(e, t, n) {
15758 return n === na && (n = t, t = na), n !== na && (n = (n = Wi(n)) == n ? n : 0), t !== na && (t = (t = Wi(t)) == t ? t : 0), Re(Wi(e), t, n)
15759 }, pe.clone = function(e) {
15761 }, pe.cloneDeep = function(e) {
15763 }, pe.cloneDeepWith = function(e, t) {
15764 return Pe(e, 5, t = "function" == typeof t ? t : na)
15765 }, pe.cloneWith = function(e, t) {
15766 return Pe(e, 4, t = "function" == typeof t ? t : na)
15767 }, pe.conformsTo = function(e, t) {
15768 return null == t || He(e, t, so(t))
15769 }, pe.deburr = _o, pe.defaultTo = function(e, t) {
15770 return null == e || e != e ? t : e
15771 }, pe.divide = Zo, pe.endsWith = function(e, t, n) {
15772 e = Gi(e), t = Ht(t);
15774 i = n = n === na ? r : Re(Bi(n), 0, r);
15775 return 0 <= (n -= t.length) && e.slice(n, i) == t
15776 }, pe.eq = gi, pe.escape = function(e) {
15777 return (e = Gi(e)) && Va.test(e) ? e.replace(qa, cl) : e
15778 }, pe.escapeRegExp = function(e) {
15779 return (e = Gi(e)) && Xa.test(e) ? e.replace(Za, "\\$&") : e
15780 }, pe.every = function(e, t, n) {
15781 var r = _i(e) ? js : Ue;
15782 return n && Gn(e, t, n) && (t = na), r(e, Hn(t, 3))
15783 }, pe.find = Wr, pe.findIndex = yr, pe.findKey = function(e, t) {
15784 return Ys(e, Hn(t, 3), Ge)
15785 }, pe.findLast = Yr, pe.findLastIndex = _r, pe.findLastKey = function(e, t) {
15786 return Ys(e, Hn(t, 3), Ke)
15787 }, pe.floor = Xo, pe.forEach = Gr, pe.forEachRight = Kr, pe.forIn = function(e, t) {
15788 return null == e ? e : We(e, Hn(t, 3), lo)
15789 }, pe.forInRight = function(e, t) {
15790 return null == e ? e : Ye(e, Hn(t, 3), lo)
15791 }, pe.forOwn = function(e, t) {
15792 return e && Ge(e, Hn(t, 3))
15793 }, pe.forOwnRight = function(e, t) {
15794 return e && Ke(e, Hn(t, 3))
15795 }, pe.get = no, pe.gt = vi, pe.gte = bi, pe.has = function(e, t) {
15796 return null != e && Bn(e, t, tt)
15797 }, pe.hasIn = ro, pe.head = wr, pe.identity = Io, pe.includes = function(e, t, n, r) {
15798 e = wi(e) ? e : vo(e), n = n && !r ? Bi(n) : 0;
15800 return n < 0 && (n = W(i + n, 0)), Hi(e) ? n <= i && -1 < e.indexOf(t, n) : !!i && -1 < Ks(e, t, n)
15801 }, pe.indexOf = function(e, t, n) {
15802 var r = null == e ? 0 : e.length;
15804 var i = null == n ? 0 : Bi(n);
15805 return i < 0 && (i = W(r + i, 0)), Ks(e, t, i)
15806 }, pe.inRange = function(e, t, n) {
15807 return t = Vi(t), n === na ? (n = t, t = 0) : n = Vi(n), e = Wi(e), (r = e) >= Y(i = t, o = n) && r < W(i, o);
15809 }, pe.invoke = ao, pe.isArguments = yi, pe.isArray = _i, pe.isArrayBuffer = $i, pe.isArrayLike = wi, pe.isArrayLikeObject = Ei, pe.isBoolean = function(e) {
15810 return !0 === e || !1 === e || Di(e) && Je(e) == fa
15811 }, pe.isBuffer = Ci, pe.isDate = ki, pe.isElement = function(e) {
15812 return Di(e) && 1 === e.nodeType && !Ii(e)
15813 }, pe.isEmpty = function(e) {
15814 if (null == e) return !0;
15815 if (wi(e) && (_i(e) || "string" == typeof e || "function" == typeof e.splice || Ci(e) || Li(e) || yi(e))) return !e.length;
15817 if (t == va || t == wa) return !e.size;
15818 if (Qn(e)) return !ut(e).length;
15820 if (k.call(e, n)) return !1;
15822 }, pe.isEqual = function(e, t) {
15824 }, pe.isEqualWith = function(e, t, n) {
15825 var r = (n = "function" == typeof n ? n : na) ? n(e, t) : na;
15826 return r === na ? at(e, t, na, n) : !!r
15827 }, pe.isError = xi, pe.isFinite = function(e) {
15828 return "number" == typeof e && V(e)
15829 }, pe.isFunction = Ti, pe.isInteger = Mi, pe.isLength = Ai, pe.isMap = Oi, pe.isMatch = function(e, t) {
15830 return e === t || st(e, t, Ln(t))
15831 }, pe.isMatchWith = function(e, t, n) {
15832 return n = "function" == typeof n ? n : na, st(e, t, Ln(t), n)
15833 }, pe.isNaN = function(e) {
15834 return Ni(e) && e != +e
15835 }, pe.isNative = function(e) {
15836 if (Xn(e)) throw new i("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
15838 }, pe.isNil = function(e) {
15840 }, pe.isNull = function(e) {
15842 }, pe.isNumber = Ni, pe.isObject = Si, pe.isObjectLike = Di, pe.isPlainObject = Ii, pe.isRegExp = Ri, pe.isSafeInteger = function(e) {
15843 return Mi(e) && -aa <= e && e <= aa
15844 }, pe.isSet = Pi, pe.isString = Hi, pe.isSymbol = ji, pe.isTypedArray = Li, pe.isUndefined = function(e) {
15846 }, pe.isWeakMap = function(e) {
15847 return Di(e) && Vn(e) == ka
15848 }, pe.isWeakSet = function(e) {
15849 return Di(e) && "[object WeakSet]" == Je(e)
15850 }, pe.join = function(e, t) {
15851 return null == e ? "" : B.call(e, t)
15852 }, pe.kebabCase = $o, pe.last = xr, pe.lastIndexOf = function(e, t, n) {
15853 var r = null == e ? 0 : e.length;
15856 return n !== na && (i = (i = Bi(n)) < 0 ? W(r + i, 0) : Y(i, r - 1)), t == t ? function(e, t, n) {
15857 for (var r = n + 1; r--;)
15858 if (e[r] === t) return r;
15860 }(e, t, i) : Gs(e, Xs, i, !0)
15861 }, pe.lowerCase = wo, pe.lowerFirst = Eo, pe.lt = Fi, pe.lte = qi, pe.max = function(e) {
15862 return e && e.length ? Ve(e, Io, et) : na
15863 }, pe.maxBy = function(e, t) {
15864 return e && e.length ? Ve(e, Hn(t, 2), et) : na
15865 }, pe.mean = function(e) {
15867 }, pe.meanBy = function(e, t) {
15868 return Qs(e, Hn(t, 2))
15869 }, pe.min = function(e) {
15870 return e && e.length ? Ve(e, Io, ft) : na
15871 }, pe.minBy = function(e, t) {
15872 return e && e.length ? Ve(e, Hn(t, 2), ft) : na
15873 }, pe.stubArray = Wo, pe.stubFalse = Yo, pe.stubObject = function() {
15875 }, pe.stubString = function() {
15877 }, pe.stubTrue = function() {
15879 }, pe.multiply = Jo, pe.nth = function(e, t) {
15880 return e && e.length ? vt(e, Bi(t)) : na
15881 }, pe.noConflict = function() {
15882 return xs._ === this && (xs._ = b), this
15883 }, pe.noop = Lo, pe.now = ni, pe.pad = function(e, t, n) {
15885 var r = (t = Bi(t)) ? gl(e) : 0;
15886 if (!t || t <= r) return e;
15887 var i = (t - r) / 2;
15888 return yn(F(i), n) + e + yn(L(i), n)
15889 }, pe.padEnd = function(e, t, n) {
15891 var r = (t = Bi(t)) ? gl(e) : 0;
15892 return t && r < t ? e + yn(t - r, n) : e
15893 }, pe.padStart = function(e, t, n) {
15895 var r = (t = Bi(t)) ? gl(e) : 0;
15896 return t && r < t ? yn(t - r, n) + e : e
15897 }, pe.parseInt = function(e, t, n) {
15898 return n || null == t ? t = 0 : t && (t = +t), K(Gi(e).replace(Ja, ""), t || 0)
15899 }, pe.random = function(e, t, n) {
15900 if (n && "boolean" != typeof n && Gn(e, t, n) && (t = n = na), n === na && ("boolean" == typeof t ? (n = t, t = na) : "boolean" == typeof e && (n = e, e = na)), e === na && t === na ? (e = 0, t = 1) : (e = Vi(e), t === na ? (t = e, e = 0) : t = Vi(t)), t < e) {
15904 if (n || e % 1 || t % 1) {
15906 return Y(e + i * (t - e + Cs("1e-" + ((i + "").length - 1))), t)
15909 }, pe.reduce = function(e, t, n) {
15910 var r = _i(e) ? Bs : el,
15911 i = arguments.length < 3;
15912 return r(e, Hn(t, 4), n, i, Fe)
15913 }, pe.reduceRight = function(e, t, n) {
15914 var r = _i(e) ? zs : el,
15915 i = arguments.length < 3;
15916 return r(e, Hn(t, 4), n, i, qe)
15917 }, pe.repeat = function(e, t, n) {
15918 return t = (n ? Gn(e, t, n) : t === na) ? 1 : Bi(t), Et(Gi(e), t)
15919 }, pe.replace = function() {
15922 return e.length < 3 ? t : t.replace(e[1], e[2])
15923 }, pe.result = function(e, t, n) {
15925 i = (t = Yt(t, e)).length;
15926 for (i || (i = 1, e = na); ++r < i;) {
15927 var o = null == e ? na : e[hr(t[r])];
15928 o === na && (r = i, o = n), e = Ti(o) ? o.call(e) : o
15931 }, pe.round = ea, pe.runInContext = e, pe.sample = function(e) {
15932 return (_i(e) ? ke : kt)(e)
15933 }, pe.size = function(e) {
15934 if (null == e) return 0;
15935 if (wi(e)) return Hi(e) ? gl(e) : e.length;
15937 return t == va || t == wa ? e.size : ut(e).length
15938 }, pe.snakeCase = Co, pe.some = function(e, t, n) {
15939 var r = _i(e) ? Ws : Ot;
15940 return n && Gn(e, t, n) && (t = na), r(e, Hn(t, 3))
15941 }, pe.sortedIndex = function(e, t) {
15943 }, pe.sortedIndexBy = function(e, t, n) {
15944 return It(e, t, Hn(n, 2))
15945 }, pe.sortedIndexOf = function(e, t) {
15946 var n = null == e ? 0 : e.length;
15949 if (r < n && gi(e[r], t)) return r
15952 }, pe.sortedLastIndex = function(e, t) {
15953 return Nt(e, t, !0)
15954 }, pe.sortedLastIndexBy = function(e, t, n) {
15955 return It(e, t, Hn(n, 2), !0)
15956 }, pe.sortedLastIndexOf = function(e, t) {
15957 if (null != e && e.length) {
15958 var n = Nt(e, t, !0) - 1;
15959 if (gi(e[n], t)) return n
15962 }, pe.startCase = ko, pe.startsWith = function(e, t, n) {
15963 return e = Gi(e), n = null == n ? 0 : Re(Bi(n), 0, e.length), t = Ht(t), e.slice(n, n + t.length) == t
15964 }, pe.subtract = ta, pe.sum = function(e) {
15965 return e && e.length ? tl(e, Io) : 0
15966 }, pe.sumBy = function(e, t) {
15967 return e && e.length ? tl(e, Hn(t, 2)) : 0
15968 }, pe.template = function(a, e, t) {
15969 var n = pe.templateSettings;
15970 t && Gn(a, e, t) && (e = na), a = Gi(a), e = Xi({}, e, n, Tn);
15971 var s, l, r = Xi({}, e.imports, n.imports, Tn),
15975 u = e.interpolate || ps,
15977 f = v((e.escape || ps).source + "|" + u.source + "|" + (u === Wa ? as : ps).source + "|" + (e.evaluate || ps).source + "|$", "g"),
15978 h = "//# sourceURL=" + (k.call(e, "sourceURL") ? (e.sourceURL + "").replace(/[\r\n]/g, " ") : "lodash.templateSources[" + ++$s + "]") + "\n";
15979 a.replace(f, function(e, t, n, r, i, o) {
15980 return n || (n = r), d += a.slice(c, o).replace(ms, ul), t && (s = !0, d += "' +\n__e(" + t + ") +\n'"), i && (l = !0, d += "';\n" + i + ";\n__p += '"), n && (d += "' +\n((__t = (" + n + ")) == null ? '' : __t) +\n'"), c = o + e.length, e
15982 var p = k.call(e, "variable") && e.variable;
15983 p || (d = "with (obj) {\n" + d + "\n}\n"), d = (l ? d.replace(Ha, "") : d).replace(ja, "$1").replace(La, "$1;"), d = "function(" + (p || "obj") + ") {\n" + (p ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (s ? ", __e = _.escape" : "") + (l ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + d + "return __p\n}";
15984 var m = Ao(function() {
15985 return g(i, h + "return " + d).apply(na, o)
15987 if (m.source = d, xi(m)) throw m;
15989 }, pe.times = function(e, t) {
15990 if ((e = Bi(e)) < 1 || aa < e) return [];
15993 t = Hn(t), e -= la;
15994 for (var i = nl(r, t); ++n < e;) t(n);
15996 }, pe.toFinite = Vi, pe.toInteger = Bi, pe.toLength = zi, pe.toLower = function(e) {
15997 return Gi(e).toLowerCase()
15998 }, pe.toNumber = Wi, pe.toSafeInteger = function(e) {
15999 return e ? Re(Bi(e), -aa, aa) : 0 === e ? e : 0
16000 }, pe.toString = Gi, pe.toUpper = function(e) {
16001 return Gi(e).toUpperCase()
16002 }, pe.trim = function(e, t, n) {
16003 if ((e = Gi(e)) && (n || t === na)) return e.replace(Qa, "");
16004 if (!e || !(t = Ht(t))) return e;
16007 return Kt(r, al(r, i), sl(r, i) + 1).join("")
16008 }, pe.trimEnd = function(e, t, n) {
16009 if ((e = Gi(e)) && (n || t === na)) return e.replace(es, "");
16010 if (!e || !(t = Ht(t))) return e;
16012 return Kt(r, 0, sl(r, vl(t)) + 1).join("")
16013 }, pe.trimStart = function(e, t, n) {
16014 if ((e = Gi(e)) && (n || t === na)) return e.replace(Ja, "");
16015 if (!e || !(t = Ht(t))) return e;
16017 return Kt(r, al(r, vl(t))).join("")
16018 }, pe.truncate = function(e, t) {
16022 var i = "separator" in t ? t.separator : i;
16023 n = "length" in t ? Bi(t.length) : n, r = "omission" in t ? Ht(t.omission) : r
16025 var o = (e = Gi(e)).length;
16030 if (o <= n) return e;
16032 if (s < 1) return r;
16033 var l = a ? Kt(a, 0, s).join("") : e.slice(0, s);
16034 if (i === na) return l + r;
16035 if (a && (s += l.length - s), Ri(i)) {
16036 if (e.slice(s).search(i)) {
16038 for (i.global || (i = v(i.source, Gi(ss.exec(i)) + "g")), i.lastIndex = 0; c = i.exec(u);) var d = c.index;
16039 l = l.slice(0, d === na ? s : d)
16041 } else if (e.indexOf(Ht(i), s) != s) {
16042 var f = l.lastIndexOf(i); - 1 < f && (l = l.slice(0, f))
16045 }, pe.unescape = function(e) {
16046 return (e = Gi(e)) && Ua.test(e) ? e.replace(Fa, bl) : e
16047 }, pe.uniqueId = function(e) {
16050 }, pe.upperCase = xo, pe.upperFirst = To, pe.each = Gr, pe.eachRight = Kr, pe.first = wr, jo(pe, (Qo = {}, Ge(pe, function(e, t) {
16051 k.call(pe.prototype, t) || (Qo[t] = e)
16054 }), pe.VERSION = "4.17.15", Ps(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(e) {
16055 pe[e].placeholder = pe
16056 }), Ps(["drop", "take"], function(n, r) {
16057 be.prototype[n] = function(e) {
16058 e = e === na ? 1 : W(Bi(e), 0);
16059 var t = this.__filtered__ && !r ? new be(this) : this.clone();
16060 return t.__filtered__ ? t.__takeCount__ = Y(e, t.__takeCount__) : t.__views__.push({
16062 type: n + (t.__dir__ < 0 ? "Right" : "")
16064 }, be.prototype[n + "Right"] = function(e) {
16065 return this.reverse()[n](e).reverse()
16067 }), Ps(["filter", "map", "takeWhile"], function(e, t) {
16069 r = 1 == n || 3 == n;
16070 be.prototype[e] = function(e) {
16071 var t = this.clone();
16072 return t.__iteratees__.push({
16073 iteratee: Hn(e, 3),
16075 }), t.__filtered__ = t.__filtered__ || r, t
16077 }), Ps(["head", "last"], function(e, t) {
16078 var n = "take" + (t ? "Right" : "");
16079 be.prototype[e] = function() {
16080 return this[n](1).value()[0]
16082 }), Ps(["initial", "tail"], function(e, t) {
16083 var n = "drop" + (t ? "" : "Right");
16084 be.prototype[e] = function() {
16085 return this.__filtered__ ? new be(this) : this[n](1)
16087 }), be.prototype.compact = function() {
16088 return this.filter(Io)
16089 }, be.prototype.find = function(e) {
16090 return this.filter(e).head()
16091 }, be.prototype.findLast = function(e) {
16092 return this.reverse().find(e)
16093 }, be.prototype.invokeMap = Ct(function(t, n) {
16094 return "function" == typeof t ? new be(this) : this.map(function(e) {
16097 }), be.prototype.reject = function(e) {
16098 return this.filter(di(Hn(e)))
16099 }, be.prototype.slice = function(e, t) {
16102 return n.__filtered__ && (0 < e || t < 0) ? new be(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== na && (n = (t = Bi(t)) < 0 ? n.dropRight(-t) : n.take(t - e)), n)
16103 }, be.prototype.takeRightWhile = function(e) {
16104 return this.reverse().takeWhile(e).reverse()
16105 }, be.prototype.toArray = function() {
16106 return this.take(la)
16107 }, Ge(be.prototype, function(d, e) {
16108 var f = /^(?:filter|find|map|reject)|While$/.test(e),
16109 h = /^(?:head|last)$/.test(e),
16110 p = pe[h ? "take" + ("last" == e ? "Right" : "") : e],
16111 m = h || /^find/.test(e);
16112 p && (pe.prototype[e] = function() {
16113 var e = this.__wrapped__,
16114 n = h ? [1] : arguments,
16115 t = e instanceof be,
16119 var t = p.apply(pe, Vs([e], n));
16120 return h && a ? t[0] : t
16122 i && f && "function" == typeof r && 1 != r.length && (t = i = !1);
16123 var a = this.__chain__,
16124 s = !!this.__actions__.length,
16127 if (m || !i) return l && c ? d.apply(this, n) : (u = this.thru(o), l ? h ? u.value()[0] : u.value() : u);
16128 e = c ? e : new be(this);
16129 var u = d.apply(e, n);
16130 return u.__actions__.push({
16136 }), Ps(["pop", "push", "shift", "sort", "splice", "unshift"], function(e) {
16138 r = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
16139 i = /^(?:pop|shift)$/.test(e);
16140 pe.prototype[e] = function() {
16142 if (!i || this.__chain__) return this[r](function(e) {
16143 return n.apply(_i(e) ? e : [], t)
16145 var e = this.value();
16146 return n.apply(_i(e) ? e : [], t)
16148 }), Ge(be.prototype, function(e, t) {
16151 var r = n.name + "";
16152 k.call(oe, r) || (oe[r] = []), oe[r].push({
16157 }), oe[mn(na, 2).name] = [{
16160 }], be.prototype.clone = function() {
16161 var e = new be(this.__wrapped__);
16162 return e.__actions__ = rn(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = rn(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = rn(this.__views__), e
16163 }, be.prototype.reverse = function() {
16164 if (this.__filtered__) {
16165 var e = new be(this);
16166 e.__dir__ = -1, e.__filtered__ = !0
16167 } else(e = this.clone()).__dir__ *= -1;
16169 }, be.prototype.value = function() {
16170 var e = this.__wrapped__.value(),
16174 i = n ? e.length : 0,
16175 o = function(e, t, n) {
16176 for (var r = -1, i = n.length; ++r < i;) {
16197 }(0, i, this.__views__),
16202 u = this.__iteratees__,
16205 h = Y(l, this.__takeCount__);
16206 if (!n || !r && i == l && h == l) return Ut(e, this.__actions__);
16208 e: for (; l-- && f < h;) {
16209 for (var m = -1, g = e[c += t]; ++m < d;) {
16216 if (1 == y) continue e;
16223 }, pe.prototype.at = Br, pe.prototype.chain = function() {
16225 }, pe.prototype.commit = function() {
16226 return new ve(this.value(), this.__chain__)
16227 }, pe.prototype.next = function() {
16228 this.__values__ === na && (this.__values__ = Ui(this.value()));
16229 var e = this.__index__ >= this.__values__.length;
16232 value: e ? na : this.__values__[this.__index__++]
16234 }, pe.prototype.plant = function(e) {
16235 for (var t, n = this; n instanceof ge;) {
16237 r.__index__ = 0, r.__values__ = na, t ? i.__wrapped__ = r : t = r;
16241 return i.__wrapped__ = e, t
16242 }, pe.prototype.reverse = function() {
16243 var e = this.__wrapped__;
16244 if (e instanceof be) {
16246 return this.__actions__.length && (t = new be(this)), (t = t.reverse()).__actions__.push({
16250 }), new ve(t, this.__chain__)
16252 return this.thru(Sr)
16253 }, pe.prototype.toJSON = pe.prototype.valueOf = pe.prototype.value = function() {
16254 return Ut(this.__wrapped__, this.__actions__)
16255 }, pe.prototype.first = pe.prototype.head, N && (pe.prototype[N] = function() {
16259 "function" == typeof define && "object" == typeof define.amd && define.amd ? (xs._ = yl, define(function() {
16261 })) : I ? ((I.exports = yl)._ = yl, N._ = yl) : xs._ = yl
16264 var T = t.isDefined,
16272 t.module("LocalStorageModule", []).provider("localStorageService", function() {
16273 this.prefix = "ls", this.storageType = "localStorage", this.cookie = {
16277 }, this.defaultToCookie = !0, this.notify = {
16280 }, this.setPrefix = function(e) {
16281 return this.prefix = e, this
16282 }, this.setStorageType = function(e) {
16283 return this.storageType = e, this
16284 }, this.setDefaultToCookie = function(e) {
16285 return this.defaultToCookie = !!e, this
16286 }, this.setStorageCookie = function(e, t, n) {
16287 return this.cookie.expiry = e, this.cookie.path = t, this.cookie.secure = n, this
16288 }, this.setStorageCookieDomain = function(e) {
16289 return this.cookie.domain = e, this
16290 }, this.setNotify = function(e, t) {
16291 return this.notify = {
16295 }, this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(l, o, c, a, n) {
16301 c ? c[0] && (c = c[0]) : c = document, "." !== d.substr(-1) && (d = d ? d + "." : "");
16302 var p = function(e) {
16306 return e.replace(new RegExp("^" + d, "g"), "")
16309 return 0 === e.indexOf(d)
16313 var e = h in o && null !== o[h],
16314 t = p("__" + Math.round(1e7 * Math.random()));
16315 return e && ((s = o[h]).setItem(t, ""), s.removeItem(t)), e
16317 return u.defaultToCookie && (h = "cookie"), l.$broadcast("LocalStorageModule.notification.error", e.message), !1
16321 v = function(t, n, e) {
16324 if (x(e), n = M(n) ? null : I(n), !g && u.defaultToCookie || "cookie" === u.storageType) return g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), i.setItem && l.$broadcast("LocalStorageModule.notification.setitem", {
16327 storageType: "cookie"
16330 s && s.setItem(p(t), n), i.setItem && l.$broadcast("LocalStorageModule.notification.setitem", {
16333 storageType: u.storageType
16336 return l.$broadcast("LocalStorageModule.notification.error", e.message), $(t, n)
16343 b = function(e, t) {
16346 if (x(t), !g && u.defaultToCookie || "cookie" === u.storageType) return g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), w(e);
16347 var r = s ? s.getItem(p(e)) : null;
16348 if (!r || "null" === r) return null;
16350 return JSON.parse(r)
16362 for (1 <= arguments.length && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (r = 1, x(arguments[arguments.length - 1])), t = 0; t < arguments.length - r; t++)
16363 if (n = arguments[t], !g && u.defaultToCookie || "cookie" === u.storageType) g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), i.removeItem && l.$broadcast("LocalStorageModule.notification.removeitem", {
16365 storageType: "cookie"
16368 s.removeItem(p(n)), i.removeItem && l.$broadcast("LocalStorageModule.notification.removeitem", {
16370 storageType: u.storageType
16373 l.$broadcast("LocalStorageModule.notification.error", e.message), E(n)
16381 return o.navigator.cookieEnabled || "cookie" in c && (0 < c.cookie.length || -1 < (c.cookie = "test").indexOf.call(c.cookie, "test"))
16383 return l.$broadcast("LocalStorageModule.notification.error", e.message), !1
16386 $ = function(e, t, n, r) {
16387 if (M(t)) return !1;
16388 if ((D(t) || S(t)) && (t = I(t)), !_) return l.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16393 if (null === t ? (o.setTime(o.getTime() + -864e5), i = "; expires=" + o.toGMTString(), t = "") : A(n) && 0 !== n ? (o.setTime(o.getTime() + 24 * n * 60 * 60 * 1e3), i = "; expires=" + o.toGMTString()) : 0 !== f.expiry && (o.setTime(o.getTime() + 24 * f.expiry * 60 * 60 * 1e3), i = "; expires=" + o.toGMTString()), e) {
16394 var s = "; path=" + f.path;
16395 f.domain && (a = "; domain=" + f.domain), "boolean" == typeof r ? !0 === r && (a += "; secure") : !0 === f.secure && (a += "; secure"), c.cookie = p(e) + "=" + encodeURIComponent(t) + i + s + a
16398 return l.$broadcast("LocalStorageModule.notification.error", e.message), !1
16403 if (!_) return l.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16404 for (var t = c.cookie && c.cookie.split(";") || [], n = 0; n < t.length; n++) {
16406 " " === r.charAt(0);) r = r.substring(1, r.length);
16407 if (0 === r.indexOf(p(e) + "=")) {
16408 var i = decodeURIComponent(r.substring(d.length + e.length + 1, r.length));
16410 var o = JSON.parse(i);
16411 return "number" == typeof o ? i : o
16423 for (var e = null, t = d.length, n = c.cookie.split(";"), r = 0; r < n.length; r++) {
16425 " " === e.charAt(0);) e = e.substring(1, e.length);
16426 var i = e.substring(t, e.indexOf("="));
16434 return e && h !== e && (h = e, g = t()), g
16438 if (e || (e = o.event), i.setItem && O(e.key) && m(e.key)) {
16441 l.$broadcast("LocalStorageModule.notification.changed", {
16443 newvalue: e.newValue,
16444 storageType: u.storageType
16449 g && (o.addEventListener ? (o.addEventListener("storage", e, !1), l.$on("$destroy", function() {
16450 o.removeEventListener("storage", e)
16451 })) : o.attachEvent && (o.attachEvent("onstorage", e), l.$on("$destroy", function() {
16452 o.detachEvent("onstorage", e)
16458 setPrefix: function(e) {
16464 keys: function(e) {
16467 if (x(e), !g) return l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), [];
16471 if (i.substr(0, n) === d) try {
16472 r.push(i.substr(n))
16474 return l.$broadcast("LocalStorageModule.notification.error", e.Description), []
16482 clearAll: function(e, t) {
16486 var r = d ? new RegExp("^" + d) : new RegExp,
16487 i = e ? new RegExp(e) : new RegExp;
16488 if (!g && u.defaultToCookie || "cookie" === u.storageType) return g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), C();
16489 if (!g && !u.defaultToCookie) return !1;
16492 if (r.test(a) && i.test(a.substr(o))) try {
16495 return l.$broadcast("LocalStorageModule.notification.error", e.message), C()
16502 bind: function(e, t, n, r, i) {
16503 var o = b(r = r || t, i);
16504 return null === o && T(n) ? o = n : S(o) && S(n) && (o = N(o, n)), a(t).assign(e, o), e.$watch(t, function(e) {
16510 length: function(e) {
16514 for (var n = 0, r = o[h], i = 0; i < r.length; i++) 0 === r.key(i).indexOf(d) && n++;
16520 defaultToCookie: this.defaultToCookie,
16532 }(window, window.angular),
16535 var U = s.$$minErr("$resource"),
16536 l = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
16539 if (null == (n = t) || "" === n || "hasOwnProperty" === n || !l.test("." + n)) throw U("badmember", 'Dotted member path "@{0}" is invalid.', t);
16540 for (var n, r = t.split("."), i = 0, o = r.length; i < o && s.isDefined(e); i++) {
16542 e = null !== e ? e[a] : void 0
16548 for (var t in n = n || {}, s.forEach(n, function(e, t) {
16550 }), e) !e.hasOwnProperty(t) || "$" === t.charAt(0) && "$" === t.charAt(1) || (n[t] = e[t]);
16553 s.module("ngResource", ["ng"]).info({
16554 angularVersion: "1.7.8"
16555 }).provider("$resource", function() {
16556 var f = /^https?:\/\/\[[^\]]*][^/]*/,
16559 stripTrailingSlashes: !0,
16579 }, this.$get = ["$http", "$log", "$q", "$timeout", function(N, r, I, R) {
16588 u = s.$$encodeUriQuery,
16589 d = s.$$encodeUriSegment;
16592 this.template = e, this.defaults = j({}, a.defaults, t), this.urlParams = {}
16594 return o.prototype = {
16595 setUrlParams: function(n, r, e) {
16596 var i, o, a = this,
16597 s = e || a.template,
16599 l = a.urlParams = Object.create(null);
16600 H(s.split(/\W/), function(e) {
16601 if ("hasOwnProperty" === e) throw U("badname", "hasOwnProperty is not a valid parameter name.");
16602 !new RegExp("^\\d+$").test(e) && e && new RegExp("(^|[^\\\\]):" + e + "(\\W|$)").test(s) && (l[e] = {
16603 isQueryParamValue: new RegExp("\\?.*=:" + e + "(?:\\W|$)").test(s)
16605 }), s = (s = s.replace(/\\:/g, ":")).replace(f, function(e) {
16607 }), r = r || {}, H(a.urlParams, function(e, t) {
16608 i = r.hasOwnProperty(t) ? r[t] : a.defaults[t], s = c(i) && null !== i ? (o = e.isQueryParamValue ? u(i, !0) : d(i), s.replace(new RegExp(":" + t + "(\\W|$)", "g"), function(e, t) {
16610 })) : s.replace(new RegExp("(/?):" + t + "(\\W|$)", "g"), function(e, t, n) {
16611 return "/" === n.charAt(0) ? n : t + n
16613 }), a.defaults.stripTrailingSlashes && (s = s.replace(/\/+$/, "") || "/"), s = s.replace(/\/\.(?=\w+($|\?))/, "."), n.url = t + s.replace(/\/(\\|%5C)\./, "/."), H(r, function(e, t) {
16614 a.urlParams[t] || (n.params = n.params || {}, n.params[t] = e)
16618 function(e, A, t, n) {
16619 var S = new o(e, n);
16628 return t = j({}, a.defaults.actions, t), O.prototype.toJSON = function() {
16629 var e = j({}, this);
16630 return delete e.$promise, delete e.$resolved, delete e.$cancelRequest, e
16631 }, H(t, function(C, k) {
16632 var x = !0 === C.hasBody || !1 !== C.hasBody && /^(POST|PUT|PATCH)$/i.test(C.method),
16634 M = c(C.cancellable) ? C.cancellable : S.defaults.cancellable;
16635 T && !i(T) && (r.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 C.timeout, T = null), O[k] = function(e, t, n, r) {
16636 var i, o, a, s = {};
16637 switch (arguments.length) {
16643 s = e, i = t, o = n;
16652 q(e) ? o = e : x ? i = e : s = e;
16657 throw U("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
16659 var l, c, u, d, f, h, p = this instanceof O,
16660 m = p ? i : C.isArray ? [] : new O(i),
16662 v = C.interceptor && C.interceptor.request || void 0,
16663 b = C.interceptor && C.interceptor.requestError || void 0,
16664 y = C.interceptor && C.interceptor.response || D,
16665 _ = C.interceptor && C.interceptor.responseError || I.reject,
16666 $ = o ? function(e) {
16667 o(e, u.headers, u.status, u.statusText)
16670 H(C, function(e, t) {
16677 case "interceptor":
16678 case "cancellable":
16680 }), !p && M && (l = I.defer(), g.timeout = l.promise, T && (c = R(l.resolve, T))), x && (g.data = i), S.setUrlParams(g, j({}, (d = i, f = C.params || {}, h = {}, f = j({}, A, f), H(f, function(e, t) {
16681 q(e) && (e = e(d)), h[t] = e && e.charAt && "@" === e.charAt(0) ? V(d, e.substr(1)) : e
16682 }), h), s), C.url);
16683 var E = I.resolve(g).then(v).catch(b).then(N);
16684 return (E = (E = E.then(function(e) {
16687 if (F(t) !== !!C.isArray) throw U("badcfg", "Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})", k, C.isArray ? "array" : "object", F(t) ? "array" : "object", g.method, g.url);
16688 if (C.isArray) m.length = 0, H(t, function(e) {
16689 "object" == typeof e ? m.push(new O(e)) : m.push(e)
16692 var n = m.$promise;
16693 B(t, m), m.$promise = n
16696 return e.resource = m, y(u = e)
16698 return e.resource = m, _(u = e)
16699 })).finally(function() {
16700 m.$resolved = !0, !p && M && (m.$cancelRequest = P, R.cancel(c), l = c = g.timeout = null)
16701 })).then($, w), p ? E : (m.$promise = E, m.$resolved = !1, M && (m.$cancelRequest = function(e) {
16702 E.catch(P), null !== l && l.resolve(e)
16704 }, O.prototype["$" + k] = function(e, t, n) {
16705 q(e) && (n = t, t = e, e = {});
16706 var r = O[k].call(this, e, this, t, n);
16707 return r.$promise || r
16713 }(window, window.angular),
16715 "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
16716 }(this, function() {
16721 return e.apply(null, arguments)
16725 return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
16729 return null != e && "[object Object]" === Object.prototype.toString.call(e)
16733 return void 0 === e
16737 return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
16741 return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
16746 for (n = 0; n < e.length; ++n) r.push(t(e[n], n));
16751 return Object.prototype.hasOwnProperty.call(e, t)
16755 for (var n in t) p(t, n) && (e[n] = t[n]);
16756 return p(t, "toString") && (e.toString = t.toString), p(t, "valueOf") && (e.valueOf = t.valueOf), e
16759 function g(e, t, n, r) {
16760 return Tt(e, t, n, r, !0).utc()
16764 return null == e._pf && (e._pf = {
16771 invalidMonth: null,
16773 userInvalidated: !1,
16775 parsedDateParts: [],
16778 weekdayMismatch: !1
16783 if (null == e._isValid) {
16785 n = i.call(t.parsedDateParts, function(e) {
16788 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);
16789 if (e._strict && (r = r && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return r;
16797 return null != e ? m(v(t), e) : v(t).userInvalidated = !0, t
16799 i = Array.prototype.some ? Array.prototype.some : function(e) {
16800 for (var t = Object(this), n = t.length >>> 0, r = 0; r < n; r++)
16801 if (r in t && e.call(this, t[r], r, t)) return !0;
16804 var o = f.momentProperties = [];
16808 if (c(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), c(t._i) || (e._i = t._i), c(t._f) || (e._f = t._f), c(t._l) || (e._l = t._l), c(t._strict) || (e._strict = t._strict), c(t._tzm) || (e._tzm = t._tzm), c(t._isUTC) || (e._isUTC = t._isUTC), c(t._offset) || (e._offset = t._offset), c(t._pf) || (e._pf = v(t)), c(t._locale) || (e._locale = t._locale), 0 < o.length)
16809 for (n = 0; n < o.length; n++) c(i = t[r = o[n]]) || (e[r] = i);
16815 _(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === t && (t = !0, f.updateOffset(this), t = !1)
16819 return e instanceof $ || null != e && null != e._isAMomentObject
16823 return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
16829 return 0 !== t && isFinite(t) && (n = E(t)), n
16832 function a(e, t, n) {
16833 var r, i = Math.min(e.length, t.length),
16834 o = Math.abs(e.length - t.length),
16836 for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && C(e[r]) !== C(t[r])) && a++;
16841 !1 === f.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + e)
16846 return m(function() {
16847 if (null != f.deprecationHandler && f.deprecationHandler(null, i), a) {
16848 for (var e, t = [], n = 0; n < arguments.length; n++) {
16849 if (e = "", "object" == typeof arguments[n]) {
16850 for (var r in e += "\n[" + n + "] ", arguments[0]) e += r + ": " + arguments[0][r] + ", ";
16852 } else e = arguments[n];
16855 k(i + "\nArguments: " + Array.prototype.slice.call(t).join("") + "\n" + (new Error).stack), a = !1
16857 return o.apply(this, arguments)
16863 null != f.deprecationHandler && f.deprecationHandler(e, t), x[e] || (k(t), x[e] = !0)
16867 return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
16871 var n, r = m({}, e);
16872 for (n in t) p(t, n) && (l(e[n]) && l(t[n]) ? (r[n] = {}, m(r[n], e[n]), m(r[n], t[n])) : null != t[n] ? r[n] = t[n] : delete r[n]);
16873 for (n in e) p(e, n) && !p(t, n) && l(e[n]) && (r[n] = m({}, r[n]));
16878 null != e && this.set(e)
16880 f.suppressDeprecationWarnings = !1, f.deprecationHandler = null, r = Object.keys ? Object.keys : function(e) {
16882 for (t in e) p(e, t) && n.push(t);
16888 var n = e.toLowerCase();
16889 D[n] = D[n + "s"] = D[t] = e
16893 return "string" == typeof e ? D[e] || D[e.toLowerCase()] : void 0
16898 for (n in e) p(e, n) && (t = N(n)) && (r[t] = e[n]);
16907 function H(e, t, n) {
16908 var r = "" + Math.abs(e),
16910 return (0 <= e ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
16912 var j = /(\[[^\[]*\])|(\\)?([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,
16913 L = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
16917 function U(e, t, n, r) {
16919 "string" == typeof r && (i = function() {
16921 }), e && (q[e] = i), t && (q[t[0]] = function() {
16922 return H(i.apply(this, arguments), t[1], t[2])
16923 }), n && (q[n] = function() {
16924 return this.localeData().ordinal(i.apply(this, arguments), e)
16929 return e.isValid() ? (t = B(t, e.localeData()), F[t] = F[t] || function(r) {
16930 var e, i, t, o = r.match(j);
16931 for (e = 0, i = o.length; e < i; e++) q[o[e]] ? o[e] = q[o[e]] : o[e] = (t = o[e]).match(/\[[\s\S]/) ? t.replace(/^\[|\]$/g, "") : t.replace(/\\/g, "");
16932 return function(e) {
16934 for (t = 0; t < i; t++) n += M(o[t]) ? o[t].call(e, r) : o[t];
16937 }(t), F[t](e)) : e.localeData().invalidDate()
16944 return t.longDateFormat(e) || e
16946 for (L.lastIndex = 0; 0 <= n && L.test(e);) e = e.replace(L, r), L.lastIndex = 0, n -= 1;
16956 Q = /\d\d\d\d\d\d?/,
16959 te = /[+-]?\d{1,6}/,
16962 ie = /Z|[+-]\d\d:?\d\d/gi,
16963 oe = /Z|[+-]\d\d(?::?\d\d)?/gi,
16964 ae = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
16967 function le(e, n, r) {
16968 se[e] = M(n) ? n : function(e, t) {
16969 return e && r ? r : n
16973 function ce(e, t) {
16974 return p(se, e) ? se[e](t._strict, t._locale) : new RegExp(ue(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, r, i) {
16975 return t || n || r || i
16980 return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
16984 function fe(e, n) {
16986 for ("string" == typeof e && (e = [e]), u(n) && (r = function(e, t) {
16988 }), t = 0; t < e.length; t++) de[e[t]] = r
16991 function he(e, i) {
16992 fe(e, function(e, t, n, r) {
16993 n._w = n._w || {}, i(e, n._w, n, r)
17007 return Ce(e) ? 366 : 365
17011 return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
17013 U("Y", 0, 0, function() {
17014 var e = this.year();
17015 return e <= 9999 ? "" + e : "+" + e
17016 }), U(0, ["YY", 2], 0, function() {
17017 return this.year() % 100
17018 }), U(0, ["YYYY", 4], 0, "year"), U(0, ["YYYYY", 5], 0, "year"), U(0, ["YYYYYY", 6, !0], 0, "year"), O("year", "y"), P("year", 1), le("Y", re), le("YY", Z, W), le("YYYY", ee, G), le("YYYYY", te, K), le("YYYYYY", te, K), fe(["YYYYY", "YYYYYY"], pe), fe("YYYY", function(e, t) {
17019 t[pe] = 2 === e.length ? f.parseTwoDigitYear(e) : C(e)
17020 }), fe("YY", function(e, t) {
17021 t[pe] = f.parseTwoDigitYear(e)
17022 }), fe("Y", function(e, t) {
17023 t[pe] = parseInt(e, 10)
17024 }), f.parseTwoDigitYear = function(e) {
17025 return C(e) + (68 < C(e) ? 1900 : 2e3)
17027 var ke, xe = Te("FullYear", !0);
17029 function Te(t, n) {
17030 return function(e) {
17031 return null != e ? (Ae(this, t, e), f.updateOffset(this, n), this) : Me(this, t)
17035 function Me(e, t) {
17036 return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
17039 function Ae(e, t, n) {
17040 e.isValid() && !isNaN(n) && ("FullYear" === t && Ce(e.year()) && 1 === e.month() && 29 === e.date() ? e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), Se(n, e.month())) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n))
17043 function Se(e, t) {
17044 if (isNaN(e) || isNaN(t)) return NaN;
17045 var n, r = (t % (n = 12) + n) % n;
17046 return e += (t - r) / 12, 1 === r ? Ce(e) ? 29 : 28 : 31 - r % 7 % 2
17048 ke = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
17050 for (t = 0; t < this.length; ++t)
17051 if (this[t] === e) return t;
17053 }, U("M", ["MM", 2], "Mo", function() {
17054 return this.month() + 1
17055 }), U("MMM", 0, 0, function(e) {
17056 return this.localeData().monthsShort(this, e)
17057 }), U("MMMM", 0, 0, function(e) {
17058 return this.localeData().months(this, e)
17059 }), O("month", "M"), P("month", 8), le("M", Z), le("MM", Z, W), le("MMM", function(e, t) {
17060 return t.monthsShortRegex(e)
17061 }), le("MMMM", function(e, t) {
17062 return t.monthsRegex(e)
17063 }), fe(["M", "MM"], function(e, t) {
17065 }), fe(["MMM", "MMMM"], function(e, t, n, r) {
17066 var i = n._locale.monthsParse(e, r, n._strict);
17067 null != i ? t[me] = i : v(n).invalidMonth = e
17069 var De = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
17070 Oe = "January_February_March_April_May_June_July_August_September_October_November_December".split("_");
17071 var Ne = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");
17073 function Ie(e, t) {
17075 if (!e.isValid()) return e;
17076 if ("string" == typeof t)
17077 if (/^\d+$/.test(t)) t = C(t);
17078 else if (!u(t = e.localeData().monthsParse(t))) return e;
17079 return n = Math.min(e.date(), Se(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
17083 return null != e ? (Ie(this, e), f.updateOffset(this, !0), this) : Me(this, "Month")
17090 return t.length - e.length
17095 for (t = 0; t < 12; t++) n = g([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, ""));
17096 for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++) r[t] = ue(r[t]), i[t] = ue(i[t]);
17097 for (t = 0; t < 24; t++) o[t] = ue(o[t]);
17098 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")
17103 if (e < 100 && 0 <= e) {
17104 var n = Array.prototype.slice.call(arguments);
17105 n[0] = e + 400, t = new Date(Date.UTC.apply(null, n)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)
17106 } else t = new Date(Date.UTC.apply(null, arguments));
17110 function Fe(e, t, n) {
17112 return -((7 + Le(e, 0, r).getUTCDay() - t) % 7) + r - 1
17115 function qe(e, t, n, r, i) {
17116 var o, a, s = 1 + 7 * (t - 1) + (7 + n - r) % 7 + Fe(e, r, i);
17117 return a = s <= 0 ? Ee(o = e - 1) + s : s > Ee(e) ? (o = e + 1, s - Ee(e)) : (o = e, s), {
17123 function Ue(e, t, n) {
17124 var r, i, o = Fe(e.year(), t, n),
17125 a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1;
17126 return a < 1 ? r = a + Ve(i = e.year() - 1, t, n) : a > Ve(e.year(), t, n) ? (r = a - Ve(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), {
17132 function Ve(e, t, n) {
17133 var r = Fe(e, t, n),
17134 i = Fe(e + 1, t, n);
17135 return (Ee(e) - r + i) / 7
17137 U("w", ["ww", 2], "wo", "week"), U("W", ["WW", 2], "Wo", "isoWeek"), O("week", "w"), O("isoWeek", "W"), P("week", 5), P("isoWeek", 5), le("w", Z), le("ww", Z, W), le("W", Z), le("WW", Z, W), he(["w", "ww", "W", "WW"], function(e, t, n, r) {
17138 t[r.substr(0, 1)] = C(e)
17141 function Be(e, t) {
17142 return e.slice(t, 7).concat(e.slice(0, t))
17144 U("d", 0, "do", "day"), U("dd", 0, 0, function(e) {
17145 return this.localeData().weekdaysMin(this, e)
17146 }), U("ddd", 0, 0, function(e) {
17147 return this.localeData().weekdaysShort(this, e)
17148 }), U("dddd", 0, 0, function(e) {
17149 return this.localeData().weekdays(this, e)
17150 }), U("e", 0, 0, "weekday"), U("E", 0, 0, "isoWeekday"), O("day", "d"), O("weekday", "e"), O("isoWeekday", "E"), P("day", 11), P("weekday", 11), P("isoWeekday", 11), le("d", Z), le("e", Z), le("E", Z), le("dd", function(e, t) {
17151 return t.weekdaysMinRegex(e)
17152 }), le("ddd", function(e, t) {
17153 return t.weekdaysShortRegex(e)
17154 }), le("dddd", function(e, t) {
17155 return t.weekdaysRegex(e)
17156 }), he(["dd", "ddd", "dddd"], function(e, t, n, r) {
17157 var i = n._locale.weekdaysParse(e, r, n._strict);
17158 null != i ? t.d = i : v(n).invalidWeekday = e
17159 }), he(["d", "e", "E"], function(e, t, n, r) {
17162 var ze = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");
17163 var We = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");
17164 var Ye = "Su_Mo_Tu_We_Th_Fr_Sa".split("_");
17171 return t.length - e.length
17173 var t, n, r, i, o, a = [],
17177 for (t = 0; t < 7; t++) n = g([2e3, 1]).day(t), r = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), o = this.weekdays(n, ""), a.push(r), s.push(i), l.push(o), c.push(r), c.push(i), c.push(o);
17178 for (a.sort(e), s.sort(e), l.sort(e), c.sort(e), t = 0; t < 7; t++) s[t] = ue(s[t]), l[t] = ue(l[t]), c[t] = ue(c[t]);
17179 this._weekdaysRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i")
17183 return this.hours() % 12 || 12
17186 function Je(e, t) {
17187 U(e, 0, 0, function() {
17188 return this.localeData().meridiem(this.hours(), this.minutes(), t)
17192 function et(e, t) {
17193 return t._meridiemParse
17195 U("H", ["HH", 2], 0, "hour"), U("h", ["hh", 2], 0, Qe), U("k", ["kk", 2], 0, function() {
17196 return this.hours() || 24
17197 }), U("hmm", 0, 0, function() {
17198 return "" + Qe.apply(this) + H(this.minutes(), 2)
17199 }), U("hmmss", 0, 0, function() {
17200 return "" + Qe.apply(this) + H(this.minutes(), 2) + H(this.seconds(), 2)
17201 }), U("Hmm", 0, 0, function() {
17202 return "" + this.hours() + H(this.minutes(), 2)
17203 }), U("Hmmss", 0, 0, function() {
17204 return "" + this.hours() + H(this.minutes(), 2) + H(this.seconds(), 2)
17205 }), Je("a", !0), Je("A", !1), O("hour", "h"), P("hour", 13), le("a", et), le("A", et), le("H", Z), le("h", Z), le("k", Z), le("HH", Z, W), le("hh", Z, W), le("kk", Z, W), le("hmm", X), le("hmmss", Q), le("Hmm", X), le("Hmmss", Q), fe(["H", "HH"], ve), fe(["k", "kk"], function(e, t, n) {
17207 t[ve] = 24 === r ? 0 : r
17208 }), fe(["a", "A"], function(e, t, n) {
17209 n._isPm = n._locale.isPM(e), n._meridiem = e
17210 }), fe(["h", "hh"], function(e, t, n) {
17211 t[ve] = C(e), v(n).bigHour = !0
17212 }), fe("hmm", function(e, t, n) {
17213 var r = e.length - 2;
17214 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r)), v(n).bigHour = !0
17215 }), fe("hmmss", function(e, t, n) {
17216 var r = e.length - 4,
17218 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r, 2)), t[ye] = C(e.substr(i)), v(n).bigHour = !0
17219 }), fe("Hmm", function(e, t, n) {
17220 var r = e.length - 2;
17221 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r))
17222 }), fe("Hmmss", function(e, t, n) {
17223 var r = e.length - 4,
17225 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r, 2)), t[ye] = C(e.substr(i))
17227 var tt, nt = Te("Hours", !0),
17230 sameDay: "[Today at] LT",
17231 nextDay: "[Tomorrow at] LT",
17232 nextWeek: "dddd [at] LT",
17233 lastDay: "[Yesterday at] LT",
17234 lastWeek: "[Last] dddd [at] LT",
17241 LL: "MMMM D, YYYY",
17242 LLL: "MMMM D, YYYY h:mm A",
17243 LLLL: "dddd, MMMM D, YYYY h:mm A"
17245 invalidDate: "Invalid date",
17247 dayOfMonthOrdinalParse: /\d{1,2}/,
17251 s: "a few seconds",
17273 meridiemParse: /[ap]\.?m?\.?/i
17279 return e ? e.toLowerCase().replace("_", "-") : e
17284 if (!it[e] && "undefined" != typeof module && module && module.exports) try {
17285 t = tt._abbr, require("./locale/" + e), lt(t)
17290 function lt(e, t) {
17292 return e && ((n = c(t) ? ut(e) : ct(e, t)) ? tt = n : "undefined" != typeof console && console.warn && console.warn("Locale " + e + " not found. Did you forget to load it?")), tt._abbr
17295 function ct(e, t) {
17296 if (null === t) return delete it[e], null;
17298 if (t.abbr = e, null != it[e]) T("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."), r = it[e]._config;
17299 else if (null != t.parentLocale)
17300 if (null != it[t.parentLocale]) r = it[t.parentLocale]._config;
17302 if (null == (n = st(t.parentLocale))) return ot[t.parentLocale] || (ot[t.parentLocale] = []), ot[t.parentLocale].push({
17307 } return it[e] = new S(A(r, t)), ot[e] && ot[e].forEach(function(e) {
17308 ct(e.name, e.config)
17314 if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return tt;
17316 if (t = st(e)) return t;
17319 return function(e) {
17320 for (var t, n, r, i, o = 0; o < e.length;) {
17321 for (t = (i = at(e[o]).split("-")).length, n = (n = at(e[o + 1])) ? n.split("-") : null; 0 < t;) {
17322 if (r = st(i.slice(0, t).join("-"))) return r;
17323 if (n && n.length >= t && a(i, n, !0) >= t - 1) break;
17334 return n && -2 === v(e).overflow && (t = n[me] < 0 || 11 < n[me] ? me : n[ge] < 1 || n[ge] > Se(n[pe], n[me]) ? ge : n[ve] < 0 || 24 < n[ve] || 24 === n[ve] && (0 !== n[be] || 0 !== n[ye] || 0 !== n[_e]) ? ve : n[be] < 0 || 59 < n[be] ? be : n[ye] < 0 || 59 < n[ye] ? ye : n[_e] < 0 || 999 < n[_e] ? _e : -1, v(e)._overflowDayOfYear && (t < pe || ge < t) && (t = ge), v(e)._overflowWeeks && -1 === t && (t = $e), v(e)._overflowWeekday && -1 === t && (t = we), v(e).overflow = t), e
17337 function ft(e, t, n) {
17338 return null != e ? e : null != t ? t : n
17342 var t, n, r, i, o, a = [];
17345 for (s = e, l = new Date(f.now()), r = s._useUTC ? [l.getUTCFullYear(), l.getUTCMonth(), l.getUTCDate()] : [l.getFullYear(), l.getMonth(), l.getDate()], e._w && null == e._a[ge] && null == e._a[me] && function(e) {
17346 var t, n, r, i, o, a, s, l;
17347 if (null != (t = e._w).GG || null != t.W || null != t.E) o = 1, a = 4, n = ft(t.GG, e._a[pe], Ue(Mt(), 1, 4).year), r = ft(t.W, 1), ((i = ft(t.E, 1)) < 1 || 7 < i) && (l = !0);
17349 o = e._locale._week.dow, a = e._locale._week.doy;
17350 var c = Ue(Mt(), o, a);
17351 n = ft(t.gg, e._a[pe], c.year), r = ft(t.w, c.week), null != t.d ? ((i = t.d) < 0 || 6 < i) && (l = !0) : null != t.e ? (i = t.e + o, (t.e < 0 || 6 < t.e) && (l = !0)) : i = o
17353 r < 1 || r > Ve(n, o, a) ? v(e)._overflowWeeks = !0 : null != l ? v(e)._overflowWeekday = !0 : (s = qe(n, r, i, o, a), e._a[pe] = s.year, e._dayOfYear = s.dayOfYear)
17354 }(e), null != e._dayOfYear && (o = ft(e._a[pe], r[pe]), (e._dayOfYear > Ee(o) || 0 === e._dayOfYear) && (v(e)._overflowDayOfYear = !0), n = Le(o, 0, e._dayOfYear), e._a[me] = n.getUTCMonth(), e._a[ge] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = a[t] = r[t];
17355 for (; t < 7; t++) e._a[t] = a[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
17356 24 === e._a[ve] && 0 === e._a[be] && 0 === e._a[ye] && 0 === e._a[_e] && (e._nextDay = !0, e._a[ve] = 0), e._d = (e._useUTC ? Le : function(e, t, n, r, i, o, a) {
17358 return e < 100 && 0 <= e ? (s = new Date(e + 400, t, n, r, i, o, a), isFinite(s.getFullYear()) && s.setFullYear(e)) : s = new Date(e, t, n, r, i, o, a), s
17359 }).apply(null, a), i = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[ve] = 24), e._w && void 0 !== e._w.d && e._w.d !== i && (v(e).weekdayMismatch = !0)
17362 var pt = /^\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)?)?$/,
17363 mt = /^\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)?)?$/,
17364 gt = /Z|[+-]\d\d(?::?\d\d)?/,
17366 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
17367 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
17368 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
17369 ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
17370 ["YYYY-DDD", /\d{4}-\d{3}/],
17371 ["YYYY-MM", /\d{4}-\d\d/, !1],
17372 ["YYYYYYMMDD", /[+-]\d{10}/],
17373 ["YYYYMMDD", /\d{8}/],
17374 ["GGGG[W]WWE", /\d{4}W\d{3}/],
17375 ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
17376 ["YYYYDDD", /\d{7}/]
17379 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
17380 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
17381 ["HH:mm:ss", /\d\d:\d\d:\d\d/],
17382 ["HH:mm", /\d\d:\d\d/],
17383 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
17384 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
17385 ["HHmmss", /\d\d\d\d\d\d/],
17386 ["HHmm", /\d\d\d\d/],
17389 yt = /^\/?Date\((\-?\d+)/i;
17392 var t, n, r, i, o, a, s = e._i,
17393 l = pt.exec(s) || mt.exec(s);
17395 for (v(e).iso = !0, t = 0, n = vt.length; t < n; t++)
17396 if (vt[t][1].exec(l[1])) {
17397 i = vt[t][0], r = !1 !== vt[t][2];
17399 } if (null == i) return void(e._isValid = !1);
17401 for (t = 0, n = bt.length; t < n; t++)
17402 if (bt[t][1].exec(l[3])) {
17403 o = (l[2] || " ") + bt[t][0];
17405 } if (null == o) return void(e._isValid = !1)
17407 if (!r && null != o) return void(e._isValid = !1);
17409 if (!gt.exec(l[4])) return void(e._isValid = !1);
17412 e._f = i + (o || "") + (a || ""), kt(e)
17413 } else e._isValid = !1
17415 var $t = /^(?:(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}))$/;
17417 function wt(e, t, n, r, i, o) {
17418 var a = [function(e) {
17419 var t = parseInt(e, 10); {
17420 if (t <= 49) return 2e3 + t;
17421 if (t <= 999) return 1900 + t
17424 }(e), Ne.indexOf(t), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)];
17425 return o && a.push(parseInt(o, 10)), a
17441 var t, n, r, i = $t.exec(e._i.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""));
17443 var o = wt(i[4], i[3], i[2], i[5], i[6], i[7]);
17444 if (t = i[1], n = o, r = e, t && We.indexOf(t) !== new Date(n[0], n[1], n[2]).getDay() && (v(r).weekdayMismatch = !0, !(r._isValid = !1))) return;
17445 e._a = o, e._tzm = function(e, t, n) {
17446 if (e) return Et[e];
17448 var r = parseInt(n, 10),
17450 return (r - i) / 100 * 60 + i
17451 }(i[8], i[9], i[10]), e._d = Le.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), v(e).rfc2822 = !0
17452 } else e._isValid = !1
17456 if (e._f !== f.ISO_8601)
17457 if (e._f !== f.RFC_2822) {
17458 e._a = [], v(e).empty = !0;
17459 var t, n, r, i, o, a, s, l, c = "" + e._i,
17462 for (r = B(e._f, e._locale).match(j) || [], t = 0; t < r.length; t++) i = r[t], (n = (c.match(ce(i, e)) || [])[0]) && (0 < (o = c.substr(0, c.indexOf(n))).length && v(e).unusedInput.push(o), c = c.slice(c.indexOf(n) + n.length), d += n.length), q[i] ? (n ? v(e).empty = !1 : v(e).unusedTokens.push(i), a = i, l = e, null != (s = n) && p(de, a) && de[a](s, l._a, l, a)) : e._strict && !n && v(e).unusedTokens.push(i);
17463 v(e).charsLeftOver = u - d, 0 < c.length && v(e).unusedInput.push(c), e._a[ve] <= 12 && !0 === v(e).bigHour && 0 < e._a[ve] && (v(e).bigHour = void 0), v(e).parsedDateParts = e._a.slice(0), v(e).meridiem = e._meridiem, e._a[ve] = function(e, t, n) {
17465 if (null == n) return t;
17466 return null != e.meridiemHour ? e.meridiemHour(t, n) : (null != e.isPM && ((r = e.isPM(n)) && t < 12 && (t += 12), r || 12 !== t || (t = 0)), t)
17467 }(e._locale, e._a[ve], e._meridiem), ht(e), dt(e)
17473 var t, n, r, i, o = e._i,
17475 return e._locale = e._locale || ut(e._l), null === o || void 0 === a && "" === o ? y({
17477 }) : ("string" == typeof o && (e._i = o = e._locale.preparse(o)), w(o) ? new $(dt(o)) : (d(o) ? e._d = o : s(a) ? function(e) {
17479 if (0 === e._f.length) return v(e).invalidFormat = !0, e._d = new Date(NaN);
17480 for (i = 0; i < e._f.length; i++) o = 0, t = _({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], kt(t), b(t) && (o += v(t).charsLeftOver, o += 10 * v(t).unusedTokens.length, v(t).score = o, (null == r || o < r) && (r = o, n = t));
17482 }(e) : a ? kt(e) : c(n = (t = e)._i) ? t._d = new Date(f.now()) : d(n) ? t._d = new Date(n.valueOf()) : "string" == typeof n ? (r = t, null === (i = yt.exec(r._i)) ? (_t(r), !1 === r._isValid && (delete r._isValid, Ct(r), !1 === r._isValid && (delete r._isValid, f.createFromInputFallback(r)))) : r._d = new Date(+i[1])) : s(n) ? (t._a = h(n.slice(0), function(e) {
17483 return parseInt(e, 10)
17484 }), ht(t)) : l(n) ? function(e) {
17487 e._a = h([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
17488 return e && parseInt(e, 10)
17491 }(t) : u(n) ? t._d = new Date(n) : f.createFromInputFallback(t), b(e) || (e._d = null), e))
17494 function Tt(e, t, n, r, i) {
17496 return !0 !== n && !1 !== n || (r = n, n = void 0), (l(e) && function(e) {
17497 if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length;
17500 if (e.hasOwnProperty(t)) return !1;
17502 }(e) || s(e) && 0 === e.length) && (e = void 0), a._isAMomentObject = !0, a._useUTC = a._isUTC = i, a._l = n, a._i = e, a._f = t, a._strict = r, (o = new $(dt(xt(a))))._nextDay && (o.add(1, "d"), o._nextDay = void 0), o
17505 function Mt(e, t, n, r) {
17506 return Tt(e, t, n, r, !1)
17508 f.createFromInputFallback = n("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) {
17509 e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
17510 }), f.ISO_8601 = function() {}, f.RFC_2822 = function() {};
17511 var At = n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
17512 var e = Mt.apply(null, arguments);
17513 return this.isValid() && e.isValid() ? e < this ? this : e : y()
17515 St = n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
17516 var e = Mt.apply(null, arguments);
17517 return this.isValid() && e.isValid() ? this < e ? this : e : y()
17520 function Dt(e, t) {
17522 if (1 === t.length && s(t[0]) && (t = t[0]), !t.length) return Mt();
17523 for (n = t[0], r = 1; r < t.length; ++r) t[r].isValid() && !t[r][e](n) || (n = t[r]);
17526 var Ot = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
17531 r = t.quarter || 0,
17533 o = t.week || t.isoWeek || 0,
17538 u = t.millisecond || 0;
17539 this._isValid = function(e) {
17541 if (-1 === ke.call(Ot, t) || null != e[t] && isNaN(e[t])) return !1;
17542 for (var n = !1, r = 0; r < Ot.length; ++r)
17545 parseFloat(e[Ot[r]]) !== C(e[Ot[r]]) && (n = !0)
17547 }(t), this._milliseconds = +u + 1e3 * c + 6e4 * l + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = ut(), this._bubble()
17551 return e instanceof Nt
17555 return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
17558 function Pt(e, n) {
17559 U(e, 0, 0, function() {
17560 var e = this.utcOffset(),
17562 return e < 0 && (e = -e, t = "-"), t + H(~~(e / 60), 2) + n + H(~~e % 60, 2)
17565 Pt("Z", ":"), Pt("ZZ", ""), le("Z", oe), le("ZZ", oe), fe(["Z", "ZZ"], function(e, t, n) {
17566 n._useUTC = !0, n._tzm = jt(oe, e)
17568 var Ht = /([\+\-]|\d\d)/gi;
17570 function jt(e, t) {
17571 var n = (t || "").match(e);
17572 if (null === n) return null;
17573 var r = ((n[n.length - 1] || []) + "").match(Ht) || ["-", 0, 0],
17574 i = 60 * r[1] + C(r[2]);
17575 return 0 === i ? 0 : "+" === r[0] ? i : -i
17578 function Lt(e, t) {
17580 return t._isUTC ? (n = t.clone(), r = (w(e) || d(e) ? e.valueOf() : Mt(e).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + r), f.updateOffset(n, !1), n) : Mt(e).local()
17584 return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
17588 return !!this.isValid() && (this._isUTC && 0 === this._offset)
17590 f.updateOffset = function() {};
17591 var Ut = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
17592 Vt = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
17594 function Bt(e, t) {
17595 var n, r, i, o = e,
17597 return It(e) ? o = {
17598 ms: e._milliseconds,
17601 } : u(e) ? (o = {}, t ? o[t] = e : o.milliseconds = e) : (a = Ut.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = {
17607 ms: C(Rt(1e3 * a[_e])) * n
17608 }) : (a = Vt.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = {
17616 }) : null == o ? o = {} : "object" == typeof o && ("from" in o || "to" in o) && (i = function(e, t) {
17618 if (!e.isValid() || !t.isValid()) return {
17622 t = Lt(t, e), e.isBefore(t) ? n = Wt(e, t) : ((n = Wt(t, e)).milliseconds = -n.milliseconds, n.months = -n.months);
17624 }(Mt(o.from), Mt(o.to)), (o = {}).ms = i.milliseconds, o.M = i.months), r = new Nt(o), It(e) && p(e, "_locale") && (r._locale = e._locale), r
17627 function zt(e, t) {
17628 var n = e && parseFloat(e.replace(",", "."));
17629 return (isNaN(n) ? 0 : n) * t
17632 function Wt(e, t) {
17634 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
17637 function Yt(r, i) {
17638 return function(e, t) {
17640 return null === t || isNaN(+t) || (T(i, "moment()." + i + "(period, number) is deprecated. Please use moment()." + i + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), n = e, e = t, t = n), Gt(this, Bt(e = "string" == typeof e ? +e : e, t), r), this
17644 function Gt(e, t, n, r) {
17645 var i = t._milliseconds,
17648 e.isValid() && (r = null == r || r, a && Ie(e, Me(e, "Month") + a * n), o && Ae(e, "Date", Me(e, "Date") + o * n), i && e._d.setTime(e._d.valueOf() + i * n), r && f.updateOffset(e, o || a))
17650 Bt.fn = Nt.prototype, Bt.invalid = function() {
17653 var Kt = Yt(1, "add"),
17654 Zt = Yt(-1, "subtract");
17656 function Xt(e, t) {
17657 var n = 12 * (t.year() - e.year()) + (t.month() - e.month()),
17658 r = e.clone().add(n, "months");
17659 return -(n + (t - r < 0 ? (t - r) / (r - e.clone().add(n - 1, "months")) : (t - r) / (e.clone().add(n + 1, "months") - r))) || 0
17664 return void 0 === e ? this._locale._abbr : (null != (t = ut(e)) && (this._locale = t), this)
17666 f.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", f.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
17667 var Jt = n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
17668 return void 0 === e ? this.localeData() : this.locale(e)
17672 return this._locale
17674 var tn = 126227808e5;
17676 function nn(e, t) {
17677 return (e % t + t) % t
17680 function rn(e, t, n) {
17681 return e < 100 && 0 <= e ? new Date(e + 400, t, n) - tn : new Date(e, t, n).valueOf()
17684 function on(e, t, n) {
17685 return e < 100 && 0 <= e ? Date.UTC(e + 400, t, n) - tn : Date.UTC(e, t, n)
17688 function an(e, t) {
17689 U(0, [e, e.length], 0, t)
17692 function sn(e, t, n, r, i) {
17694 return null == e ? Ue(this, r, i).year : ((o = Ve(e, r, i)) < t && (t = o), function(e, t, n, r, i) {
17695 var o = qe(e, t, n, r, i),
17696 a = Le(o.year, 0, o.dayOfYear);
17697 return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
17698 }.call(this, e, t, n, r, i))
17700 U(0, ["gg", 2], 0, function() {
17701 return this.weekYear() % 100
17702 }), U(0, ["GG", 2], 0, function() {
17703 return this.isoWeekYear() % 100
17704 }), an("gggg", "weekYear"), an("ggggg", "weekYear"), an("GGGG", "isoWeekYear"), an("GGGGG", "isoWeekYear"), O("weekYear", "gg"), O("isoWeekYear", "GG"), P("weekYear", 1), P("isoWeekYear", 1), le("G", re), le("g", re), le("GG", Z, W), le("gg", Z, W), le("GGGG", ee, G), le("gggg", ee, G), le("GGGGG", te, K), le("ggggg", te, K), he(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, n, r) {
17705 t[r.substr(0, 2)] = C(e)
17706 }), he(["gg", "GG"], function(e, t, n, r) {
17707 t[r] = f.parseTwoDigitYear(e)
17708 }), U("Q", 0, "Qo", "quarter"), O("quarter", "Q"), P("quarter", 7), le("Q", z), fe("Q", function(e, t) {
17709 t[me] = 3 * (C(e) - 1)
17710 }), U("D", ["DD", 2], "Do", "date"), O("date", "D"), P("date", 9), le("D", Z), le("DD", Z, W), le("Do", function(e, t) {
17711 return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
17712 }), fe(["D", "DD"], ge), fe("Do", function(e, t) {
17713 t[ge] = C(e.match(Z)[0])
17715 var ln = Te("Date", !0);
17716 U("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), O("dayOfYear", "DDD"), P("dayOfYear", 4), le("DDD", J), le("DDDD", Y), fe(["DDD", "DDDD"], function(e, t, n) {
17717 n._dayOfYear = C(e)
17718 }), U("m", ["mm", 2], 0, "minute"), O("minute", "m"), P("minute", 14), le("m", Z), le("mm", Z, W), fe(["m", "mm"], be);
17719 var cn = Te("Minutes", !1);
17720 U("s", ["ss", 2], 0, "second"), O("second", "s"), P("second", 15), le("s", Z), le("ss", Z, W), fe(["s", "ss"], ye);
17721 var un, dn = Te("Seconds", !1);
17722 for (U("S", 0, 0, function() {
17723 return ~~(this.millisecond() / 100)
17724 }), U(0, ["SS", 2], 0, function() {
17725 return ~~(this.millisecond() / 10)
17726 }), U(0, ["SSS", 3], 0, "millisecond"), U(0, ["SSSS", 4], 0, function() {
17727 return 10 * this.millisecond()
17728 }), U(0, ["SSSSS", 5], 0, function() {
17729 return 100 * this.millisecond()
17730 }), U(0, ["SSSSSS", 6], 0, function() {
17731 return 1e3 * this.millisecond()
17732 }), U(0, ["SSSSSSS", 7], 0, function() {
17733 return 1e4 * this.millisecond()
17734 }), U(0, ["SSSSSSSS", 8], 0, function() {
17735 return 1e5 * this.millisecond()
17736 }), U(0, ["SSSSSSSSS", 9], 0, function() {
17737 return 1e6 * this.millisecond()
17738 }), O("millisecond", "ms"), P("millisecond", 16), le("S", J, z), le("SS", J, W), le("SSS", J, Y), un = "SSSS"; un.length <= 9; un += "S") le(un, ne);
17740 function fn(e, t) {
17741 t[_e] = C(1e3 * ("0." + e))
17743 for (un = "S"; un.length <= 9; un += "S") fe(un, fn);
17744 var hn = Te("Milliseconds", !1);
17745 U("z", 0, 0, "zoneAbbr"), U("zz", 0, 0, "zoneName");
17746 var pn = $.prototype;
17751 pn.add = Kt, pn.calendar = function(e, t) {
17753 r = Lt(n, this).startOf("day"),
17754 i = f.calendarFormat(this, r) || "sameElse",
17755 o = t && (M(t[i]) ? t[i].call(this, n) : t[i]);
17756 return this.format(o || this.localeData().calendar(i, this, Mt(n)))
17757 }, pn.clone = function() {
17759 }, pn.diff = function(e, t, n) {
17761 if (!this.isValid()) return NaN;
17762 if (!(r = Lt(e, this)).isValid()) return NaN;
17763 switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), t = N(t)) {
17765 o = Xt(this, r) / 12;
17771 o = Xt(this, r) / 3;
17774 o = (this - r) / 1e3;
17777 o = (this - r) / 6e4;
17780 o = (this - r) / 36e5;
17783 o = (this - r - i) / 864e5;
17786 o = (this - r - i) / 6048e5;
17791 return n ? o : E(o)
17792 }, pn.endOf = function(e) {
17794 if (void 0 === (e = N(e)) || "millisecond" === e || !this.isValid()) return this;
17795 var n = this._isUTC ? on : rn;
17798 t = n(this.year() + 1, 0, 1) - 1;
17801 t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
17804 t = n(this.year(), this.month() + 1, 1) - 1;
17807 t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
17810 t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
17814 t = n(this.year(), this.month(), this.date() + 1) - 1;
17817 t = this._d.valueOf(), t += 36e5 - nn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5) - 1;
17820 t = this._d.valueOf(), t += 6e4 - nn(t, 6e4) - 1;
17823 t = this._d.valueOf(), t += 1e3 - nn(t, 1e3) - 1
17825 return this._d.setTime(t), f.updateOffset(this, !0), this
17826 }, pn.format = function(e) {
17827 e || (e = this.isUtc() ? f.defaultFormatUtc : f.defaultFormat);
17828 var t = V(this, e);
17829 return this.localeData().postformat(t)
17830 }, pn.from = function(e, t) {
17831 return this.isValid() && (w(e) && e.isValid() || Mt(e).isValid()) ? Bt({
17834 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
17835 }, pn.fromNow = function(e) {
17836 return this.from(Mt(), e)
17837 }, pn.to = function(e, t) {
17838 return this.isValid() && (w(e) && e.isValid() || Mt(e).isValid()) ? Bt({
17841 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
17842 }, pn.toNow = function(e) {
17843 return this.to(Mt(), e)
17844 }, pn.get = function(e) {
17845 return M(this[e = N(e)]) ? this[e]() : this
17846 }, pn.invalidAt = function() {
17847 return v(this).overflow
17848 }, pn.isAfter = function(e, t) {
17849 var n = w(e) ? e : Mt(e);
17850 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = N(t) || "millisecond") ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
17851 }, pn.isBefore = function(e, t) {
17852 var n = w(e) ? e : Mt(e);
17853 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = N(t) || "millisecond") ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
17854 }, pn.isBetween = function(e, t, n, r) {
17855 var i = w(e) ? e : Mt(e),
17856 o = w(t) ? t : Mt(t);
17857 return !!(this.isValid() && i.isValid() && o.isValid()) && ("(" === (r = r || "()")[0] ? this.isAfter(i, n) : !this.isBefore(i, n)) && (")" === r[1] ? this.isBefore(o, n) : !this.isAfter(o, n))
17858 }, pn.isSame = function(e, t) {
17859 var n, r = w(e) ? e : Mt(e);
17860 return !(!this.isValid() || !r.isValid()) && ("millisecond" === (t = N(t) || "millisecond") ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
17861 }, pn.isSameOrAfter = function(e, t) {
17862 return this.isSame(e, t) || this.isAfter(e, t)
17863 }, pn.isSameOrBefore = function(e, t) {
17864 return this.isSame(e, t) || this.isBefore(e, t)
17865 }, pn.isValid = function() {
17867 }, pn.lang = Jt, pn.locale = Qt, pn.localeData = en, pn.max = St, pn.min = At, pn.parsingFlags = function() {
17868 return m({}, v(this))
17869 }, pn.set = function(e, t) {
17870 if ("object" == typeof e)
17871 for (var n = function(e) {
17873 for (var n in e) t.push({
17877 return t.sort(function(e, t) {
17878 return e.priority - t.priority
17880 }(e = I(e)), r = 0; r < n.length; r++) this[n[r].unit](e[n[r].unit]);
17881 else if (M(this[e = N(e)])) return this[e](t);
17883 }, pn.startOf = function(e) {
17885 if (void 0 === (e = N(e)) || "millisecond" === e || !this.isValid()) return this;
17886 var n = this._isUTC ? on : rn;
17889 t = n(this.year(), 0, 1);
17892 t = n(this.year(), this.month() - this.month() % 3, 1);
17895 t = n(this.year(), this.month(), 1);
17898 t = n(this.year(), this.month(), this.date() - this.weekday());
17901 t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
17905 t = n(this.year(), this.month(), this.date());
17908 t = this._d.valueOf(), t -= nn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5);
17911 t = this._d.valueOf(), t -= nn(t, 6e4);
17914 t = this._d.valueOf(), t -= nn(t, 1e3)
17916 return this._d.setTime(t), f.updateOffset(this, !0), this
17917 }, pn.subtract = Zt, pn.toArray = function() {
17918 return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()]
17919 }, pn.toObject = function() {
17921 years: this.year(),
17922 months: this.month(),
17924 hours: this.hours(),
17925 minutes: this.minutes(),
17926 seconds: this.seconds(),
17927 milliseconds: this.milliseconds()
17929 }, pn.toDate = function() {
17930 return new Date(this.valueOf())
17931 }, pn.toISOString = function(e) {
17932 if (!this.isValid()) return null;
17934 n = t ? this.clone().utc() : this;
17935 return n.year() < 0 || 9999 < n.year() ? V(n, t ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : M(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", V(n, "Z")) : V(n, t ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ")
17936 }, pn.inspect = function() {
17937 if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
17940 this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
17941 var n = "[" + e + '("]',
17942 r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
17944 return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
17945 }, pn.toJSON = function() {
17946 return this.isValid() ? this.toISOString() : null
17947 }, pn.toString = function() {
17948 return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
17949 }, pn.unix = function() {
17950 return Math.floor(this.valueOf() / 1e3)
17951 }, pn.valueOf = function() {
17952 return this._d.valueOf() - 6e4 * (this._offset || 0)
17953 }, pn.creationData = function() {
17957 locale: this._locale,
17958 isUTC: this._isUTC,
17959 strict: this._strict
17961 }, pn.year = xe, pn.isLeapYear = function() {
17962 return Ce(this.year())
17963 }, pn.weekYear = function(e) {
17964 return sn.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
17965 }, pn.isoWeekYear = function(e) {
17966 return sn.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
17967 }, pn.quarter = pn.quarters = function(e) {
17968 return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
17969 }, pn.month = Re, pn.daysInMonth = function() {
17970 return Se(this.year(), this.month())
17971 }, pn.week = pn.weeks = function(e) {
17972 var t = this.localeData().week(this);
17973 return null == e ? t : this.add(7 * (e - t), "d")
17974 }, pn.isoWeek = pn.isoWeeks = function(e) {
17975 var t = Ue(this, 1, 4).week;
17976 return null == e ? t : this.add(7 * (e - t), "d")
17977 }, pn.weeksInYear = function() {
17978 var e = this.localeData()._week;
17979 return Ve(this.year(), e.dow, e.doy)
17980 }, pn.isoWeeksInYear = function() {
17981 return Ve(this.year(), 1, 4)
17982 }, pn.date = ln, pn.day = pn.days = function(e) {
17983 if (!this.isValid()) return null != e ? this : NaN;
17984 var t, n, r = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
17985 return null != e ? (t = e, n = this.localeData(), e = "string" != typeof t ? t : isNaN(t) ? "number" == typeof(t = n.weekdaysParse(t)) ? t : null : parseInt(t, 10), this.add(e - r, "d")) : r
17986 }, pn.weekday = function(e) {
17987 if (!this.isValid()) return null != e ? this : NaN;
17988 var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
17989 return null == e ? t : this.add(e - t, "d")
17990 }, pn.isoWeekday = function(e) {
17991 if (!this.isValid()) return null != e ? this : NaN;
17992 if (null == e) return this.day() || 7;
17993 var t, n, r = (t = e, n = this.localeData(), "string" == typeof t ? n.weekdaysParse(t) % 7 || 7 : isNaN(t) ? null : t);
17994 return this.day(this.day() % 7 ? r : r - 7)
17995 }, pn.dayOfYear = function(e) {
17996 var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
17997 return null == e ? t : this.add(e - t, "d")
17998 }, pn.hour = pn.hours = nt, pn.minute = pn.minutes = cn, pn.second = pn.seconds = dn, pn.millisecond = pn.milliseconds = hn, pn.utcOffset = function(e, t, n) {
17999 var r, i = this._offset || 0;
18000 if (!this.isValid()) return null != e ? this : NaN;
18001 if (null == e) return this._isUTC ? i : Ft(this);
18002 if ("string" == typeof e) {
18003 if (null === (e = jt(oe, e))) return this
18004 } else Math.abs(e) < 16 && !n && (e *= 60);
18005 return !this._isUTC && t && (r = Ft(this)), this._offset = e, this._isUTC = !0, null != r && this.add(r, "m"), i !== e && (!t || this._changeInProgress ? Gt(this, Bt(e - i, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, f.updateOffset(this, !0), this._changeInProgress = null)), this
18006 }, pn.utc = function(e) {
18007 return this.utcOffset(0, e)
18008 }, pn.local = function(e) {
18009 return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(Ft(this), "m")), this
18010 }, pn.parseZone = function() {
18011 if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
18012 else if ("string" == typeof this._i) {
18013 var e = jt(ie, this._i);
18014 null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
18017 }, pn.hasAlignedHourOffset = function(e) {
18018 return !!this.isValid() && (e = e ? Mt(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
18019 }, pn.isDST = function() {
18020 return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
18021 }, pn.isLocal = function() {
18022 return !!this.isValid() && !this._isUTC
18023 }, pn.isUtcOffset = function() {
18024 return !!this.isValid() && this._isUTC
18025 }, pn.isUtc = qt, pn.isUTC = qt, pn.zoneAbbr = function() {
18026 return this._isUTC ? "UTC" : ""
18027 }, pn.zoneName = function() {
18028 return this._isUTC ? "Coordinated Universal Time" : ""
18029 }, pn.dates = n("dates accessor is deprecated. Use date instead.", ln), pn.months = n("months accessor is deprecated. Use month instead", Re), pn.years = n("years accessor is deprecated. Use year instead", xe), pn.zone = n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e, t) {
18030 return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
18031 }), pn.isDSTShifted = n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
18032 if (!c(this._isDSTShifted)) return this._isDSTShifted;
18034 if (_(e, this), (e = xt(e))._a) {
18035 var t = e._isUTC ? g(e._a) : Mt(e._a);
18036 this._isDSTShifted = this.isValid() && 0 < a(e._a, t.toArray())
18037 } else this._isDSTShifted = !1;
18038 return this._isDSTShifted
18040 var gn = S.prototype;
18042 function vn(e, t, n, r) {
18048 function bn(e, t, n) {
18049 if (u(e) && (t = e, e = void 0), e = e || "", null != t) return vn(e, t, n, "month");
18051 for (r = 0; r < 12; r++) i[r] = vn(e, r, n, "month");
18055 function yn(e, t, n, r) {
18056 t = ("boolean" == typeof e ? u(t) && (n = t, t = void 0) : (t = e, e = !1, u(n = t) && (n = t, t = void 0)), t || "");
18058 a = e ? o._week.dow : 0;
18059 if (null != n) return vn(t, (n + a) % 7, r, "day");
18061 for (i = 0; i < 7; i++) s[i] = vn(t, (i + a) % 7, r, "day");
18064 gn.calendar = function(e, t, n) {
18065 var r = this._calendar[e] || this._calendar.sameElse;
18066 return M(r) ? r.call(t, n) : r
18067 }, gn.longDateFormat = function(e) {
18068 var t = this._longDateFormat[e],
18069 n = this._longDateFormat[e.toUpperCase()];
18070 return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
18072 }), this._longDateFormat[e])
18073 }, gn.invalidDate = function() {
18074 return this._invalidDate
18075 }, gn.ordinal = function(e) {
18076 return this._ordinal.replace("%d", e)
18077 }, gn.preparse = mn, gn.postformat = mn, gn.relativeTime = function(e, t, n, r) {
18078 var i = this._relativeTime[n];
18079 return M(i) ? i(e, t, n, r) : i.replace(/%d/i, e)
18080 }, gn.pastFuture = function(e, t) {
18081 var n = this._relativeTime[0 < e ? "future" : "past"];
18082 return M(n) ? n(t) : n.replace(/%s/i, t)
18083 }, gn.set = function(e) {
18085 for (n in e) M(t = e[n]) ? this[n] = t : this["_" + n] = t;
18086 this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
18087 }, gn.months = function(e, t) {
18088 return e ? s(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || De).test(t) ? "format" : "standalone"][e.month()] : s(this._months) ? this._months : this._months.standalone
18089 }, gn.monthsShort = function(e, t) {
18090 return e ? s(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[De.test(t) ? "format" : "standalone"][e.month()] : s(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
18091 }, gn.monthsParse = function(e, t, n) {
18093 if (this._monthsParseExact) return function(e, t, n) {
18094 var r, i, o, a = e.toLocaleLowerCase();
18095 if (!this._monthsParse)
18096 for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r) o = g([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase();
18097 return n ? "MMM" === t ? -1 !== (i = ke.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = ke.call(this._longMonthsParse, a)) ? i : null : "MMM" === t ? -1 !== (i = ke.call(this._shortMonthsParse, a)) ? i : -1 !== (i = ke.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = ke.call(this._longMonthsParse, a)) ? i : -1 !== (i = ke.call(this._shortMonthsParse, a)) ? i : null
18098 }.call(this, e, t, n);
18099 for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
18100 if (i = g([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;
18101 if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r;
18102 if (!n && this._monthsParse[r].test(e)) return r
18104 }, gn.monthsRegex = function(e) {
18105 return this._monthsParseExact ? (p(this, "_monthsRegex") || je.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (p(this, "_monthsRegex") || (this._monthsRegex = He), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
18106 }, gn.monthsShortRegex = function(e) {
18107 return this._monthsParseExact ? (p(this, "_monthsRegex") || je.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (p(this, "_monthsShortRegex") || (this._monthsShortRegex = Pe), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
18108 }, gn.week = function(e) {
18109 return Ue(e, this._week.dow, this._week.doy).week
18110 }, gn.firstDayOfYear = function() {
18111 return this._week.doy
18112 }, gn.firstDayOfWeek = function() {
18113 return this._week.dow
18114 }, gn.weekdays = function(e, t) {
18115 var n = s(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? "format" : "standalone"];
18116 return !0 === e ? Be(n, this._week.dow) : e ? n[e.day()] : n
18117 }, gn.weekdaysMin = function(e) {
18118 return !0 === e ? Be(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin
18119 }, gn.weekdaysShort = function(e) {
18120 return !0 === e ? Be(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort
18121 }, gn.weekdaysParse = function(e, t, n) {
18123 if (this._weekdaysParseExact) return function(e, t, n) {
18124 var r, i, o, a = e.toLocaleLowerCase();
18125 if (!this._weekdaysParse)
18126 for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r) o = g([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();
18127 return n ? "dddd" === t ? -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : null : "dddd" === t ? -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : null
18128 }.call(this, e, t, n);
18129 for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
18130 if (i = g([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;
18131 if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r;
18132 if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r;
18133 if (!n && this._weekdaysParse[r].test(e)) return r
18135 }, gn.weekdaysRegex = function(e) {
18136 return this._weekdaysParseExact ? (p(this, "_weekdaysRegex") || Xe.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (p(this, "_weekdaysRegex") || (this._weekdaysRegex = Ge), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
18137 }, gn.weekdaysShortRegex = function(e) {
18138 return this._weekdaysParseExact ? (p(this, "_weekdaysRegex") || Xe.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (p(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Ke), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
18139 }, gn.weekdaysMinRegex = function(e) {
18140 return this._weekdaysParseExact ? (p(this, "_weekdaysRegex") || Xe.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (p(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Ze), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
18141 }, gn.isPM = function(e) {
18142 return "p" === (e + "").toLowerCase().charAt(0)
18143 }, gn.meridiem = function(e, t, n) {
18144 return 11 < e ? n ? "pm" : "PM" : n ? "am" : "AM"
18146 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
18147 ordinal: function(e) {
18149 return e + (1 === C(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
18151 }), f.lang = n("moment.lang is deprecated. Use moment.locale instead.", lt), f.langData = n("moment.langData is deprecated. Use moment.localeData instead.", ut);
18154 function $n(e, t, n, r) {
18156 return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble()
18160 return e < 0 ? Math.floor(e) : Math.ceil(e)
18164 return 4800 * e / 146097
18168 return 146097 * e / 4800
18172 return function() {
18187 return function() {
18188 return this.isValid() ? this._data[e] : NaN
18191 var Pn = Rn("milliseconds"),
18192 Hn = Rn("seconds"),
18193 jn = Rn("minutes"),
18198 var Vn = Math.round,
18210 return (0 < e) - (e < 0) || +e
18214 if (!this.isValid()) return this.localeData().invalidDate();
18215 var e, t, n = zn(this._milliseconds) / 1e3,
18216 r = zn(this._days),
18217 i = zn(this._months);
18218 t = E((e = E(n / 60)) / 60), n %= 60, e %= 60;
18224 u = n ? n.toFixed(3).replace(/\.?0+$/, "") : "",
18225 d = this.asSeconds();
18226 if (!d) return "P0D";
18227 var f = d < 0 ? "-" : "",
18228 h = Wn(this._months) !== Wn(d) ? "-" : "",
18229 p = Wn(this._days) !== Wn(d) ? "-" : "",
18230 m = Wn(this._milliseconds) !== Wn(d) ? "-" : "";
18231 return f + "P" + (o ? h + o + "Y" : "") + (a ? h + a + "M" : "") + (s ? p + s + "D" : "") + (l || c || u ? "T" : "") + (l ? m + l + "H" : "") + (c ? m + c + "M" : "") + (u ? m + u + "S" : "")
18233 var Gn = Nt.prototype;
18234 return Gn.isValid = function() {
18235 return this._isValid
18236 }, Gn.abs = function() {
18237 var e = this._data;
18238 return this._milliseconds = _n(this._milliseconds), this._days = _n(this._days), this._months = _n(this._months), e.milliseconds = _n(e.milliseconds), e.seconds = _n(e.seconds), e.minutes = _n(e.minutes), e.hours = _n(e.hours), e.months = _n(e.months), e.years = _n(e.years), this
18239 }, Gn.add = function(e, t) {
18240 return $n(this, e, t, 1)
18241 }, Gn.subtract = function(e, t) {
18242 return $n(this, e, t, -1)
18243 }, Gn.as = function(e) {
18244 if (!this.isValid()) return NaN;
18245 var t, n, r = this._milliseconds;
18246 if ("month" === (e = N(e)) || "quarter" === e || "year" === e) switch (t = this._days + r / 864e5, n = this._months + En(t), e) {
18253 } else switch (t = this._days + Math.round(Cn(this._months)), e) {
18255 return t / 7 + r / 6048e5;
18257 return t + r / 864e5;
18259 return 24 * t + r / 36e5;
18261 return 1440 * t + r / 6e4;
18263 return 86400 * t + r / 1e3;
18264 case "millisecond":
18265 return Math.floor(864e5 * t) + r;
18267 throw new Error("Unknown unit " + e)
18269 }, Gn.asMilliseconds = xn, Gn.asSeconds = Tn, Gn.asMinutes = Mn, Gn.asHours = An, Gn.asDays = Sn, Gn.asWeeks = Dn, Gn.asMonths = On, Gn.asQuarters = Nn, Gn.asYears = In, Gn.valueOf = function() {
18270 return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * C(this._months / 12) : NaN
18271 }, Gn._bubble = function() {
18272 var e, t, n, r, i, o = this._milliseconds,
18276 return 0 <= o && 0 <= a && 0 <= s || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * wn(Cn(s) + a), s = a = 0), l.milliseconds = o % 1e3, e = E(o / 1e3), l.seconds = e % 60, t = E(e / 60), l.minutes = t % 60, n = E(t / 60), l.hours = n % 24, s += i = E(En(a += E(n / 24))), a -= wn(Cn(i)), r = E(s / 12), s %= 12, l.days = a, l.months = s, l.years = r, this
18277 }, Gn.clone = function() {
18279 }, Gn.get = function(e) {
18280 return e = N(e), this.isValid() ? this[e + "s"]() : NaN
18281 }, Gn.milliseconds = Pn, Gn.seconds = Hn, Gn.minutes = jn, Gn.hours = Ln, Gn.days = Fn, Gn.weeks = function() {
18282 return E(this.days() / 7)
18283 }, Gn.months = qn, Gn.years = Un, Gn.humanize = function(e) {
18284 if (!this.isValid()) return this.localeData().invalidDate();
18285 var t, n, r, i, o, a, s, l, c, u, d, f = this.localeData(),
18286 h = (n = !e, r = f, i = Bt(t = this).abs(), o = Vn(i.as("s")), a = Vn(i.as("m")), s = Vn(i.as("h")), l = Vn(i.as("d")), c = Vn(i.as("M")), u = Vn(i.as("y")), (d = o <= Bn.ss && ["s", o] || o < Bn.s && ["ss", o] || a <= 1 && ["m"] || a < Bn.m && ["mm", a] || s <= 1 && ["h"] || s < Bn.h && ["hh", s] || l <= 1 && ["d"] || l < Bn.d && ["dd", l] || c <= 1 && ["M"] || c < Bn.M && ["MM", c] || u <= 1 && ["y"] || ["yy", u])[2] = n, d[3] = 0 < +t, d[4] = r, function(e, t, n, r, i) {
18287 return i.relativeTime(t || 1, !!n, e, r)
18289 return e && (h = f.pastFuture(+this, h)), f.postformat(h)
18290 }, Gn.toISOString = Yn, Gn.toString = Yn, Gn.toJSON = Yn, Gn.locale = Qt, Gn.localeData = en, Gn.toIsoString = n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Yn), Gn.lang = Jt, U("X", 0, 0, "unix"), U("x", 0, 0, "valueOf"), le("x", re), le("X", /[+-]?\d+(\.\d{1,3})?/), fe("X", function(e, t, n) {
18291 n._d = new Date(1e3 * parseFloat(e, 10))
18292 }), fe("x", function(e, t, n) {
18293 n._d = new Date(C(e))
18294 }), f.version = "2.24.0", e = Mt, f.fn = pn, f.min = function() {
18295 return Dt("isBefore", [].slice.call(arguments, 0))
18296 }, f.max = function() {
18297 return Dt("isAfter", [].slice.call(arguments, 0))
18298 }, f.now = function() {
18299 return Date.now ? Date.now() : +new Date
18300 }, f.utc = g, f.unix = function(e) {
18302 }, f.months = function(e, t) {
18303 return bn(e, t, "months")
18304 }, f.isDate = d, f.locale = lt, f.invalid = y, f.duration = Bt, f.isMoment = w, f.weekdays = function(e, t, n) {
18305 return yn(e, t, n, "weekdays")
18306 }, f.parseZone = function() {
18307 return Mt.apply(null, arguments).parseZone()
18308 }, f.localeData = ut, f.isDuration = It, f.monthsShort = function(e, t) {
18309 return bn(e, t, "monthsShort")
18310 }, f.weekdaysMin = function(e, t, n) {
18311 return yn(e, t, n, "weekdaysMin")
18312 }, f.defineLocale = ct, f.updateLocale = function(e, t) {
18315 null != (r = st(e)) && (i = r._config), (n = new S(t = A(i, t))).parentLocale = it[e], it[e] = n, lt(e)
18316 } else null != it[e] && (null != it[e].parentLocale ? it[e] = it[e].parentLocale : null != it[e] && delete it[e]);
18318 }, f.locales = function() {
18320 }, f.weekdaysShort = function(e, t, n) {
18321 return yn(e, t, n, "weekdaysShort")
18322 }, f.normalizeUnits = N, f.relativeTimeRounding = function(e) {
18323 return void 0 === e ? Vn : "function" == typeof e && (Vn = e, !0)
18324 }, f.relativeTimeThreshold = function(e, t) {
18325 return void 0 !== Bn[e] && (void 0 === t ? Bn[e] : (Bn[e] = t, "s" === e && (Bn.ss = t - 1), !0))
18326 }, f.calendarFormat = function(e, t) {
18327 var n = e.diff(t, "days", !0);
18328 return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
18329 }, f.prototype = pn, f.HTML5_FMT = {
18330 DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
18331 DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
18332 DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
18333 DATE: "YYYY-MM-DD",
18335 TIME_SECONDS: "HH:mm:ss",
18336 TIME_MS: "HH:mm:ss.SSS",
18337 WEEK: "GGGG-[W]WW",
18343 "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
18344 if (!e.document) throw new Error("jQuery requires a window with a document");
18347 }("undefined" != typeof window ? window : this, function(E, e) {
18351 r = Object.getPrototypeOf,
18358 g = n.hasOwnProperty,
18360 c = a.call(Object),
18363 return "function" == typeof e && "number" != typeof e.nodeType
18366 return null != e && e === e.window
18375 function _(e, t, n) {
18376 var r, i, o = (n = n || C).createElement("script");
18378 for (r in u)(i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
18379 n.head.appendChild(o).parentNode.removeChild(o)
18383 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object" : typeof e
18385 var k = function(e, t) {
18386 return new k.fn.init(e, t)
18388 d = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
18391 var t = !!e && "length" in e && e.length,
18393 return !b(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
18395 k.fn = k.prototype = {
18399 toArray: function() {
18400 return s.call(this)
18403 return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e]
18405 pushStack: function(e) {
18406 var t = k.merge(this.constructor(), e);
18407 return t.prevObject = this, t
18409 each: function(e) {
18410 return k.each(this, e)
18413 return this.pushStack(k.map(this, function(e, t) {
18414 return n.call(e, t, e)
18417 slice: function() {
18418 return this.pushStack(s.apply(this, arguments))
18420 first: function() {
18427 var t = this.length,
18428 n = +e + (e < 0 ? t : 0);
18429 return this.pushStack(0 <= n && n < t ? [this[n]] : [])
18432 return this.prevObject || this.constructor()
18437 }, k.extend = k.fn.extend = function() {
18438 var e, t, n, r, i, o, a = arguments[0] || {},
18440 l = arguments.length,
18442 for ("boolean" == typeof a && (c = a, a = arguments[s] || {}, s++), "object" == typeof a || b(a) || (a = {}), s === l && (a = this, s--); s < l; s++)
18443 if (null != (e = arguments[s]))
18444 for (t in e) r = e[t], "__proto__" !== t && a !== r && (c && r && (k.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || k.isPlainObject(n) ? n : {}, i = !1, a[t] = k.extend(c, o, r)) : void 0 !== r && (a[t] = r));
18447 expando: "jQuery" + ("3.4.1" + Math.random()).replace(/\D/g, ""),
18449 error: function(e) {
18452 noop: function() {},
18453 isPlainObject: function(e) {
18455 return !(!e || "[object Object]" !== o.call(e)) && (!(t = r(e)) || "function" == typeof(n = g.call(t, "constructor") && t.constructor) && a.call(n) === c)
18457 isEmptyObject: function(e) {
18459 for (t in e) return !1;
18462 globalEval: function(e, t) {
18464 nonce: t && t.nonce
18467 each: function(e, t) {
18470 for (n = e.length; r < n && !1 !== t.call(e[r], r, e[r]); r++);
18473 if (!1 === t.call(e[r], r, e[r])) break;
18476 trim: function(e) {
18477 return null == e ? "" : (e + "").replace(d, "")
18479 makeArray: function(e, t) {
18481 return null != e && (f(Object(e)) ? k.merge(n, "string" == typeof e ? [e] : e) : l.call(n, e)), n
18483 inArray: function(e, t, n) {
18484 return null == t ? -1 : i.call(t, e, n)
18486 merge: function(e, t) {
18487 for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
18488 return e.length = i, e
18490 grep: function(e, t, n) {
18491 for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
18494 map: function(e, t, n) {
18498 for (r = e.length; o < r; o++) null != (i = t(e[o], o, n)) && a.push(i);
18500 for (o in e) null != (i = t(e[o], o, n)) && a.push(i);
18501 return m.apply([], a)
18505 }), "function" == typeof Symbol && (k.fn[Symbol.iterator] = t[Symbol.iterator]), k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
18506 n["[object " + t + "]"] = t.toLowerCase()
18508 var h = function(n) {
18509 var e, h, _, o, i, p, d, m, $, l, c, w, E, a, C, g, s, u, v, k = "sizzle" + 1 * new Date,
18517 A = function(e, t) {
18518 return e === t && (c = !0), 0
18520 S = {}.hasOwnProperty,
18526 R = function(e, t) {
18527 for (var n = 0, r = e.length; n < r; n++)
18528 if (e[n] === t) return n;
18531 P = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
18532 H = "[\\x20\\t\\r\\n\\f]",
18533 j = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
18534 L = "\\[" + H + "*(" + j + ")(?:" + H + "*([*^$|!~]?=)" + H + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + j + "))|)" + H + "*\\]",
18535 F = ":(" + j + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + L + ")*)|.*)\\)|)",
18536 q = new RegExp(H + "+", "g"),
18537 U = new RegExp("^" + H + "+|((?:^|[^\\\\])(?:\\\\.)*)" + H + "+$", "g"),
18538 V = new RegExp("^" + H + "*," + H + "*"),
18539 B = new RegExp("^" + H + "*([>+~]|" + H + ")" + H + "*"),
18540 z = new RegExp(H + "|>"),
18542 Y = new RegExp("^" + j + "$"),
18544 ID: new RegExp("^#(" + j + ")"),
18545 CLASS: new RegExp("^\\.(" + j + ")"),
18546 TAG: new RegExp("^(" + j + "|[*])"),
18547 ATTR: new RegExp("^" + L),
18548 PSEUDO: new RegExp("^" + F),
18549 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + H + "*(even|odd|(([+-]|)(\\d*)n|)" + H + "*(?:([+-]|)" + H + "*(\\d+)|))" + H + "*\\)|)", "i"),
18550 bool: new RegExp("^(?:" + P + ")$", "i"),
18551 needsContext: new RegExp("^" + H + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + H + "*((?:-\\d)?\\d*)" + H + "*\\)|)(?=[^-]|$)", "i")
18554 Z = /^(?:input|select|textarea|button)$/i,
18556 Q = /^[^{]+\{\s*\[native \w/,
18557 J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
18559 te = new RegExp("\\\\([\\da-f]{1,6}" + H + "?|(" + H + ")|.)", "ig"),
18560 ne = function(e, t, n) {
18561 var r = "0x" + t - 65536;
18562 return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
18564 re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
18565 ie = function(e, t) {
18566 return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
18571 ae = _e(function(e) {
18572 return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase()
18578 N.apply(t = I.call(b.childNodes), b.childNodes), t[b.childNodes.length].nodeType
18581 apply: t.length ? function(e, t) {
18582 O.apply(e, I.call(t))
18583 } : function(e, t) {
18584 for (var n = e.length, r = 0; e[n++] = t[r++];);
18590 function se(t, e, n, r) {
18591 var i, o, a, s, l, c, u, d = e && e.ownerDocument,
18592 f = e ? e.nodeType : 9;
18593 if (n = n || [], "string" != typeof t || !t || 1 !== f && 9 !== f && 11 !== f) return n;
18594 if (!r && ((e ? e.ownerDocument || e : b) !== E && w(e), e = e || E, C)) {
18595 if (11 !== f && (l = J.exec(t)))
18598 if (!(a = e.getElementById(i))) return n;
18599 if (a.id === i) return n.push(a), n
18600 } else if (d && (a = d.getElementById(i)) && v(e, a) && a.id === i) return n.push(a), n
18602 if (l[2]) return N.apply(n, e.getElementsByTagName(t)), n;
18603 if ((i = l[3]) && h.getElementsByClassName && e.getElementsByClassName) return N.apply(n, e.getElementsByClassName(i)), n
18604 } if (h.qsa && !M[t + " "] && (!g || !g.test(t)) && (1 !== f || "object" !== e.nodeName.toLowerCase())) {
18605 if (u = t, d = e, 1 === f && z.test(t)) {
18606 for ((s = e.getAttribute("id")) ? s = s.replace(re, ie) : e.setAttribute("id", s = k), o = (c = p(t)).length; o--;) c[o] = "#" + s + " " + ye(c[o]);
18607 u = c.join(","), d = ee.test(t) && ve(e.parentNode) || e
18610 return N.apply(n, d.querySelectorAll(u)), n
18614 s === k && e.removeAttribute("id")
18618 return m(t.replace(U, "$1"), e, n, r)
18623 return function e(t, n) {
18624 return r.push(t + " ") > _.cacheLength && delete e[r.shift()], e[t + " "] = n
18629 return e[k] = !0, e
18633 var t = E.createElement("fieldset");
18639 t.parentNode && t.parentNode.removeChild(t), t = null
18643 function de(e, t) {
18644 for (var n = e.split("|"), r = n.length; r--;) _.attrHandle[n[r]] = t
18647 function fe(e, t) {
18649 r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
18652 for (; n = n.nextSibling;)
18653 if (n === t) return -1;
18658 return function(e) {
18659 return "input" === e.nodeName.toLowerCase() && e.type === t
18664 return function(e) {
18665 var t = e.nodeName.toLowerCase();
18666 return ("input" === t || "button" === t) && e.type === n
18671 return function(e) {
18672 return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && ae(e) === t : e.disabled === t : "label" in e && e.disabled === t
18677 return ce(function(o) {
18678 return o = +o, ce(function(e, t) {
18679 for (var n, r = a([], e.length, o), i = r.length; i--;) e[n = r[i]] && (e[n] = !(t[n] = e[n]))
18685 return e && void 0 !== e.getElementsByTagName && e
18687 for (e in h = se.support = {}, i = se.isXML = function(e) {
18688 var t = e.namespaceURI,
18689 n = (e.ownerDocument || e).documentElement;
18690 return !K.test(t || n && n.nodeName || "HTML")
18691 }, w = se.setDocument = function(e) {
18692 var t, n, r = e ? e.ownerDocument || e : b;
18693 return r !== E && 9 === r.nodeType && r.documentElement && (a = (E = r).documentElement, C = !i(E), b !== E && (n = E.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), h.attributes = ue(function(e) {
18694 return e.className = "i", !e.getAttribute("className")
18695 }), h.getElementsByTagName = ue(function(e) {
18696 return e.appendChild(E.createComment("")), !e.getElementsByTagName("*").length
18697 }), h.getElementsByClassName = Q.test(E.getElementsByClassName), h.getById = ue(function(e) {
18698 return a.appendChild(e).id = k, !E.getElementsByName || !E.getElementsByName(k).length
18699 }), h.getById ? (_.filter.ID = function(e) {
18700 var t = e.replace(te, ne);
18701 return function(e) {
18702 return e.getAttribute("id") === t
18704 }, _.find.ID = function(e, t) {
18705 if (void 0 !== t.getElementById && C) {
18706 var n = t.getElementById(e);
18707 return n ? [n] : []
18709 }) : (_.filter.ID = function(e) {
18710 var n = e.replace(te, ne);
18711 return function(e) {
18712 var t = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
18713 return t && t.value === n
18715 }, _.find.ID = function(e, t) {
18716 if (void 0 !== t.getElementById && C) {
18717 var n, r, i, o = t.getElementById(e);
18719 if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
18720 for (i = t.getElementsByName(e), r = 0; o = i[r++];)
18721 if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
18725 }), _.find.TAG = h.getElementsByTagName ? function(e, t) {
18726 return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : h.qsa ? t.querySelectorAll(e) : void 0
18727 } : function(e, t) {
18730 o = t.getElementsByTagName(e);
18731 if ("*" !== e) return o;
18732 for (; n = o[i++];) 1 === n.nodeType && r.push(n);
18734 }, _.find.CLASS = h.getElementsByClassName && function(e, t) {
18735 if (void 0 !== t.getElementsByClassName && C) return t.getElementsByClassName(e)
18736 }, s = [], g = [], (h.qsa = Q.test(E.querySelectorAll)) && (ue(function(e) {
18737 a.appendChild(e).innerHTML = "<a id='" + k + "'></a><select id='" + k + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=" + H + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || g.push("\\[" + H + "*(?:value|" + P + ")"), e.querySelectorAll("[id~=" + k + "-]").length || g.push("~="), e.querySelectorAll(":checked").length || g.push(":checked"), e.querySelectorAll("a#" + k + "+*").length || g.push(".#.+[+~]")
18738 }), ue(function(e) {
18739 e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
18740 var t = E.createElement("input");
18741 t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && g.push("name" + H + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && g.push(":enabled", ":disabled"), a.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && g.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), g.push(",.*:")
18742 })), (h.matchesSelector = Q.test(u = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ue(function(e) {
18743 h.disconnectedMatch = u.call(e, "*"), u.call(e, "[s!='']:x"), s.push("!=", F)
18744 }), g = g.length && new RegExp(g.join("|")), s = s.length && new RegExp(s.join("|")), t = Q.test(a.compareDocumentPosition), v = t || Q.test(a.contains) ? function(e, t) {
18745 var n = 9 === e.nodeType ? e.documentElement : e,
18746 r = t && t.parentNode;
18747 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
18748 } : function(e, t) {
18750 for (; t = t.parentNode;)
18751 if (t === e) return !0;
18753 }, A = t ? function(e, t) {
18754 if (e === t) return c = !0, 0;
18755 var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
18756 return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !h.sortDetached && t.compareDocumentPosition(e) === n ? e === E || e.ownerDocument === b && v(b, e) ? -1 : t === E || t.ownerDocument === b && v(b, t) ? 1 : l ? R(l, e) - R(l, t) : 0 : 4 & n ? -1 : 1)
18757 } : function(e, t) {
18758 if (e === t) return c = !0, 0;
18764 if (!i || !o) return e === E ? -1 : t === E ? 1 : i ? -1 : o ? 1 : l ? R(l, e) - R(l, t) : 0;
18765 if (i === o) return fe(e, t);
18766 for (n = e; n = n.parentNode;) a.unshift(n);
18767 for (n = t; n = n.parentNode;) s.unshift(n);
18768 for (; a[r] === s[r];) r++;
18769 return r ? fe(a[r], s[r]) : a[r] === b ? -1 : s[r] === b ? 1 : 0
18771 }, se.matches = function(e, t) {
18772 return se(e, null, null, t)
18773 }, se.matchesSelector = function(e, t) {
18774 if ((e.ownerDocument || e) !== E && w(e), h.matchesSelector && C && !M[t + " "] && (!s || !s.test(t)) && (!g || !g.test(t))) try {
18775 var n = u.call(e, t);
18776 if (n || h.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
18780 return 0 < se(t, E, null, [e]).length
18781 }, se.contains = function(e, t) {
18782 return (e.ownerDocument || e) !== E && w(e), v(e, t)
18783 }, se.attr = function(e, t) {
18784 (e.ownerDocument || e) !== E && w(e);
18785 var n = _.attrHandle[t.toLowerCase()],
18786 r = n && S.call(_.attrHandle, t.toLowerCase()) ? n(e, t, !C) : void 0;
18787 return void 0 !== r ? r : h.attributes || !C ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
18788 }, se.escape = function(e) {
18789 return (e + "").replace(re, ie)
18790 }, se.error = function(e) {
18791 throw new Error("Syntax error, unrecognized expression: " + e)
18792 }, se.uniqueSort = function(e) {
18796 if (c = !h.detectDuplicates, l = !h.sortStable && e.slice(0), e.sort(A), c) {
18797 for (; t = e[i++];) t === e[i] && (r = n.push(i));
18798 for (; r--;) e.splice(n[r], 1)
18801 }, o = se.getText = function(e) {
18806 if (1 === i || 9 === i || 11 === i) {
18807 if ("string" == typeof e.textContent) return e.textContent;
18808 for (e = e.firstChild; e; e = e.nextSibling) n += o(e)
18809 } else if (3 === i || 4 === i) return e.nodeValue
18811 for (; t = e[r++];) n += o(t);
18813 }, (_ = se.selectors = {
18828 dir: "previousSibling",
18832 dir: "previousSibling"
18836 ATTR: function(e) {
18837 return e[1] = e[1].replace(te, ne), e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
18839 CHILD: function(e) {
18840 return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || se.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] && se.error(e[0]), e
18842 PSEUDO: function(e) {
18843 var t, n = !e[6] && e[2];
18844 return G.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && W.test(n) && (t = p(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))
18849 var t = e.replace(te, ne).toLowerCase();
18850 return "*" === e ? function() {
18853 return e.nodeName && e.nodeName.toLowerCase() === t
18856 CLASS: function(e) {
18857 var t = f[e + " "];
18858 return t || (t = new RegExp("(^|" + H + ")" + e + "(" + H + "|$)")) && f(e, function(e) {
18859 return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
18862 ATTR: function(n, r, i) {
18863 return function(e) {
18864 var t = se.attr(e, n);
18865 return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(q, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-"))
18868 CHILD: function(p, e, t, m, g) {
18869 var v = "nth" !== p.slice(0, 3),
18870 b = "last" !== p.slice(-4),
18871 y = "of-type" === e;
18872 return 1 === m && 0 === g ? function(e) {
18873 return !!e.parentNode
18874 } : function(e, t, n) {
18875 var r, i, o, a, s, l, c = v !== b ? "nextSibling" : "previousSibling",
18877 d = y && e.nodeName.toLowerCase(),
18883 for (a = e; a = a[c];)
18884 if (y ? a.nodeName.toLowerCase() === d : 1 === a.nodeType) return !1;
18885 l = c = "only" === p && !l && "nextSibling"
18889 if (l = [b ? u.firstChild : u.lastChild], b && f) {
18890 for (h = (s = (r = (i = (o = (a = u)[k] || (a[k] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[p] || [])[0] === x && r[1]) && r[2], a = s && u.childNodes[s]; a = ++s && a && a[c] || (h = s = 0) || l.pop();)
18891 if (1 === a.nodeType && ++h && a === e) {
18895 } else if (f && (h = s = (r = (i = (o = (a = e)[k] || (a[k] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[p] || [])[0] === x && r[1]), !1 === h)
18897 (a = ++s && a && a[c] || (h = s = 0) || l.pop()) && ((y ? a.nodeName.toLowerCase() !== d : 1 !== a.nodeType) || !++h || (f && ((i = (o = a[k] || (a[k] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[p] = [x, h]), a !== e)););
18898 return (h -= g) === m || h % m == 0 && 0 <= h / m
18902 PSEUDO: function(e, o) {
18903 var t, a = _.pseudos[e] || _.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e);
18904 return a[k] ? a(o) : 1 < a.length ? (t = [e, e, "", o], _.setFilters.hasOwnProperty(e.toLowerCase()) ? ce(function(e, t) {
18905 for (var n, r = a(e, o), i = r.length; i--;) e[n = R(e, r[i])] = !(t[n] = r[i])
18912 not: ce(function(e) {
18915 s = d(e.replace(U, "$1"));
18916 return s[k] ? ce(function(e, t, n, r) {
18917 for (var i, o = s(e, null, r, []), a = e.length; a--;)(i = o[a]) && (e[a] = !(t[a] = i))
18918 }) : function(e, t, n) {
18919 return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop()
18922 has: ce(function(t) {
18923 return function(e) {
18924 return 0 < se(t, e).length
18927 contains: ce(function(t) {
18928 return t = t.replace(te, ne),
18930 return -1 < (e.textContent || o(e)).indexOf(t)
18933 lang: ce(function(n) {
18934 return Y.test(n || "") || se.error("unsupported lang: " + n), n = n.replace(te, ne).toLowerCase(),
18938 if (t = C ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
18939 } while ((e = e.parentNode) && 1 === e.nodeType);
18943 target: function(e) {
18944 var t = n.location && n.location.hash;
18945 return t && t.slice(1) === e.id
18947 root: function(e) {
18950 focus: function(e) {
18951 return e === E.activeElement && (!E.hasFocus || E.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
18955 checked: function(e) {
18956 var t = e.nodeName.toLowerCase();
18957 return "input" === t && !!e.checked || "option" === t && !!e.selected
18959 selected: function(e) {
18960 return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
18962 empty: function(e) {
18963 for (e = e.firstChild; e; e = e.nextSibling)
18964 if (e.nodeType < 6) return !1;
18967 parent: function(e) {
18968 return !_.pseudos.empty(e)
18970 header: function(e) {
18971 return X.test(e.nodeName)
18973 input: function(e) {
18974 return Z.test(e.nodeName)
18976 button: function(e) {
18977 var t = e.nodeName.toLowerCase();
18978 return "input" === t && "button" === e.type || "button" === t
18980 text: function(e) {
18982 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
18984 first: ge(function() {
18987 last: ge(function(e, t) {
18990 eq: ge(function(e, t, n) {
18991 return [n < 0 ? n + t : n]
18993 even: ge(function(e, t) {
18994 for (var n = 0; n < t; n += 2) e.push(n);
18997 odd: ge(function(e, t) {
18998 for (var n = 1; n < t; n += 2) e.push(n);
19001 lt: ge(function(e, t, n) {
19002 for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;) e.push(r);
19005 gt: ge(function(e, t, n) {
19006 for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
19010 }).pseudos.nth = _.pseudos.eq, {
19016 }) _.pseudos[e] = he(e);
19020 }) _.pseudos[e] = pe(e);
19025 for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
19029 function _e(s, e, t) {
19033 d = t && "parentNode" === u,
19035 return e.first ? function(e, t, n) {
19037 if (1 === e.nodeType || d) return s(e, t, n);
19039 } : function(e, t, n) {
19040 var r, i, o, a = [x, f];
19043 if ((1 === e.nodeType || d) && s(e, t, n)) return !0
19046 if (1 === e.nodeType || d)
19047 if (i = (o = e[k] || (e[k] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), c && c === e.nodeName.toLowerCase()) e = e[l] || e;
19049 if ((r = i[u]) && r[0] === x && r[1] === f) return a[2] = r[2];
19050 if ((i[u] = a)[2] = s(e, t, n)) return !0
19056 return 1 < i.length ? function(e, t, n) {
19057 for (var r = i.length; r--;)
19058 if (!i[r](e, t, n)) return !1;
19063 function we(e, t, n, r, i) {
19064 for (var o, a = [], s = 0, l = e.length, c = null != t; s < l; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), c && t.push(s)));
19068 function Ee(h, p, m, g, v, e) {
19069 return g && !g[k] && (g = Ee(g)), v && !v[k] && (v = Ee(v, e)), ce(function(e, t, n, r) {
19070 var i, o, a, s = [],
19073 u = e || function(e, t, n) {
19074 for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n);
19076 }(p || "*", n.nodeType ? [n] : n, []),
19077 d = !h || !e && p ? u : we(u, s, h, n, r),
19078 f = m ? v || (e ? h : c || g) ? [] : t : d;
19079 if (m && m(d, f, n, r), g)
19080 for (i = we(f, l), g(i, [], n, r), o = i.length; o--;)(a = i[o]) && (f[l[o]] = !(d[l[o]] = a));
19084 for (i = [], o = f.length; o--;)(a = f[o]) && i.push(d[o] = a);
19085 v(null, f = [], i, r)
19087 for (o = f.length; o--;)(a = f[o]) && -1 < (i = v ? R(e, a) : s[o]) && (e[i] = !(t[i] = a))
19089 } else f = we(f === t ? f.splice(c, f.length) : f), v ? v(null, t, f, r) : N.apply(t, f)
19094 for (var i, t, n, r = e.length, o = _.relative[e[0].type], a = o || _.relative[" "], s = o ? 1 : 0, l = _e(function(e) {
19096 }, a, !0), c = _e(function(e) {
19097 return -1 < R(i, e)
19098 }, a, !0), u = [function(e, t, n) {
19099 var r = !o && (n || t !== $) || ((i = t).nodeType ? l(e, t, n) : c(e, t, n));
19102 if (t = _.relative[e[s].type]) u = [_e($e(u), t)];
19104 if ((t = _.filter[e[s].type].apply(null, e[s].matches))[k]) {
19105 for (n = ++s; n < r && !_.relative[e[n].type]; n++);
19106 return Ee(1 < s && $e(u), 1 < s && ye(e.slice(0, s - 1).concat({
19107 value: " " === e[s - 2].type ? "*" : ""
19108 })).replace(U, "$1"), t, s < n && Ce(e.slice(s, n)), n < r && Ce(e = e.slice(n)), n < r && ye(e))
19113 return be.prototype = _.filters = _.pseudos, _.setFilters = new be, p = se.tokenize = function(e, t) {
19114 var n, r, i, o, a, s, l, c = y[e + " "];
19115 if (c) return t ? 0 : c.slice(0);
19116 for (a = e, s = [], l = _.preFilter; a;) {
19117 for (o in n && !(r = V.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = B.exec(a)) && (n = r.shift(), i.push({
19119 type: r[0].replace(U, " ")
19120 }), a = a.slice(n.length)), _.filter) !(r = G[o].exec(a)) || l[o] && !(r = l[o](r)) || (n = r.shift(), i.push({
19124 }), a = a.slice(n.length));
19127 return t ? a.length : a ? se.error(e) : y(e, s).slice(0)
19128 }, d = se.compile = function(e, t) {
19129 var n, g, v, b, y, r, i = [],
19133 for (t || (t = p(e)), n = t.length; n--;)(a = Ce(t[n]))[k] ? i.push(a) : o.push(a);
19134 (a = T(e, (g = o, b = 0 < (v = i).length, y = 0 < g.length, r = function(e, t, n, r, i) {
19135 var o, a, s, l = 0,
19140 h = e || y && _.find.TAG("*", i),
19141 p = x += null == f ? 1 : Math.random() || .1,
19143 for (i && ($ = t === E || t || i); c !== m && null != (o = h[c]); c++) {
19145 for (a = 0, t || o.ownerDocument === E || (w(o), n = !C); s = g[a++];)
19146 if (s(o, t || E, n)) {
19151 b && ((o = !s && o) && l--, e && u.push(o))
19153 if (l += c, b && c !== l) {
19154 for (a = 0; s = v[a++];) s(u, d, t, n);
19157 for (; c--;) u[c] || d[c] || (d[c] = D.call(r));
19160 N.apply(r, d), i && !e && 0 < d.length && 1 < l + v.length && se.uniqueSort(r)
19162 return i && (x = p, $ = f), u
19163 }, b ? ce(r) : r))).selector = e
19166 }, m = se.select = function(e, t, n, r) {
19167 var i, o, a, s, l, c = "function" == typeof e && e,
19168 u = !r && p(e = c.selector || e);
19169 if (n = n || [], 1 === u.length) {
19170 if (2 < (o = u[0] = u[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && C && _.relative[o[1].type]) {
19171 if (!(t = (_.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n;
19172 c && (t = t.parentNode), e = e.slice(o.shift().value.length)
19174 for (i = G.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !_.relative[s = a.type]);)
19175 if ((l = _.find[s]) && (r = l(a.matches[0].replace(te, ne), ee.test(o[0].type) && ve(t.parentNode) || t))) {
19176 if (o.splice(i, 1), !(e = r.length && ye(o))) return N.apply(n, r), n;
19180 return (c || d(e, u))(r, t, !C, n, !t || ee.test(e) && ve(t.parentNode) || t), n
19181 }, h.sortStable = k.split("").sort(A).join("") === k, h.detectDuplicates = !!c, w(), h.sortDetached = ue(function(e) {
19182 return 1 & e.compareDocumentPosition(E.createElement("fieldset"))
19183 }), ue(function(e) {
19184 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
19185 }) || de("type|href|height|width", function(e, t, n) {
19186 if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
19187 }), h.attributes && ue(function(e) {
19188 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
19189 }) || de("value", function(e, t, n) {
19190 if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
19191 }), ue(function(e) {
19192 return null == e.getAttribute("disabled")
19193 }) || de(P, function(e, t, n) {
19195 if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
19198 k.find = h, k.expr = h.selectors, k.expr[":"] = k.expr.pseudos, k.uniqueSort = k.unique = h.uniqueSort, k.text = h.getText, k.isXMLDoc = h.isXML, k.contains = h.contains, k.escapeSelector = h.escape;
19199 var p = function(e, t, n) {
19200 for (var r = [], i = void 0 !== n;
19201 (e = e[t]) && 9 !== e.nodeType;)
19202 if (1 === e.nodeType) {
19203 if (i && k(e).is(n)) break;
19207 w = function(e, t) {
19208 for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
19211 x = k.expr.match.needsContext;
19214 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
19216 var M = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
19218 function A(e, n, r) {
19219 return b(n) ? k.grep(e, function(e, t) {
19220 return !!n.call(e, t, e) !== r
19221 }) : n.nodeType ? k.grep(e, function(e) {
19222 return e === n !== r
19223 }) : "string" != typeof n ? k.grep(e, function(e) {
19224 return -1 < i.call(n, e) !== r
19225 }) : k.filter(n, e, r)
19227 k.filter = function(e, t, n) {
19229 return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? k.find.matchesSelector(r, e) ? [r] : [] : k.find.matches(e, k.grep(t, function(e) {
19230 return 1 === e.nodeType
19233 find: function(e) {
19234 var t, n, r = this.length,
19236 if ("string" != typeof e) return this.pushStack(k(e).filter(function() {
19237 for (t = 0; t < r; t++)
19238 if (k.contains(i[t], this)) return !0
19240 for (n = this.pushStack([]), t = 0; t < r; t++) k.find(e, i[t], n);
19241 return 1 < r ? k.uniqueSort(n) : n
19243 filter: function(e) {
19244 return this.pushStack(A(this, e || [], !1))
19247 return this.pushStack(A(this, e || [], !0))
19250 return !!A(this, "string" == typeof e && x.test(e) ? k(e) : e || [], !1).length
19253 var S, D = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
19254 (k.fn.init = function(e, t, n) {
19256 if (!e) return this;
19257 if (n = n || S, "string" != typeof e) return e.nodeType ? (this[0] = e, this.length = 1, this) : b(e) ? void 0 !== n.ready ? n.ready(e) : e(k) : k.makeArray(e, this);
19258 if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : D.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
19260 if (t = t instanceof k ? t[0] : t, k.merge(this, k.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : C, !0)), M.test(r[1]) && k.isPlainObject(t))
19261 for (r in t) b(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
19264 return (i = C.getElementById(r[2])) && (this[0] = i, this.length = 1), this
19265 }).prototype = k.fn, S = k(C);
19266 var O = /^(?:parents|prev(?:Until|All))/,
19276 (e = e[t]) && 1 !== e.nodeType;);
19281 var t = k(e, this),
19283 return this.filter(function() {
19284 for (var e = 0; e < n; e++)
19285 if (k.contains(this, t[e])) return !0
19288 closest: function(e, t) {
19292 a = "string" != typeof e && k(e);
19295 for (n = this[r]; n && n !== t; n = n.parentNode)
19296 if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && k.find.matchesSelector(n, e))) {
19299 } return this.pushStack(1 < o.length ? k.uniqueSort(o) : o)
19301 index: function(e) {
19302 return e ? "string" == typeof e ? i.call(k(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
19304 add: function(e, t) {
19305 return this.pushStack(k.uniqueSort(k.merge(this.get(), k(e, t))))
19307 addBack: function(e) {
19308 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
19311 parent: function(e) {
19312 var t = e.parentNode;
19313 return t && 11 !== t.nodeType ? t : null
19315 parents: function(e) {
19316 return p(e, "parentNode")
19318 parentsUntil: function(e, t, n) {
19319 return p(e, "parentNode", n)
19321 next: function(e) {
19322 return I(e, "nextSibling")
19324 prev: function(e) {
19325 return I(e, "previousSibling")
19327 nextAll: function(e) {
19328 return p(e, "nextSibling")
19330 prevAll: function(e) {
19331 return p(e, "previousSibling")
19333 nextUntil: function(e, t, n) {
19334 return p(e, "nextSibling", n)
19336 prevUntil: function(e, t, n) {
19337 return p(e, "previousSibling", n)
19339 siblings: function(e) {
19340 return w((e.parentNode || {}).firstChild, e)
19342 children: function(e) {
19343 return w(e.firstChild)
19345 contents: function(e) {
19346 return void 0 !== e.contentDocument ? e.contentDocument : (T(e, "template") && (e = e.content || e), k.merge([], e.childNodes))
19348 }, function(r, i) {
19349 k.fn[r] = function(e, t) {
19350 var n = k.map(this, i, e);
19351 return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = k.filter(t, n)), 1 < this.length && (N[r] || k.uniqueSort(n), O.test(r) && n.reverse()), this.pushStack(n)
19354 var R = /[^\x20\t\r\n\f]+/g;
19364 function j(e, t, n, r) {
19367 e && b(i = e.promise) ? i.call(e).done(t).fail(n) : e && b(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
19369 n.apply(void 0, [e])
19372 k.Callbacks = function(r) {
19374 r = "string" == typeof r ? (e = r, n = {}, k.each(e.match(R) || [], function(e, t) {
19376 }), n) : k.extend({}, r);
19377 var i, t, o, a, s = [],
19381 for (a = a || r.once, o = i = !0; l.length; c = -1)
19382 for (t = l.shift(); ++c < s.length;) !1 === s[c].apply(t[0], t[1]) && r.stopOnFalse && (c = s.length, t = !1);
19383 r.memory || (t = !1), i = !1, a && (s = t ? [] : "")
19387 return s && (t && !i && (c = s.length - 1, l.push(t)), function n(e) {
19388 k.each(e, function(e, t) {
19389 b(t) ? r.unique && d.has(t) || s.push(t) : t && t.length && "string" !== $(t) && n(t)
19391 }(arguments), t && !i && u()), this
19393 remove: function() {
19394 return k.each(arguments, function(e, t) {
19395 for (var n; - 1 < (n = k.inArray(t, s, n));) s.splice(n, 1), n <= c && c--
19399 return e ? -1 < k.inArray(e, s) : 0 < s.length
19401 empty: function() {
19402 return s && (s = []), this
19404 disable: function() {
19405 return a = l = [], s = t = "", this
19407 disabled: function() {
19411 return a = l = [], t || i || (s = t = ""), this
19413 locked: function() {
19416 fireWith: function(e, t) {
19417 return a || (t = [e, (t = t || []).slice ? t.slice() : t], l.push(t), i || u()), this
19420 return d.fireWith(this, arguments), this
19422 fired: function() {
19428 Deferred: function(e) {
19430 ["notify", "progress", k.Callbacks("memory"), k.Callbacks("memory"), 2],
19431 ["resolve", "done", k.Callbacks("once memory"), k.Callbacks("once memory"), 0, "resolved"],
19432 ["reject", "fail", k.Callbacks("once memory"), k.Callbacks("once memory"), 1, "rejected"]
19436 state: function() {
19439 always: function() {
19440 return s.done(arguments).fail(arguments), this
19442 catch: function(e) {
19443 return a.then(null, e)
19447 return k.Deferred(function(r) {
19448 k.each(o, function(e, t) {
19449 var n = b(i[t[4]]) && i[t[4]];
19450 s[t[1]](function() {
19451 var e = n && n.apply(this, arguments);
19452 e && b(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments)
19457 then: function(t, n, r) {
19460 function c(i, o, a, s) {
19461 return function() {
19467 if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution");
19468 t = e && ("object" == typeof e || "function" == typeof e) && e.then, b(t) ? s ? t.call(e, c(l, o, P, s), c(l, o, H, s)) : (l++, t.call(e, c(l, o, P, s), c(l, o, H, s), c(l, o, P, o.notifyWith))) : (a !== P && (n = void 0, r = [e]), (s || o.resolveWith)(n, r))
19471 t = s ? e : function() {
19475 k.Deferred.exceptionHook && k.Deferred.exceptionHook(e, t.stackTrace), l <= i + 1 && (a !== H && (n = void 0, r = [e]), o.rejectWith(n, r))
19478 i ? t() : (k.Deferred.getStackHook && (t.stackTrace = k.Deferred.getStackHook()), E.setTimeout(t))
19481 return k.Deferred(function(e) {
19482 o[0][3].add(c(0, e, b(r) ? r : P, e.notifyWith)), o[1][3].add(c(0, e, b(t) ? t : P)), o[2][3].add(c(0, e, b(n) ? n : H))
19485 promise: function(e) {
19486 return null != e ? k.extend(e, a) : a
19490 return k.each(o, function(e, t) {
19493 a[t[1]] = n.add, r && n.add(function() {
19495 }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), n.add(t[3].fire), s[t[0]] = function() {
19496 return s[t[0] + "With"](this === s ? void 0 : this, arguments), this
19497 }, s[t[0] + "With"] = n.fireWith
19498 }), a.promise(s), e && e.call(s, s), s
19500 when: function(e) {
19501 var n = arguments.length,
19504 i = s.call(arguments),
19507 return function(e) {
19508 r[t] = this, i[t] = 1 < arguments.length ? s.call(arguments) : e, --n || o.resolveWith(r, i)
19511 if (n <= 1 && (j(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || b(i[t] && i[t].then))) return o.then();
19512 for (; t--;) j(i[t], a(t), o.reject);
19516 var L = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
19517 k.Deferred.exceptionHook = function(e, t) {
19518 E.console && E.console.warn && e && L.test(e.name) && E.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
19519 }, k.readyException = function(e) {
19520 E.setTimeout(function() {
19524 var F = k.Deferred();
19527 C.removeEventListener("DOMContentLoaded", q), E.removeEventListener("load", q), k.ready()
19529 k.fn.ready = function(e) {
19530 return F.then(e).catch(function(e) {
19531 k.readyException(e)
19536 ready: function(e) {
19537 (!0 === e ? --k.readyWait : k.isReady) || (k.isReady = !0) !== e && 0 < --k.readyWait || F.resolveWith(C, [k])
19539 }), k.ready.then = F.then, "complete" === C.readyState || "loading" !== C.readyState && !C.documentElement.doScroll ? E.setTimeout(k.ready) : (C.addEventListener("DOMContentLoaded", q), E.addEventListener("load", q));
19540 var U = function(e, t, n, r, i, o, a) {
19544 if ("object" === $(n))
19545 for (s in i = !0, n) U(e, t, s, n[s], !0, o, a);
19546 else if (void 0 !== r && (i = !0, b(r) || (a = !0), c && (t = a ? (t.call(e, r), null) : (c = t, function(e, t, n) {
19547 return c.call(k(e), n)
19549 for (; s < l; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
19550 return i ? e : c ? t.call(e) : l ? t(e[0], n) : o
19556 return t.toUpperCase()
19560 return e.replace(V, "ms-").replace(B, z)
19562 var Y = function(e) {
19563 return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
19567 this.expando = k.expando + G.uid++
19569 G.uid = 1, G.prototype = {
19570 cache: function(e) {
19571 var t = e[this.expando];
19572 return t || (t = {}, Y(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
19577 set: function(e, t, n) {
19578 var r, i = this.cache(e);
19579 if ("string" == typeof t) i[W(t)] = n;
19581 for (r in t) i[W(r)] = t[r];
19584 get: function(e, t) {
19585 return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][W(t)]
19587 access: function(e, t, n) {
19588 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)
19590 remove: function(e, t) {
19591 var n, r = e[this.expando];
19592 if (void 0 !== r) {
19593 if (void 0 !== t) {
19594 n = (t = Array.isArray(t) ? t.map(W) : (t = W(t)) in r ? [t] : t.match(R) || []).length;
19595 for (; n--;) delete r[t[n]]
19596 }(void 0 === t || k.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
19599 hasData: function(e) {
19600 var t = e[this.expando];
19601 return void 0 !== t && !k.isEmptyObject(t)
19606 X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
19609 function J(e, t, n) {
19611 if (void 0 === n && 1 === e.nodeType)
19612 if (r = "data-" + t.replace(Q, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
19614 n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : X.test(i) ? JSON.parse(i) : i)
19621 hasData: function(e) {
19622 return Z.hasData(e) || K.hasData(e)
19624 data: function(e, t, n) {
19625 return Z.access(e, t, n)
19627 removeData: function(e, t) {
19630 _data: function(e, t, n) {
19631 return K.access(e, t, n)
19633 _removeData: function(e, t) {
19637 data: function(n, e) {
19638 var t, r, i, o = this[0],
19639 a = o && o.attributes;
19640 if (void 0 !== n) return "object" == typeof n ? this.each(function() {
19642 }) : U(this, function(e) {
19644 if (o && void 0 === e) return void 0 !== (t = Z.get(o, n)) ? t : void 0 !== (t = J(o, n)) ? t : void 0;
19645 this.each(function() {
19648 }, null, e, 1 < arguments.length, null, !0);
19649 if (this.length && (i = Z.get(o), 1 === o.nodeType && !K.get(o, "hasDataAttrs"))) {
19650 for (t = a.length; t--;) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = W(r.slice(5)), J(o, r, i[r]));
19651 K.set(o, "hasDataAttrs", !0)
19655 removeData: function(e) {
19656 return this.each(function() {
19661 queue: function(e, t, n) {
19663 if (e) return t = (t || "fx") + "queue", r = K.get(e, t), n && (!r || Array.isArray(n) ? r = K.access(e, t, k.makeArray(n)) : r.push(n)), r || []
19665 dequeue: function(e, t) {
19667 var n = k.queue(e, t),
19670 o = k._queueHooks(e, t);
19671 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
19673 }, o)), !r && o && o.empty.fire()
19675 _queueHooks: function(e, t) {
19676 var n = t + "queueHooks";
19677 return K.get(e, n) || K.access(e, n, {
19678 empty: k.Callbacks("once memory").add(function() {
19679 K.remove(e, [t + "queue", n])
19684 queue: function(t, n) {
19686 return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? k.queue(this[0], t) : void 0 === n ? this : this.each(function() {
19687 var e = k.queue(this, t, n);
19688 k._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && k.dequeue(this, t)
19691 dequeue: function(e) {
19692 return this.each(function() {
19696 clearQueue: function(e) {
19697 return this.queue(e || "fx", [])
19699 promise: function(e, t) {
19705 --r || i.resolveWith(o, [o])
19707 for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;)(n = K.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
19708 return s(), i.promise(t)
19711 var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
19712 te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
19713 ne = ["Top", "Right", "Bottom", "Left"],
19714 re = C.documentElement,
19716 return k.contains(e.ownerDocument, e)
19721 re.getRootNode && (ie = function(e) {
19722 return k.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument
19724 var ae = function(e, t) {
19725 return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === k.css(e, "display")
19727 se = function(e, t, n, r) {
19729 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
19730 for (o in i = n.apply(e, r || []), t) e.style[o] = a[o];
19734 function le(e, t, n, r) {
19736 s = r ? function() {
19739 return k.css(e, t, "")
19742 c = n && n[3] || (k.cssNumber[t] ? "" : "px"),
19743 u = e.nodeType && (k.cssNumber[t] || "px" !== c && +l) && te.exec(k.css(e, t));
19744 if (u && u[3] !== c) {
19745 for (l /= 2, c = c || u[3], u = +l || 1; a--;) k.style(e, t, u + c), (1 - o) * (1 - (o = s() / l || .5)) <= 0 && (a = 0), u /= o;
19746 u *= 2, k.style(e, t, u + c), n = n || []
19748 return n && (u = +u || +l || 0, i = n[1] ? u + (n[1] + 1) * n[2] : +n[2], r && (r.unit = c, r.start = u, r.end = i)), i
19752 function ue(e, t) {
19753 for (var n, r, i, o, a, s, l, c = [], u = 0, d = e.length; u < d; u++)(r = e[u]).style && (n = r.style.display, t ? ("none" === n && (c[u] = K.get(r, "display") || null, c[u] || (r.style.display = "")), "" === r.style.display && ae(r) && (c[u] = (l = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (l = ce[s]) || (o = a.body.appendChild(a.createElement(s)), l = k.css(o, "display"), o.parentNode.removeChild(o), "none" === l && (l = "block"), ce[s] = l)))) : "none" !== n && (c[u] = "none", K.set(r, "display", n)));
19754 for (u = 0; u < d; u++) null != c[u] && (e[u].style.display = c[u]);
19759 return ue(this, !0)
19764 toggle: function(e) {
19765 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
19766 ae(this) ? k(this).show() : k(this).hide()
19770 var de = /^(?:checkbox|radio)$/i,
19771 fe = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i,
19772 he = /^$|^module$|\/(?:java|ecma)script/i,
19774 option: [1, "<select multiple='multiple'>", "</select>"],
19775 thead: [1, "<table>", "</table>"],
19776 col: [2, "<table><colgroup>", "</colgroup></table>"],
19777 tr: [2, "<table><tbody>", "</tbody></table>"],
19778 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
19779 _default: [0, "", ""]
19782 function me(e, t) {
19784 return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && T(e, t) ? k.merge([e], n) : n
19787 function ge(e, t) {
19788 for (var n = 0, r = e.length; n < r; n++) K.set(e[n], "globalEval", !t || K.get(t[n], "globalEval"))
19790 pe.optgroup = pe.option, pe.tbody = pe.tfoot = pe.colgroup = pe.caption = pe.thead, pe.th = pe.td;
19791 var ve, be, ye = /<|&#?\w+;/;
19793 function _e(e, t, n, r, i) {
19794 for (var o, a, s, l, c, u, d = t.createDocumentFragment(), f = [], h = 0, p = e.length; h < p; h++)
19795 if ((o = e[h]) || 0 === o)
19796 if ("object" === $(o)) k.merge(f, o.nodeType ? [o] : o);
19797 else if (ye.test(o)) {
19798 for (a = a || d.appendChild(t.createElement("div")), s = (fe.exec(o) || ["", ""])[1].toLowerCase(), l = pe[s] || pe._default, a.innerHTML = l[1] + k.htmlPrefilter(o) + l[2], u = l[0]; u--;) a = a.lastChild;
19799 k.merge(f, a.childNodes), (a = d.firstChild).textContent = ""
19800 } else f.push(t.createTextNode(o));
19801 for (d.textContent = "", h = 0; o = f[h++];)
19802 if (r && -1 < k.inArray(o, r)) i && i.push(o);
19803 else if (c = ie(o), a = me(d.appendChild(o), "script"), c && ge(a), n)
19804 for (u = 0; o = a[u++];) he.test(o.type || "") && n.push(o);
19807 ve = C.createDocumentFragment().appendChild(C.createElement("div")), (be = C.createElement("input")).setAttribute("type", "radio"), be.setAttribute("checked", "checked"), be.setAttribute("name", "t"), ve.appendChild(be), v.checkClone = ve.cloneNode(!0).cloneNode(!0).lastChild.checked, ve.innerHTML = "<textarea>x</textarea>", v.noCloneChecked = !!ve.cloneNode(!0).lastChild.defaultValue;
19809 we = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
19810 Ee = /^([^.]*)(?:\.(.+)|)/;
19820 function xe(e, t) {
19821 return e === function() {
19823 return C.activeElement
19825 }() == ("focus" === t)
19828 function Te(e, t, n, r, i, o) {
19830 if ("object" == typeof t) {
19831 for (s in "string" != typeof n && (r = r || n, n = void 0), t) Te(e, s, n, r, t[s], o);
19834 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 = ke;
19835 else if (!i) return e;
19836 return 1 === o && (a = i, (i = function(e) {
19837 return k().off(e), a.apply(this, arguments)
19838 }).guid = a.guid || (a.guid = k.guid++)), e.each(function() {
19839 k.event.add(this, t, i, r, n)
19843 function Me(e, i, o) {
19844 o ? (K.set(e, i, !1), k.event.add(e, i, {
19846 handler: function(e) {
19847 var t, n, r = K.get(this, i);
19848 if (1 & e.isTrigger && this[i]) {
19849 if (r.length)(k.event.special[i] || {}).delegateType && e.stopPropagation();
19850 else if (r = s.call(arguments), K.set(this, i, r), t = o(this, i), this[i](), r !== (n = K.get(this, i)) || t ? K.set(this, i, !1) : n = {}, r !== n) return e.stopImmediatePropagation(), e.preventDefault(), n.value
19851 } else r.length && (K.set(this, i, {
19852 value: k.event.trigger(k.extend(r[0], k.Event.prototype), r.slice(1), this)
19853 }), e.stopImmediatePropagation())
19855 })) : void 0 === K.get(e, i) && k.event.add(e, i, Ce)
19859 add: function(t, e, n, r, i) {
19860 var o, a, s, l, c, u, d, f, h, p, m, g = K.get(t);
19862 for (n.handler && (n = (o = n).handler, i = o.selector), i && k.find.matchesSelector(re, i), n.guid || (n.guid = k.guid++), (l = g.events) || (l = g.events = {}), (a = g.handle) || (a = g.handle = function(e) {
19863 return void 0 !== k && k.event.triggered !== e.type ? k.event.dispatch.apply(t, arguments) : void 0
19864 }), c = (e = (e || "").match(R) || [""]).length; c--;) h = m = (s = Ee.exec(e[c]) || [])[1], p = (s[2] || "").split(".").sort(), h && (d = k.event.special[h] || {}, h = (i ? d.delegateType : d.bindType) || h, d = k.event.special[h] || {}, u = k.extend({
19871 needsContext: i && k.expr.match.needsContext.test(i),
19872 namespace: p.join(".")
19873 }, o), (f = l[h]) || ((f = l[h] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(t, r, p, a) || t.addEventListener && t.addEventListener(h, a)), d.add && (d.add.call(t, u), u.handler.guid || (u.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, u) : f.push(u), k.event.global[h] = !0)
19875 remove: function(e, t, n, r, i) {
19876 var o, a, s, l, c, u, d, f, h, p, m, g = K.hasData(e) && K.get(e);
19877 if (g && (l = g.events)) {
19878 for (c = (t = (t || "").match(R) || [""]).length; c--;)
19879 if (h = m = (s = Ee.exec(t[c]) || [])[1], p = (s[2] || "").split(".").sort(), h) {
19880 for (d = k.event.special[h] || {}, f = l[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));
19881 a && !f.length && (d.teardown && !1 !== d.teardown.call(e, p, g.handle) || k.removeEvent(e, h, g.handle), delete l[h])
19883 for (h in l) k.event.remove(e, h + t[c], n, r, !0);
19884 k.isEmptyObject(l) && K.remove(e, "handle events")
19887 dispatch: function(e) {
19888 var t, n, r, i, o, a, s = k.event.fix(e),
19889 l = new Array(arguments.length),
19890 c = (K.get(this, "events") || {})[s.type] || [],
19891 u = k.event.special[s.type] || {};
19892 for (l[0] = s, t = 1; t < arguments.length; t++) l[t] = arguments[t];
19893 if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {
19894 for (a = k.event.handlers.call(this, s, c), t = 0;
19895 (i = a[t++]) && !s.isPropagationStopped();)
19896 for (s.currentTarget = i.elem, n = 0;
19897 (o = i.handlers[n++]) && !s.isImmediatePropagationStopped();) s.rnamespace && !1 !== o.namespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o, s.data = o.data, void 0 !== (r = ((k.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, l)) && !1 === (s.result = r) && (s.preventDefault(), s.stopPropagation()));
19898 return u.postDispatch && u.postDispatch.call(this, s), s.result
19901 handlers: function(e, t) {
19902 var n, r, i, o, a, s = [],
19903 l = t.delegateCount,
19905 if (l && c.nodeType && !("click" === e.type && 1 <= e.button))
19906 for (; c !== this; c = c.parentNode || this)
19907 if (1 === c.nodeType && ("click" !== e.type || !0 !== c.disabled)) {
19908 for (o = [], a = {}, n = 0; n < l; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < k(i, this).index(c) : k.find(i, this, null, [c]).length), a[i] && o.push(r);
19909 o.length && s.push({
19913 } return c = this, l < t.length && s.push({
19915 handlers: t.slice(l)
19918 addProp: function(t, e) {
19919 Object.defineProperty(k.Event.prototype, t, {
19922 get: b(e) ? function() {
19923 if (this.originalEvent) return e(this.originalEvent)
19925 if (this.originalEvent) return this.originalEvent[t]
19928 Object.defineProperty(this, t, {
19938 return e[k.expando] ? e : new k.Event(e)
19945 setup: function(e) {
19947 return de.test(t.type) && t.click && T(t, "input") && Me(t, "click", Ce), !1
19949 trigger: function(e) {
19951 return de.test(t.type) && t.click && T(t, "input") && Me(t, "click"), !0
19953 _default: function(e) {
19955 return de.test(t.type) && t.click && T(t, "input") && K.get(t, "click") || T(t, "a")
19959 postDispatch: function(e) {
19960 void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
19964 }, k.removeEvent = function(e, t, n) {
19965 e.removeEventListener && e.removeEventListener(t, n)
19966 }, k.Event = function(e, t) {
19967 if (!(this instanceof k.Event)) return new k.Event(e, t);
19968 e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ce : ke, 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 && k.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[k.expando] = !0
19969 }, k.Event.prototype = {
19970 constructor: k.Event,
19971 isDefaultPrevented: ke,
19972 isPropagationStopped: ke,
19973 isImmediatePropagationStopped: ke,
19975 preventDefault: function() {
19976 var e = this.originalEvent;
19977 this.isDefaultPrevented = Ce, e && !this.isSimulated && e.preventDefault()
19979 stopPropagation: function() {
19980 var e = this.originalEvent;
19981 this.isPropagationStopped = Ce, e && !this.isSimulated && e.stopPropagation()
19983 stopImmediatePropagation: function() {
19984 var e = this.originalEvent;
19985 this.isImmediatePropagationStopped = Ce, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
19991 changedTouches: !0,
20018 which: function(e) {
20020 return null == e.which && $e.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && we.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
20022 }, k.event.addProp), k.each({
20025 }, function(e, t) {
20026 k.event.special[e] = {
20027 setup: function() {
20028 return Me(this, e, xe), !1
20030 trigger: function() {
20031 return Me(this, e), !0
20036 mouseenter: "mouseover",
20037 mouseleave: "mouseout",
20038 pointerenter: "pointerover",
20039 pointerleave: "pointerout"
20040 }, function(e, i) {
20041 k.event.special[e] = {
20044 handle: function(e) {
20045 var t, n = e.relatedTarget,
20047 return n && (n === this || k.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t
20051 on: function(e, t, n, r) {
20052 return Te(this, e, t, n, r)
20054 one: function(e, t, n, r) {
20055 return Te(this, e, t, n, r, 1)
20057 off: function(e, t, n) {
20059 if (e && e.preventDefault && e.handleObj) return r = e.handleObj, k(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
20060 if ("object" != typeof e) return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = ke), this.each(function() {
20061 k.event.remove(this, e, n, t)
20063 for (i in e) this.off(i, t, e[i]);
20067 var Ae = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
20068 Se = /<script|<style|<link/i,
20069 De = /checked\s*(?:[^=]|=\s*.checked.)/i,
20070 Oe = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
20072 function Ne(e, t) {
20073 return T(e, "table") && T(11 !== t.nodeType ? t : t.firstChild, "tr") && k(e).children("tbody")[0] || e
20077 return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
20081 return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
20084 function Pe(e, t) {
20085 var n, r, i, o, a, s, l, c;
20086 if (1 === t.nodeType) {
20087 if (K.hasData(e) && (o = K.access(e), a = K.set(t, o), c = o.events))
20088 for (i in delete a.handle, a.events = {}, c)
20089 for (n = 0, r = c[i].length; n < r; n++) k.event.add(t, i, c[i][n]);
20090 Z.hasData(e) && (s = Z.access(e), l = k.extend({}, s), Z.set(t, l))
20094 function He(n, r, i, o) {
20095 r = m.apply([], r);
20096 var e, t, a, s, l, c, u = 0,
20101 if (p || 1 < d && "string" == typeof h && !v.checkClone && De.test(h)) return n.each(function(e) {
20103 p && (r[0] = h.call(this, e, t.html())), He(t, r, i, o)
20105 if (d && (t = (e = _e(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) {
20106 for (s = (a = k.map(me(e, "script"), Ie)).length; u < d; u++) l = e, u !== f && (l = k.clone(l, !0, !0), s && k.merge(a, me(l, "script"))), i.call(n[u], l, u);
20108 for (c = a[a.length - 1].ownerDocument, k.map(a, Re), u = 0; u < s; u++) l = a[u], he.test(l.type || "") && !K.access(l, "globalEval") && k.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? k._evalUrl && !l.noModule && k._evalUrl(l.src, {
20109 nonce: l.nonce || l.getAttribute("nonce")
20110 }) : _(l.textContent.replace(Oe, ""), l, c))
20115 function je(e, t, n) {
20116 for (var r, i = t ? k.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || k.cleanData(me(r)), r.parentNode && (n && ie(r) && ge(me(r, "script")), r.parentNode.removeChild(r));
20120 htmlPrefilter: function(e) {
20121 return e.replace(Ae, "<$1></$2>")
20123 clone: function(e, t, n) {
20124 var r, i, o, a, s, l, c, u = e.cloneNode(!0),
20126 if (!(v.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || k.isXMLDoc(e)))
20127 for (a = me(u), r = 0, i = (o = me(e)).length; r < i; r++) s = o[r], l = a[r], void 0, "input" === (c = l.nodeName.toLowerCase()) && de.test(s.type) ? l.checked = s.checked : "input" !== c && "textarea" !== c || (l.defaultValue = s.defaultValue);
20130 for (o = o || me(e), a = a || me(u), r = 0, i = o.length; r < i; r++) Pe(o[r], a[r]);
20132 return 0 < (a = me(u, "script")).length && ge(a, !d && me(e, "script")), u
20134 cleanData: function(e) {
20135 for (var t, n, r, i = k.event.special, o = 0; void 0 !== (n = e[o]); o++)
20137 if (t = n[K.expando]) {
20139 for (r in t.events) i[r] ? k.event.remove(n, r) : k.removeEvent(n, r, t.handle);
20140 n[K.expando] = void 0
20142 n[Z.expando] && (n[Z.expando] = void 0)
20146 detach: function(e) {
20147 return je(this, e, !0)
20149 remove: function(e) {
20152 text: function(e) {
20153 return U(this, function(e) {
20154 return void 0 === e ? k.text(this) : this.empty().each(function() {
20155 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
20157 }, null, e, arguments.length)
20159 append: function() {
20160 return He(this, arguments, function(e) {
20161 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Ne(this, e).appendChild(e)
20164 prepend: function() {
20165 return He(this, arguments, function(e) {
20166 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
20167 var t = Ne(this, e);
20168 t.insertBefore(e, t.firstChild)
20172 before: function() {
20173 return He(this, arguments, function(e) {
20174 this.parentNode && this.parentNode.insertBefore(e, this)
20177 after: function() {
20178 return He(this, arguments, function(e) {
20179 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
20182 empty: function() {
20183 for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (k.cleanData(me(e, !1)), e.textContent = "");
20186 clone: function(e, t) {
20187 return e = null != e && e, t = null == t ? e : t, this.map(function() {
20188 return k.clone(this, e, t)
20191 html: function(e) {
20192 return U(this, function(e) {
20193 var t = this[0] || {},
20196 if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
20197 if ("string" == typeof e && !Se.test(e) && !pe[(fe.exec(e) || ["", ""])[1].toLowerCase()]) {
20198 e = k.htmlPrefilter(e);
20200 for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (k.cleanData(me(t, !1)), t.innerHTML = e);
20204 t && this.empty().append(e)
20205 }, null, e, arguments.length)
20207 replaceWith: function() {
20209 return He(this, arguments, function(e) {
20210 var t = this.parentNode;
20211 k.inArray(this, n) < 0 && (k.cleanData(me(this)), t && t.replaceChild(e, this))
20215 appendTo: "append",
20216 prependTo: "prepend",
20217 insertBefore: "before",
20218 insertAfter: "after",
20219 replaceAll: "replaceWith"
20220 }, function(e, a) {
20221 k.fn[e] = function(e) {
20222 for (var t, n = [], r = k(e), i = r.length - 1, o = 0; o <= i; o++) t = o === i ? this : this.clone(!0), k(r[o])[a](t), l.apply(n, t.get());
20223 return this.pushStack(n)
20226 var Le = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"),
20228 var t = e.ownerDocument.defaultView;
20229 return t && t.opener || (t = E), t.getComputedStyle(e)
20231 qe = new RegExp(ne.join("|"), "i");
20233 function Ue(e, t, n) {
20234 var r, i, o, a, s = e.style;
20235 return (n = n || Fe(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = k.style(e, t)), !v.pixelBoxStyles() && Le.test(a) && qe.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
20238 function Ve(e, t) {
20241 if (!e()) return (this.get = t).apply(this, arguments);
20248 s.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", re.appendChild(s).appendChild(l);
20249 var e = E.getComputedStyle(l);
20250 n = "1%" !== e.top, a = 12 === t(e.marginLeft), l.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), l.style.position = "absolute", i = 12 === t(l.offsetWidth / 3), re.removeChild(s), l = null
20255 return Math.round(parseFloat(e))
20257 var n, r, i, o, a, s = C.createElement("div"),
20258 l = C.createElement("div");
20259 l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", v.clearCloneStyle = "content-box" === l.style.backgroundClip, k.extend(v, {
20260 boxSizingReliable: function() {
20263 pixelBoxStyles: function() {
20266 pixelPosition: function() {
20269 reliableMarginLeft: function() {
20272 scrollboxSize: function() {
20277 var Be = ["Webkit", "Moz", "ms"],
20278 ze = C.createElement("div").style,
20282 var t = k.cssProps[e] || We[e];
20283 return t || (e in ze ? e : We[e] = function(e) {
20284 for (var t = e[0].toUpperCase() + e.slice(1), n = Be.length; n--;)
20285 if ((e = Be[n] + t) in ze) return e
20288 var Ge = /^(none|table(?!-c[ea]).+)/,
20291 position: "absolute",
20292 visibility: "hidden",
20296 letterSpacing: "0",
20300 function Qe(e, t, n) {
20301 var r = te.exec(t);
20302 return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
20305 function Je(e, t, n, r, i, o) {
20306 var a = "width" === t ? 1 : 0,
20309 if (n === (r ? "border" : "content")) return 0;
20310 for (; a < 4; a += 2) "margin" === n && (l += k.css(e, n + ne[a], !0, i)), r ? ("content" === n && (l -= k.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (l -= k.css(e, "border" + ne[a] + "Width", !0, i))) : (l += k.css(e, "padding" + ne[a], !0, i), "padding" !== n ? l += k.css(e, "border" + ne[a] + "Width", !0, i) : s += k.css(e, "border" + ne[a] + "Width", !0, i));
20311 return !r && 0 <= o && (l += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - l - s - .5)) || 0), l
20314 function et(e, t, n) {
20316 i = (!v.boxSizingReliable() || n) && "border-box" === k.css(e, "boxSizing", !1, r),
20319 s = "offset" + t[0].toUpperCase() + t.slice(1);
20324 return (!v.boxSizingReliable() && i || "auto" === a || !parseFloat(a) && "inline" === k.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === k.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Je(e, t, n || (i ? "border" : "content"), o, r, a) + "px"
20327 function tt(e, t, n, r, i) {
20328 return new tt.prototype.init(e, t, n, r, i)
20333 get: function(e, t) {
20335 var n = Ue(e, "opacity");
20336 return "" === n ? "1" : n
20342 animationIterationCount: !0,
20351 gridColumnStart: !0,
20364 style: function(e, t, n, r) {
20365 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
20366 var i, o, a, s = W(t),
20369 if (l || (t = Ye(s)), a = k.cssHooks[t] || k.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : c[t];
20370 "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = le(e, t, i), o = "number"), null != n && n == n && ("number" !== o || l || (n += i && i[3] || (k.cssNumber[s] ? "" : "px")), v.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (c[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (l ? c.setProperty(t, n) : c[t] = n))
20373 css: function(e, t, n, r) {
20374 var i, o, a, s = W(t);
20375 return Ke.test(t) || (t = Ye(s)), (a = k.cssHooks[t] || k.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Ue(e, t, r)), "normal" === i && t in Xe && (i = Xe[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
20377 }), k.each(["height", "width"], function(e, l) {
20379 get: function(e, t, n) {
20380 if (t) return !Ge.test(k.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? et(e, l, n) : se(e, Ze, function() {
20384 set: function(e, t, n) {
20386 o = !v.scrollboxSize() && "absolute" === i.position,
20387 a = (o || n) && "border-box" === k.css(e, "boxSizing", !1, i),
20388 s = n ? Je(e, l, n, a, i) : 0;
20389 return a && o && (s -= Math.ceil(e["offset" + l[0].toUpperCase() + l.slice(1)] - parseFloat(i[l]) - Je(e, l, "border", !1, i) - .5)), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[l] = t, t = k.css(e, l)), Qe(0, t, s)
20392 }), k.cssHooks.marginLeft = Ve(v.reliableMarginLeft, function(e, t) {
20393 if (t) return (parseFloat(Ue(e, "marginLeft")) || e.getBoundingClientRect().left - se(e, {
20396 return e.getBoundingClientRect().left
20402 }, function(i, o) {
20403 k.cssHooks[i + o] = {
20404 expand: function(e) {
20405 for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++) n[i + ne[t] + o] = r[t] || r[t - 2] || r[0];
20408 }, "margin" !== i && (k.cssHooks[i + o].set = Qe)
20410 css: function(e, t) {
20411 return U(this, function(e, t, n) {
20414 if (Array.isArray(t)) {
20415 for (r = Fe(e), i = t.length; a < i; a++) o[t[a]] = k.css(e, t[a], !1, r);
20418 return void 0 !== n ? k.style(e, t, n) : k.css(e, t)
20419 }, e, t, 1 < arguments.length)
20421 }), ((k.Tween = tt).prototype = {
20423 init: function(e, t, n, r, i, o) {
20424 this.elem = e, this.prop = n, this.easing = i || k.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (k.cssNumber[n] ? "" : "px")
20427 var e = tt.propHooks[this.prop];
20428 return e && e.get ? e.get(this) : tt.propHooks._default.get(this)
20431 var t, n = tt.propHooks[this.prop];
20432 return this.options.duration ? this.pos = t = k.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) : tt.propHooks._default.set(this), this
20434 }).init.prototype = tt.prototype, (tt.propHooks = {
20438 return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = k.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
20441 k.fx.step[e.prop] ? k.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !k.cssHooks[e.prop] && null == e.elem.style[Ye(e.prop)] ? e.elem[e.prop] = e.now : k.style(e.elem, e.prop, e.now + e.unit)
20444 }).scrollTop = tt.propHooks.scrollLeft = {
20446 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
20449 linear: function(e) {
20452 swing: function(e) {
20453 return .5 - Math.cos(e * Math.PI) / 2
20456 }, k.fx = tt.prototype.init, k.fx.step = {};
20457 var nt, rt, it, ot, at = /^(?:toggle|show|hide)$/,
20458 st = /queueHooks$/;
20461 rt && (!1 === C.hidden && E.requestAnimationFrame ? E.requestAnimationFrame(lt) : E.setTimeout(lt, k.fx.interval), k.fx.tick())
20465 return E.setTimeout(function() {
20467 }), nt = Date.now()
20470 function ut(e, t) {
20475 for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = ne[r])] = i["padding" + n] = e;
20476 return t && (i.opacity = i.width = e), i
20479 function dt(e, t, n) {
20480 for (var r, i = (ft.tweeners[t] || []).concat(ft.tweeners["*"]), o = 0, a = i.length; o < a; o++)
20481 if (r = i[o].call(n, t, e)) return r
20484 function ft(o, e, t) {
20486 i = ft.prefilters.length,
20487 s = k.Deferred().always(function() {
20492 for (var e = nt || ct(), t = Math.max(0, c.startTime + c.duration - e), n = 1 - (t / c.duration || 0), r = 0, i = c.tweens.length; r < i; r++) c.tweens[r].run(n);
20493 return s.notifyWith(o, [c, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [c, 1, 0]), s.resolveWith(o, [c]), !1)
20497 props: k.extend({}, e),
20498 opts: k.extend(!0, {
20500 easing: k.easing._default
20502 originalProperties: e,
20503 originalOptions: t,
20504 startTime: nt || ct(),
20505 duration: t.duration,
20507 createTween: function(e, t) {
20508 var n = k.Tween(o, c.opts, e, t, c.opts.specialEasing[e] || c.opts.easing);
20509 return c.tweens.push(n), n
20511 stop: function(e) {
20513 n = e ? c.tweens.length : 0;
20514 if (a) return this;
20515 for (a = !0; t < n; t++) c.tweens[t].run(1);
20516 return e ? (s.notifyWith(o, [c, 1, 0]), s.resolveWith(o, [c, e])) : s.rejectWith(o, [c, e]), this
20520 for (! function(e, t) {
20523 if (i = t[r = W(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = k.cssHooks[r]) && "expand" in a)
20524 for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i);
20526 }(u, c.opts.specialEasing); r < i; r++)
20527 if (n = ft.prefilters[r].call(c, o, u, c.opts)) return b(n.stop) && (k._queueHooks(c.elem, c.opts.queue).stop = n.stop.bind(n)), n;
20528 return k.map(u, dt, c), b(c.opts.start) && c.opts.start.call(o, c), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always), k.fx.timer(k.extend(l, {
20531 queue: c.opts.queue
20534 k.Animation = k.extend(ft, {
20536 "*": [function(e, t) {
20537 var n = this.createTween(e, t);
20538 return le(n.elem, e, te.exec(t), n), n
20541 tweener: function(e, t) {
20542 for (var n, r = 0, i = (e = b(e) ? (t = e, ["*"]) : e.match(R)).length; r < i; r++) n = e[r], ft.tweeners[n] = ft.tweeners[n] || [], ft.tweeners[n].unshift(t)
20544 prefilters: [function(e, t, n) {
20545 var r, i, o, a, s, l, c, u, d = "width" in t || "height" in t,
20549 m = e.nodeType && ae(e),
20550 g = K.get(e, "fxshow");
20551 for (r in n.queue || (null == (a = k._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
20553 }), a.unqueued++, f.always(function() {
20554 f.always(function() {
20555 a.unqueued--, k.queue(e, "fx").length || a.empty.fire()
20558 if (i = t[r], at.test(i)) {
20559 if (delete t[r], o = o || "toggle" === i, i === (m ? "hide" : "show")) {
20560 if ("show" !== i || !g || void 0 === g[r]) continue;
20563 h[r] = g && g[r] || k.style(e, r)
20564 } if ((l = !k.isEmptyObject(t)) || !k.isEmptyObject(h))
20565 for (r in d && 1 === e.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY], null == (c = g && g.display) && (c = K.get(e, "display")), "none" === (u = k.css(e, "display")) && (c ? u = c : (ue([e], !0), c = e.style.display || c, u = k.css(e, "display"), ue([e]))), ("inline" === u || "inline-block" === u && null != c) && "none" === k.css(e, "float") && (l || (f.done(function() {
20567 }), null == c && (u = p.display, c = "none" === u ? "" : u)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", f.always(function() {
20568 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
20569 })), l = !1, h) l || (g ? "hidden" in g && (m = g.hidden) : g = K.access(e, "fxshow", {
20571 }), o && (g.hidden = !m), m && ue([e], !0), f.done(function() {
20572 for (r in m || ue([e]), K.remove(e, "fxshow"), h) k.style(e, r, h[r])
20573 })), l = dt(m ? g[r] : 0, r, f), r in g || (g[r] = l.start, m && (l.end = l.start, l.start = 0))
20575 prefilter: function(e, t) {
20576 t ? ft.prefilters.unshift(e) : ft.prefilters.push(e)
20578 }), k.speed = function(e, t, n) {
20579 var r = e && "object" == typeof e ? k.extend({}, e) : {
20580 complete: n || !n && t || b(e) && e,
20582 easing: n && t || t && !b(t) && t
20584 return k.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in k.fx.speeds ? r.duration = k.fx.speeds[r.duration] : r.duration = k.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
20585 b(r.old) && r.old.call(this), r.queue && k.dequeue(this, r.queue)
20588 fadeTo: function(e, t, n, r) {
20589 return this.filter(ae).css("opacity", 0).show().end().animate({
20593 animate: function(t, e, n, r) {
20594 var i = k.isEmptyObject(t),
20595 o = k.speed(e, n, r),
20597 var e = ft(this, k.extend({}, t), o);
20598 (i || K.get(this, "finish")) && e.stop(!0)
20600 return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
20602 stop: function(i, e, o) {
20603 var a = function(e) {
20605 delete e.stop, t(o)
20607 return "string" != typeof i && (o = e, e = i, i = void 0), e && !1 !== i && this.queue(i || "fx", []), this.each(function() {
20609 t = null != i && i + "queueHooks",
20612 if (t) r[t] && r[t].stop && a(r[t]);
20614 for (t in r) r[t] && r[t].stop && st.test(t) && a(r[t]);
20615 for (t = n.length; t--;) n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1));
20616 !e && o || k.dequeue(this, i)
20619 finish: function(a) {
20620 return !1 !== a && (a = a || "fx"), this.each(function() {
20621 var e, t = K.get(this),
20622 n = t[a + "queue"],
20623 r = t[a + "queueHooks"],
20625 o = n ? n.length : 0;
20626 for (t.finish = !0, k.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;) i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1));
20627 for (e = 0; e < o; e++) n[e] && n[e].finish && n[e].finish.call(this);
20631 }), k.each(["toggle", "show", "hide"], function(e, r) {
20633 k.fn[r] = function(e, t, n) {
20634 return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(ut(r, !0), e, t, n)
20637 slideDown: ut("show"),
20638 slideUp: ut("hide"),
20639 slideToggle: ut("toggle"),
20649 }, function(e, r) {
20650 k.fn[e] = function(e, t, n) {
20651 return this.animate(r, e, t, n)
20653 }), k.timers = [], k.fx.tick = function() {
20656 for (nt = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
20657 n.length || k.fx.stop(), nt = void 0
20658 }, k.fx.timer = function(e) {
20659 k.timers.push(e), k.fx.start()
20660 }, k.fx.interval = 13, k.fx.start = function() {
20661 rt || (rt = !0, lt())
20662 }, k.fx.stop = function() {
20668 }, k.fn.delay = function(r, e) {
20669 return r = k.fx && k.fx.speeds[r] || r, e = e || "fx", this.queue(e, function(e, t) {
20670 var n = E.setTimeout(e, r);
20671 t.stop = function() {
20675 }, it = C.createElement("input"), ot = C.createElement("select").appendChild(C.createElement("option")), it.type = "checkbox", v.checkOn = "" !== it.value, v.optSelected = ot.selected, (it = C.createElement("input")).value = "t", it.type = "radio", v.radioValue = "t" === it.value;
20676 var ht, pt = k.expr.attrHandle;
20678 attr: function(e, t) {
20679 return U(this, k.attr, e, t, 1 < arguments.length)
20681 removeAttr: function(e) {
20682 return this.each(function() {
20683 k.removeAttr(this, e)
20687 attr: function(e, t, n) {
20688 var r, i, o = e.nodeType;
20689 if (3 !== o && 8 !== o && 2 !== o) return void 0 === e.getAttribute ? k.prop(e, t, n) : (1 === o && k.isXMLDoc(e) || (i = k.attrHooks[t.toLowerCase()] || (k.expr.match.bool.test(t) ? ht : void 0)), void 0 !== n ? null === n ? void k.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 = k.find.attr(e, t)) ? void 0 : r)
20693 set: function(e, t) {
20694 if (!v.radioValue && "radio" === t && T(e, "input")) {
20696 return e.setAttribute("type", t), n && (e.value = n), t
20701 removeAttr: function(e, t) {
20703 i = t && t.match(R);
20704 if (i && 1 === e.nodeType)
20705 for (; n = i[r++];) e.removeAttribute(n)
20708 set: function(e, t, n) {
20709 return !1 === t ? k.removeAttr(e, n) : e.setAttribute(n, n), n
20711 }, k.each(k.expr.match.bool.source.match(/\w+/g), function(e, t) {
20712 var a = pt[t] || k.find.attr;
20713 pt[t] = function(e, t, n) {
20714 var r, i, o = t.toLowerCase();
20715 return n || (i = pt[o], pt[o] = r, r = null != a(e, t, n) ? o : null, pt[o] = i), r
20718 var mt = /^(?:input|select|textarea|button)$/i,
20719 gt = /^(?:a|area)$/i;
20722 return (e.match(R) || []).join(" ")
20726 return e.getAttribute && e.getAttribute("class") || ""
20730 return Array.isArray(e) ? e : "string" == typeof e && e.match(R) || []
20733 prop: function(e, t) {
20734 return U(this, k.prop, e, t, 1 < arguments.length)
20736 removeProp: function(e) {
20737 return this.each(function() {
20738 delete this[k.propFix[e] || e]
20742 prop: function(e, t, n) {
20743 var r, i, o = e.nodeType;
20744 if (3 !== o && 8 !== o && 2 !== o) return 1 === o && k.isXMLDoc(e) || (t = k.propFix[t] || t, i = k.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]
20749 var t = k.find.attr(e, "tabindex");
20750 return t ? parseInt(t, 10) : mt.test(e.nodeName) || gt.test(e.nodeName) && e.href ? 0 : -1
20758 }), v.optSelected || (k.propHooks.selected = {
20760 var t = e.parentNode;
20761 return t && t.parentNode && t.parentNode.selectedIndex, null
20764 var t = e.parentNode;
20765 t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
20767 }), k.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
20768 k.propFix[this.toLowerCase()] = this
20770 addClass: function(t) {
20771 var e, n, r, i, o, a, s, l = 0;
20772 if (b(t)) return this.each(function(e) {
20773 k(this).addClass(t.call(this, e, bt(this)))
20775 if ((e = yt(t)).length)
20776 for (; n = this[l++];)
20777 if (i = bt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
20778 for (a = 0; o = e[a++];) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
20779 i !== (s = vt(r)) && n.setAttribute("class", s)
20782 removeClass: function(t) {
20783 var e, n, r, i, o, a, s, l = 0;
20784 if (b(t)) return this.each(function(e) {
20785 k(this).removeClass(t.call(this, e, bt(this)))
20787 if (!arguments.length) return this.attr("class", "");
20788 if ((e = yt(t)).length)
20789 for (; n = this[l++];)
20790 if (i = bt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
20791 for (a = 0; o = e[a++];)
20792 for (; - 1 < r.indexOf(" " + o + " ");) r = r.replace(" " + o + " ", " ");
20793 i !== (s = vt(r)) && n.setAttribute("class", s)
20796 toggleClass: function(i, t) {
20798 a = "string" === o || Array.isArray(i);
20799 return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : b(i) ? this.each(function(e) {
20800 k(this).toggleClass(i.call(this, e, bt(this), t), t)
20801 }) : this.each(function() {
20804 for (t = 0, n = k(this), r = yt(i); e = r[t++];) n.hasClass(e) ? n.removeClass(e) : n.addClass(e);
20805 else void 0 !== i && "boolean" !== o || ((e = bt(this)) && K.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : K.get(this, "__className__") || ""))
20808 hasClass: function(e) {
20810 for (t = " " + e + " "; n = this[r++];)
20811 if (1 === n.nodeType && -1 < (" " + vt(bt(n)) + " ").indexOf(t)) return !0;
20818 var r, e, i, t = this[0];
20819 return arguments.length ? (i = b(n), this.each(function(e) {
20821 1 === this.nodeType && (null == (t = i ? n.call(this, e, k(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = k.map(t, function(e) {
20822 return null == e ? "" : e + ""
20823 })), (r = k.valHooks[this.type] || k.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t))
20824 })) : t ? (r = k.valHooks[t.type] || k.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof(e = t.value) ? e.replace(_t, "") : null == e ? "" : e : void 0
20830 var t = k.find.attr(e, "value");
20831 return null != t ? t : vt(k.text(e))
20836 var t, n, r, i = e.options,
20837 o = e.selectedIndex,
20838 a = "select-one" === e.type,
20840 l = a ? o + 1 : i.length;
20841 for (r = o < 0 ? l : a ? o : 0; r < l; r++)
20842 if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !T(n.parentNode, "optgroup"))) {
20843 if (t = k(n).val(), a) return t;
20847 set: function(e, t) {
20848 for (var n, r, i = e.options, o = k.makeArray(t), a = i.length; a--;)((r = i[a]).selected = -1 < k.inArray(k.valHooks.option.get(r), o)) && (n = !0);
20849 return n || (e.selectedIndex = -1), o
20853 }), k.each(["radio", "checkbox"], function() {
20854 k.valHooks[this] = {
20855 set: function(e, t) {
20856 if (Array.isArray(t)) return e.checked = -1 < k.inArray(k(e).val(), t)
20858 }, v.checkOn || (k.valHooks[this].get = function(e) {
20859 return null === e.getAttribute("value") ? "on" : e.value
20861 }), v.focusin = "onfocusin" in E;
20862 var $t = /^(?:focusinfocus|focusoutblur)$/,
20864 e.stopPropagation()
20866 k.extend(k.event, {
20867 trigger: function(e, t, n, r) {
20868 var i, o, a, s, l, c, u, d, f = [n || C],
20869 h = g.call(e, "type") ? e.type : e,
20870 p = g.call(e, "namespace") ? e.namespace.split(".") : [];
20871 if (o = d = a = n = n || C, 3 !== n.nodeType && 8 !== n.nodeType && !$t.test(h + k.event.triggered) && (-1 < h.indexOf(".") && (h = (p = h.split(".")).shift(), p.sort()), l = h.indexOf(":") < 0 && "on" + h, (e = e[k.expando] ? e : new k.Event(h, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = p.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : k.makeArray(t, [e]), u = k.event.special[h] || {}, r || !u.trigger || !1 !== u.trigger.apply(n, t))) {
20872 if (!r && !u.noBubble && !y(n)) {
20873 for (s = u.delegateType || h, $t.test(s + h) || (o = o.parentNode); o; o = o.parentNode) f.push(o), a = o;
20874 a === (n.ownerDocument || C) && f.push(a.defaultView || a.parentWindow || E)
20877 (o = f[i++]) && !e.isPropagationStopped();) d = o, e.type = 1 < i ? s : u.bindType || h, (c = (K.get(o, "events") || {})[e.type] && K.get(o, "handle")) && c.apply(o, t), (c = l && o[l]) && c.apply && Y(o) && (e.result = c.apply(o, t), !1 === e.result && e.preventDefault());
20878 return e.type = h, r || e.isDefaultPrevented() || u._default && !1 !== u._default.apply(f.pop(), t) || !Y(n) || l && b(n[h]) && !y(n) && ((a = n[l]) && (n[l] = null), k.event.triggered = h, e.isPropagationStopped() && d.addEventListener(h, wt), n[h](), e.isPropagationStopped() && d.removeEventListener(h, wt), k.event.triggered = void 0, a && (n[l] = a)), e.result
20881 simulate: function(e, t, n) {
20882 var r = k.extend(new k.Event, n, {
20886 k.event.trigger(r, null, t)
20889 trigger: function(e, t) {
20890 return this.each(function() {
20891 k.event.trigger(e, t, this)
20894 triggerHandler: function(e, t) {
20896 if (n) return k.event.trigger(e, t, n, !0)
20898 }), v.focusin || k.each({
20901 }, function(n, r) {
20902 var i = function(e) {
20903 k.event.simulate(r, e.target, k.event.fix(e))
20905 k.event.special[r] = {
20906 setup: function() {
20907 var e = this.ownerDocument || this,
20908 t = K.access(e, r);
20909 t || e.addEventListener(n, i, !0), K.access(e, r, (t || 0) + 1)
20911 teardown: function() {
20912 var e = this.ownerDocument || this,
20913 t = K.access(e, r) - 1;
20914 t ? K.access(e, r, t) : (e.removeEventListener(n, i, !0), K.remove(e, r))
20918 var Et = E.location,
20921 k.parseXML = function(e) {
20923 if (!e || "string" != typeof e) return null;
20925 t = (new E.DOMParser).parseFromString(e, "text/xml")
20929 return t && !t.getElementsByTagName("parsererror").length || k.error("Invalid XML: " + e), t
20933 Mt = /^(?:submit|button|image|reset|file)$/i,
20934 At = /^(?:input|select|textarea|keygen)/i;
20936 function St(n, e, r, i) {
20938 if (Array.isArray(e)) k.each(e, function(e, t) {
20939 r || xt.test(n) ? i(n, t) : St(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i)
20941 else if (r || "object" !== $(e)) i(n, e);
20943 for (t in e) St(n + "[" + t + "]", e[t], r, i)
20945 k.param = function(e, t) {
20947 i = function(e, t) {
20948 var n = b(t) ? t() : t;
20949 r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
20951 if (null == e) return "";
20952 if (Array.isArray(e) || e.jquery && !k.isPlainObject(e)) k.each(e, function() {
20953 i(this.name, this.value)
20956 for (n in e) St(n, e[n], t, i);
20959 serialize: function() {
20960 return k.param(this.serializeArray())
20962 serializeArray: function() {
20963 return this.map(function() {
20964 var e = k.prop(this, "elements");
20965 return e ? k.makeArray(e) : this
20966 }).filter(function() {
20968 return this.name && !k(this).is(":disabled") && At.test(this.nodeName) && !Mt.test(e) && (this.checked || !de.test(e))
20969 }).map(function(e, t) {
20970 var n = k(this).val();
20971 return null == n ? null : Array.isArray(n) ? k.map(n, function(e) {
20974 value: e.replace(Tt, "\r\n")
20978 value: n.replace(Tt, "\r\n")
20985 Nt = /([?&])_=[^&]*/,
20986 It = /^(.*?):[ \t]*([^\r\n]*)$/gm,
20987 Rt = /^(?:GET|HEAD)$/,
20991 Lt = "*/".concat("*"),
20992 Ft = C.createElement("a");
20995 return function(e, t) {
20996 "string" != typeof e && (t = e, e = "*");
20998 i = e.toLowerCase().match(R) || [];
21000 for (; n = i[r++];) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t)
21004 function Ut(t, i, o, a) {
21010 return s[e] = !0, k.each(t[e] || [], function(e, t) {
21011 var n = t(i, o, a);
21012 return "string" != typeof n || l || s[n] ? l ? !(r = n) : void 0 : (i.dataTypes.unshift(n), c(n), !1)
21015 return c(i.dataTypes[0]) || !s["*"] && c("*")
21018 function Vt(e, t) {
21019 var n, r, i = k.ajaxSettings.flatOptions || {};
21020 for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
21021 return r && k.extend(!0, e, r), e
21023 Ft.href = Et.href, k.extend({
21030 isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),
21034 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
21037 text: "text/plain",
21039 xml: "application/xml, text/xml",
21040 json: "application/json, text/javascript"
21048 xml: "responseXML",
21049 text: "responseText",
21050 json: "responseJSON"
21055 "text json": JSON.parse,
21056 "text xml": k.parseXML
21063 ajaxSetup: function(e, t) {
21064 return t ? Vt(Vt(e, k.ajaxSettings), t) : Vt(k.ajaxSettings, e)
21066 ajaxPrefilter: qt(Ht),
21067 ajaxTransport: qt(jt),
21068 ajax: function(e, t) {
21069 "object" == typeof e && (t = e, e = void 0), t = t || {};
21070 var u, d, f, n, h, r, p, m, i, o, g = k.ajaxSetup({}, t),
21071 v = g.context || g,
21072 b = g.context && (v.nodeType || v.jquery) ? k(v) : k.event,
21074 _ = k.Callbacks("once memory"),
21075 $ = g.statusCode || {},
21081 getResponseHeader: function(e) {
21085 for (n = {}; t = It.exec(f);) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2]);
21086 t = n[e.toLowerCase() + " "]
21088 return null == t ? null : t.join(", ")
21090 getAllResponseHeaders: function() {
21091 return p ? f : null
21093 setRequestHeader: function(e, t) {
21094 return null == p && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this
21096 overrideMimeType: function(e) {
21097 return null == p && (g.mimeType = e), this
21099 statusCode: function(e) {
21102 if (p) w.always(e[w.status]);
21104 for (t in e) $[t] = [$[t], e[t]];
21107 abort: function(e) {
21109 return u && u.abort(t), c(0, t), this
21112 if (y.promise(w), g.url = ((e || g.url || Et.href) + "").replace(Pt, Et.protocol + "//"), g.type = t.method || t.type || g.method || g.type, g.dataTypes = (g.dataType || "*").toLowerCase().match(R) || [""], null == g.crossDomain) {
21113 r = C.createElement("a");
21115 r.href = g.url, r.href = r.href, g.crossDomain = Ft.protocol + "//" + Ft.host != r.protocol + "//" + r.host
21120 if (g.data && g.processData && "string" != typeof g.data && (g.data = k.param(g.data, g.traditional)), Ut(Ht, g, t, w), p) return w;
21121 for (i in (m = k.event && g.global) && 0 == k.active++ && k.event.trigger("ajaxStart"), g.type = g.type.toUpperCase(), g.hasContent = !Rt.test(g.type), d = g.url.replace(Ot, ""), g.hasContent ? g.data && g.processData && 0 === (g.contentType || "").indexOf("application/x-www-form-urlencoded") && (g.data = g.data.replace(Dt, "+")) : (o = g.url.slice(d.length), g.data && (g.processData || "string" == typeof g.data) && (d += (kt.test(d) ? "&" : "?") + g.data, delete g.data), !1 === g.cache && (d = d.replace(Nt, "$1"), o = (kt.test(d) ? "&" : "?") + "_=" + Ct++ + o), g.url = d + o), g.ifModified && (k.lastModified[d] && w.setRequestHeader("If-Modified-Since", k.lastModified[d]), k.etag[d] && w.setRequestHeader("If-None-Match", k.etag[d])), (g.data && g.hasContent && !1 !== g.contentType || t.contentType) && w.setRequestHeader("Content-Type", g.contentType), w.setRequestHeader("Accept", g.dataTypes[0] && g.accepts[g.dataTypes[0]] ? g.accepts[g.dataTypes[0]] + ("*" !== g.dataTypes[0] ? ", " + Lt + "; q=0.01" : "") : g.accepts["*"]), g.headers) w.setRequestHeader(i, g.headers[i]);
21122 if (g.beforeSend && (!1 === g.beforeSend.call(v, w, g) || p)) return w.abort();
21123 if (l = "abort", _.add(g.complete), w.done(g.success), w.fail(g.error), u = Ut(jt, g, t, w)) {
21124 if (w.readyState = 1, m && b.trigger("ajaxSend", [w, g]), p) return w;
21125 g.async && 0 < g.timeout && (h = E.setTimeout(function() {
21129 p = !1, u.send(a, c)
21134 } else c(-1, "No Transport");
21136 function c(e, t, n, r) {
21137 var i, o, a, s, l, c = t;
21138 p || (p = !0, h && E.clearTimeout(h), u = void 0, f = r || "", w.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function(e, t, n) {
21139 for (var r, i, o, a, s = e.contents, l = e.dataTypes;
21140 "*" === l[0];) l.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
21143 if (s[i] && s[i].test(r)) {
21146 } if (l[0] in n) o = l[0];
21149 if (!l[0] || e.converters[i + " " + l[0]]) {
21157 if (o) return o !== l[0] && l.unshift(o), n[o]
21158 }(g, w, n)), s = function(e, t, n, r) {
21159 var i, o, a, s, l, c = {},
21160 u = e.dataTypes.slice();
21162 for (a in e.converters) c[a.toLowerCase()] = e.converters[a];
21163 for (o = u.shift(); o;)
21164 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !l && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = o, o = u.shift())
21165 if ("*" === o) o = l;
21166 else if ("*" !== l && l !== o) {
21167 if (!(a = c[l + " " + o] || c["* " + o]))
21169 if ((s = i.split(" "))[1] === o && (a = c[l + " " + s[0]] || c["* " + s[0]])) {
21170 !0 === a ? a = c[i] : !0 !== c[i] && (o = s[0], u.unshift(s[1]));
21173 if (a && e.throws) t = a(t);
21178 state: "parsererror",
21179 error: a ? e : "No conversion from " + l + " to " + o
21187 }(g, s, w, i), i ? (g.ifModified && ((l = w.getResponseHeader("Last-Modified")) && (k.lastModified[d] = l), (l = w.getResponseHeader("etag")) && (k.etag[d] = l)), 204 === e || "HEAD" === g.type ? c = "nocontent" : 304 === e ? c = "notmodified" : (c = s.state, o = s.data, i = !(a = s.error))) : (a = c, !e && c || (c = "error", e < 0 && (e = 0))), w.status = e, w.statusText = (t || c) + "", i ? y.resolveWith(v, [o, c, w]) : y.rejectWith(v, [w, c, a]), w.statusCode($), $ = void 0, m && b.trigger(i ? "ajaxSuccess" : "ajaxError", [w, g, i ? o : a]), _.fireWith(v, [w, c]), m && (b.trigger("ajaxComplete", [w, g]), --k.active || k.event.trigger("ajaxStop")))
21191 getJSON: function(e, t, n) {
21192 return k.get(e, t, n, "json")
21194 getScript: function(e, t) {
21195 return k.get(e, void 0, t, "script")
21197 }), k.each(["get", "post"], function(e, i) {
21198 k[i] = function(e, t, n, r) {
21199 return b(t) && (r = r || n, n = t, t = void 0), k.ajax(k.extend({
21205 }, k.isPlainObject(e) && e))
21207 }), k._evalUrl = function(e, t) {
21211 dataType: "script",
21216 "text script": function() {}
21218 dataFilter: function(e) {
21223 wrapAll: function(e) {
21225 return this[0] && (b(e) && (e = e.call(this[0])), t = k(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
21226 for (var e = this; e.firstElementChild;) e = e.firstElementChild;
21228 }).append(this)), this
21230 wrapInner: function(n) {
21231 return b(n) ? this.each(function(e) {
21232 k(this).wrapInner(n.call(this, e))
21233 }) : this.each(function() {
21236 t.length ? t.wrapAll(n) : e.append(n)
21239 wrap: function(t) {
21241 return this.each(function(e) {
21242 k(this).wrapAll(n ? t.call(this, e) : t)
21245 unwrap: function(e) {
21246 return this.parent(e).not("body").each(function() {
21247 k(this).replaceWith(this.childNodes)
21250 }), k.expr.pseudos.hidden = function(e) {
21251 return !k.expr.pseudos.visible(e)
21252 }, k.expr.pseudos.visible = function(e) {
21253 return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
21254 }, k.ajaxSettings.xhr = function() {
21256 return new E.XMLHttpRequest
21263 zt = k.ajaxSettings.xhr();
21264 v.cors = !!zt && "withCredentials" in zt, v.ajax = zt = !!zt, k.ajaxTransport(function(i) {
21266 if (v.cors || zt && !i.crossDomain) return {
21267 send: function(e, t) {
21268 var n, r = i.xhr();
21269 if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields)
21270 for (n in i.xhrFields) r[n] = i.xhrFields[n];
21271 for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]);
21273 return function() {
21274 o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(Bt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? {
21277 text: r.responseText
21278 }, r.getAllResponseHeaders()))
21280 }, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function() {
21281 4 === r.readyState && E.setTimeout(function() {
21286 r.send(i.hasContent && i.data || null)
21291 abort: function() {
21295 }), k.ajaxPrefilter(function(e) {
21296 e.crossDomain && (e.contents.script = !1)
21299 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
21302 script: /\b(?:java|ecma)script\b/
21305 "text script": function(e) {
21306 return k.globalEval(e), e
21309 }), k.ajaxPrefilter("script", function(e) {
21310 void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
21311 }), k.ajaxTransport("script", function(n) {
21313 if (n.crossDomain || n.scriptAttrs) return {
21314 send: function(e, t) {
21315 r = k("<script>").attr(n.scriptAttrs || {}).prop({
21316 charset: n.scriptCharset,
21318 }).on("load error", i = function(e) {
21319 r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type)
21320 }), C.head.appendChild(r[0])
21322 abort: function() {
21328 Gt = /(=)\?(?=&|$)|\?\?/;
21331 jsonpCallback: function() {
21332 var e = Yt.pop() || k.expando + "_" + Ct++;
21333 return this[e] = !0, e
21335 }), k.ajaxPrefilter("json jsonp", function(e, t, n) {
21336 var r, i, o, a = !1 !== e.jsonp && (Gt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Gt.test(e.data) && "data");
21337 if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = b(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Gt, "$1" + r) : !1 !== e.jsonp && (e.url += (kt.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function() {
21338 return o || k.error(r + " was not called"), o[0]
21339 }, e.dataTypes[0] = "json", i = E[r], E[r] = function() {
21341 }, n.always(function() {
21342 void 0 === i ? k(E).removeProp(r) : E[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, Yt.push(r)), o && b(i) && i(o[0]), o = i = void 0
21344 }), v.createHTMLDocument = ((Wt = C.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Wt.childNodes.length), k.parseHTML = function(e, t, n) {
21345 return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (v.createHTMLDocument ? ((r = (t = C.implementation.createHTMLDocument("")).createElement("base")).href = C.location.href, t.head.appendChild(r)) : t = C), o = !n && [], (i = M.exec(e)) ? [t.createElement(i[1])] : (i = _e([e], t, o), o && o.length && k(o).remove(), k.merge([], i.childNodes)));
21347 }, k.fn.load = function(e, t, n) {
21348 var r, i, o, a = this,
21349 s = e.indexOf(" ");
21350 return -1 < s && (r = vt(e.slice(s)), e = e.slice(0, s)), b(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && k.ajax({
21355 }).done(function(e) {
21356 o = arguments, a.html(r ? k("<div>").append(k.parseHTML(e)).find(r) : e)
21357 }).always(n && function(e, t) {
21358 a.each(function() {
21359 n.apply(this, o || [e.responseText, t, e])
21362 }, k.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
21363 k.fn[t] = function(e) {
21364 return this.on(t, e)
21366 }), k.expr.pseudos.animated = function(t) {
21367 return k.grep(k.timers, function(e) {
21368 return t === e.elem
21371 setOffset: function(e, t, n) {
21372 var r, i, o, a, s, l, c = k.css(e, "position"),
21375 "static" === c && (e.style.position = "relative"), s = u.offset(), o = k.css(e, "top"), l = k.css(e, "left"), i = ("absolute" === c || "fixed" === c) && -1 < (o + l).indexOf("auto") ? (a = (r = u.position()).top, r.left) : (a = parseFloat(o) || 0, parseFloat(l) || 0), b(t) && (t = t.call(e, n, k.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)
21378 offset: function(t) {
21379 if (arguments.length) return void 0 === t ? this : this.each(function(e) {
21380 k.offset.setOffset(this, t, e)
21382 var e, n, r = this[0];
21383 return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, {
21384 top: e.top + n.pageYOffset,
21385 left: e.left + n.pageXOffset
21391 position: function() {
21393 var e, t, n, r = this[0],
21398 if ("fixed" === k.css(r, "position")) t = r.getBoundingClientRect();
21400 for (t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement; e && (e === n.body || e === n.documentElement) && "static" === k.css(e, "position");) e = e.parentNode;
21401 e && e !== r && 1 === e.nodeType && ((i = k(e).offset()).top += k.css(e, "borderTopWidth", !0), i.left += k.css(e, "borderLeftWidth", !0))
21404 top: t.top - i.top - k.css(r, "marginTop", !0),
21405 left: t.left - i.left - k.css(r, "marginLeft", !0)
21409 offsetParent: function() {
21410 return this.map(function() {
21411 for (var e = this.offsetParent; e && "static" === k.css(e, "position");) e = e.offsetParent;
21416 scrollLeft: "pageXOffset",
21417 scrollTop: "pageYOffset"
21418 }, function(t, i) {
21419 var o = "pageYOffset" === i;
21420 k.fn[t] = function(e) {
21421 return U(this, function(e, t, n) {
21423 if (y(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t];
21424 r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n
21425 }, t, e, arguments.length)
21427 }), k.each(["top", "left"], function(e, n) {
21428 k.cssHooks[n] = Ve(v.pixelPosition, function(e, t) {
21429 if (t) return t = Ue(e, n), Le.test(t) ? k(e).position()[n] + "px" : t
21434 }, function(a, s) {
21436 padding: "inner" + a,
21439 }, function(r, o) {
21440 k.fn[o] = function(e, t) {
21441 var n = arguments.length && (r || "boolean" != typeof e),
21442 i = r || (!0 === e || !0 === t ? "margin" : "border");
21443 return U(this, function(e, t, n) {
21445 return y(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? k.css(e, t, i) : k.style(e, t, n, i)
21446 }, s, n ? e : void 0, n)
21449 }), k.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, n) {
21450 k.fn[n] = function(e, t) {
21451 return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
21454 hover: function(e, t) {
21455 return this.mouseenter(e).mouseleave(t || e)
21458 bind: function(e, t, n) {
21459 return this.on(e, null, t, n)
21461 unbind: function(e, t) {
21462 return this.off(e, null, t)
21464 delegate: function(e, t, n, r) {
21465 return this.on(t, e, n, r)
21467 undelegate: function(e, t, n) {
21468 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
21470 }), k.proxy = function(e, t) {
21472 if ("string" == typeof t && (n = e[t], t = e, e = n), b(e)) return r = s.call(arguments, 2), (i = function() {
21473 return e.apply(t || this, r.concat(s.call(arguments)))
21474 }).guid = e.guid = e.guid || k.guid++, i
21475 }, k.holdReady = function(e) {
21476 e ? k.readyWait++ : k.ready(!0)
21477 }, k.isArray = Array.isArray, k.parseJSON = JSON.parse, k.nodeName = T, k.isFunction = b, k.isWindow = y, k.camelCase = W, k.type = $, k.now = Date.now, k.isNumeric = function(e) {
21479 return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
21480 }, "function" == typeof define && define.amd && define("jquery", [], function() {
21485 return k.noConflict = function(e) {
21486 return E.$ === k && (E.$ = Zt), e && E.jQuery === k && (E.jQuery = Kt), k
21487 }, e || (E.jQuery = E.$ = k), k
21489 function(t, a, e) {
21492 var o = t.navigator.msPointerEnabled;
21494 on: function(e, t) {
21495 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
21497 off: function(e, t) {
21499 void 0 !== e ? (e = e.toLowerCase(), void 0 !== t ? this.events.hasOwnProperty(e) && (n = this.events[e], r = t, -1 < (i = n.indexOf(r)) && n.splice(i, 1)) : delete this.events[e]) : this.events = {}
21501 fire: function(e, t) {
21502 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
21504 return this.events.hasOwnProperty(e) && f(this.events[e], function(e) {
21505 n = !1 === e.apply(this, t.slice(1)) || n
21506 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
21508 webkitReadDataTransfer: function(e) {
21510 r = e.dataTransfer.items.length,
21514 e.relativePath = t.substring(1), n.push(e), a()
21522 0 == --r && t.addFiles(n, e)
21524 f(e.dataTransfer.items, function(e) {
21525 var t = e.webkitGetAsEntry();
21526 t ? t.isFile ? i(e.getAsFile(), t.fullPath) : function n(t) {
21527 t.readEntries(function(e) {
21528 e.length ? (r += e.length, f(e, function(e) {
21530 var t = e.fullPath;
21531 e.file(function(e) {
21534 } else e.isDirectory && n(e.createReader())
21537 }(t.createReader()) : a()
21540 generateUniqueIdentifier: function(e) {
21541 var t = this.opts.generateUniqueIdentifier;
21542 if ("function" == typeof t) return t(e);
21543 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
21544 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
21546 uploadNextChunk: function(e) {
21548 if (this.opts.prioritizeFirstAndLastChunk && (f(this.files, function(e) {
21549 return !e.paused && e.chunks.length && "pending" === e.chunks[0].status() ? (e.chunks[0].send(), !(t = !0)) : !e.paused && 1 < e.chunks.length && "pending" === e.chunks[e.chunks.length - 1].status() ? (e.chunks[e.chunks.length - 1].send(), !(t = !0)) : void 0
21551 if (f(this.files, function(e) {
21552 if (e.paused || f(e.chunks, function(e) {
21553 if ("pending" === e.status()) return e.send(), !(t = !0)
21557 return f(this.files, function(e) {
21558 if (!e.isComplete()) return !(n = !0)
21559 }), n || e || u(function() {
21560 this.fire("complete")
21563 assignBrowse: function(e, r, i, o) {
21564 e instanceof Element && (e = [e]), f(e, function(e) {
21566 "INPUT" === e.tagName && "file" === e.type ? n = e : ((n = a.createElement("input")).setAttribute("type", "file"), d(n.style, {
21567 visibility: "hidden",
21568 position: "absolute",
21571 }), e.appendChild(n), e.addEventListener("click", function() {
21573 }, !1)), this.opts.singleFile || i || n.setAttribute("multiple", "multiple"), r && n.setAttribute("webkitdirectory", "webkitdirectory"), f(o, function(e, t) {
21574 n.setAttribute(t, e)
21577 n.addEventListener("change", function(e) {
21578 e.target.value && (t.addFiles(e.target.files, e), e.target.value = "")
21582 assignDrop: function(e) {
21583 void 0 === e.length && (e = [e]), f(e, function(e) {
21584 e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
21587 unAssignDrop: function(e) {
21588 void 0 === e.length && (e = [e]), f(e, function(e) {
21589 e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
21592 isUploading: function() {
21594 return f(this.files, function(e) {
21595 if (e.isUploading()) return !(t = !0)
21598 _shouldUploadNext: function() {
21601 r = this.opts.simultaneousUploads;
21602 return f(this.files, function(e) {
21603 f(e.chunks, function(e) {
21604 if ("uploading" === e.status() && r <= ++t) return n = !1
21608 upload: function() {
21609 var e = this._shouldUploadNext();
21611 this.fire("uploadStart");
21612 for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
21613 t || u(function() {
21614 this.fire("complete")
21618 resume: function() {
21619 f(this.files, function(e) {
21620 e.isComplete() || e.resume()
21623 pause: function() {
21624 f(this.files, function(e) {
21628 cancel: function() {
21629 for (var e = this.files.length - 1; 0 <= e; e--) this.files[e].cancel()
21631 progress: function() {
21634 return f(this.files, function(e) {
21635 t += e.progress() * e.size, n += e.size
21636 }), 0 < n ? t / n : 0
21638 addFile: function(e, t) {
21639 this.addFiles([e], t)
21641 addFiles: function(e, r) {
21644 if ((!o || o && 0 < e.size) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
21645 var t = this.generateUniqueIdentifier(e);
21646 if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(t)) {
21647 var n = new s(this, e, t);
21648 this.fire("fileAdded", n, r) && i.push(n)
21651 }, this), this.fire("filesAdded", i, r) && (f(i, function(e) {
21652 this.opts.singleFile && 0 < this.files.length && this.removeFile(this.files[0]), this.files.push(e)
21653 }, this), this.fire("filesSubmitted", i, r))
21655 removeFile: function(e) {
21656 for (var t = this.files.length - 1; 0 <= t; t--) this.files[t] === e && (this.files.splice(t, 1), e.abort(), this.fire("fileRemoved", e))
21658 getFromUniqueIdentifier: function(t) {
21660 return f(this.files, function(e) {
21661 e.uniqueIdentifier === t && (n = e)
21664 getSize: function() {
21666 return f(this.files, function(e) {
21670 sizeUploaded: function() {
21672 return f(this.files, function(e) {
21673 t += e.sizeUploaded()
21676 timeRemaining: function() {
21679 return f(this.files, function(e) {
21680 e.paused || e.error || (t += e.size - e.sizeUploaded(), n += e.averageSpeed)
21681 }), t && !n ? Number.POSITIVE_INFINITY : t || n ? Math.floor(t / n) : 0
21684 measureSpeed: function() {
21685 var e = Date.now() - this._lastProgressCallback;
21687 var t = this.flowObj.opts.speedSmoothingFactor,
21688 n = this.sizeUploaded();
21689 this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
21692 chunkEvent: function(e, t, n) {
21695 if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
21696 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
21699 this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
21702 if (this.error) return;
21703 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));
21706 this.flowObj.fire("fileRetry", this, e)
21709 pause: function() {
21710 this.paused = !0, this.abort()
21712 resume: function() {
21713 this.paused = !1, this.flowObj.upload()
21715 abort: function(e) {
21716 this.currentSpeed = 0, this.averageSpeed = 0;
21717 var t = this.chunks;
21718 e && (this.chunks = []), f(t, function(e) {
21719 "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
21722 cancel: function() {
21723 this.flowObj.removeFile(this)
21725 retry: function() {
21726 this.bootstrap(), this.flowObj.upload()
21728 bootstrap: function() {
21729 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
21730 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 l(this.flowObj, this, n))
21732 progress: function() {
21733 if (this.error) return 1;
21734 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
21736 f(this.chunks, function(e) {
21737 t += e.progress() * (e.endByte - e.startByte)
21739 var e = t / this.size;
21740 return this._prevProgress = Math.max(this._prevProgress, .9999 < e ? 1 : e), this._prevProgress
21742 isUploading: function() {
21744 return f(this.chunks, function(e) {
21745 if ("uploading" === e.status()) return !(t = !0)
21748 isComplete: function() {
21750 return f(this.chunks, function(e) {
21751 var t = e.status();
21752 if ("pending" === t || "uploading" === t || "reading" === t || 1 === e.preprocessState || 1 === e.readState) return !(n = !0)
21755 sizeUploaded: function() {
21757 return f(this.chunks, function(e) {
21758 t += e.sizeUploaded()
21761 timeRemaining: function() {
21762 if (this.paused || this.error) return 0;
21763 var e = this.size - this.sizeUploaded();
21764 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
21766 getType: function() {
21767 return this.file.type && this.file.type.split("/")[1]
21769 getExtension: function() {
21770 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
21773 getParams: function() {
21775 flowChunkNumber: this.offset + 1,
21776 flowChunkSize: this.flowObj.opts.chunkSize,
21777 flowCurrentChunkSize: this.endByte - this.startByte,
21778 flowTotalSize: this.fileObj.size,
21779 flowIdentifier: this.fileObj.uniqueIdentifier,
21780 flowFilename: this.fileObj.name,
21781 flowRelativePath: this.fileObj.relativePath,
21782 flowTotalChunks: this.fileObj.chunks.length
21785 getTarget: function(e, t) {
21786 return 0 == t.length ? e : (e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&"))
21789 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
21790 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
21791 t = this.prepareXhrRequest(e, !0);
21794 preprocessFinished: function() {
21795 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
21797 readFinished: function(e) {
21798 this.readState = 2, this.bytes = e, this.send()
21801 var e = this.flowObj.opts.preprocess,
21802 t = this.flowObj.opts.readFileFn;
21803 if ("function" == typeof e) switch (this.preprocessState) {
21805 return this.preprocessState = 1, void e(this);
21809 switch (this.readState) {
21811 return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
21815 if (!this.flowObj.opts.testChunks || this.tested) {
21816 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);
21817 var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
21818 r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
21822 abort: function() {
21824 this.xhr = null, e && e.abort()
21826 status: function(e) {
21827 return 1 === this.readState ? "reading" : this.pendingRetry || 1 === this.preprocessState ? "uploading" : this.xhr ? this.xhr.readyState < 4 ? "uploading" : -1 < this.flowObj.opts.successStatuses.indexOf(this.xhr.status) ? "success" : -1 < this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) || !e && this.retries >= this.flowObj.opts.maxChunkRetries ? "error" : (this.abort(), "pending") : "pending"
21829 message: function() {
21830 return this.xhr ? this.xhr.responseText : ""
21832 progress: function() {
21833 if (this.pendingRetry) return 0;
21834 var e = this.status();
21835 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : 0 < this.total ? this.loaded / this.total : 0
21837 sizeUploaded: function() {
21838 var e = this.endByte - this.startByte;
21839 return "success" !== this.status() && (e = this.progress() * e), e
21841 prepareXhrRequest: function(e, t, n, r) {
21842 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
21843 i = d(i || {}, this.getParams());
21844 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
21846 if ("GET" === e || "octet" === n) {
21848 f(i, function(e, t) {
21849 s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
21850 }), o = this.getTarget(o, s), a = r || null
21851 } else a = new FormData, f(i, function(e, t) {
21853 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
21854 return this.xhr.open(e, o, !0), this.xhr.withCredentials = this.flowObj.opts.withCredentials, f(c(this.flowObj.opts.headers, this.fileObj, this, t), function(e, t) {
21855 this.xhr.setRequestHeader(t, e)
21858 }, r.evalOpts = c, r.extend = d, r.each = f, r.FlowFile = s, r.FlowChunk = l, r.version = "2.13.2", "object" == typeof module && module && "object" == typeof module.exports ? module.exports = r : (t.Flow = r, "function" == typeof define && define.amd && define("flow", [], function() {
21861 } else console.warn("Flowjs needs window and document objects to work");
21864 if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
21865 this.supportDirectory = /Chrome/.test(t.navigator.userAgent) || /Firefox/.test(t.navigator.userAgent) || /Edge/.test(t.navigator.userAgent), this.files = [], this.defaults = {
21866 chunkSize: 1048576,
21867 forceChunkSize: !1,
21868 simultaneousUploads: 3,
21870 fileParameterName: "file",
21871 progressCallbacksInterval: 500,
21872 speedSmoothingFactor: .1,
21875 withCredentials: !1,
21877 method: "multipart",
21879 uploadMethod: "POST",
21880 prioritizeFirstAndLastChunk: !1,
21881 allowDuplicateUploads: !1,
21884 generateUniqueIdentifier: null,
21885 maxChunkRetries: 0,
21886 chunkRetryInterval: null,
21887 permanentErrors: [404, 413, 415, 500, 501],
21888 successStatuses: [200, 201, 202],
21889 onDropStopPropagation: !1,
21892 }, this.opts = {}, this.events = {};
21894 this.onDrop = function(e) {
21895 n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
21896 var t = e.dataTransfer;
21897 t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
21898 }, this.preventEvent = function(e) {
21900 }, this.opts = r.extend({}, this.defaults, e || {})
21904 function s(e, t, n) {
21905 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 = void 0 === n ? e.generateUniqueIdentifier(t) : n, 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()
21908 function i(e, t, n, r, i) {
21910 e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
21913 function l(e, t, n) {
21914 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() {
21915 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
21916 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
21917 }, this.endByte = this.computeEndByte(), this.xhr = null;
21919 this.event = function(e, t) {
21920 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
21921 }, this.progressHandler = function(e) {
21922 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
21923 }, this.testHandler = function(e) {
21924 var t = r.status(!0);
21925 "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())
21926 }, this.doneHandler = function(e) {
21927 var t = r.status();
21928 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
21930 r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
21931 var n = r.flowObj.opts.chunkRetryInterval;
21932 null !== n ? setTimeout(function() {
21940 return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
21944 setTimeout(e.bind(t), 0)
21948 return f(arguments, function(e) {
21949 e !== n && f(e, function(e, t) {
21955 function f(e, t, n) {
21958 if (void 0 !== e.length) {
21959 for (r = 0; r < e.length; r++)
21960 if (!1 === t.call(n, e[r], r)) return
21963 if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
21965 }("undefined" != typeof window && window, "undefined" != typeof document && document), angular.module("flow.provider", []).provider("flowFactory", function() {
21967 this.defaults = {}, this.factory = function(e) {
21969 }, this.events = [], this.on = function(e, t) {
21970 this.events.push([e, t])
21971 }, this.$get = function() {
21972 var n = this.factory,
21976 create: function(e) {
21977 var t = n(angular.extend({}, r, e));
21978 return angular.forEach(i, function(e) {
21984 }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(r, e, t, n) {
21985 var i = angular.extend({}, r.$eval(e.flowInit)),
21986 o = r.$eval(e.flowObject) || n.create(i),
21988 var t = Array.prototype.slice.call(arguments);
21990 var n = r.$broadcast.apply(r, ["flow::" + e, o].concat(t));
21997 } [e] && r.$applyAsync(), n.defaultPrevented) return !1
21999 o.on("catchAll", a), r.$on("$destroy", function() {
22000 o.off("catchAll", a)
22001 }), r.$flow = o, e.hasOwnProperty("flowName") && (t(e.flowName).assign(r, o), r.$on("$destroy", function() {
22002 t(e.flowName).assign(r)
22004 }]).directive("flowInit", [function() {
22007 controller: "flowCtrl"
22009 }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
22013 require: "^flowInit",
22014 link: function(e, t, n) {
22015 var r = n.hasOwnProperty("flowDirectory"),
22016 i = n.hasOwnProperty("flowSingleFile"),
22017 o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
22018 e.$flow.assignBrowse(t, r, i, o)
22021 }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
22024 link: function(e, t, n) {
22025 t.bind("drop dragover", function(e) {
22030 }).directive("flowDragEnter", ["$timeout", function(l) {
22033 link: function(i, e, o) {
22035 e.bind("dragover", function(e) {
22037 (n = !1, r = (t = e).dataTransfer || t.originalEvent.dataTransfer, angular.forEach(r && r.types, function(e) {
22038 "Files" === e && (n = !0)
22039 }), n) && (s || (i.$apply(o.flowDragEnter), s = !0), l.cancel(a), e.preventDefault())
22040 }), e.bind("dragleave drop", function(e) {
22041 l.cancel(a), a = l(function() {
22042 i.$eval(o.flowDragLeave), a = null, s = !1
22047 }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
22050 require: "^flowInit",
22051 link: function(t, n, e) {
22053 t.$flow.assignDrop(n)
22055 e.flowDropEnabled ? t.$watch(e.flowDropEnabled, function(e) {
22056 e ? r() : t.$flow.unAssignDrop(n)
22063 var n = s.module("flow.events", ["flow.init"]);
22065 fileSuccess: ["$file", "$message"],
22066 fileProgress: ["$file"],
22067 fileAdded: ["$file", "$event"],
22068 filesAdded: ["$files", "$event"],
22069 filesSubmitted: ["$files", "$event"],
22070 fileRetry: ["$file"],
22071 fileRemoved: ["$file"],
22072 fileError: ["$file", "$message"],
22076 error: ["$message", "$file"]
22077 }, function(o, e) {
22078 var t, a = "flow" + ((t = e).charAt(0).toUpperCase() + t.slice(1));
22079 "flowUploadStart" == a && (a = "flowUploadStarted"), n.directive(a, [function() {
22081 require: "^flowInit",
22082 controller: ["$scope", "$attrs", function(t, i) {
22083 t.$on("flow::" + e, function() {
22084 var n = Array.prototype.slice.call(arguments),
22086 if (t.$flow === n.shift()) {
22088 s.forEach(o, function(e, t) {
22090 }), !1 === t.$eval(i[a], r) && e.preventDefault()
22097 }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
22100 require: "^flowInit",
22101 link: function(n, e, r) {
22103 n.$watch(t, function(e) {
22105 var t = new FileReader;
22106 t.readAsDataURL(e.file), t.onload = function(e) {
22107 n.$apply(function() {
22108 r.$set("src", e.target.result)
22115 }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
22118 require: "^flowInit",
22119 link: function(e) {
22120 e.transfers = e.$flow.files
22123 }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
22126 var x, T, M, A, S, D, O, N, I, R, P = k.$$minErr("$sanitize");
22127 k.module("ngSanitize", []).provider("$sanitize", function() {
22130 this.$get = ["$$sanitizeUri", function(n) {
22131 return t = !0, r && T(f, u),
22134 return I(e, R(t, function(e, t) {
22135 return !/^unsafe:/.test(n(e, t))
22138 }], this.enableSvg = function(e) {
22139 return S(e) ? (r = e, this) : r
22140 }, this.addValidElements = function(e) {
22141 return t || (A(e) && (e = {
22143 }), y(u, e.svgElements), y(s, e.htmlVoidElements), y(f, e.htmlVoidElements), y(f, e.htmlElements)), this
22144 }, this.addValidAttrs = function(e) {
22145 return t || T(g, b(e, !0)), this
22146 }, x = k.bind, T = k.extend, M = k.forEach, A = k.isArray, S = k.isDefined, D = k.$$lowercase, O = k.noop, I = function(e, t) {
22147 null == e ? e = "" : "string" != typeof e && (e = "" + e);
22152 if (0 === r) throw P("uinput", "Failed to sanitize html because the input is unstable");
22153 r--, e = n.innerHTML, n = _(e)
22154 } while (e !== n.innerHTML);
22155 for (var i = n.firstChild; i;) {
22156 switch (i.nodeType) {
22158 t.start(i.nodeName.toLowerCase(), $(i.attributes));
22161 t.chars(i.textContent)
22164 if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = E("nextSibling", i))))
22165 for (; null == o && (i = E("parentNode", i)) !== n;) o = E("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
22168 for (; i = n.firstChild;) n.removeChild(i)
22169 }, R = function(e, o) {
22173 start: function(i, e) {
22174 i = D(i), !t && d[i] && (t = i), t || !0 !== f[i] || (a("<"), a(i), M(e, function(e, t) {
22176 r = "img" === i && "src" === n || "background" === n;
22177 !0 !== g[n] || !0 === h[n] && !o(e, r) || (a(" "), a(t), a('="'), a(w(e)), a('"'))
22181 e = D(e), t || !0 !== f[e] || !0 === s[e] || (a("</"), a(e), a(">")), e == t && (t = !1)
22183 chars: function(e) {
22187 }, N = C.Node.prototype.contains || function(e) {
22188 return !!(16 & this.compareDocumentPosition(e))
22190 var n = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
22191 i = /([^#-~ |!])/g,
22192 s = v("area,br,col,hr,img,wbr"),
22193 e = v("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
22196 l = T({}, e, v("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")),
22197 c = T({}, o, v("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")),
22198 u = v("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"),
22199 d = v("script,style"),
22200 f = T({}, s, l, c, a),
22201 h = v("background,cite,href,longdesc,src,xlink:href,xml:base"),
22202 p = v("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"),
22203 m = v("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),
22204 g = T({}, h, m, p);
22207 return b(e.split(","), t)
22212 for (n = 0; n < e.length; n++) r[t ? D(e[n]) : e[n]] = !0;
22217 t && t.length && T(e, b(t))
22219 var _ = function(r, t) {
22221 if (!t || !t.implementation) throw P("noinert", "Can't create an inert html document");
22222 var n = ((e = t.implementation.createHTMLDocument("inert")).documentElement || e.getDocumentElement()).querySelector("body");
22223 return n.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>', n.querySelector("svg") ? (n.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">', n.querySelector("svg img") ? function(e) {
22224 e = "<remove></remove>" + e;
22226 var t = (new r.DOMParser).parseFromString(e, "text/html").body;
22227 return t.firstChild.remove(), t
22232 return n.innerHTML = e, t.documentMode && function e(t) {
22234 if (t.nodeType === C.Node.ELEMENT_NODE)
22235 for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
22237 a = o.name.toLowerCase();
22238 "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
22240 var s = t.firstChild;
22241 s && e(s), t = E("nextSibling", t)
22245 e = "<remove></remove>" + e;
22251 var t = new r.XMLHttpRequest;
22252 t.responseType = "document", t.open("GET", "data:text/html;charset=utf-8," + e, !1), t.send(null);
22253 var n = t.response.body;
22254 return n.firstChild.remove(), n
22259 for (var t = {}, n = 0, r = e.length; n < r; n++) {
22261 t[i.name] = i.value
22267 return e.replace(/&/g, "&").replace(n, function(e) {
22268 return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
22269 }).replace(i, function(e) {
22270 return "&#" + e.charCodeAt(0) + ";"
22271 }).replace(/</g, "<").replace(/>/g, ">")
22276 if (n && N.call(t, n)) throw P("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
22280 angularVersion: "1.7.8"
22281 }), k.module("ngSanitize").filter("linky", ["$sanitize", function(d) {
22282 var f = /((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
22284 p = k.$$minErr("linky"),
22289 return function(e, i, t) {
22290 if (null == e || "" === e) return e;
22291 if (!b(e)) throw p("notstring", "Expected string but received: {0}", e);
22292 for (var n, r, o, a = g(t) ? t : v(t) ? function() {
22296 }, s = e, l = []; n = s.match(f);) r = n[0], n[2] || n[4] || (r = (n[3] ? "http://" : "mailto:") + r), o = n.index, c(s.substr(0, o)), u(r, n[0].replace(h, "")), s = s.substring(o + n[0].length);
22297 return c(s), d(l.join(""));
22301 e && l.push((t = e, R(n = [], O).chars(t), n.join("")))
22306 for (n in l.push("<a "), r) l.push(n + '="' + r[n] + '" ');
22307 !m(i) || "target" in r || l.push('target="', i, '" '), l.push('href="', e.replace(/"/g, """), '">'), c(t), l.push("</a>")
22311 }(window, window.angular),
22314 angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(l) {
22333 class: "wondering",
22349 class: "thumbsup2",
22365 class: "thumbs-up",
22381 class: "heart-broken",
22385 class: "heart-broken",
22408 u = ["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"];
22409 return function(e, t) {
22414 linkTarget: "_self"
22416 if (function n(r) {
22417 return angular.forEach(arguments, function(e) {
22418 e !== r && angular.forEach(e, function(e, t) {
22419 r[t] && r[t].constructor && r[t].constructor === Object ? n(r[t], e) : r[t] = e
22422 }(n, t), null != e) {
22423 if ("object" == typeof e) return e;
22424 var r, i, o, a, s = {
22429 return angular.isNumber(e) || (e = e.toString()), e = e.replace(/[&<>]/g, function(e) {
22431 }), n.fontSmiley && (r = e.split(" "), angular.forEach(c, function(e) {
22432 for (var t = 0; t < r.length; t++) r[t] === e.text && (r[t] = '<i class="ne-emoticon" title="' + e.text + '">&#x' + e.code + "</i>")
22433 }), e = r.join(" ")), n.emoji && (i = e, o = new RegExp(":(" + u.join("|") + "):", "g"), e = i.replace(o, function(e, t) {
22434 return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
22435 })), n.link && (a = /^[a-z]+\:\/\//i, e = e.replace(/\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi, function(e) {
22437 return a.test(e) || (t = "http://" + e), "cordova" == n.linkTarget ? '<a href="#" onclick="window.open(\'' + t + "', '_system', 'location=yes')\" >" + e + "</a>" : '<a href="' + t + '" target="' + n.linkTarget + '">' + e + "</a>"
22438 })), l.trustAsHtml(e)
22441 }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(w, E, C, k, e) {
22442 return e.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>'), {
22445 templateUrl: function(e, t) {
22446 return t.embedTemplateUrl || ""
22448 link: function(s, e, t) {
22449 var n = s.$eval(t.embedData),
22450 r = s.$eval(t.embedOptions);
22451 s.video = {}, s.image = {}, s.pdf = {}, s.audio = {}, s.videoServices = [], s.audioServices = [], s.codeServices = [];
22456 linkTarget: "_self",
22461 embed: !(s.gist = [])
22478 thumbnailQuality: "medium"
22489 dailymotionEmbed: !0,
22493 soundCloudEmbed: !0,
22494 soundCloudOptions: {
22496 themeColor: "f50000",
22507 codepenHeight: 300,
22509 jsfiddleHeight: 300,
22513 githubgistEmbed: !0,
22518 return angular.forEach(arguments, function(e) {
22519 e !== r && angular.forEach(e, function(e, t) {
22520 r[t] && r[t].constructor && r[t].constructor === Object ? n(r[t], e) : r[t] = e
22523 }(i, r), String.prototype.trunc = function(e, t) {
22524 var n = this.length > e,
22525 r = n ? this.substr(0, e - 1) : this;
22526 return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
22527 }, Array.prototype.getUnique = function() {
22528 for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
22532 calcDimensions: function(e) {
22537 return t.width = e.video.width, t.height = e.video.height, e.video.height && e.video.width || (e.video.height ? t.width = e.video.height / 390 * 640 : e.video.width ? t.height = t.width / 640 * 390 : (t.width = 640, t.height = 390)), t
22539 embed: function(e, r) {
22540 if (e.match(/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)) {
22541 var i = this.calcDimensions(r);
22542 return s.video.id = RegExp.$1, r.video.details ? C.get("https://www.googleapis.com/youtube/v3/videos?id=" + RegExp.$1 + "&key=" + r.gdevAuth + "&part=snippet,statistics").success(function(e) {
22543 var t = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
22545 s.video.host = "youtube", s.video.title = n.snippet.title, s.video.thumbnail = n.snippet.thumbnails.medium.url, s.video.description = n.snippet.description.trunc(250, !0).replace(/\n/g, " ").replace(/ /g, " "), s.video.rawDescription = n.snippet.description, s.video.views = n.statistics.viewCount, s.video.likes = n.statistics.likeCount, s.video.uploader = n.snippet.channelTitle, s.video.uploaderPage = "https://www.youtube.com/channel/" + n.snippet.channelId, s.video.uploadDate = n.snippet.publishedAt, s.video.url = E.trustAsResourceUrl("https://www.youtube.com/watch?v=" + n.id), s.video.embedSrc = E.trustAsResourceUrl("https://www.youtube.com/embed/" + s.video.id + t), s.video.width = i.width, s.video.height = i.height
22546 }) : (s.video.width = i.width, s.video.height = i.height, s.video.host = "youtube", s.video.embedSrc = E.trustAsResourceUrl("https://www.youtube.com/embed/" + RegExp.$1 + "?autoplay=0")), e
22548 if (e.match(/https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi)) {
22549 var n = this.calcDimensions(r);
22550 s.video.id = RegExp.$3, r.video.details ? C.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
22551 var t = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
22552 s.video.host = "vimeo", s.video.title = e[0].title, s.video.rawDescription = e[0].description.replace(/\n/g, "<br/>").replace(/ /g, "<br/>"), s.video.description = e[0].description.replace(/((<|<)br\s*\/*(>|>)\r\n)/g, " ").trunc(250, !0), s.video.thumbnail = e[0].thumbnail_medium, s.video.views = e[0].stats_number_of_plays, s.video.likes = e[0].stats_number_of_likes, s.video.uploader = e[0].user_name, s.video.uploaderPage = e[0].user_url, s.video.uploadDate = e[0].uploadDate, s.video.url = e[0].url, s.video.embedSrc = E.trustAsResourceUrl("//player.vimeo.com/video/" + e[0].id + "?title=0&byline=0&portrait=0" + t), s.video.width = n.width, s.video.height = n.height
22553 }) : (s.video.width = n.width, s.video.height = n.height, s.video.host = "vimeo", s.video.embedSrc = E.trustAsResourceUrl("//player.vimeo.com/video/" + RegExp.$3 + "?title=0&byline=0&portrait=0&autoplay=0"))
22557 embedBasic: function(e) {
22558 return e.match(/((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi) && (s.video.basic = E.trustAsResourceUrl(RegExp.$1)), e
22560 twitchtvEmbed: function(e, t) {
22561 var n = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
22562 r = e.match(n) ? e.match(n).getUnique() : null,
22563 i = l.calcDimensions(t);
22565 for (var o = 0; o < r.length;) {
22566 var a = E.trustAsHtml('<object bgcolor="#000000" data="//www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" height="' + i.height + '" id="clip_embed_player_flash" type="application/x-shockwave-flash" width="' + i.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=' + r[o].split("/")[1] + '&auto_play=false" /></object>');
22567 s.videoServices.push(a), o++
22571 dailymotionEmbed: function(e, t) {
22572 var n = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
22573 r = e.match(n) ? e.match(n).getUnique() : null,
22574 i = l.calcDimensions(t);
22576 for (var o = 0; o < r.length;) {
22577 var a = E.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + r[o].split("/")[2] + '" height="' + i.height + '" width="' + i.width + '"></iframe>');
22578 s.videoServices.push(a), o++
22582 tedEmbed: function(e, t) {
22583 var n = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
22584 r = e.match(n) ? e.match(n).getUnique() : null,
22585 i = l.calcDimensions(t);
22587 for (var o = 0; o < r.length;) {
22588 var a = E.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + r[o].split("/")[2] + '.html" height="' + i.height + '" width="' + i.width + '"></iframe>');
22589 s.videoServices.push(a), o++
22593 dotsubEmbed: function(e, t) {
22594 var n = /dotsub.com\/view\/[a-zA-Z0-9-]+/gi,
22595 r = e.match(n) ? e.match(n).getUnique() : null,
22596 i = l.calcDimensions(t);
22598 for (var o = 0; o < r.length;) {
22599 var a = E.trustAsHtml('<iframe src="https://dotsub.com/media/' + r[o].split("/")[2] + '/embed/" width="' + i.width + '" height="' + i.height + '"></iframe>');
22600 s.videoServices.push(a), o++
22604 liveleakEmbed: function(e, t) {
22605 var n = /liveleak.com\/view\?i=[a-zA-Z0-9_]+/gi,
22606 r = e.match(n) ? e.match(n).getUnique() : null,
22607 i = l.calcDimensions(t);
22609 for (var o = 0; o < r.length;) {
22610 var a = E.trustAsHtml('<iframe src="http://www.liveleak.com/e/' + r[o].split("=")[1] + '" height="' + i.height + '" width="' + i.width + '"></iframe></div>');
22611 s.videoServices.push(a), o++
22617 return e.match(/((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi) && (s.audio.url = E.trustAsResourceUrl(RegExp.$1)), e
22619 a = function(e, t) {
22620 var n = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
22621 r = e.match(n) ? e.match(n).getUnique() : null;
22623 for (var i = 0; i < r.length;) {
22624 var o = E.trustAsHtml('<iframe height="160" scrolling="no" src="https://w.soundcloud.com/player/?url=https://' + r[i] + "&auto_play=" + t.soundCloudOptions.autoPlay + "&hide_related=" + t.soundCloudOptions.hideRelated + "&show_comments=" + t.soundCloudOptions.showComments + "&show_user=" + t.soundCloudOptions.showUser + "&show_reposts=" + t.soundCloudOptions.showReposts + "&visual=" + t.soundCloudOptions.visual + "&download=" + t.soundCloudOptions.download + "&color=" + t.soundCloudOptions.themeColor + "&theme_color=" + t.soundCloudOptions.themeColor + '"></iframe>');
22625 s.videoServices.push(o), i++
22630 var t = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
22631 n = e.match(t) ? e.match(t).getUnique() : null;
22633 for (var r = 0; r < n.length;) {
22634 var i = E.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + n[r].split("/")[2] + '" height="80"></iframe>');
22635 s.audioServices.push(i), r++
22640 return e.match(/((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi) && (s.image.url = RegExp.$1), e
22643 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
22645 i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
22647 return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
22651 return e.match(/((?:https?):\/\/\S*\.(?:pdf|PDF))/gi) && (s.pdf.url = E.trustAsResourceUrl(RegExp.$1)), e
22653 h = function(e, t) {
22654 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
22655 var n = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
22656 r = e.match(n) ? e.match(n).getUnique() : null;
22657 if (s.tweets = [], r)
22658 for (var i = 0; i < r.length;) {
22659 var o = "https://api.twitter.com/1/statuses/oembed.json?omit_script=true&callback=JSON_CALLBACK&url=" + r[i] + "&maxwidth=" + t.tweetOptions.maxWidth + "&hide_media=" + t.tweetOptions.hideMedia + "&hide_thread=" + t.tweetOptions.hideThread + "&align=" + t.tweetOptions.align + "&lang=" + t.tweetOptions.lang;
22660 C.jsonp(o).success(function(e) {
22661 s.tweets.push(e.html), s.tweets.length == r.length && k(function() {
22662 twttr.widgets.load()
22668 p = function(e, t) {
22669 var n = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
22670 r = e.match(n) ? e.match(n).getUnique() : null;
22672 for (var i = 0; i < r.length;) {
22673 var o = E.trustAsHtml('<iframe scrolling="no" height="' + t.codepenHeight + '" src="' + r[i].replace(/\/pen\//, "/embed/") + "/?height=" + t.codepenHeight + '" frameborder="no" allowtransparency="true" allowfullscreen="true"></iframe>');
22674 s.codeServices.push(o), i++
22678 m = function(e, t) {
22679 var n = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
22680 r = e.match(n) ? e.match(n).getUnique() : null;
22682 for (var i = 0; i < r.length;) {
22683 var o = E.trustAsHtml('<iframe height="' + t.jsfiddleHeight + '" src="http://' + r[i] + '/embedded"></iframe>');
22684 s.codeServices.push(o), i++
22688 g = function(e, t) {
22689 var n = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
22690 r = e.match(n) ? e.match(n).getUnique() : null;
22692 for (var i = 0; i < r.length;) {
22693 var o = E.trustAsHtml('<iframe height="' + t.jsbinHeight + '" class="jsbin-embed foo" src="http://' + r[i] + '/embed?html,js,output">Simple Animation Tests</iframe>');
22694 s.codeServices.push(o), i++
22698 v = function(e, t) {
22699 var n = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
22700 r = e.match(n) ? e.match(n).getUnique() : null;
22702 for (var i = 0; i < r.length;) {
22703 var o = -1 === r[i].indexOf("?") ? r[i].split("/")[2] : r[i].split("/")[2].split("?")[0],
22704 a = E.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + o + '" height="' + t.jsbinHeight + '"></iframe>');
22705 s.codeServices.push(a), i++
22710 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
22711 n = e.match(t) ? e.match(t).getUnique() : null;
22713 for (var r = 0; r < n.length;) s.gist.push(n[r].split("/")[2]), r++;
22716 y = function(e, t) {
22717 var n = /ideone.com\/[a-zA-Z0-9]{6}/gi,
22718 r = e.match(n) ? e.match(n).getUnique() : null;
22720 for (var i = 0; i < r.length;) {
22721 var o = E.trustAsHtml('<iframe src="http://ideone.com/embed/' + r[i].split("/")[1] + '" height="' + t.ideoneHeight + '"></iframe>');
22722 s.codeServices.push(o), i++
22726 if (i.code.highlight) {
22727 if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
22728 n = d(n), k(function() {
22729 i.code.lineNumbers && angular.element(".ne-code").each(function() {
22731 t = $(this).text().split("\n").length,
22732 n = $("<ul/>").addClass("pre-numbering");
22733 for (angular.element(this).addClass("has-numbering").parent().append(n); e <= t; e++) n.append(angular.element("<li/>").text(e))
22737 var _ = w("embed")(n, i).$$unwrapTrustedValue();
22738 if (i.video.embed) {
22739 if (!i.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
22742 _ = i.basicVideo ? l.embedBasic(_) : _, _ = i.audio.embed ? o(_) : _, _ = i.image.embed ? u(_) : _, _ = i.pdf.embed ? f(_) : _, _ = i.tweetEmbed ? h(_, i) : _, _ = i.twitchtvEmbed ? l.twitchtvEmbed(_, i) : _, _ = i.dailymotionEmbed ? l.dailymotionEmbed(_, i) : _, _ = i.tedEmbed ? l.tedEmbed(_, i) : _, _ = i.dotsubEmbed ? l.dotsubEmbed(_, i) : _, _ = i.liveleakEmbed ? l.liveleakEmbed(_, i) : _, _ = i.soundCloudEmbed ? a(_, i) : _, _ = i.spotifyEmbed ? c(_) : _, _ = i.codepenEmbed ? p(_, i) : _, _ = i.jsfiddleEmbed ? m(_, i) : _, _ = i.jsbinEmbed ? g(_, i) : _, _ = i.plunkerEmbed ? v(_, i) : _, _ = i.githubgistEmbed ? b(_, i) : _, _ = i.ideoneEmbed ? y(_, i) : _, s.neText = E.trustAsHtml(_)
22745 }]).directive("neGist", function() {
22749 template: "<div></div>",
22750 link: function(e, t, n) {
22752 i = document.createElement("iframe");
22753 i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
22754 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>',
22756 i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()
22763 var re, ie, oe, ae, Z = 1,
22768 X = "$$ngAnimateChildren";
22769 ie = void 0 === f.ontransitionend && void 0 !== f.onwebkittransitionend ? ("-webkit-", re = "WebkitTransition", "webkitTransitionEnd transitionend") : (re = "transition", "transitionend"), ae = void 0 === f.onanimationend && void 0 !== f.onwebkitanimationend ? ("-webkit-", oe = "WebkitAnimation", "webkitAnimationEnd animationend") : (oe = "animation", "animationend");
22770 var i = "Duration",
22771 ue = "TimingFunction",
22777 a = e.$$minErr("ng");
22779 function h(e, t, n) {
22780 if (!e) throw a("areq", "Argument '{0}' is {1}", t || "?", n || "required");
22785 return e || t ? e ? t ? (Se(e) && (e = e.join(" ")), Se(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
22788 function fe(e, n, r) {
22790 return e = Se(e) ? e : e && De(e) && e.length ? e.split(/\s+/) : [], Ae(e, function(e, t) {
22791 e && 0 < e.length && (i += 0 < t ? " " : "", i += r ? n + e : e + n)
22796 if (e instanceof Ne) switch (e.length) {
22800 if (e[0].nodeType === Z) return e;
22805 if (e.nodeType === Z) return Ne(e)
22809 if (!e[0]) return e;
22810 for (var t = 0; t < e.length; t++) {
22812 if (n.nodeType === Z) return n
22817 return function(e, t) {
22818 var n, r, i, o, a, s;
22819 t.addClass && (n = l, r = e, i = t.addClass, Ae(r, function(e) {
22821 }), t.addClass = null), t.removeClass && (o = l, a = e, s = t.removeClass, Ae(a, function(e) {
22822 o.removeClass(e, s)
22823 }), t.removeClass = null)
22828 if (!(e = e || {}).$$prepared) {
22829 var t = e.domOperation || Ie;
22830 e.domOperation = function() {
22831 e.$$domOperationFired = !0, t(), t = Ie
22832 }, e.$$prepared = !0
22837 function pe(e, t) {
22841 function me(e, t) {
22842 t.from && (e.css(t.from), t.from = null)
22845 function ge(e, t) {
22846 t.to && (e.css(t.to), t.to = null)
22849 function J(e, t, n) {
22850 var r = t.options || {},
22851 i = n.options || {},
22852 o = (r.addClass || "") + " " + (i.addClass || ""),
22853 a = (r.removeClass || "") + " " + (i.removeClass || ""),
22854 s = function(i, e, t) {
22856 i = r(i), e = r(e), Ae(e, function(e, t) {
22858 }), t = r(t), Ae(t, function(e, t) {
22859 n[t] = 1 === n[t] ? null : -1
22867 De(e) && (e = e.split(" "));
22869 return Ae(e, function(e) {
22870 e.length && (t[e] = !0)
22873 return Ae(n, function(e, t) {
22875 1 === e ? (n = "addClass", r = !i[t] || i[t + le]) : -1 === e && (n = "removeClass", r = i[t] || i[t + se]), r && (o[n].length && (o[n] += " "), o[n] += t)
22877 }(e.attr("class"), o, a);
22878 i.preparationClasses && (r.preparationClasses = ee(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
22879 var l = r.domOperation !== Ie ? r.domOperation : null;
22880 return m(r, i), l && (r.domOperation = l), 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
22884 return e instanceof Ne ? e[0] : e
22887 function be(e, t) {
22888 var n = t ? "paused" : "",
22890 return ye(e, [r, n]), [r, n]
22893 function ye(e, t) {
22899 function ee(e, t) {
22900 return e ? t ? e + " " + t : e : t
22902 var _e = function(e, t) {
22903 var n = t ? "-" + t + "s" : "";
22904 return ye(e, [r, n]), [r, n]
22906 s = ["$interpolate", function(o) {
22908 link: function(e, t, n) {
22909 var r = n.ngAnimateChildren;
22912 e = "on" === e || "true" === e, t.data(X, e)
22914 De(r) && 0 === r.length ? t.data(X, !0) : (i(o(r)(e)), n.$observe("ngAnimateChildren", i))
22918 $e = "$$animateCss",
22920 transitionDuration: t,
22921 transitionDelay: r,
22922 transitionProperty: re + "Property",
22923 animationDuration: de,
22925 animationIterationCount: oe + "IterationCount"
22928 transitionDuration: t,
22929 transitionDelay: r,
22930 animationDuration: de,
22934 function Ee(e, t) {
22935 return [t ? n : r, e + "s"]
22938 function Ce(e, t, n) {
22939 var a = Object.create(null),
22940 s = e.getComputedStyle(t) || {};
22941 return Ae(n, function(e, t) {
22942 var n, r, i = s[e];
22944 var o = i.charAt(0);
22945 ("-" === o || "+" === o || 0 <= o) && (n = 0, r = i.split(/\s*,\s*/), Ae(r, function(e) {
22946 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, n = n ? Math.max(e, n) : e
22947 }), i = n), 0 === i && (i = null), a[t] = i
22953 return 0 === e || null != e
22956 function xe(e, t) {
22959 return t ? n += i : r += " linear all", [n, r]
22962 function Te(t, n, e) {
22963 Ae(e, function(e) {
22964 t[e] = te(t[e]) ? t[e] : n.style.getPropertyValue(e)
22967 var Me, m, Ae, Se, te, g, $, ne, De, Oe, Ne, Ie, c = ["$animateProvider", function(e) {
22968 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$animateCache", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(Y, G, K, Z, X, n, Q, t, J) {
22973 r.push(e), t.waitUntilQuiet(function() {
22975 for (var e = n(), t = 0; t < r.length; t++) r[t](e);
22980 function ne(e, t, n, r) {
22981 var i = function(e, t, n, r, i) {
22983 o || "infinite" === (o = Ce(Y, e, i)).animationIterationCount && (o.animationIterationCount = 1);
22984 var a = r || 0 < o.transitionDuration || 0 < o.animationDuration;
22985 return X.put(n, o, a), o
22987 o = i.animationDelay,
22988 a = i.transitionDelay;
22989 return i.maxDelay = o && a ? Math.max(o, a) : o || a, i.maxDuration = Math.max(i.animationDuration * i.animationIterationCount, i.transitionDuration), i
22991 return function(c, e) {
22993 u.$$prepared || (u = he(Me(u)));
22996 if (!f || !f.parentNode || !J.enabled()) return B();
22997 var t, n, h, o, a, r, i, p, m, g, v, b, y = [],
22998 s = (c.attr("class"), n = {}, (t = u) && (t.to || t.from) && (n.to = t.to, n.from = t.from), n),
23000 if (0 === u.duration || !Q.animations && !Q.transitions) return B();
23001 var $ = u.event && Se(u.event) ? u.event.join(" ") : u.event,
23002 l = $ && u.structural,
23005 l ? w = fe($, ce, !0) : $ && (w = $), u.addClass && (E += fe(u.addClass, se)), u.removeClass && (E.length && (E += " "), E += fe(u.removeClass, le)), u.applyClassesEarly && E.length && ee(c, u);
23006 var C = [w, E].join(" ").trim(),
23007 k = s.to && 0 < Object.keys(s.to).length;
23008 if (!(0 < (u.keyframeStyle || "").length) && !k && !C) return B();
23009 var x, T, M = X.cacheKey(f, $, u.addClass, u.removeClass);
23010 if (X.containsCachedAnimationWithoutDuration(M)) return C = null, B();
23011 if (0 < u.stagger) {
23012 var A = parseFloat(u.stagger);
23014 transitionDelay: A,
23016 transitionDuration: 0,
23017 animationDuration: 0
23019 } else x = function(e, t, n, r) {
23020 var i, o = "stagger-" + n;
23021 if (0 < X.count(n) && !(i = X.get(o))) {
23022 var a = fe(t, "-stagger");
23023 G.addClass(e, a), (i = Ce(Y, e, r)).animationDuration = Math.max(i.animationDuration, 0), i.transitionDuration = Math.max(i.transitionDuration, 0), G.removeClass(e, a), X.put(o, i, !0)
23027 if (u.$$skipPreparationClasses || G.addClass(c, C), u.transitionStyle) {
23028 var S = [re, u.transitionStyle];
23029 ye(f, S), y.push(S)
23031 if (0 <= u.duration) {
23032 T = 0 < f.style[re].length;
23033 var D = xe(u.duration, T);
23034 ye(f, D), y.push(D)
23036 if (u.keyframeStyle) {
23037 var O = [oe, u.keyframeStyle];
23038 ye(f, O), y.push(O)
23040 var N = x ? 0 <= u.staggerIndex ? u.staggerIndex : X.count(M) : 0,
23042 I && !u.skipBlocking && _e(f, 9999);
23043 var R = ne(f, 0, M, !l),
23045 p = Math.max(P, 0), g = R.maxDuration;
23047 if (H.hasTransitions = 0 < R.transitionDuration, H.hasAnimations = 0 < R.animationDuration, H.hasTransitionAll = H.hasTransitions && "all" === R.transitionProperty, H.applyTransitionDuration = k && (H.hasTransitions && !H.hasTransitionAll || H.hasAnimations && !H.hasTransitions), H.applyAnimationDuration = u.duration && H.hasAnimations, H.applyTransitionDelay = ke(u.delay) && (H.applyTransitionDuration || H.hasTransitions), H.applyAnimationDelay = ke(u.delay) && H.hasAnimations, H.recalculateTimingStyles = 0 < E.length, (H.applyTransitionDuration || H.applyAnimationDuration) && (g = u.duration ? parseFloat(u.duration) : g, H.applyTransitionDuration && (H.hasTransitions = !0, R.transitionDuration = g, T = 0 < f.style[re + "Property"].length, y.push(xe(g, T))), H.applyAnimationDuration && (H.hasAnimations = !0, R.animationDuration = g, y.push([de, g + "s"]))), 0 === g && !H.recalculateTimingStyles) return B();
23048 var j, L = fe(C, "-active");
23049 null != u.delay && ("boolean" != typeof u.delay && (j = parseFloat(u.delay), p = Math.max(j, 0)), H.applyTransitionDelay && y.push(Ee(j)), H.applyAnimationDelay && y.push(Ee(j, !0)));
23050 return null == u.duration && 0 < R.transitionDuration && (H.recalculateTimingStyles = H.recalculateTimingStyles || I), m = 1e3 * p, v = 1e3 * g, u.skipBlocking || (H.blockTransition = 0 < R.transitionDuration, H.blockKeyframeAnimation = 0 < R.animationDuration && 0 < x.animationDelay && 0 === x.animationDuration), u.from && (u.cleanupStyles && Te(d, f, Object.keys(u.from)), me(c, u)), H.blockTransition || H.blockKeyframeAnimation ? V(g) : u.skipBlocking || _e(f, !1), {
23053 start: function() {
23054 if (!h) return r = new K(i = {
23072 if (!(h || a && o)) {
23073 o = !(h = !0), C && !u.$$skipPreparationClasses && G.removeClass(c, C), L && G.removeClass(c, L), be(f, !1), _e(f, !1), Ae(y, function(e) {
23075 }), ee(c, u), pe(c, u), Object.keys(d).length && Ae(d, function(e, t) {
23076 e ? f.style.setProperty(t, e) : f.style.removeProperty(t)
23077 }), u.onDone && u.onDone(), _ && _.length && c.off(_.join(" "), z);
23078 var t = c.data($e);
23079 t && (Z.cancel(t[0].timer), c.removeData($e)), r && r.complete(!e)
23084 H.blockTransition && _e(f, e), H.blockKeyframeAnimation && be(f, !!e)
23093 start: function() {
23101 e.stopPropagation();
23102 var t = e.originalEvent || e;
23103 if (t.target === f) {
23104 var n = t.$manualTimeStamp || Date.now(),
23105 r = parseFloat(t.elapsedTime.toFixed(3));
23106 Math.max(n - b, 0) >= m && g <= r && (a = !0, U())
23112 if (f.parentNode) {
23113 var e = function(e) {
23114 if (a) o && e && (o = !1, U());
23115 else if (o = !e, R.animationDuration) {
23117 o ? y.push(t) : (r = t, i = (n = y).indexOf(r), 0 <= r && n.splice(i, 1))
23121 t = 0 < N && (R.transitionDuration && 0 === x.transitionDuration || R.animationDuration && 0 === x.animationDuration) && Math.max(x.animationDelay, x.transitionDelay);
23122 t ? Z(n, Math.floor(t * N * 1e3), !1) : n(), i.resume = function() {
23124 }, i.pause = function() {
23131 if (V(!1), Ae(y, function(e) {
23135 }), ee(c, u), G.addClass(c, L), H.recalculateTimingStyles) {
23136 if (f.getAttribute("class") + " " + C, M = X.cacheKey(f, $, u.addClass, u.removeClass), R = ne(f, 0, M, !1), P = R.maxDelay, p = Math.max(P, 0), 0 === (g = R.maxDuration)) return void U();
23137 H.hasTransitions = 0 < R.transitionDuration, H.hasAnimations = 0 < R.animationDuration
23139 if (H.applyAnimationDelay && (P = "boolean" != typeof u.delay && ke(u.delay) ? parseFloat(u.delay) : P, p = Math.max(P, 0), R.animationDelay = P, j = Ee(P, !0), y.push(j), f.style[j[0]] = j[1]), m = 1e3 * p, v = 1e3 * g, u.easing) {
23140 var e, t = u.easing;
23141 H.hasTransitions && (e = re + ue, y.push([e, t]), f.style[e] = t), H.hasAnimations && (e = oe + ue, y.push([e, t]), f.style[e] = t)
23143 R.transitionDuration && _.push(ie), R.animationDuration && _.push(ae), b = Date.now();
23144 var n = m + 1.5 * v,
23146 i = c.data($e) || [],
23150 (o = r > a.expectedEndTime) ? Z.cancel(a.timer): i.push(U)
23153 var s = Z(l, n, !1);
23157 }, i.push(U), c.data($e, i)
23159 _.length && c.on(_.join(" "), z), u.to && (u.cleanupStyles && Te(d, f, Object.keys(u.to)), ge(c, u))
23164 var e = c.data($e);
23166 for (var t = 1; t < e.length; t++) e[t]();
23174 u = ["$$animationProvider", function(e) {
23175 e.drivers.push("$$animateCssDriver");
23176 var y = "ng-animate-shim",
23177 _ = "ng-anchor-out";
23178 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(h, e, p, t, n, r, i) {
23179 if (!n.animations && !n.transitions) return Ie;
23180 var o, m = i[0].body,
23182 g = Ne((o = a).parentNode && 11 === o.parentNode.nodeType || m.contains(a) ? a : m);
23183 return function(e) {
23184 return e.from && e.to ? function(e, t, n, r) {
23188 if (Ae(r, function(e) {
23189 var t = function(e, t, i) {
23190 var o = Ne(ve(t).cloneNode(!0)),
23192 t.addClass(y), i.addClass(y), o.addClass("ng-anchor"), g.append(o);
23193 var r, n, s = (n = h(o, {
23197 })).$$willAnimate ? n : null;
23198 if (!s && !(r = d())) return f();
23201 start: function() {
23202 var e, t = l.start();
23203 return t.done(function() {
23204 if (t = null, !r && (r = d())) return (t = r.start()).done(function() {
23205 t = null, f(), e.complete()
23221 r = ve(e).getBoundingClientRect();
23222 return Ae(["width", "height", "top", "left"], function(e) {
23231 n[e] = Math.floor(t) + "px"
23236 return e.attr("class") || ""
23245 addClass: "ng-anchor-in " + t,
23246 removeClass: _ + " " + n,
23249 return r.$$willAnimate ? r : null
23253 o.remove(), t.removeClass(y), i.removeClass(y)
23257 }), !i && !o && 0 === a.length) return;
23259 start: function() {
23261 i && t.push(i.start()), o && t.push(o.start()), Ae(a, function(e) {
23268 return p.all(t, function(e) {
23273 Ae(t, function(e) {
23279 }(e.from, e.to, e.classes, e.anchors) : s(e)
23283 return e.replace(/\bng-\S+\b/g, "")
23287 return De(e) && (e = e.split(" ")), De(t) && (t = t.split(" ")), e.filter(function(e) {
23288 return -1 === t.indexOf(e)
23294 n = e.options || {};
23295 e.structural && (n.event = e.event, n.structural = !0, n.applyClassesEarly = !0, "leave" === e.event && (n.onDone = n.domOperation)), n.preparationClasses && (n.event = ee(n.event, n.preparationClasses));
23297 return r.$$willAnimate ? r : null
23301 d = ["$animateProvider", function(_) {
23302 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(v, b, e) {
23304 return function(e, t, n, r) {
23306 3 === arguments.length && ne(n) && (r = n, n = null), r = he(r), n || (n = e.attr("class") || "", r.addClass && (n += " " + r.addClass), r.removeClass && (n += " " + r.removeClass));
23307 var o, a, s, l, c, u = r.addClass,
23310 e = Se(e) ? e : e.split(" ");
23311 for (var t = [], n = {}, r = 0; r < e.length; r++) {
23313 o = _.$$registeredAnimations[i];
23314 o && !n[i] && (t.push(v.get(o)), n[i] = !0)
23318 f.length && (s = "leave" === t ? (l = "leave", "afterLeave") : (l = "before" + t.charAt(0).toUpperCase() + t.substr(1), t), "enter" !== t && "move" !== t && (o = g(e, t, r, f, l)), a = g(e, t, r, f, s));
23319 if (o || a) return {
23322 return c ? c.end() : (p(), (c = new b).complete(!0)), c
23324 start: function() {
23329 return o && e.push(function(e) {
23331 }), e.length ? e.push(function(e) {
23333 }) : h(), a && e.push(function(e) {
23339 cancel: function() {
23342 }), b.chain(e, n), c;
23349 i || ((t || Ie)(e), n(e))
23355 r.domOperation(), y(e, r)
23359 i = !0, h(), pe(e, r)
23362 function m(a, s, l, e, t) {
23364 return Ae(e, function(e) {
23366 o && n.push(function() {
23369 r || (r = !0, (n || Ie)(e), t.complete(!e))
23375 cancel: function() {
23378 }), n = function(e, t, n, r, i) {
23382 o = [t, r.from, r.to, i];
23390 case "removeClass":
23397 var a = e.apply(e, o);
23399 if ($(a.start) && (a = a.start()), a instanceof b) a.done(i);
23400 else if ($(a)) return a;
23402 }(o, a, s, l, function(e) {
23409 function g(e, t, n, r, i) {
23410 var o, a, s = m(e, t, n, r, i);
23411 0 === s.length && ("beforeSetClass" === i ? (o = m(e, "removeClass", n, r, "beforeRemoveClass"), a = m(e, "addClass", n, r, "beforeAddClass")) : "setClass" === i && (o = m(e, "removeClass", n, r, "removeClass"), a = m(e, "addClass", n, r, "addClass")), o && (s = s.concat(o)), a && (s = s.concat(a)));
23412 if (0 !== s.length) return function(e) {
23414 return s.length && Ae(s, function(e) {
23416 }), n.length ? b.all(n, e) : e(),
23418 Ae(n, function(e) {
23419 t ? e.cancel() : e.end()
23427 v = ["$$animationProvider", function(e) {
23428 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(o, a) {
23429 return function(e) {
23430 if (e.from && e.to) {
23433 if (!r && !i) return;
23435 start: function() {
23437 r && e.push(r.start()), i && e.push(i.start()), a.all(e, function(e) {
23447 return function() {
23448 Ae(e, function(e) {
23464 return o(t, n, i, r)
23468 Re = "data-ng-animate",
23469 Pe = "$ngAnimatePin",
23470 b = ["$animateProvider", function(d) {
23480 addClass: e.addClass,
23481 removeClass: e.removeClass,
23489 var n = function(e) {
23490 if (!e) return null;
23491 var t = e.split(r),
23492 n = Object.create(null);
23493 return Ae(t, function(e) {
23497 return e.split(r).some(function(e) {
23503 function G(e, t, n) {
23504 return i[e].some(function(e) {
23510 var n = 0 < (e.addClass || "").length,
23511 r = 0 < (e.removeClass || "").length;
23512 return t ? n && r : n || r
23514 i.join.push(function(e, t) {
23515 return !e.structural && K(e)
23516 }), i.skip.push(function(e, t) {
23517 return !e.structural && !K(e)
23518 }), i.skip.push(function(e, t) {
23519 return "leave" === t.event && e.structural
23520 }), i.skip.push(function(e, t) {
23521 return t.structural && 2 === t.state && !e.structural
23522 }), i.cancel.push(function(e, t) {
23523 return t.structural && e.structural
23524 }), i.cancel.push(function(e, t) {
23525 return 2 === t.state && e.structural
23526 }), i.cancel.push(function(e, t) {
23527 if (t.structural) return !1;
23528 var n = e.addClass,
23532 return !(Oe(n) && Oe(r) || Oe(i) && Oe(o)) && (a(n, o) || a(r, i))
23533 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(M, A, S, D, e, O, N, t, n, r, I) {
23541 var o = A.$watch(function() {
23542 return 0 === t.totalPendingRequests
23544 e && (o(), A.$$postDigest(function() {
23545 A.$$postDigest(function() {
23546 null === H && (H = !0)
23550 j = Object.create(null),
23551 a = d.customFilter(),
23552 s = d.classNameFilter(),
23557 F = s ? function(e, t) {
23558 var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
23566 var V = f.Node.prototype.contains || function(e) {
23567 return this === e || !!(16 & this.compareDocumentPosition(e))
23570 function c(e, t, n) {
23572 return e.filter(function(e) {
23573 return !(e.node === r && (!n || e.callback === n))
23578 "close" !== e || t.parentNode || u.off(t)
23581 on: function(e, t, n) {
23583 j[e] = j[e] || [], j[e].push({
23586 }), Ne(t).on("$destroy", function() {
23587 R.get(r) || u.off(e, t, n)
23590 off: function(e, t, n) {
23591 if (1 !== arguments.length || De(e)) {
23593 r && (j[e] = 1 === arguments.length ? null : c(r, t, n))
23595 for (var i in t = e, j) j[i] = c(j[i], t)
23597 pin: function(e, t) {
23598 h(g(e), "element", "not an element"), h(g(t), "parentElement", "not an element"), e.data(Pe, t)
23600 push: function(e, t, n, r) {
23601 return (n = n || {}).domOperation = r,
23602 function(i, o, e) {
23606 d = u && u.parentNode;
23609 t = (n = !1, function(e) {
23610 n ? e() : A.$$postDigest(function() {
23615 Se(a.addClass) && (a.addClass = a.addClass.join(" "));
23616 a.addClass && !De(a.addClass) && (a.addClass = null);
23617 Se(a.removeClass) && (a.removeClass = a.removeClass.join(" "));
23618 a.removeClass && !De(a.removeClass) && (a.removeClass = null);
23619 a.from && !ne(a.from) && (a.from = null);
23620 a.to && !ne(a.to) && (a.to = null);
23621 if (!(H && u && L(u, o, e) && F(u, a))) return T(), s;
23622 var l = 0 <= ["enter", "move", "leave"].indexOf(o),
23625 h = !f && R.get(u) || {},
23627 f || p && 1 === h.state || (f = ! function(e, t, n) {
23628 var r, i = D[0].body,
23630 a = e === i || "HTML" === e.nodeName,
23634 u = Ne.data(e, Pe);
23636 for (; t && (s || (s = t === o), t.nodeType === Z);) {
23637 var d = R.get(t) || {};
23640 if (!0 === f && !1 !== c) {
23643 }!1 === f && (c = !1), l = d.structural
23645 if (Oe(r) || !0 === r) {
23646 var h = Ne.data(t, X);
23649 if (l && !1 === r) break;
23650 if (a || (a = t === i), a && s) break;
23651 t = s || !(u = Ne.data(t, Pe)) ? t.parentNode : ve(u)
23653 return (!l || r) && !0 !== c && s && a
23655 if (f) return r && x(s, o, "start", Y(a)), T(), r && x(s, o, "close", Y(a)), s;
23656 l && (m = u.querySelectorAll("[" + Re + "]"), Ae(m, function(e) {
23657 var t = parseInt(e.getAttribute(Re), 10),
23659 if (n) switch (t) {
23671 addClass: a.addClass,
23672 removeClass: a.removeClass,
23678 var v = G("skip", g, h);
23679 if (v) return 2 === h.state ? (T(), s) : (J(c, h, g), h.runner);
23680 var b = G("cancel", g, h);
23682 if (2 === h.state) h.runner.end();
23684 if (!h.structural) return J(c, h, g), h.runner;
23688 var y = G("join", g, h);
23690 if (2 !== h.state) return _ = c, w = a, E = "", ($ = l ? o : null) && (E = fe($, ce, !0)), w.addClass && (E = ee(E, fe(w.addClass, se))), w.removeClass && (E = ee(E, fe(w.removeClass, le))), E.length && (w.preparationClasses = E, _.addClass(E)), o = g.event = h.event, a = J(c, h, g), h.runner;
23696 var C = g.structural;
23697 C || (C = "animate" === g.event && 0 < Object.keys(g.options.to || {}).length || K(g));
23698 if (!C) return T(), z(u), s;
23699 var k = (h.counter || 0) + 1;
23700 return g.counter = k, W(u, 1, g), A.$$postDigest(function() {
23705 var n = 0 < (c.parent() || []).length && ("animate" === e.event || e.structural || K(e));
23706 if (t || e.counter !== k || !n) return t && (q(c, a), pe(c, a)), (t || l && e.event !== o) && (a.domOperation(), s.end()), void(n || z(u));
23707 o = !e.structural && K(e, !0) ? "setClass" : e.event, W(u, 2);
23708 var r = O(c, o, e.options);
23709 s.setHost(r), x(s, o, "start", Y(a)), r.done(function(e) {
23712 t && t.counter === k && z(u), x(s, o, "close", Y(a))
23716 function x(e, a, s, l) {
23718 var t, n, r, i, e, o = (t = d, n = u, i = [], (e = j[r = a]) && Ae(e, function(e) {
23719 V.call(e.node, n) ? i.push(e.callback) : "leave" === r && V.call(e.node, t) && i.push(e.callback)
23721 o.length ? M(function() {
23722 Ae(o, function(e) {
23726 }), e.progress(a, s, l)
23731 t = c, (n = a).preparationClasses && (t.removeClass(n.preparationClasses), n.preparationClasses = null), n.activeClasses && (t.removeClass(n.activeClasses), n.activeClasses = null), q(c, a), pe(c, a), a.domOperation(), s.complete(!e)
23735 enabled: function(e, t) {
23736 var n = arguments.length;
23737 if (0 === n) t = !!H;
23740 1 === n ? t = !P.get(r) : (P.has(r) || Ne(e).on("$destroy", i), P.set(r, !t))
23741 } else t = H = !!e;
23748 e.removeAttribute(Re), R.delete(e)
23751 function W(e, t, n) {
23752 (n = n || {}).state = t, e.setAttribute(Re, t);
23754 i = r ? m(r, n) : n;
23759 y = ["$animateProvider", function(e) {
23760 var y = "ng-animate-ref",
23761 _ = this.drivers = [],
23762 $ = "$$animationRunner",
23763 w = "$$animatePrepareClasses";
23768 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", "$$animateCache", function(d, c, f, h, p, m, g) {
23771 return function(t, n, u) {
23773 var e = 0 <= ["enter", "move", "leave"].indexOf(n),
23778 cancel: function() {
23782 if (!_.length) return l(), r;
23783 var i, o = k(t.attr("class"), k(u.addClass, u.removeClass)),
23785 return a && (o += " " + a, u.tempClasses = null), e && t.data(w, "ng-" + n + "-prepare"), i = r, t.data($, i), v.push({
23791 beforeStart: function() {
23792 a = (a ? a + " " : "") + C, d.addClass(t, a);
23794 e && (d.removeClass(t, e), e = null)
23797 }), t.on("$destroy", s), 1 < v.length || c.$$postDigest(function() {
23799 Ae(v, function(e) {
23800 E(e.element) ? t.push(e) : e.close()
23802 var e = function(u) {
23805 Ae(u, function(e, n) {
23806 var t, r, i, o = e.element,
23809 l = 0 <= ["enter", "move"].indexOf(s),
23810 c = e.structural ? (r = (t = a).hasAttribute(y) ? [t] : t.querySelectorAll("[ng-animate-ref]"), i = [], Ae(r, function(e) {
23811 var t = e.getAttribute(y);
23812 t && t.length && i.push(e)
23815 var u = l ? "to" : "from";
23816 Ae(c, function(e) {
23817 var t = e.getAttribute(y);
23818 f[t] = f[t] || {}, f[t][u] = {
23827 return Ae(f, function(e, t) {
23831 var i = u[n.animationID],
23832 o = u[r.animationID],
23833 a = n.animationID.toString();
23837 beforeStart: function() {
23838 i.beforeStart(), o.beforeStart()
23840 close: function() {
23841 i.close(), o.close()
23843 classes: function(e, t) {
23844 e = e.split(" "), t = t.split(" ");
23845 for (var n = [], r = 0; r < e.length; r++) {
23847 if ("ng-" !== i.substring(0, 3))
23848 for (var o = 0; o < t.length; o++)
23855 }(i.classes, o.classes),
23860 s.classes.length ? d.push(s) : (d.push(i), d.push(o))
23862 p[a].anchors.push({
23867 var l = n ? n.animationID : r.animationID,
23869 h[c] || (h[c] = !0, d.push(u[l]))
23874 Ae(e, function(i) {
23875 var e = i.from ? i.from.element : i.element,
23877 t = (t ? t + " " : "") + C;
23878 var o = g.cacheKey(e[0], i.event, t, u.removeClass);
23883 var e, t = i.close;
23884 if (g.containsCachedAnimationWithoutDuration(o)) t();
23886 if (i.beforeStart(), E(i.anchors ? i.from.element || i.to.element : i.element)) {
23887 var n = function(e) {
23888 for (var t = _.length - 1; 0 <= t; t--) {
23899 r.done(function(e) {
23903 e.from && e.to ? (t(e.from.element), t(e.to.element)) : t(e.element);
23915 for (var r = function(e) {
23920 for (t = 0; t < e.length; t++) {
23922 o.set(n.domNode, e[t] = {
23923 domNode: n.domNode,
23924 element: n.element,
23929 for (t = 0; t < e.length; t++) a(e[t]);
23930 return function(e) {
23933 for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
23937 for (t = 0; t < r.length; t++) {
23939 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s), s.children.forEach(function(e) {
23943 return a.length && n.push(a), n
23947 if (e.processed) return e;
23949 var t, n = e.domNode,
23951 for (o.set(n, e); r;) {
23952 if (t = o.get(r)) {
23953 t.processed || (t = a(t));
23958 return (t || i).children.push(e), e
23960 }(n), i = 0; i < r.length; i++)
23961 for (var o = r[i], a = 0; a < o.length; a++) {
23964 if (r[i][a] = s.fn, 0 !== i) {
23966 c && d.addClass(l, c)
23967 } else l.removeData(w)
23974 !e || "leave" === n && u.$$domOperationFired || e.end()
23978 t.off("$destroy", s), t.removeData($), b(t, u), pe(t, u), u.domOperation(), a && d.removeClass(t, a), r.complete(!e)
23983 e.module("ngAnimate", [], function() {
23984 Ie = e.noop, Me = e.copy, m = e.extend, Ne = e.element, Ae = e.forEach, Se = e.isArray, De = e.isString, ne = e.isObject, Oe = e.isUndefined, te = e.isDefined, $ = e.isFunction, g = e.isElement
23986 angularVersion: "1.7.8"
23987 }).directive("ngAnimateSwap", ["$animate", function(s) {
23990 transclude: "element",
23993 link: function(e, n, t, r, i) {
23995 e.$watchCollection(t.ngAnimateSwap || t.for, function(e) {
23996 o && s.leave(o), a && (a.$destroy(), a = null), (e || 0 === e) && i(function(e, t) {
23997 o = e, a = t, s.enter(e, null, n)
24002 }]).directive("ngAnimateChildren", s).factory("$$rAFScheduler", ["$$rAF", function(n) {
24006 r = r.concat(e), o()
24008 return r = e.queue = [], e.waitUntilQuiet = function(e) {
24009 i && i(), i = n(function() {
24016 for (var e = r.shift(), t = 0; t < e.length; t++) e[t]();
24017 i || n(function() {
24022 }]).provider("$$animateQueue", b).provider("$$animateCache", function() {
24023 var a = "$$ngAnimateParentKey",
24025 r = Object.create(null);
24026 this.$get = [function() {
24028 cacheKey: function(e, t, n, r) {
24029 var i = e.parentNode,
24030 o = [i[a] || (i[a] = ++s), t, e.getAttribute("class")];
24031 return n && o.push(n), r && o.push(r), o.join(" ")
24033 containsCachedAnimationWithoutDuration: function(e) {
24035 return t && !t.isValid || !1
24037 flush: function() {
24038 r = Object.create(null)
24040 count: function(e) {
24042 return t ? t.total : 0
24046 return t && t.value
24048 put: function(e, t, n) {
24049 r[e] ? (r[e].total++, r[e].value = t) : r[e] = {
24057 }).provider("$$animation", y).provider("$animateCss", c).provider("$$animateCssDriver", u).provider("$$animateJs", d).provider("$$animateJsDriver", v)
24058 }(window, window.angular),
24061 var h = "ngAriaDisable",
24062 n = t.module("ngAria", ["ng"]).info({
24063 angularVersion: "1.7.8"
24064 }).provider("$aria", function() {
24075 bindRoleForClick: !0
24078 function e(i, o, a, s) {
24079 return function(e, t, n) {
24080 if (!n.hasOwnProperty(h)) {
24081 var r = n.$normalize(o);
24082 !l[r] || c(t, a) || n[r] || e.$watch(n[i], function(e) {
24083 e = s ? !e : !!e, t.attr(o, e)
24088 this.config = function(e) {
24090 }, this.$get = function() {
24092 config: function(e) {
24099 o = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
24100 c = function(e, t) {
24101 if (-1 !== t.indexOf(e[0].nodeName)) return !0
24103 n.directive("ngShow", ["$aria", function(e) {
24104 return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
24105 }]).directive("ngHide", ["$aria", function(e) {
24106 return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
24107 }]).directive("ngValue", ["$aria", function(e) {
24108 return e.$$watchExpr("ngValue", "aria-checked", o, !1)
24109 }]).directive("ngChecked", ["$aria", function(e) {
24110 return e.$$watchExpr("ngChecked", "aria-checked", o, !1)
24111 }]).directive("ngReadonly", ["$aria", function(e) {
24112 return e.$$watchExpr("ngReadonly", "aria-readonly", o, !1)
24113 }]).directive("ngRequired", ["$aria", function(e) {
24114 return e.$$watchExpr("ngRequired", "aria-required", o, !1)
24115 }]).directive("ngModel", ["$aria", function(u) {
24116 function d(e, t, n, r) {
24117 return u.config(t) && !n.attr(e) && (r || !c(n, o)) && ("hidden" !== n.attr("type") || "INPUT" !== n[0].nodeName)
24121 return !t.attr("role") && t.attr("type") === e && !c(t, o)
24125 require: "ngModel",
24127 compile: function(e, t) {
24128 if (!t.hasOwnProperty(h)) {
24129 var n, r, i, c = (r = (n = t).type, i = n.role, "checkbox" === (r || i) || "menuitemcheckbox" === i ? "checkbox" : "radio" === (r || i) || "menuitemradio" === i ? "radio" : "range" === r || "progressbar" === i || "slider" === i ? "range" : "");
24131 post: function(e, n, r, i) {
24132 var t = d("tabindex", "tabindex", n, !1);
24135 return i.$modelValue
24140 f(c, n) && n.attr("role", c), d("aria-checked", "ariaChecked", n, !1) && e.$watch(o, "radio" === c ? function(e) {
24141 var t = r.value == i.$viewValue;
24142 n.attr("aria-checked", t)
24144 n.attr("aria-checked", !i.$isEmpty(i.$viewValue))
24145 }), t && n.attr("tabindex", 0);
24148 if (f(c, n) && n.attr("role", "slider"), u.config("ariaValue")) {
24149 var a = !n.attr("aria-valuemin") && (r.hasOwnProperty("min") || r.hasOwnProperty("ngMin")),
24150 s = !n.attr("aria-valuemax") && (r.hasOwnProperty("max") || r.hasOwnProperty("ngMax")),
24151 l = !n.attr("aria-valuenow");
24152 a && r.$observe("min", function(e) {
24153 n.attr("aria-valuemin", e)
24154 }), s && r.$observe("max", function(e) {
24155 n.attr("aria-valuemax", e)
24156 }), l && e.$watch(o, function(e) {
24157 n.attr("aria-valuenow", e)
24160 t && n.attr("tabindex", 0)
24161 }!r.hasOwnProperty("ngRequired") && i.$validators.required && d("aria-required", "ariaRequired", n, !1) && r.$observe("required", function() {
24162 n.attr("aria-required", !!r.required)
24163 }), d("aria-invalid", "ariaInvalid", n, !0) && e.$watch(function() {
24166 n.attr("aria-invalid", !!e)
24173 }]).directive("ngDisabled", ["$aria", function(e) {
24174 return e.$$watchExpr("ngDisabled", "aria-disabled", o, !1)
24175 }]).directive("ngMessages", function() {
24178 require: "?ngMessages",
24179 link: function(e, t, n, r) {
24180 n.hasOwnProperty(h) || t.attr("aria-live") || t.attr("aria-live", "assertive")
24183 }).directive("ngClick", ["$aria", "$parse", function(i, n) {
24186 compile: function(e, t) {
24187 if (!t.hasOwnProperty(h)) {
24188 var r = n(t.ngClick);
24189 return function(n, e, t) {
24190 c(e, o) || (i.config("bindRoleForClick") && !e.attr("role") && e.attr("role", "button"), i.config("tabindex") && !e.attr("tabindex") && e.attr("tabindex", 0), !i.config("bindKeydown") || t.ngKeydown || t.ngKeypress || t.ngKeyup || e.on("keydown", function(e) {
24191 var t = e.which || e.keyCode;
24192 13 !== t && 32 !== t || (-1 !== o.indexOf(e.target.nodeName) || e.target.isContentEditable || e.preventDefault(), n.$apply(function() {
24202 }]).directive("ngDblclick", ["$aria", function(r) {
24203 return function(e, t, n) {
24204 n.hasOwnProperty(h) || !r.config("tabindex") || t.attr("tabindex") || c(t, o) || t.attr("tabindex", 0)
24207 }(window, window.angular),
24213 return ["$animate", function(f) {
24216 transclude: "element",
24219 require: "^^ngMessages",
24220 link: function(e, r, t, i, n) {
24221 var o, a, s, l, c, u;
24223 o = r[0], s = t.ngMessage || t.when;
24224 var d = function(e) {
24225 a = e ? p(e) ? e : e.split(/[\s,]+/) : null, i.reRender()
24227 (l = t.ngMessageExp || t.whenExp) ? (d(e.$eval(l)), e.$watchCollection(l, d)) : d(s)
24229 i.register(o, u = {
24230 test: function(e) {
24231 return function(e, t) {
24232 if (e) return p(e) ? 0 <= e.indexOf(t) : e.hasOwnProperty(t)
24235 attach: function() {
24236 c || n(function(e, t) {
24237 f.enter(e, null, r);
24238 var n = (c = e).$$attachId = i.getAttachId();
24239 c.on("$destroy", function() {
24240 c && c.$$attachId === n && (i.deregister(o, h), u.detach()), t.$destroy()
24244 detach: function() {
24247 c = null, f.leave(e)
24250 }, h), e.$on("$destroy", function() {
24257 t.module("ngMessages", [], function() {
24258 w = t.forEach, p = t.isArray, l = t.isString, c = t.element
24260 angularVersion: "1.7.8"
24261 }).directive("ngMessages", ["$animate", function(b) {
24262 var y = "ng-inactive";
24264 require: "ngMessages",
24266 controller: ["$element", "$scope", "$attrs", function(f, h, p) {
24270 this.getAttachId = function() {
24273 var g, v, o = this.messages = {};
24276 for (var n = t, r = []; n && n !== e;) {
24277 var i = n.$$ngMessageNode;
24278 if (i && i.length) return o[i];
24279 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))
24282 this.render = function(e) {
24283 g = !1, v = e = e || {};
24284 for (var t = _(h, p.ngMessagesMultiple) || _(h, p.multiple), n = [], r = {}, i = 0, o = m.head, a = !1, s = 0; null != o;) {
24288 a || w(e, function(e, t) {
24289 if ($(e) && !c && (i++, l.test(t))) {
24291 r[t] = !0, c = !0, l.attach()
24293 }), c ? a = !t : n.push(l), o = o.next
24298 var u = n.length !== s,
24299 d = m.default && !u && 0 < i;
24300 d ? m.default.attach() : m.default && m.default.detach(), u || d ? b.setClass(f, "ng-active", y) : b.setClass(f, y, "ng-active")
24301 }, h.$watchCollection(p.ngMessages || p.for, m.render), this.reRender = function() {
24302 g || (g = !0, h.$evalAsync(function() {
24303 g && v && m.render(v)
24305 }, this.register = function(e, t, n) {
24306 if (n) m.default = t;
24308 var r = i.toString();
24312 function(e, t, n) {
24316 i ? (r.next = i.next, i.next = r) : (r.next = m.head, m.head = r)
24318 }(f[0], e, r), e.$$ngMessageNode = r, i++
24321 }, this.deregister = function(e, t) {
24322 if (t) delete m.default;
24324 var n = e.$$ngMessageNode;
24325 delete e.$$ngMessageNode,
24326 function(e, t, n) {
24330 i ? i.next = r.next : m.head = r.next
24331 }(f[0], e, n), delete o[n]
24339 return l(t) && 0 === t.length || $(e.$eval(t))
24343 return l(e) ? e.length : !!e
24345 }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(i, o, a) {
24348 require: "^^ngMessages",
24349 link: function(t, n, e) {
24350 var r = e.ngMessagesInclude || e.src;
24351 i(r).then(function(e) {
24352 t.$$destroyed || (l(e) && !e.trim() ? s(n, r) : a(e)(t, function(e) {
24353 n.after(e), s(n, r)
24360 var n = a.$$createComment ? a.$$createComment("ngMessagesInclude", t) : o[0].createComment(" ngMessagesInclude: " + t + " "),
24362 e.after(r), e.remove()
24364 }]).directive("ngMessage", n()).directive("ngMessageExp", n()).directive("ngMessageDefault", n(!0))
24365 }(window, window.angular),
24366 function(F, ue, de) {
24368 ue.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.animate", "material.core.gestures", "material.core.interaction", "material.core.layout", "material.core.meta", "material.core.theming.palette", "material.core.theming", "material.components.autocomplete", "material.components.backdrop", "material.components.bottomSheet", "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.swipe", "material.components.switch", "material.components.tabs", "material.components.toast", "material.components.toolbar", "material.components.tooltip", "material.components.truncate", "material.components.virtualRepeat", "material.components.whiteframe"]),
24371 if (t.has("$swipe")) {
24372 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!")
24377 e.decorator("$$rAF", ["$delegate", n]), e.decorator("$q", ["$delegate", r]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
24381 return o.throttle = function(e) {
24383 return function() {
24384 t = arguments, i = this, r = e, n || (n = !0, o(function() {
24385 r.apply(i, Array.prototype.slice.call(t)), n = !1
24392 return e.resolve || (e.resolve = e.when), e
24394 e.$inject = ["$log", "$injector"], t.$inject = ["$provide", "$mdThemingProvider"], n.$inject = ["$delegate"], r.$inject = ["$delegate"], ue.module("material.core", ["ngAnimate", "material.core.animate", "material.core.layout", "material.core.interaction", "material.core.gestures", "material.core.theming"]).config(t).run(e)
24401 pre: function(e, t, n) {
24402 var r = n.mdAutoFocus || n.mdAutofocus || n.mdSidenavFocus;
24403 i(o(r)(e)), r && e.$watch(r, i);
24406 ue.isUndefined(e) && (e = !0), t.toggleClass("md-autofocus", !!e)
24412 e.$inject = ["$parse"], ue.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
24413 }(), ue.module("material.core").factory("$mdColorUtil", function() {
24415 rgbaToHex: function(e) {
24416 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()
24418 hexToRgba: function(e) {
24419 var t = "#" === e[0] ? e.substr(1) : e,
24421 r = t.substr(0, n),
24422 i = t.substr(n, n),
24423 o = t.substr(2 * n);
24424 return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
24426 rgbToRgba: function(e) {
24427 return e.replace(")", ", 0.1)").replace("(", "a(")
24429 rgbaToRgb: function(e) {
24430 return e ? e.replace("rgba", "rgb").replace(/,[^),]+\)/, ")") : "rgb(0,0,0)"
24433 }), ue.module("material.core").factory("$mdConstant", function() {
24434 var i = document.createElement("div"),
24436 var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
24438 if (n = r.exec(t)) return n[0]
24440 e = /webkit/i.test(o),
24441 a = /([:\-_]+(.))/g;
24444 var t = o + "-" + e,
24445 n = t.replace(a, function(e, t, n, r) {
24446 return r ? n.toUpperCase() : n
24448 r = n.charAt(0).toLowerCase() + n.substring(1);
24449 return s(i, e) ? e : s(i, n) ? n : s(i, r) ? r : e
24453 return ue.isDefined(e.style[t])
24456 isInputKey: function(e) {
24457 return 31 <= e.keyCode && e.keyCode <= 90
24459 isNumPadKey: function(e) {
24460 return 3 === e.location && 97 <= e.keyCode && e.keyCode <= 105
24462 isMetaKey: function(e) {
24463 return 91 <= e.keyCode && e.keyCode <= 93
24465 isFnLockKey: function(e) {
24466 return 112 <= e.keyCode && e.keyCode <= 145
24468 isNavigationKey: function(e) {
24469 var t = r.KEY_CODE,
24470 n = [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW];
24471 return -1 != n.indexOf(e.keyCode)
24473 hasModifierKey: function(e) {
24474 return e.ctrlKey || e.metaKey || e.altKey
24476 ELEMENT_MAX_PIXELS: 1533917,
24477 BEFORE_NG_ARIA: 210,
24497 TRANSITIONEND: "transitionend" + (e ? " webkitTransitionEnd" : ""),
24498 ANIMATIONEND: "animationend" + (e ? " webkitAnimationEnd" : ""),
24499 TRANSFORM: t("transform"),
24500 TRANSFORM_ORIGIN: t("transformOrigin"),
24501 TRANSITION: t("transition"),
24502 TRANSITION_DURATION: t("transitionDuration"),
24503 ANIMATION_PLAY_STATE: t("animationPlayState"),
24504 ANIMATION_DURATION: t("animationDuration"),
24505 ANIMATION_NAME: t("animationName"),
24506 ANIMATION_TIMING: t("animationTimingFunction"),
24507 ANIMATION_DIRECTION: t("animationDirection")
24510 xs: "(max-width: 599px)",
24511 "gt-xs": "(min-width: 600px)",
24512 sm: "(min-width: 600px) and (max-width: 959px)",
24513 "gt-sm": "(min-width: 960px)",
24514 md: "(min-width: 960px) and (max-width: 1279px)",
24515 "gt-md": "(min-width: 1280px)",
24516 lg: "(min-width: 1280px) and (max-width: 1919px)",
24517 "gt-lg": "(min-width: 1920px)",
24518 xl: "(min-width: 1920px)",
24519 landscape: "(orientation: landscape)",
24520 portrait: "(orientation: portrait)",
24523 MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
24529 var l = function() {
24532 e && !ue.isArray(e) && (e = Array.prototype.slice.call(e)), s = !!s;
24535 items: function() {
24536 return [].concat(c)
24538 count: function() {
24544 itemAt: function(e) {
24545 return u(e) ? c[e] : null
24547 findBy: function(t, n) {
24548 return c.filter(function(e) {
24552 add: function(e, t) {
24554 ue.isNumber(t) || (t = c.length);
24555 return c.splice(t, 0, e), d(e)
24557 remove: function(e) {
24558 t(e) && c.splice(d(e), 1)
24562 next: ue.bind(null, n, !1),
24563 previous: ue.bind(null, n, !0),
24564 hasPrevious: function(e) {
24565 return !!e && u(d(e) - 1)
24567 hasNext: function(e) {
24568 return !!e && u(d(e) + 1)
24573 return c.length && -1 < e && e < c.length
24577 return c.indexOf(e)
24581 return e && -1 < d(e)
24585 return c.length ? c[0] : null
24589 return c.length ? c[c.length - 1] : null
24592 function n(e, t, n, r) {
24594 for (var i = d(t);;) {
24595 if (!u(i)) return null;
24596 var o = i + (e ? -1 : 1),
24598 if (u(o) ? a = c[o] : s && (o = d(a = e ? h() : f())), null === a || o === r) return null;
24599 if (n(a)) return a;
24600 ue.isUndefined(r) && (r = o), i = o
24604 ue.module("material.core").config(["$provide", function(e) {
24605 e.decorator("$mdUtil", ["$delegate", function(e) {
24606 return e.iterator = t, e
24611 function e(a, t, i) {
24616 return e.getResponsiveAttribute = function(e, t) {
24617 for (var n = 0; n < a.MEDIA_PRIORITY.length; n++) {
24618 var r = a.MEDIA_PRIORITY[n];
24619 if (s[o[r]].matches) {
24620 var i = u(e, t + "-" + r);
24621 if (e[i]) return e[i]
24625 }, e.getQuery = function(e) {
24627 }, e.watchResponsiveAttributes = function(e, r, i) {
24629 return e.forEach(function(e) {
24631 for (var n in ue.isDefined(r[t]) && o.push(r.$observe(t, ue.bind(void 0, i, null))), a.MEDIA) t = u(r, e + "-" + n), ue.isDefined(r[t]) && o.push(r.$observe(t, ue.bind(void 0, i, n)))
24634 o.forEach(function(e) {
24642 ue.isUndefined(n) && (n = o[e] = (t = e, a.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)));
24644 return ue.isUndefined(r) && (r = function(e) {
24646 t || (t = s[e] = i.matchMedia(e));
24647 return t.addListener(c), l[t.media] = !!t.matches
24652 t.$evalAsync(function() {
24653 l[e.media] = !!e.matches
24658 return n[t] || (n[t] = e.$normalize(t))
24661 e.$inject = ["$mdConstant", "$rootScope", "$window"], ue.module("material.core").factory("$mdMedia", e)
24665 var r = ["data", "x"];
24666 return e ? t ? n(e) : i(e) : {
24669 hasAttribute: function(e, t) {
24670 if (!(e = o(e))) return !1;
24671 for (var n = i(t), r = 0; r < n.length; r++)
24672 if (e.hasAttribute(n[r])) return !0;
24675 removeAttribute: function(t, e) {
24676 if (!(t = o(t))) return;
24677 i(e).forEach(function(e) {
24678 t.removeAttribute(e)
24684 return (n = ue.isArray(n) ? n : [n]).forEach(function(t) {
24685 r.forEach(function(e) {
24686 n.push(e + "-" + t)
24692 return i(e = ue.isArray(e) ? e : [e]).map(function(e) {
24693 return "[" + e + "]"
24698 if ((e = e[0] || e).nodeType) return e
24701 ue.module("material.core").config(["$provide", function(e) {
24702 e.decorator("$mdUtil", ["$delegate", function(e) {
24703 return e.prefixer = t, e
24708 e.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
24711 function e(l, s, n, a, e, t, o, r, c, d) {
24712 var i = t.startSymbol(),
24714 f = "{{" === i && "}}" === u,
24715 h = function(e, t, n) {
24717 if (e && e.length) {
24718 var i = c.getComputedStyle(e[0]);
24719 r = ue.isDefined(i[t]) && (!n || i[t] == n)
24725 return e ? -1 < String(e).indexOf("px") || -1 < String(e).indexOf("%") ? e : e + "px" : "0"
24729 now: F.performance && F.performance.now ? ue.bind(F.performance, F.performance.now) : Date.now || function() {
24730 return (new Date).getTime()
24732 getModelOption: function(e, t) {
24734 var n = e.$options;
24735 return n.getOption ? n.getOption(t) : n[t]
24738 bidi: function(e, t, n, r) {
24739 var i = !("rtl" == l[0].dir || "rtl" == l[0].body.dir);
24740 if (0 == arguments.length) return i ? "ltr" : "rtl";
24741 var o = ue.element(e);
24742 i && ue.isDefined(n) ? o.css(t, p(n)) : !i && ue.isDefined(r) && o.css(t, p(r))
24744 bidiProperty: function(e, t, n, r) {
24745 var i = !("rtl" == l[0].dir || "rtl" == l[0].body.dir),
24747 i && ue.isDefined(t) ? (o.css(t, p(r)), o.css(n, "")) : !i && ue.isDefined(n) && (o.css(n, p(r)), o.css(t, ""))
24749 clientRect: function(e, t, n) {
24751 t = g(t || r.offsetParent || document.body);
24752 var i = r.getBoundingClientRect(),
24753 o = n ? t.getBoundingClientRect() : {
24760 left: i.left - o.left,
24761 top: i.top - o.top,
24766 offsetRect: function(e, t) {
24767 return m.clientRect(e, t, !0)
24769 nodesToArray: function(e) {
24771 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
24774 getViewportTop: function() {
24775 return m.disableScrollAround._count && m.disableScrollAround._viewPortTop ? m.disableScrollAround._viewPortTop : c.scrollY || c.pageYOffset || 0
24777 findFocusTarget: function(e, t) {
24778 var n, r = this.prefixer("md-autofocus", !0);
24779 return (n = i(e, t || r)) || t == r || (n = i(e, this.prefixer("md-auto-focus", !0))) || (n = i(e, r)), n;
24782 var n, r = e[0].querySelectorAll(t);
24783 return r && r.length && r.length && ue.forEach(r, function(e) {
24784 (e = ue.element(e)).hasClass("md-autofocus") && (n = e)
24788 disableScrollAround: function(e, t, r) {
24789 if (r = r || {}, m.disableScrollAround._count = Math.max(0, m.disableScrollAround._count || 0), m.disableScrollAround._count++, m.disableScrollAround._restoreScroll) return m.disableScrollAround._restoreScroll;
24792 var e = l[0].documentElement,
24793 t = e.style.cssText || "",
24794 n = s.style.cssText || "",
24795 r = m.getViewportTop();
24796 m.disableScrollAround._viewPortTop = r;
24797 var i = s.clientWidth,
24798 o = s.scrollHeight > s.clientHeight + 1,
24799 a = 0 < e.scrollTop ? e : s;
24800 o && ue.element(s).css({
24805 s.clientWidth < i && (s.style.overflow = "hidden");
24806 return function() {
24807 s.style.cssText = n, e.style.cssText = t, a.scrollTop = r
24812 e = ue.element(e || s), r.disableScrollMask ? t = e : (t = ue.element('<div class="md-scroll-mask"> <div class="md-scroll-mask-bar"></div></div>'), e.append(t));
24813 return t.on("wheel", n), t.on("touchmove", n),
24815 t.off("wheel"), t.off("touchmove"), !r.disableScrollMask && t[0].parentNode && t[0].parentNode.removeChild(t[0])
24822 return m.disableScrollAround._restoreScroll = function() {
24823 --m.disableScrollAround._count <= 0 && (delete m.disableScrollAround._viewPortTop, n(), i(), delete m.disableScrollAround._restoreScroll)
24826 enableScrolling: function() {
24827 var e = this.disableScrollAround._restoreScroll;
24830 floatingScrollbars: function() {
24831 if (this.floatingScrollbars.cached === de) {
24832 var e = ue.element("<div><div></div></div>").css({
24835 position: "absolute",
24837 "overflow-y": "scroll"
24839 e.children().css("height", "60px"), l[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
24841 return this.floatingScrollbars.cached
24843 forceFocus: function(e) {
24845 document.addEventListener("click", function e(t) {
24846 t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
24848 var t = document.createEvent("MouseEvents");
24849 t.initMouseEvent("click", !1, !0, F, {}, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), t.$material = !0, t.$focus = !0, n.dispatchEvent(t)
24851 createBackdrop: function(e, t) {
24852 return n(m.supplant('<md-backdrop class="{0}">', [t]))(e)
24854 supplant: function(e, o, t) {
24855 return t = t || /\{([^{}]*)\}/g, e.replace(t, function(t, e) {
24856 var n = e.split("."),
24859 for (var i in n) n.hasOwnProperty(i) && (r = r[n[i]])
24863 return "string" == typeof r || "number" == typeof r ? r : t
24866 fakeNgModel: function() {
24869 $setTouched: ue.noop,
24870 $setViewValue: function(e) {
24871 this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
24875 $isEmpty: function(e) {
24876 return 0 === ("" + e).length
24880 $viewChangeListeners: [],
24884 debounce: function(n, r, i, o) {
24886 return function() {
24888 t = Array.prototype.slice.call(arguments);
24889 s.cancel(a), a = s(function() {
24890 a = de, n.apply(e, t)
24894 throttle: function(n, r) {
24896 return function() {
24899 (!i || r < t - i) && (n.apply(this, e), i = t)
24902 time: function(e) {
24904 return e(), m.now() - t
24906 valueOnUse: function(e, t, n) {
24908 i = Array.prototype.slice.call(arguments),
24909 o = 3 < i.length ? i.slice(3) : [];
24910 Object.defineProperty(e, t, {
24912 return null === r && (r = n.apply(e, o)), r
24916 nextUid: function() {
24919 disconnectScope: function(e) {
24920 if (e && e.$root !== e && !e.$$destroyed) {
24922 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
24925 reconnectScope: function(e) {
24926 if (e && e.$root !== e && e.$$disconnected) {
24929 t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
24932 getClosest: function(e, t, n) {
24933 if (ue.isString(t)) {
24934 var r = t.toUpperCase();
24936 return e.nodeName.toUpperCase() === r
24939 if (e instanceof ue.element && (e = e[0]), n && (e = e.parentNode), !e) return null;
24942 } while (e = e.parentNode);
24945 elementContains: function(t, n) {
24946 return (F.Node && F.Node.prototype && Node.prototype.contains ? ue.bind(t, t.contains) : ue.bind(t, function(e) {
24947 return t === n || !!(16 & this.compareDocumentPosition(e))
24950 extractElementByName: function(e, r, t, n) {
24952 return !i && n && o.warn(m.supplant("Unable to find node '{0}' in element '{1}'.", [r, e[0].outerHTML])), ue.element(i || e);
24955 return function(e) {
24957 for (var t = 0, n = e.length; t < n; t++)
24958 if (e[t].nodeName.toLowerCase() === r) return e[t];
24960 }(e) || (t ? function(e) {
24963 for (var n = 0, r = e.length; n < r; n++) {
24966 for (var o = 0, a = i.childNodes.length; o < a; o++) t = t || s([i.childNodes[o]])
24972 initOptionalProperties: function(r, i, o) {
24973 o = o || {}, ue.forEach(r.$$isolateBindings, function(e, t) {
24974 if (e.optional && ue.isUndefined(r[t])) {
24975 var n = ue.isDefined(i[e.attrName]);
24976 r[t] = ue.isDefined(o[t]) ? o[t] : n
24980 nextTick: function(e, t, n) {
24981 var r = m.nextTick,
24987 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = o, i || (r.timeout = s(function() {
24990 r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
24991 e.scope && e.scope.$$destroyed || e.callback()
24992 }), t && a.$digest()
24995 processTemplate: function(e) {
24996 return f ? e : e && ue.isString(e) ? e.replace(/\{\{/g, i).replace(/}}/g, u) : e
24998 getParentWithPointerEvents: function(e) {
24999 for (var t = e.parent(); h(t, "pointer-events", "none");) t = t.parent();
25002 getNearestContentElement: function(e) {
25003 for (var t = e.parent()[0]; t && t !== r[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
25006 checkStickySupport: function() {
25007 var e, t = ue.element("<div>");
25008 l[0].body.appendChild(t[0]);
25009 for (var n = ["sticky", "-webkit-sticky"], r = 0; r < n.length; ++r)
25014 }), t.css("position") == n[r]) {
25017 } return t.remove(), e
25019 parseAttributeBoolean: function(e, t) {
25020 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
25022 hasComputedStyle: h,
25023 isParentFormSubmitted: function(e) {
25024 var t = m.getClosest(e, "form"),
25025 n = t ? ue.element(t).controller("form") : null;
25026 return !!n && n.$submitted
25028 animateScrollTo: function(i, o, a) {
25029 var s = i.scrollTop,
25034 var t = (n = a || 1e3, r = m.now() - u, function(e, t, n, r) {
25035 if (r < e) return t + n;
25036 var i = (e /= r) * e;
25037 return t + n * (i * e * -2 + 3 * i)
25041 (c ? t < o : o < t) && d(e)
25044 uniq: function(e) {
25045 if (e) return e.filter(function(e, t, n) {
25046 return n.indexOf(e) === t
25049 getInnerHTML: function(e) {
25050 var t = new XMLSerializer;
25051 return Array.prototype.map.call(e.childNodes, function(e) {
25052 return t.serializeToString(e)
25055 getOuterHTML: function(e) {
25056 return (new XMLSerializer).serializeToString(e)
25058 msie: F.document.documentMode
25060 return m.dom.animator = e(m), m;
25066 ue.module("material.core").factory("$mdUtil", e), ue.element.prototype.focus = ue.element.prototype.focus || function() {
25067 return this.length && this[0].focus(), this
25068 }, ue.element.prototype.blur = ue.element.prototype.blur || function() {
25069 return this.length && this[0].blur(), this
25071 }(), ue.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(n, i, a, s) {
25072 return function(e) {
25073 return r = e, t = n, l = i, c = a, o = s, u = {
25074 translate3d: function(t, n, e, r) {
25078 addClass: r.transitionInClass,
25079 removeClass: r.transitionOutClass,
25080 duration: r.duration
25081 }).start().then(function() {
25088 addClass: r.transitionOutClass,
25089 removeClass: r.transitionInClass,
25090 duration: r.duration
25094 waitTransitionEnd: function(o, a) {
25096 return t(function(t, e) {
25098 ("0s" == (n = (n = (a = a || {}).cachedTransitionStyles) || F.getComputedStyle(o[0])).transitionDuration || !n.transition && !n.transitionProperty) && (s = 0);
25099 var r = l(i, a.timeout || s);
25102 e && e.target !== o[0] || (e && l.cancel(r), o.off(c.CSS.TRANSITIONEND, i), t())
25104 o.on(c.CSS.TRANSITIONEND, i)
25107 calculateTransformValues: function(e, t) {
25108 var n, r, i = t.element,
25111 var a = i ? u.clientRect(i) || (n = e ? e.parent() : null, (r = n ? n.parent() : null) ? u.clientRect(r) : null) : u.copyRect(o),
25112 s = u.copyRect(e[0].getBoundingClientRect()),
25113 l = u.centerPointFor(s),
25114 c = u.centerPointFor(a);
25116 centerX: c.x - l.x,
25117 centerY: c.y - l.y,
25118 scaleX: Math.round(100 * Math.min(.5, a.width / s.width)) / 100,
25119 scaleY: Math.round(100 * Math.min(.5, a.height / s.height)) / 100
25129 calculateZoomToOrigin: function(e, t) {
25130 var n = ue.bind(null, r.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )");
25131 return n(u.calculateTransformValues(e, t))
25133 calculateSlideToOrigin: function(e, t) {
25134 var n = ue.bind(null, r.supplant, "translate3d( {centerX}px, {centerY}px, 0 )");
25135 return n(u.calculateTransformValues(e, t))
25137 toCss: function(e) {
25139 return ue.forEach(e, function(e, t) {
25140 if (!ue.isUndefined(e))
25141 if (0 <= "left top right bottom width height x y min-width min-height max-width max-height".indexOf(t)) r[t] = e + "px";
25144 n(t, c.CSS.TRANSITION, e);
25147 n(t, c.CSS.TRANSFORM, e);
25149 case "transformOrigin":
25150 n(t, c.CSS.TRANSFORM_ORIGIN, e);
25157 function n(e, t, n) {
25158 ue.forEach(t.split(" "), function(e) {
25163 toTransformCss: function(t, e, n) {
25165 return ue.forEach(c.CSS.TRANSFORM.split(" "), function(e) {
25167 }), e && (n = n || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", r.transition = n), r
25169 copyRect: function(t, n) {
25170 return t ? (n = n || {}, ue.forEach("left top right bottom width height".split(" "), function(e) {
25171 n[e] = Math.round(t[e])
25172 }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
25174 clientRect: function(e) {
25175 var t, n = ue.element(e)[0].getBoundingClientRect();
25176 return (t = n) && 0 < t.width && 0 < t.height ? u.copyRect(n) : null
25178 centerPointFor: function(e) {
25180 x: Math.round(e.left + e.width / 2),
25181 y: Math.round(e.top + e.height / 2)
25188 var r, t, l, c, o, u
25190 }]), 4 <= ue.version.minor ? ue.module("material.core.animate", []) : function() {
25191 var k = ue.forEach,
25192 x = ue.isDefined(document.documentElement.style.WebkitAppearance),
25193 T = x ? "-webkit-" : "",
25194 M = (x ? "webkitTransitionEnd " : "") + "transitionend",
25195 A = (x ? "webkitAnimationEnd " : "") + "animationend",
25196 e = ["$q", "$$rAFMutex", function(t, n) {
25198 this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = n(), this._state = 0
25200 return e.prototype = {
25201 setHost: function(e) {
25202 this.host = e || {}
25204 done: function(e) {
25205 2 === this._state ? e() : this._doneCallbacks.push(e)
25208 getPromise: function() {
25209 if (!this.promise) {
25211 this.promise = t(function(t, n) {
25212 e.done(function(e) {
25213 !1 === e ? n() : t()
25217 return this.promise
25219 then: function(e, t) {
25220 return this.getPromise().then(e, t)
25222 catch: function(e) {
25223 return this.getPromise().catch(e)
25225 finally: function(e) {
25226 return this.getPromise().finally(e)
25228 pause: function() {
25229 this.host.pause && this.host.pause()
25231 resume: function() {
25232 this.host.resume && this.host.resume()
25235 this.host.end && this.host.end(), this._resolve(!0)
25237 cancel: function() {
25238 this.host.cancel && this.host.cancel(), this._resolve(!1)
25240 complete: function(e) {
25242 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
25246 _resolve: function(t) {
25247 2 !== this._state && (k(this._doneCallbacks, function(e) {
25249 }), this._doneCallbacks.length = 0, this._state = 2)
25251 }, e.all = function(t, n) {
25256 i = i && e, ++r === t.length && n(i)
25265 return e.replace(/-[a-z]/g, function(e) {
25266 return e.charAt(1).toUpperCase()
25269 ue.module("material.core.animate", []).factory("$$forceReflow", ["$document", function(e) {
25270 return function() {
25271 return e[0].body.clientWidth + 1
25273 }]).factory("$$AnimateRunner", e).factory("$$rAFMutex", ["$$rAF", function(n) {
25274 return function() {
25276 return n(function() {
25283 }]).factory("$animateCss", ["$window", "$$rAF", "$$AnimateRunner", "$$forceReflow", "$$jqLite", "$timeout", "$animate", function(p, o, a, m, n, g, s) {
25285 t.addClass && (n.addClass(e, t.addClass), t.addClass = null), t.removeClass && (n.removeClass(e, t.removeClass), t.removeClass = null)
25290 n = (e || "").split(/\s*,\s*/);
25291 return k(n, function(e) {
25292 "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
25298 t.from && (e.css(t.from), t.from = null)
25302 t.to && (e.css(t.to), t.to = null)
25306 for (var t = 0; t < e.length; t++)
25307 if (1 === e[t].nodeType) return e[t]
25312 r = S(T + "transition-delay");
25313 n.style[r] = t ? "-9999s" : ""
25315 return function(r, l) {
25318 e = u && s.enabled(),
25321 e && (l.transitionStyle && c.push([T + "transition", l.transitionStyle]), l.keyframeStyle && c.push([T + "animation", l.keyframeStyle]), l.delay && c.push([T + "transition-delay", l.delay + "s"]), l.duration && c.push([T + "transition-duration", l.duration + "s"]), t = l.keyframeStyle || l.to && (0 < l.duration || l.transitionStyle), n = !!l.addClass || !!l.removeClass, C(r, !0));
25322 var d = e && (t || n);
25327 start: function() {
25329 return e = function() {
25330 if (C(r, !1), !d) return s();
25336 var e = function(e) {
25338 n = p.getComputedStyle(t),
25339 r = b(n[c("transitionDuration")]),
25340 i = b(n[c("animationDuration")]),
25341 o = b(n[c("transitionDelay")]),
25342 a = b(n[c("animationDelay")]);
25343 i *= parseInt(n[c("animationIterationCount")], 10) || 1;
25344 var s = Math.max(i, r),
25345 l = Math.max(a, o);
25349 animationDuration: i,
25350 transitionDuration: r,
25356 return x ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
25359 if (0 === e.duration) return s();
25361 l.easing && (e.transitionDuration && t.push([T + "transition-timing-function", l.easing]), e.animationDuration && t.push([T + "animation-timing-function", l.easing])), l.delay && e.animationDelay && t.push([T + "animation-delay", l.delay + "s"]), l.duration && e.animationDuration && t.push([T + "animation-duration", l.duration + "s"]), k(t, function(e) {
25364 u.style[S(t)] = n, c.push(e)
25366 var i = 1e3 * e.delay,
25370 f = [], e.transitionDuration && f.push(M), e.animationDuration && f.push(A), f = f.join(" "), h = function(e) {
25371 e.stopPropagation();
25372 var t = e.originalEvent || e,
25373 n = t.timeStamp || Date.now(),
25374 r = parseFloat(t.elapsedTime.toFixed(3));
25375 Math.max(n - a, 0) >= i && o <= r && s()
25376 }, r.on(f, h), w(r, l), g(s, i + 1.5 * n, !1)
25377 }, y && y(), _.push(e), y = o(function() {
25379 for (var e = m(), t = 0; t < _.length; t++) _[t](e);
25385 if (!i) return i = !0, f && h && r.off(f, h), v(r, l), $(e = r, t = l), w(e, t), k(c, function(e) {
25386 u.style[S(e[0])] = ""
25387 }), n.complete(!0), n
25395 function o(r, i, l, o) {
25396 var a = this.showWarnings;
25400 expectWithText: function(e, t) {
25401 var n = u(e) || ""; - 1 < n.indexOf(o.startSymbol()) ? c(e, t, function() {
25405 expectWithoutText: function(e, t) {
25406 var n = u(e); - 1 < n.indexOf(o.startSymbol()) || n || s(e, t, n)
25410 parentHasAriaLabel: function e(t, n) {
25412 var r = ue.element(t)[0] || t;
25413 if (!r.parentNode) return !1;
25414 if (i(r.parentNode)) return !0;
25416 if (n) return e(r.parentNode, n);
25420 if (!d(e)) return !1;
25421 if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
25433 case "presentation":
25440 switch (e.tagName.toLowerCase()) {
25493 case "presentation":
25524 function s(e, t, n) {
25525 var r = ue.element(e)[0] || e;
25526 !r || r.hasAttribute(t) && 0 !== r.getAttribute(t).length || function(e, t) {
25527 var n = e.hasChildNodes(),
25530 for (var i = e.childNodes, o = 0; o < i.length; o++) {
25532 1 === a.nodeType && a.hasAttribute(t) && (void 0, "none" !== ((s = a).currentStyle ? s.currentStyle : l.getComputedStyle(s)).display && (r = !0))
25536 }(r, t) || ((n = ue.isString(n) ? n.trim() : "").length ? e.attr(t, n) : a && i.warn('ARIA: Attribute "', t, '", required for accessibility, is missing on node:', r))
25539 function c(e, t, n) {
25547 for (var e, n = document.createTreeWalker(t, NodeFilter.SHOW_TEXT, null, !1), r = ""; e = n.nextNode();) i(e) || (r += e.textContent);
25548 return r.trim() || "";
25551 for (; e.parentNode && (e = e.parentNode) !== t;)
25552 if (e.getAttribute && "true" === e.getAttribute("aria-hidden")) return !0
25557 var t = ue.element(e)[0] || e;
25558 return !!t.hasAttribute && (t.hasAttribute("aria-label") || t.hasAttribute("aria-labelledby") || t.hasAttribute("aria-describedby"))
25561 o.$inject = ["$$rAF", "$log", "$window", "$interpolate"], ue.module("material.core").provider("$mdAria", function() {
25566 disableWarnings: function() {
25567 i.showWarnings = !1
25569 $get: ["$$rAF", "$log", "$window", "$interpolate", function(e, t, n, r) {
25570 return o.apply(i, arguments)
25579 function s(e, t, n, r, i) {
25580 this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
25582 this.respectPreAssignBindingsEnabled = function(e) {
25583 return ue.isDefined(e) ? (a = e, this) : a
25584 }, this.$get = ["$q", "$templateRequest", "$injector", "$compile", "$controller", function(e, t, n, r, i) {
25585 return new s(e, t, n, r, i)
25586 }], s.prototype.compile = function(e) {
25587 return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
25588 }, s.prototype._prepareContentElement = function(e) {
25589 var t = this._fetchContentElement(e);
25590 return this.$q.resolve({
25591 element: t.element,
25592 cleanup: t.restore,
25598 }, s.prototype._compileTemplate = function(r) {
25601 t = r.template || "",
25602 n = ue.extend({}, r.resolve),
25603 o = ue.extend({}, r.locals),
25604 a = r.transformTemplate || ue.identity;
25605 return ue.forEach(n, function(e, t) {
25606 ue.isString(e) ? n[t] = i.$injector.get(e) : n[t] = i.$injector.invoke(e)
25607 }), ue.extend(n, o), n.$$ngTemplate = e ? this.$templateRequest(e) : this.$q.when(t), this.$q.all(n).then(function(e) {
25608 var t = a(e.$$ngTemplate, r),
25609 n = r.element || ue.element("<div>").html(t.trim()).contents();
25610 return i._compileElement(e, n, r)
25612 }, s.prototype._compileElement = function(r, i, o) {
25614 s = this.$compile(i),
25617 cleanup: i.remove.bind(i),
25619 link: function(e) {
25620 if (r.$scope = e, o.controller) {
25621 var t = ue.extend({}, r, {
25624 n = a._createController(o, t, r);
25625 i.data("$ngControllerController", n), i.children().data("$ngControllerController", n), l.controller = n
25631 }, s.prototype._createController = function(e, t, n) {
25633 if (!a || ("function" == typeof o.preAssignBindingsEnabled ? o.preAssignBindingsEnabled() : 1 === ue.version.major && ue.version.minor < 6)) {
25634 var i = this.$controller(e.controller, t, !0);
25635 e.bindToController && ue.extend(i.instance, n), r = i()
25636 } else r = this.$controller(e.controller, t), e.bindToController && ue.extend(r, n);
25637 return e.controllerAs && (t.$scope[e.controllerAs] = r), ue.isFunction(r.$onInit) && r.$onInit(), r
25638 }, s.prototype._fetchContentElement = function(e) {
25639 var t = e.contentElement,
25641 return n = ue.isString(t) ? r(t = document.querySelector(t)) : (t = t[0] || t, document.contains(t) ? r(t) : function() {
25642 t.parentNode && t.parentNode.removeChild(t)
25644 element: ue.element(t),
25649 var t = e.parentNode,
25650 n = e.nextElementSibling;
25651 return function() {
25652 n ? t.insertBefore(e, n) : t.appendChild(e)
25657 ue.module("material.core").provider("$mdCompiler", e), e.$inject = ["$compileProvider"]
25660 i.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"];
25663 c = !(p.$inject = ["$mdGesture", "$$MdGestureHandler"]),
25667 e = navigator.userAgent || navigator.vendor || F.opera,
25668 f = e.match(/ipad|iphone|ipod/i),
25669 h = e.match(/android/i);
25673 function i(r, e, n) {
25674 var i = function() {
25675 for (var e = document.createElement("div"), t = ["", "webkit", "Moz", "MS", "ms", "o"], n = 0; n < t.length; n++) {
25677 i = r ? r + "TouchAction" : "touchAction";
25678 if (ue.isDefined(e.style[i])) return i
25681 t = void 0 !== F.jQuery && ue.element === F.jQuery,
25683 handler: function(e, t) {
25685 return ue.extend(n, t), s[e] = n, o
25687 register: function(e, t, n) {
25688 var r = s[t.replace(/^\$md./, "")];
25689 if (r) return r.registerElement(e, n);
25690 throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(s).join(", "))
25694 isHijackingClicks: (f || h) && !t && !c
25698 return function(e, t) {
25699 t.distance < this.state.options.maxDistance && this.dispatchEvent(e, n, t)
25702 return o.isHijackingClicks && (o.handler("click", {
25707 }), o.handler("focus", {
25711 onEnd: function(e, t) {
25712 t.distance < this.state.options.maxDistance && _(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
25714 }), o.handler("mouseup", {
25718 onEnd: a("mouseup")
25719 }), o.handler("mousedown", {
25720 onStart: function(e) {
25721 this.dispatchEvent(e, "mousedown")
25723 })), o.handler("press", {
25724 onStart: function(e, t) {
25725 this.dispatchEvent(e, "$md.pressdown")
25727 onEnd: function(e, t) {
25728 this.dispatchEvent(e, "$md.pressup")
25730 }).handler("hold", {
25735 onCancel: function() {
25736 n.cancel(this.state.timeout)
25738 onStart: function(e, t) {
25739 if (!this.state.registeredParent) return this.cancel();
25743 }, this.state.timeout = n(ue.bind(this, function() {
25744 this.dispatchEvent(e, "$md.hold"), this.cancel()
25745 }), this.state.options.delay, !1)
25747 onMove: function(e, t) {
25748 i || "touchmove" !== e.type || e.preventDefault();
25749 var n = this.state.pos.x - t.x,
25750 r = this.state.pos.y - t.y;
25751 Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
25753 onEnd: function() {
25756 }).handler("drag", {
25760 cancelMultiplier: 1.5
25762 onSetup: function(e, t) {
25763 i && (this.oldTouchAction = e[0].style[i], e[0].style[i] = t.horizontal ? "pan-y" : "pan-x")
25765 onCleanup: function(e) {
25766 this.oldTouchAction && (e[0].style[i] = this.oldTouchAction)
25768 onStart: function(e) {
25769 this.state.registeredParent || this.cancel()
25771 onMove: function(e, t) {
25773 i || "touchmove" !== e.type || e.preventDefault(), this.state.dragPointer ? this.dispatchDragMove(e) : (r = this.state.options.horizontal ? (n = Math.abs(t.distanceX) > this.state.options.minDistance, Math.abs(t.distanceY) > this.state.options.minDistance * this.state.options.cancelMultiplier) : (n = Math.abs(t.distanceY) > this.state.options.minDistance, Math.abs(t.distanceX) > this.state.options.minDistance * this.state.options.cancelMultiplier), n ? (this.state.dragPointer = m(e), b(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragstart", this.state.dragPointer)) : r && this.cancel())
25775 dispatchDragMove: e.throttle(function(e) {
25776 this.state.isRunning && (b(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
25778 onEnd: function(e, t) {
25779 this.state.dragPointer && (b(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
25781 }).handler("swipe", {
25786 onEnd: function(e, t) {
25788 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))
25794 this.name = e, this.state = {}
25799 document.contains || (document.contains = function(e) {
25800 return document.body.contains(e)
25801 }), !d && e.isHijackingClicks && (document.addEventListener("click", function(e) {
25803 t = f ? ue.isDefined(e.webkitForce) && 0 === e.webkitForce : 0 === e.clientX && 0 === e.clientY;
25804 t || e.$material || e.isIonicTap || v(e) ? (u = null, "label" === e.target.tagName.toLowerCase() && (u = {
25807 })) : (e.preventDefault(), e.stopPropagation(), u = null)
25808 }, !0), document.addEventListener("mouseup", t, !0), document.addEventListener("mousedown", t, !0), document.addEventListener("focus", t, !0), d = !0);
25809 ue.element(document).on("mousedown touchstart pointerdown", function(e) {
25811 var t = +Date.now();
25812 if (r && !g(e, r) && t - r.endTime < 1500) return;
25813 o = m(e), n("start", e)
25814 }).on("mousemove touchmove pointermove", function(e) {
25815 if (!o || !g(e, o)) return;
25816 b(e, o), n("move", e)
25817 }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
25818 if (!o || !g(e, o)) return;
25819 b(e, o), o.endTime = +Date.now(), "pointercancel" !== e.type && n("end", e);
25821 }).on("$$mdGestureReset", function() {
25827 !e.clientX && !e.clientY || e.$material || e.isIonicTap || v(e) || "mousedown" === e.type && (_(e.target) || _(document.activeElement)) || (e.preventDefault(), e.stopPropagation())
25832 for (var r in s)(n = s[r]) instanceof i && ("start" === e && n.cancel(), n[e](t, o))
25839 startTime: +Date.now(),
25841 type: e.type.charAt(0)
25843 return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
25847 return e && t && e.type.charAt(0) === t.type
25851 return u && u.x === e.x && u.y === e.y
25858 t.distanceX = r - t.startX, t.distanceY = i - t.startY, t.distance = Math.sqrt(t.distanceX * t.distanceX + t.distanceY * t.distanceY), t.directionX = 0 < t.distanceX ? "right" : t.distanceX < 0 ? "left" : "", t.directionY = 0 < t.distanceY ? "down" : t.distanceY < 0 ? "up" : "", t.duration = +Date.now() - t.startTime, t.velocityX = t.distanceX / t.duration, t.velocityY = t.distanceY / t.duration
25862 return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
25866 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))
25868 ue.module("material.core.gestures", []).provider("$mdGesture", t).factory("$$MdGestureHandler", function() {
25869 var e = void 0 !== F.jQuery && ue.element === F.jQuery;
25870 return n.prototype = {
25872 dispatchEvent: e ? function(e, t, n) {
25874 var r = new ue.element.Event(t);
25875 r.$material = !0, r.pointer = n, r.srcEvent = e, ue.extend(r, {
25882 ctrlKey: e.ctrlKey,
25884 shiftKey: e.shiftKey,
25886 }), ue.element(n.target).trigger(r)
25887 } : function(e, t, n) {
25889 n = n || o, "click" === t || "mouseup" === t || "mousedown" === t ? "function" == typeof F.MouseEvent ? r = new MouseEvent(t, {
25892 screenX: Number(e.screenX),
25893 screenY: Number(e.screenY),
25894 clientX: Number(n.x),
25895 clientY: Number(n.y),
25896 ctrlKey: e.ctrlKey,
25898 shiftKey: e.shiftKey,
25899 metaKey: e.metaKey,
25901 buttons: e.buttons,
25902 relatedTarget: e.relatedTarget || null
25903 }) : (r = document.createEvent("MouseEvents")).initMouseEvent(t, !0, !0, F, e.detail, n.x, n.y, n.x, n.y, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget || null) : "function" == typeof F.CustomEvent ? r = new CustomEvent(t, {
25907 }) : (r = document.createEvent("CustomEvent")).initCustomEvent(t, !0, !0, {}), r.$material = !0, r.pointer = n, r.srcEvent = e, n.target.dispatchEvent(r)
25910 onCleanup: ue.noop,
25915 start: function(e, t) {
25916 if (!this.state.isRunning) {
25917 var n = this.getNearestParent(e.target),
25918 r = n && n.$mdGesture[this.name] || {};
25921 options: ue.extend({}, this.options, r),
25922 registeredParent: n
25923 }, this.onStart(e, t)
25926 move: function(e, t) {
25927 this.state.isRunning && this.onMove(e, t)
25929 end: function(e, t) {
25930 this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
25932 cancel: function(e, t) {
25933 this.onCancel(e, t), this.state = {}
25935 getNearestParent: function(e) {
25936 for (var t = e; t;) {
25937 if ((t.$mdGesture || {})[this.name]) return t;
25942 registerElement: function(e, t) {
25944 return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", r), n.onSetup(e, t || {}), r;
25947 delete e[0].$mdGesture[n.name], e.off("$destroy", r), n.onCleanup(e, t || {})
25951 }).run(p), t.prototype = {
25952 disableAll: function() {
25955 skipClickHijack: function() {
25958 setMaxClickDistance: function(e) {
25961 $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
25962 return new i(e, t, n)
25967 function e(e, t, n) {
25968 this.$timeout = e, this.$mdUtil = t, this.$rootScope = n, this.pointerEvent = "MSPointerEvent" in F ? "MSPointerDown" : "PointerEvent" in F ? "pointerdown" : null, this.bodyElement = ue.element(document.body), this.isBuffering = !1, this.bufferTimeout = null, this.lastInteractionType = null, this.lastInteractionTime = null, this.inputHandler = this.onInputEvent.bind(this), this.bufferedInputHandler = this.onBufferInputEvent.bind(this), this.inputEventMap = {
25969 keydown: "keyboard",
25970 mousedown: "mouse",
25971 mouseenter: "mouse",
25972 touchstart: "touch",
25973 pointerdown: "pointer",
25974 MSPointerDown: "pointer"
25975 }, this.iePointerMap = {
25979 }, this.initializeEvents(), this.$rootScope.$on("$destroy", this.deregister.bind(this))
25981 e.$inject = ["$timeout", "$mdUtil", "$rootScope"], ue.module("material.core.interaction", []).service("$mdInteraction", e), e.prototype.deregister = function() {
25982 this.bodyElement.off("keydown mousedown", this.inputHandler), "ontouchstart" in document.documentElement && this.bodyElement.off("touchstart", this.bufferedInputHandler), this.pointerEvent && this.bodyElement.off(this.pointerEvent, this.inputHandler)
25983 }, e.prototype.initializeEvents = function() {
25984 this.bodyElement.on("keydown mousedown", this.inputHandler), "ontouchstart" in document.documentElement && this.bodyElement.on("touchstart", this.bufferedInputHandler), this.pointerEvent && this.bodyElement.on(this.pointerEvent, this.inputHandler)
25985 }, e.prototype.onInputEvent = function(e) {
25986 if (!this.isBuffering) {
25987 var t = this.inputEventMap[e.type];
25988 "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
25990 }, e.prototype.onBufferInputEvent = function(e) {
25991 this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
25992 this.isBuffering = !1
25993 }.bind(this), 650, !1)
25994 }, e.prototype.getLastInteractionType = function() {
25995 return this.lastInteractionType
25996 }, e.prototype.isUserInvoked = function(e) {
25997 var t = ue.isNumber(e) ? e : 15;
25998 return this.lastInteractionTime >= this.$mdUtil.now() - t
26000 }(), ue.module("material.core").provider("$$interimElement", function() {
26001 return t.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = t, e;
26004 e.$inject = ["$$interimElement", "$injector"];
26005 var n = ["onHide", "onShow", "onRemove"],
26011 setDefaults: function(e) {
26012 return c.optionsFactory = e.options, c.methods = (e.methods || []).concat(n), r
26014 addPreset: function(e, t) {
26015 if ((t = t || {}).methods = t.methods || [], t.options = t.options || function() {
26017 }, /^cancel|hide|show$/.test(e)) throw new Error("Preset '" + e + "' in " + i + " is reserved!");
26018 if (-1 < t.methods.indexOf("_options")) throw new Error("Method '_options' in " + i + " is reserved!");
26019 return c.presets[e] = {
26020 methods: t.methods.concat(n),
26021 optionsFactory: t.options,
26022 argOption: t.argOption
26025 addMethod: function(e, t) {
26030 return r.addPreset("build", {
26031 methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
26039 show: function(e) {
26040 return (e = e || {})._options && (e = e._options), n.show(ue.extend({}, t, e))
26042 destroy: function(e) {
26043 return n.destroy(e)
26046 return a = c.methods || [], t = l(c.optionsFactory, {}), ue.forEach(o, function(e, t) {
26048 }), ue.forEach(c.presets, function(t, n) {
26049 var r = l(t.optionsFactory, {}),
26050 e = (t.methods || []).concat(a);
26053 this._options = ue.extend({}, r, e)
26057 }), ue.forEach(e, function(t) {
26058 i.prototype[t] = function(e) {
26059 return this._options[t] = e, this
26062 var o = "show" + n.charAt(0).toUpperCase() + n.slice(1);
26063 s[o] = function(e) {
26068 s[n] = function(e) {
26069 return arguments.length && t.argOption && !ue.isObject(e) && !ue.isArray(e) ? (new i)[t.argOption](e) : new i(e)
26075 return n[i] = s, r.invoke(e || function() {
26082 function t(d, f, t, h, p, r, n, m, g, l, c) {
26083 return function() {
26088 show: function(e) {
26089 var t = new s((e = e || {}) || {}),
26090 n = e.multiple ? f.resolve() : f.all(i);
26091 e.multiple || (n = n.then(function() {
26092 var e = o.concat(a.map(u.cancel));
26095 var r = n.then(function() {
26096 return t.show().then(function() {
26098 }).catch(function(e) {
26100 }).finally(function() {
26101 i.splice(i.indexOf(r), 1)
26104 return i.push(r), t.deferred.promise.catch(function(e) {
26105 return e instanceof Error && c(e), e
26106 }), t.deferred.promise
26108 hide: e(function(n, r) {
26109 return (r = r || {}).closeAll ? f.all(a.slice().reverse().map(e)) : r.closeTo !== de ? f.all(a.slice(r.closeTo).map(e)) : e(a[a.length - 1]);
26112 if (!e) return f.when(n);
26113 var t = e.remove(n, !1, r || {}).catch(function(e) {
26115 }).finally(function() {
26116 o.splice(o.indexOf(t), 1)
26118 return a.splice(a.indexOf(e), 1), o.push(t), e.deferred.promise
26121 cancel: e(function(e, t) {
26123 if (!n) return f.when(e);
26124 var r = n.remove(e, !0, t || {}).catch(function(e) {
26126 }).finally(function() {
26127 o.splice(o.indexOf(r), 1)
26129 return o.push(r), n.deferred.promise.catch(ue.noop)
26131 destroy: function(e) {
26132 var t = e ? null : a.shift(),
26133 n = ue.element(e).length && ue.element(e)[0].parentNode;
26135 var r = a.filter(function(e) {
26136 return e.options.element[0] === n
26138 r.length && (t = r[0], a.splice(a.indexOf(t), 1))
26140 return t ? t.remove(!1, !1, {
26148 return function() {
26150 return a.length ? t.apply(u, e) : i.length ? i[0].finally(function() {
26151 return t.apply(u, e)
26152 }) : f.when("No interim elements currently showing up.")
26157 var o, s, e, l = f.when(!0);
26158 return (e = (e = a) || {}).template && (e.template = n.processTemplate(e.template)), a = ue.extend({
26160 cancelAutoHide: ue.noop,
26161 scope: e.scope || t.$new(e.isolateScope),
26162 onShow: function(e, t, n) {
26163 return r.enter(t, n.parent)
26165 onRemove: function(e, t) {
26166 return t && r.leave(t) || f.when()
26170 deferred: f.defer(),
26172 return f(function(t, n) {
26176 o.deferred.reject(e), n(e)
26178 a.onCompiling && a.onCompiling(a), (r = a, (r.skipCompile ? null : m.compile(r)) || f(function(e) {
26185 })).then(function(e) {
26186 s = function(e, t) {
26187 ue.extend(e.locals, t);
26188 var n, r, i, o, a = e.link(t.scope);
26189 return t.element = a, t.parent = (n = a, o = (r = t).parent, ((o = ue.isFunction(o) ? o(r.scope, n, r) : ue.isString(o) ? ue.element(d[0].querySelector(o)) : ue.element(o)) || {}).length ? o : (p[0] && p[0].querySelector && (i = p[0].querySelector(":not(svg) > body")), i || (i = p[0]), "#comment" == i.nodeName && (i = d[0].body), ue.element(i))), t.themable && g(a), a
26190 }(e, a), a.cleanupElement = e.cleanup, l = function(r, i, e) {
26191 var t = i.onShowing || ue.noop,
26192 o = i.onComplete || ue.noop;
26194 t(i.scope, r, i, e)
26198 return f(function(n, t) {
26200 f.when(i.onShow(i.scope, r, i, e)).then(function() {
26202 o(i.scope, r, i), t = ue.noop, a.hideDelay && (e = h(u.hide, a.hideDelay), t = function() {
26204 }), a.cancelAutoHide = function() {
26205 t(), a.cancelAutoHide = de
26212 }(s, a, e.controller).then(t, i)
26216 remove: function(e, t, n) {
26217 return s ? ((a = ue.extend(a || {}, n || {})).cancelAutoHide && a.cancelAutoHide(), a.element.triggerHandler("$mdInterimElementRemove"), !0 === a.$destroy ? c(a.element, a).then(function() {
26219 }) : (f.when(l).finally(function() {
26220 c(a.element, a).then(function() {
26223 }), o.deferred.promise)) : f.when(!1);
26226 o.deferred.resolve(e)
26230 o.deferred.reject(e)
26236 var o = i.onRemoving || ue.noop;
26237 return f(function(e, t) {
26239 var n = f.when(i.onRemove(i.scope, r, i) || !0);
26240 o(r, n), i.$destroy ? (e(r), !i.preserveScope && i.scope && n.then(function() {
26242 })) : n.then(function() {
26243 !i.preserveScope && i.scope && i.scope.$destroy(), e(r)
26255 var s, c, u, l = /(-gt)?-(sm|md|lg|print)/g,
26257 f = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
26258 h = ["row", "column"],
26259 p = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
26260 m = ["", "start", "center", "end", "stretch"],
26267 var e = !!document.querySelector("[md-layouts-disabled]");
26272 return g.enabled = !1, {
26279 return ["$mdUtil", "$interpolate", "$log", function(e, t, n) {
26280 return s = e, c = t, u = n, {
26282 compile: function(e, t) {
26284 return g.enabled && (w(r, k(r, t, ""), E(0, r, t)), i(0, e), n = i), n || ue.noop
26295 var n = t.split("-");
26296 return ["$log", function(e) {
26297 return e.warn(t + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), ue.noop
26301 function $(e, t, n, r) {
26302 var i, o = n[0].nodeName.toLowerCase();
26303 switch (e.replace(l, "")) {
26305 "md-button" != o && "fieldset" != o || (i = "<" + o + " " + e + "></" + o + ">", r.warn(s.supplant("Markup '{0}' may not work as expected in IE Browsers. Consult '{1}' for details.", [i, "https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers"])))
26309 function w(e, t, n) {
26311 switch (e.replace(l, "")) {
26313 x(t, h) || (t = h[0]);
26316 x(t, f) || isNaN(t) && (t = "");
26318 case "flex-offset":
26320 t && !isNaN(+t) || (t = "0");
26322 case "layout-align":
26326 }, 0 !== (i = (i = t) || "").indexOf("-") && 0 !== i.indexOf(" ") || (i = "none" + i), (o = i.toLowerCase().trim().replace(d, "-").split("-")).length && "space" === o[0] && (o = [o[0] + "-" + o[1], o[2]]), 0 < o.length && (a.main = o[0] || a.main), 1 < o.length && (a.cross = o[1] || a.cross), p.indexOf(a.main) < 0 && (a.main = "start"), m.indexOf(a.cross) < 0 && (a.cross = "stretch"), a);
26327 t = s.supplant("{main}-{cross}", r);
26329 case "layout-padding":
26330 case "layout-margin":
26331 case "layout-fill":
26332 case "layout-wrap":
26333 case "layout-nowrap":
26336 null != t && (n || ue.noop)(t)
26339 return t ? t.trim() : ""
26342 function E(e, t, n) {
26343 return function(e) {
26344 C(e) || (n[n.$normalize(t)] = e)
26349 return -1 < (e || "").indexOf(c.startSymbol())
26352 function k(e, t, n) {
26353 var r = t.$normalize(e);
26354 return t[r] ? t[r].trim().replace(d, "-") : n || null
26357 function x(t, e, n) {
26358 t = n && t ? t.replace(d, n) : t;
26360 return t && e.forEach(function(e) {
26361 e = n ? e.replace(d, n) : e, r = r || e === t
26364 var i, t = /^((?:x|data)[:\-_])/i,
26365 n = /([:\-_]+(.))/g,
26366 e = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
26367 o = ["show", "hide", "layout-padding", "layout-margin"];
26370 return e.replace(t, "").replace(n, function(e, t, n, r) {
26371 return r ? n.toUpperCase() : n
26374 ue.forEach(["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"], function(n) {
26375 ue.forEach(e, function(e) {
26376 var t = n ? e + "-" + n : e;
26377 r.directive(a(t), function(l) {
26378 return ["$mdUtil", "$interpolate", "$log", function(e, t, n) {
26379 return s = e, c = t, u = n, {
26381 compile: function(e, t) {
26383 return g.enabled && ($(l, 0, e, u), w(l, k(l, t, ""), E(0, l, t)), n = r), n || ue.noop
26388 function r(e, t, n) {
26389 var r, i, o, a = (r = t, i = l, function(e) {
26390 var t = w(i, e || "");
26391 ue.isDefined(t) && (o && r.removeClass(o), o = t ? i + "-" + t.trim().replace(d, "-") : i, r.addClass(o))
26393 s = n.$observe(n.$normalize(l), a);
26394 a(k(l, n, "")), e.$on("$destroy", function() {
26399 }), ue.forEach(o, function(e) {
26400 var t = n ? e + "-" + n : e;
26401 r.directive(a(t), y(t))
26403 }), r.provider("$$mdLayout", function() {
26406 validateAttributeValue: w,
26407 validateAttributeUsage: $,
26408 disableLayouts: function(e) {
26409 g.enabled = !0 !== e
26412 }).directive("mdLayoutCss", b).directive("ngCloak", (i = "ng-cloak", ["$timeout", function(n) {
26416 compile: function(e) {
26417 return g.enabled ? (e.addClass(i), function(e, t) {
26424 }])).directive("layoutWrap", y("layout-wrap")).directive("layoutNowrap", y("layout-nowrap")).directive("layoutNoWrap", y("layout-no-wrap")).directive("layoutFill", y("layout-fill")).directive("layoutLtMd", _("layout-lt-md")).directive("layoutLtLg", _("layout-lt-lg")).directive("flexLtMd", _("flex-lt-md")).directive("flexLtLg", _("flex-lt-lg")).directive("layoutAlignLtMd", _("layout-align-lt-md")).directive("layoutAlignLtLg", _("layout-align-lt-lg")).directive("flexOrderLtMd", _("flex-order-lt-md")).directive("flexOrderLtLg", _("flex-order-lt-lg")).directive("offsetLtMd", _("flex-offset-lt-md")).directive("offsetLtLg", _("flex-offset-lt-lg")).directive("hideLtMd", _("hide-lt-md")).directive("hideLtLg", _("hide-lt-lg")).directive("showLtMd", _("show-lt-md")).directive("showLtLg", _("show-lt-lg")).config(v)
26425 }(ue.module("material.core.layout", ["ng"]))
26429 this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
26431 e.$inject = ["$timeout"], ue.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
26432 t || (t = "polite");
26434 n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
26435 n._liveElement.textContent = e
26436 }, n._announceTimeout, !1)
26437 }, e.prototype._createLiveElement = function() {
26438 var e = document.createElement("div");
26439 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
26441 }(), ue.module("material.core.meta", []).provider("$$mdMeta", function() {
26442 var r = ue.element(document.head),
26446 if (i[e]) return !0;
26447 var t = document.getElementsByName(e)[0];
26448 return !!t && (i[e] = ue.element(t), !0)
26451 setMeta: function(e, t) {
26452 if (o(e), i[e]) i[e].attr("content", t);
26454 var n = ue.element('<meta name="' + e + '" content="' + t + '"/>');
26455 r.append(n), i[e] = n
26457 return function() {
26458 i[e].attr("content", ""), i[e].remove(), delete i[e]
26461 getMeta: function(e) {
26462 if (!o(e)) throw Error("$$mdMeta: could not find a meta tag with the name '" + e + "'");
26463 return i[e].attr("content")
26466 return ue.extend({}, e, {
26477 notFoundError: function(e, t) {
26478 n.error((t || "") + "No instance found for handle", e)
26480 getInstances: function() {
26484 if (!s(e)) return null;
26486 for (t = 0, n = o.length; t < n; t++)
26487 if ((r = o[t]).$$mdHandle === e) return r;
26490 register: function(t, e) {
26491 return e ? (t.$$mdHandle = e, o.push(t), (n = a[e]) && (n.forEach(function(e) {
26493 }), delete a[e]), function() {
26494 var e = o.indexOf(t); - 1 !== e && o.splice(e, 1)
26498 when: function(e) {
26502 return n ? t.resolve(n) : (a[e] === de && (a[e] = []), a[e].push(t)), t.promise
26504 return r.reject("Invalid `md-component-id` value.")
26509 return e && "" !== e
26512 e.$inject = ["$log", "$q"], ue.module("material.core").factory("$mdComponentRegistry", e)
26517 attach: function(e, t, n) {
26519 return n = ue.extend((r = t).hasClass("md-icon-button") ? {
26520 isMenuItem: r.hasClass("md-menu-item"),
26524 isMenuItem: r.hasClass("md-menu-item"),
26526 }, n), i.attach(e, t, n)
26530 e.$inject = ["$mdInkRipple"], ue.module("material.core").factory("$mdButtonInkRipple", e)
26535 attach: function(e, t, n) {
26536 return r.attach(e, t, ue.extend({
26544 e.$inject = ["$mdInkRipple"], ue.module("material.core").factory("$mdCheckboxInkRipple", e)
26549 attach: function(e, t, n) {
26550 return r.attach(e, t, ue.extend({
26559 e.$inject = ["$mdInkRipple"], ue.module("material.core").factory("$mdListInkRipple", e)
26562 o.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], ue.module("material.core").provider("$mdInkRipple", function() {
26565 disableInkRipple: function() {
26568 $get: ["$injector", function(r) {
26570 attach: function(e, t, n) {
26571 return i || t.controller("mdNoInk") ? ue.noop : r.instantiate(o, {
26580 }).directive("mdInkRipple", e).directive("mdNoInk", n).directive("mdNoBar", n).directive("mdNoStretch", n);
26584 controller: ue.noop,
26585 link: function(e, t, n) {
26586 n.hasOwnProperty("mdInkRippleCheckbox") ? i.attach(e, t) : r.attach(e, t)
26591 function o(e, t, n, r, i, o, a) {
26592 this.$window = r, this.$timeout = i, this.$mdUtil = o, this.$mdColorUtil = a, this.$scope = e, this.$element = t, this.options = n, this.mousedown = !1, this.ripples = [], this.timeout = null, this.lastRipple = null, o.valueOnUse(this, "container", this.createContainer), this.$element.addClass("md-ink-ripple"), (t.controller("mdInkRipple") || {}).createRipple = ue.bind(this, this.createRipple), (t.controller("mdInkRipple") || {}).setColor = ue.bind(this, this.color), this.bindEvents()
26596 (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(ue.bind(e, t), !1))
26601 controller: ue.noop
26604 o.prototype.color = function(e) {
26605 var t, n, r = this;
26606 return ue.isDefined(e) && (r._color = r._parseColor(e)), r._color || r._parseColor(r.inkRipple()) || r._parseColor((t = r.options && r.options.colorElement ? r.options.colorElement : [], (n = t.length ? t[0] : r.$element[0]) ? r.$window.getComputedStyle(n).color : "rgb(0,0,0)"))
26607 }, o.prototype.calculateColor = function() {
26608 return this.color()
26609 }, o.prototype._parseColor = function(e, t) {
26611 var n = this.$mdColorUtil;
26612 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
26613 }, o.prototype.bindEvents = function() {
26614 this.$element.on("mousedown", ue.bind(this, this.handleMousedown)), this.$element.on("mouseup touchend", ue.bind(this, this.handleMouseup)), this.$element.on("mouseleave", ue.bind(this, this.handleMouseup)), this.$element.on("touchmove", ue.bind(this, this.handleTouchmove))
26615 }, o.prototype.handleMousedown = function(e) {
26616 if (!this.mousedown)
26617 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);
26618 else if (e.srcElement !== this.$element[0]) {
26619 var t = this.$element[0].getBoundingClientRect(),
26620 n = e.clientX - t.left,
26621 r = e.clientY - t.top;
26622 this.createRipple(n, r)
26623 } else this.createRipple(e.offsetX, e.offsetY)
26624 }, o.prototype.handleMouseup = function() {
26625 this.$timeout(function() {
26626 t(this, this.clearRipples)
26628 }, o.prototype.handleTouchmove = function() {
26629 t(this, this.deleteRipples)
26630 }, o.prototype.deleteRipples = function() {
26631 for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
26632 }, o.prototype.clearRipples = function() {
26633 for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
26634 }, o.prototype.createContainer = function() {
26635 var e = ue.element('<div class="md-ripple-container"></div>');
26636 return this.$element.append(e), e
26637 }, o.prototype.clearTimeout = function() {
26638 this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
26639 }, o.prototype.isRippleAllowed = function() {
26640 var e = this.$element[0];
26642 if (!e.tagName || "BODY" === e.tagName) break;
26643 if (e && ue.isFunction(e.hasAttribute)) {
26644 if (e.hasAttribute("disabled")) return !1;
26645 if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
26647 } while (e = e.parentNode);
26649 }, o.prototype.inkRipple = function() {
26650 return this.$element.attr("md-ink-ripple")
26651 }, o.prototype.createRipple = function(e, t) {
26652 if (this.isRippleAllowed()) {
26653 var n, r, i, o = this,
26654 a = o.$mdColorUtil,
26655 s = ue.element('<div class="md-ripple"></div>'),
26656 l = this.$element.prop("clientWidth"),
26657 c = this.$element.prop("clientHeight"),
26658 u = 2 * Math.max(Math.abs(l - e), e),
26659 d = 2 * Math.max(Math.abs(c - t), t),
26660 f = (n = this.options.fitRipple, r = u, i = d, n ? Math.max(r, i) : Math.sqrt(Math.pow(r, 2) + Math.pow(i, 2))),
26661 h = this.calculateColor();
26665 background: "black",
26668 backgroundColor: a.rgbaToRgb(h),
26669 borderColor: a.rgbaToRgb(h)
26670 }), this.lastRipple = s, this.clearTimeout(), this.timeout = this.$timeout(function() {
26671 o.clearTimeout(), o.mousedown || o.fadeInComplete(s)
26672 }, 157.5, !1), this.options.dimBackground && this.container.css({
26674 }), this.container.append(s), this.ripples.push(s), s.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
26675 s.addClass("md-ripple-scaled md-ripple-active"), o.$timeout(function() {
26680 }, o.prototype.fadeInComplete = function(e) {
26681 this.lastRipple === e && (this.timeout || this.mousedown) || this.removeRipple(e)
26682 }, o.prototype.removeRipple = function(e) {
26684 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({
26685 backgroundColor: ""
26686 }), this.$timeout(function() {
26687 t.fadeOutComplete(e)
26689 }, o.prototype.fadeOutComplete = function(e) {
26690 e.remove(), this.lastRipple = null
26696 attach: function(e, t, n) {
26697 return r.attach(e, t, ue.extend({
26706 e.$inject = ["$mdInkRipple"], ue.module("material.core").factory("$mdTabInkRipple", e)
26707 }(), ue.module("material.core.theming.palette", []).constant("$mdColorPalette", {
26723 contrastDefaultColor: "light",
26724 contrastDarkColors: "50 100 200 300 A100",
26725 contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
26742 contrastDefaultColor: "light",
26743 contrastDarkColors: "50 100 200 A100",
26744 contrastStrongLightColors: "500 600 A200 A400 A700"
26761 contrastDefaultColor: "light",
26762 contrastDarkColors: "50 100 200 A100",
26763 contrastStrongLightColors: "300 400 A200 A400 A700"
26780 contrastDefaultColor: "light",
26781 contrastDarkColors: "50 100 200 A100",
26782 contrastStrongLightColors: "300 400 A200"
26799 contrastDefaultColor: "light",
26800 contrastDarkColors: "50 100 200 A100",
26801 contrastStrongLightColors: "300 400 A200 A400"
26818 contrastDefaultColor: "light",
26819 contrastDarkColors: "50 100 200 300 400 A100",
26820 contrastStrongLightColors: "500 600 700 A200 A400 A700"
26837 contrastDefaultColor: "dark",
26838 contrastLightColors: "600 700 800 900 A700",
26839 contrastStrongLightColors: "600 700 800 A700"
26856 contrastDefaultColor: "dark",
26857 contrastLightColors: "700 800 900",
26858 contrastStrongLightColors: "700 800 900"
26875 contrastDefaultColor: "dark",
26876 contrastLightColors: "500 600 700 800 900",
26877 contrastStrongLightColors: "500 600 700"
26894 contrastDefaultColor: "dark",
26895 contrastLightColors: "500 600 700 800 900",
26896 contrastStrongLightColors: "500 600 700"
26913 contrastDefaultColor: "dark",
26914 contrastLightColors: "700 800 900",
26915 contrastStrongLightColors: "700 800 900"
26932 contrastDefaultColor: "dark",
26933 contrastLightColors: "900",
26934 contrastStrongLightColors: "900"
26951 contrastDefaultColor: "dark"
26968 contrastDefaultColor: "dark"
26985 contrastDefaultColor: "dark",
26986 contrastLightColors: "800 900",
26987 contrastStrongLightColors: "800 900"
27004 contrastDefaultColor: "light",
27005 contrastDarkColors: "50 100 200 300 400 A100 A200",
27006 contrastStrongLightColors: "500 600 700 800 900 A400 A700"
27023 contrastDefaultColor: "light",
27024 contrastDarkColors: "50 100 200 A100 A200",
27025 contrastStrongLightColors: "300 400"
27042 contrastDefaultColor: "dark",
27043 contrastLightColors: "600 700 800 900 A200 A400 A700"
27060 contrastDefaultColor: "light",
27061 contrastDarkColors: "50 100 200 300 A100 A200",
27062 contrastStrongLightColors: "400 500 700"
27067 var t = !!document.querySelector("[md-themes-disabled]");
27068 e.disableTheming(t)
27070 e.$inject = ["$mdThemingProvider"], n.$inject = ["$mdTheming", "$interpolate", "$parse", "$mdUtil", "$q", "$log"], r.$inject = ["$mdTheming"], t.$inject = ["$mdColorPalette", "$$mdMetaProvider"], i.$inject = ["$injector", "$mdTheming"], y.module("material.core.theming", ["material.core.theming.palette", "material.core.meta"]).directive("mdTheme", n).directive("mdThemable", r).directive("mdThemesDisabled", function() {
27071 return $.disableTheming = !0, {
27075 }).provider("$mdTheming", t).config(e).run(i);
27079 1: "rgba(0,0,0,0.87)",
27080 2: "rgba(0,0,0,0.54)",
27081 3: "rgba(0,0,0,0.38)",
27082 4: "rgba(0,0,0,0.12)"
27086 1: "rgba(255,255,255,1.0)",
27087 2: "rgba(255,255,255,0.7)",
27088 3: "rgba(255,255,255,0.5)",
27089 4: "rgba(255,255,255,0.12)"
27091 u = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
27093 d = k("rgba(0,0,0,0.87)"),
27094 f = k("rgba(255,255,255,0.87)"),
27095 h = k("rgb(255,255,255)"),
27096 g = ["primary", "accent", "warn", "background"],
27120 g.forEach(function(e) {
27127 v[e] || (v[e] = t), b[e] || (b[e] = t)
27129 var _ = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
27131 disableTheming: !1,
27132 generateOnDemand: !1,
27133 registeredStyles: [],
27138 a.$inject = ["$rootScope", "$mdUtil", "$q", "$log"];
27143 var t = function(e) {
27144 var t, n, r, i = (e = y.isObject(e) ? e : {}).theme || "default",
27145 o = e.hue || "800",
27146 a = p[e.palette] || p[d[i].colors[e.palette || "primary"].name],
27147 s = y.isObject(a[o]) ? a[o].hex : a[o];
27148 return "#" !== s.substr(0, 1) && (s = "#" + s), t = s, n = l.setMeta("theme-color", t), r = l.setMeta("msapplication-navbutton-color", t),
27154 definePalette: function(e, t) {
27155 return t = t || {}, p[e] = r(e, t), n
27157 extendPalette: function(e, t) {
27158 return r(e, y.extend({}, p[e] || {}, t))
27161 configuration: function() {
27162 return y.extend({}, $, {
27164 alwaysWatchTheme: f,
27165 registeredStyles: [].concat($.registeredStyles)
27168 disableTheming: function(e) {
27169 $.disableTheming = y.isUndefined(e) || !!e
27171 registerStyles: function(e) {
27172 $.registeredStyles.push(e)
27174 setNonce: function(e) {
27177 generateThemesOnDemand: function(e) {
27178 $.generateOnDemand = e
27180 setDefaultTheme: function(e) {
27183 alwaysWatchTheme: function(e) {
27186 enableBrowserColor: t,
27188 _LIGHT_DEFAULT_HUES: v,
27189 _DARK_DEFAULT_HUES: b,
27197 var n = _.filter(function(e) {
27200 if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
27205 if (d[e]) return d[e];
27206 var n = "string" == typeof(t = t || "default") ? d[t] : t,
27208 return n && y.forEach(n.colors, function(e, t) {
27211 hues: y.extend({}, e.hues)
27220 if ((e = 0 === arguments.length || !!e) !== a.isDark) {
27221 a.isDark = e, a.foregroundPalette = a.isDark ? c : s, a.foregroundShadow = a.isDark ? u : m;
27222 var t = a.isDark ? b : v,
27223 o = a.isDark ? v : b;
27224 return y.forEach(t, function(e, t) {
27225 var n = a.colors[t],
27228 for (var i in n.hues) n.hues[i] === r[i] && (n.hues[i] = e[i])
27232 a.name = e, a.colors = {}, (a.dark = t)(!1), g.forEach(function(r) {
27233 var i = (a.isDark ? b : v)[r];
27234 a[r + "Palette"] = function(t, e) {
27235 var n = a.colors[r] = {
27237 hues: y.extend({}, i, e)
27239 return Object.keys(n.hues).forEach(function(e) {
27240 if (!i[e]) throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1", e).replace("%2", a.name).replace("%3", t).replace("%4", Object.keys(i).join(", ")))
27241 }), Object.keys(n.hues).map(function(e) {
27243 }).forEach(function(e) {
27244 if (-1 == _.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", a.name).replace("%3", r).replace("%4", t).replace("%5", _.join(", ")))
27246 }, a[r + "Color"] = function() {
27247 var e = Array.prototype.slice.call(arguments);
27248 return console.warn("$mdThemingProviderTheme." + r + "Color() has been deprecated. Use $mdThemingProviderTheme." + r + "Palette() instead."), a[r + "Palette"].apply(a, e)
27253 function a(n, l, r, c) {
27254 var i = function(e, t) {
27255 t === de && (t = e, e = de), e === de && (e = n), i.inherit(t, t)
27257 return Object.defineProperty(i, "THEMES", {
27259 return y.extend({}, d)
27261 }), Object.defineProperty(i, "PALETTES", {
27263 return y.extend({}, p)
27265 }), Object.defineProperty(i, "ALWAYS_WATCH", {
27269 }), i.inherit = function(n, e) {
27270 var r = e.controller("mdTheme") || n.data("$mdThemeController"),
27272 if (s(r && r.$mdTheme || ("default" === h ? "" : h)), r) {
27273 var i = f || r.$shouldWatch || l.parseAttributeBoolean(n.attr("md-theme-watch"));
27274 if (i || r.isAsyncTheme) {
27275 var o = function() {
27278 a = r.registerChanges(function(e) {
27281 t ? t.$on("$destroy", o) : n.on("$destroy", o)
27287 u(e) || c.warn("Attempted to use unregistered theme '" + e + "'. Register it with $mdThemingProvider.theme().");
27288 var t = n.data("$mdThemeName");
27289 t && n.removeClass("md-" + t + "-theme"), n.addClass("md-" + e + "-theme"), n.data("$mdThemeName", e), r && n.data("$mdThemeController", r)
27292 }, i.registered = u, i.defaultTheme = function() {
27294 }, i.generateTheme = function(e) {
27295 C(d[e], e, $.nonce)
27296 }, i.defineTheme = function(e, t) {
27299 return t.primary && n.primaryPalette(t.primary, t.primaryHues), t.accent && n.accentPalette(t.accent, t.accentHues), t.warn && n.warnPalette(t.warn, t.warnHues), t.background && n.backgroundPalette(t.background, t.backgroundHues), t.dark && n.dark(), this.generateTheme(e), r.resolve(e)
27300 }, i.setBrowserColor = t, i;
27303 return e === de || "" === e || i.THEMES[e] !== de
27308 function n(h, p, m, g, v, b) {
27312 pre: function(t, e, n) {
27314 i = p.startSymbol(),
27316 a = n.mdTheme.trim(),
27317 s = a.substr(0, i.length) === i && a.lastIndexOf(o) === a.length - o.length,
27318 l = "::" === n.mdTheme.split(i).join("").split(o).join("").trim().substr(0, "::".length),
27320 var e = p(n.mdTheme)(t);
27321 return m(e)(t) || e
27324 isAsyncTheme: y.isFunction(c()) || y.isFunction(c().then),
27325 registerChanges: function(t, e) {
27326 return e && (t = y.bind(e, t)), r.push(t),
27328 var e = r.indexOf(t); - 1 < e && r.splice(e, 1)
27331 $setTheme: function(e) {
27332 h.registered(e) || b.warn("attempted to use unregistered theme '" + e + "'"), u.$mdTheme = e;
27333 for (var t = r.length; t--;) r[t](e)
27335 $shouldWatch: g.parseAttributeBoolean(e.attr("md-theme-watch")) || h.ALWAYS_WATCH || s && !l
27337 e.data("$mdThemeController", u);
27338 var d = function(e) {
27339 if ("string" == typeof e) return u.$setTheme(e);
27340 v.when(y.isFunction(e) ? e() : e).then(function(e) {
27345 var f = t.$watch(c, function(e) {
27346 e && (d(e), u.$shouldWatch || f())
27357 function w(s, e, t) {
27359 if (!p[(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(p).join(", ")))
27360 }(s, e), t = t.replace(/THEME_NAME/g, s.name);
27361 var n = new RegExp("\\.md-" + s.name + "-theme", "g");
27362 t = t.replace(/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g, function(e, t, n, r, i) {
27363 return "foreground" === t ? "shadow" == n ? s.foregroundShadow : s.foregroundPalette[n] || s.foregroundPalette[1] : (0 !== n.indexOf("hue") && "default" !== n || (n = s.colors[t].hues[n]), x((p[s.colors[t].name][n] || "")[i ? "contrast" : "value"], r))
27365 var r = new RegExp("('|\")?{{\\s*([a-zA-Z]+)-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
27367 return y.forEach(["default", "hue-1", "hue-2", "hue-3"], function(a) {
27368 var e = t.replace(r, function(e, t, n, r, i) {
27369 var o = s.colors[n];
27370 return x(p[o.name][o.hues[a]]["color" === r ? "value" : "contrast"], i)
27372 "default" !== a && (e = e.replace(n, ".md-" + s.name + "-theme.md-" + a)), "default" == s.name && (e = e.replace(/((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g, function(e, t, n) {
27373 return e + ", " + t + n
27380 var n = document.head,
27381 r = n ? n.firstElementChild : null,
27382 i = !$.disableTheming && e.has("$MD_THEME_CSS") ? e.get("$MD_THEME_CSS") : "";
27383 if (i += $.registeredStyles.join(""), r && 0 !== i.length) {
27384 y.forEach(p, function(r, e) {
27385 var i = r.contrastDefaultColor,
27386 o = r.contrastLightColors || [],
27387 a = r.contrastStrongLightColors || [],
27388 s = r.contrastDarkColors || [];
27389 "string" == typeof o && (o = o.split(" ")), "string" == typeof a && (a = a.split(" ")), "string" == typeof s && (s = s.split(" ")), delete r.contrastDefaultColor, delete r.contrastLightColors, delete r.contrastStrongLightColors, delete r.contrastDarkColors, y.forEach(r, function(e, t) {
27390 if (!y.isObject(e)) {
27392 if (!n) throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1", e).replace("%2", r.name).replace("%3", t));
27396 contrast: "light" === i ? -1 < s.indexOf(t) ? d : -1 < a.indexOf(t) ? h : f : -1 < o.indexOf(t) ? -1 < a.indexOf(t) ? h : f : d
27401 var o = i.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
27402 return e && e.trim().length
27403 }).map(function(e) {
27404 return e.trim() + "}"
27406 g.forEach(function(e) {
27408 }), o.forEach(function(e) {
27409 for (var t, n = 0; t = g[n]; n++)
27410 if (-1 < e.indexOf(".md-" + t)) return E[t] += e;
27411 for (n = 0; t = g[n]; n++)
27412 if (-1 < e.indexOf(t)) return E[t] += e;
27414 }), $.generateOnDemand || y.forEach(t.THEMES, function(e) {
27415 l[e.name] || "default" !== t.defaultTheme() && "default" === e.name || C(e, e.name, $.nonce)
27420 function C(i, e, o) {
27421 var a = document.head,
27422 s = a ? a.firstElementChild : null;
27423 l[e] || (g.forEach(function(e) {
27424 for (var t = w(i, e, E[e]); t.length;) {
27427 var r = document.createElement("style");
27428 r.setAttribute("md-theme-style", ""), o && r.setAttribute("nonce", o), r.appendChild(document.createTextNode(n)), a.insertBefore(r, s)
27431 }), l[i.name] = !0)
27435 if (y.isArray(e) && 3 == e.length) return e;
27436 if (/^rgb/.test(e)) return e.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
27437 return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
27439 if ("#" == e.charAt(0) && (e = e.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(e)) {
27440 var t = e.length / 3,
27441 n = e.substr(0, t),
27442 r = e.substr(t, t),
27443 i = e.substr(2 * t);
27444 return 1 === t && (n += n, r += r, i += i), [parseInt(n, 16), parseInt(r, 16), parseInt(i, 16)]
27449 return e ? (4 == e.length && (e = y.copy(e), t ? e.pop() : t = e.pop()), t && ("number" == typeof t || "string" == typeof t && t.length) ? "rgba(" + e.join(",") + "," + t + ")" : "rgb(" + e.join(",") + ")") : "rgb('0,0,0')"
27451 }(F.angular), ue.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
27453 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], ue.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
27461 function e(h, p, m, t, n, e, r, i, g, s, o, a) {
27462 var l, c, u, d = this,
27463 f = h.itemsExpr.split(/ in /i),
27473 x = m.debounce(function() {
27477 l = "hidden", c = function(e, t) {
27478 !e && t ? (D(), X(!0, A.Count | A.Selected), b && (m.disableScrollAround(b.ul), C = function(e) {
27482 return e.on("wheel", t), e.on("touchmove", t),
27484 e.off("wheel", t), e.off("touchmove", t)
27486 }(ue.element(b.wrap)))) : e && !t && (m.enableScrolling(), C && (C(), C = null))
27487 }, u = !0, Object.defineProperty(d, l, {
27495 }), d.scope = h, d.parent = h.$parent, d.itemName = f[0], d.matches = [], d.loading = !1, d.hidden = !0, d.index = null, d.id = m.nextUid(), d.isDisabled = null, d.isRequired = null, d.isReadonly = null, d.hasNotFound = !1, d.selectedMessage = h.selectedMessage || "selected", d.keydown = function(e) {
27496 switch (e.keyCode) {
27497 case t.KEY_CODE.DOWN_ARROW:
27498 if (d.loading || z()) return;
27499 e.stopPropagation(), e.preventDefault(), d.index = Math.min(d.index + 1, d.matches.length - 1), Q(), X(!1, A.Selected);
27501 case t.KEY_CODE.UP_ARROW:
27502 if (d.loading || z()) return;
27503 e.stopPropagation(), e.preventDefault(), d.index = d.index < 0 ? d.matches.length - 1 : Math.max(0, d.index - 1), Q(), X(!1, A.Selected);
27505 case t.KEY_CODE.TAB:
27506 if (I(), d.hidden || d.loading || d.index < 0 || d.matches.length < 1) return;
27509 case t.KEY_CODE.ENTER:
27510 if (d.hidden || d.loading || d.index < 0 || d.matches.length < 1) return;
27512 e.stopImmediatePropagation(), e.preventDefault(), G(d.index);
27514 case t.KEY_CODE.ESCAPE:
27515 if (e.preventDefault(), !(V("blur") || !d.hidden || d.loading || V("clear") && h.searchText)) return;
27516 e.stopPropagation(), K(), h.searchText && V("clear") && Z(), d.hidden = !0, V("blur") && function(e) {
27521 }, d.blur = function(e) {
27522 w = !1, _ || (d.hidden = q(), re("ngBlur", {
27525 }, d.focus = function(e) {
27526 w = !0, U() && Y() && te();
27527 d.hidden = q(), re("ngFocus", {
27530 }, d.clear = function() {
27532 }, d.select = G, d.listEnter = function() {
27534 }, d.listLeave = I, d.mouseUp = function() {
27536 }, d.getCurrentDisplayValue = W, d.registerSelectedItemWatcher = function(e) {
27537 -1 === $.indexOf(e) && $.push(e)
27538 }, d.unregisterSelectedItemWatcher = function(e) {
27539 var t = $.indexOf(e); - 1 !== t && $.splice(t, 1)
27540 }, d.notFoundVisible = ee, d.loadingIsVisible = function() {
27541 return d.loading && !z()
27542 }, d.positionDropdown = D;
27547 return m.initOptionalProperties(h, g, {
27549 selectedItem: null,
27551 disableVirtualRepeat: !1
27552 }), n(p), M = parseInt(h.delay, 10) || 0, g.$observe("disabled", function(e) {
27553 d.isDisabled = m.parseAttributeBoolean(e, !1)
27554 }), g.$observe("required", function(e) {
27555 d.isRequired = m.parseAttributeBoolean(e, !1)
27556 }), g.$observe("readonly", function(e) {
27557 d.isReadonly = m.parseAttributeBoolean(e, !1)
27558 }), h.$watch("searchText", M ? m.debounce(P, M) : P), h.$watch("selectedItem", R), ue.element(e).on("resize", x), h.$on("$destroy", N), void m.nextTick(function() {
27562 for (e = p; e.length && (t = e.attr("md-autocomplete-snap"), !ue.isDefined(t)); e = e.parent());
27563 if (e.length) return {
27565 wrap: "width" === t.toLowerCase() ? e[0] : p.find("md-autocomplete-wrap")[0]
27567 var n = p.find("md-autocomplete-wrap")[0];
27574 scrollContainer: p[0].querySelector(".md-virtual-repeat-container, .md-standard-list-container"),
27575 scroller: p[0].querySelector(".md-virtual-repeat-scroller, .md-standard-list-scroller"),
27576 ul: p.find("ul")[0],
27577 input: p.find("input")[0],
27580 root: document.body
27581 }).li = b.ul.getElementsByTagName("li"), b.$ = function(e) {
27583 for (var n in e) e.hasOwnProperty(n) && (t[n] = ue.element(e[n]));
27585 }(b), T = b.scrollContainer.classList.contains("md-standard-list-container") ? le : ce, k = b.$.input.controller("ngModel"), b.$.root.length && (n(b.$.scrollContainer), b.$.scrollContainer.detach(), b.$.root.append(b.$.scrollContainer), r.pin && r.pin(b.$.scrollContainer, i)), h.autofocus && p.on("focus", O), h.inputAriaDescribedBy && b.input.setAttribute("aria-describedby", h.inputAriaDescribedBy), h.floatingLabel || (h.inputAriaLabel ? b.input.setAttribute("aria-label", h.inputAriaLabel) : h.inputAriaLabelledBy ? b.input.setAttribute("aria-labelledby", h.inputAriaLabelledBy) : h.placeholder && b.input.setAttribute("aria-label", h.placeholder))
27589 h.requireMatch && k && k.$setValidity("md-require-match", !!h.selectedItem || !h.searchText)
27593 if (!b) return m.nextTick(D, !1, h);
27594 var e, t = (h.dropdownItems || oe) * ie,
27595 n = b.wrap.getBoundingClientRect(),
27596 r = b.snap.getBoundingClientRect(),
27597 i = b.root.getBoundingClientRect(),
27598 o = r.bottom - i.top,
27599 a = i.bottom - r.top,
27600 s = n.left - i.left,
27604 t = p.find("md-input-container");
27606 var n = t.find("input");
27607 e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
27611 u = h.dropdownPosition,
27612 d = i.bottom - r.bottom - ae + m.getViewportTop(),
27614 u || (u = t < d ? "bottom" : t < f ? "top" : d < f ? "top" : "bottom"), g.mdFloatingLabel && (s += se, l -= 2 * se), e = {
27616 minWidth: l + "px",
27617 maxWidth: Math.max(n.right - i.left, i.right - n.left) - ae + "px"
27618 }, "top" === u ? (e.top = "auto", e.bottom = a + "px", e.maxHeight = Math.min(t, f) + "px") : (d = i.bottom - n.bottom - ae + m.getViewportTop(), e.top = o - c + "px", e.bottom = "auto", e.maxHeight = Math.min(t, d) + "px"), b.$.scrollContainer.css(e), m.nextTick(function() {
27619 var e = b.scrollContainer.getBoundingClientRect(),
27621 e.right > i.right && (t.left = n.right - e.width + "px");
27622 b.$.scrollContainer.css(t)
27631 if (d.hidden || m.enableScrolling(), ue.element(e).off("resize", x), b) {
27632 ue.forEach(["ul", "scroller", "scrollContainer", "input"], function(e) {
27639 w || d.hidden || b.input.focus(), _ = !1, d.hidden = q()
27643 S(), r ? j(r).then(function(e) {
27645 h.searchText = e, t = r, n = i, $.forEach(function(e) {
27648 }) : i && h.searchText && j(i).then(function(e) {
27649 ue.isString(h.searchText) && e.toString().toLowerCase() === h.searchText.toLowerCase() && (h.searchText = "")
27650 }), r !== i && ue.isFunction(h.itemChange) && h.itemChange(L(h.selectedItem))
27654 d.index = h.autoselect ? 0 : -1, t !== n && (S(), j(h.selectedItem).then(function(e) {
27655 t !== e && (h.selectedItem = null, t !== n && ue.isFunction(h.textChange) && h.textChange(), Y() ? te() : (F(!(d.matches = [])), X(!0, A.Count)))
27660 return ue.isNumber(h.minLength) ? h.minLength : 1
27664 return s.when((t = e, (t && h.itemText ? h.itemText(L(t)) : null) || e)).then(function(e) {
27665 return e && !ue.isString(e) && o.warn("md-autocomplete: Could not resolve display value to a string. Please check the `md-item-text` attribute."), e
27673 return d.itemName && (t[d.itemName] = e), t
27677 d.loading !== e && (d.loading = e), d.hidden = q()
27681 return ! function() {
27683 if (d.isReadonly) return !1;
27684 if (!U()) return !1
27686 return Y() && B() || ee()
27691 return !(d.loading && !B()) && (!z() && !!w)
27695 return !h.escapeOptions || -1 !== h.escapeOptions.toLowerCase().indexOf(e)
27699 return !!d.matches.length
27703 return !!d.scope.selectedItem
27707 return j(d.matches[d.index])
27711 return (h.searchText || "").length >= H()
27715 m.nextTick(function() {
27716 j(d.matches[e]).then(function(e) {
27717 var t = b.$.input.controller("ngModel");
27718 a.announce(e + " " + d.selectedMessage, "assertive"), t.$setViewValue(e), t.$render()
27719 }).finally(function() {
27720 h.selectedItem = d.matches[e], F(!1)
27726 d.index = 0, d.matches = []
27730 F(!0), h.searchText = "";
27731 var e = document.createEvent("CustomEvent");
27732 e.initCustomEvent("change", !0, !0, {
27734 }), b.input.dispatchEvent(e), b.input.blur(), h.searchText = "", b.input.focus()
27738 var n = e ? "polite" : "assertive",
27740 t & A.Selected && -1 !== d.index && r.push(W()), t & A.Count && r.push(s.resolve(function() {
27741 switch (d.matches.length) {
27743 return "There are no matches available.";
27745 return "There is 1 match available.";
27747 return "There are " + d.matches.length + " matches available."
27749 }())), s.all(r).then(function(e) {
27750 a.announce(e.join(" "), n)
27755 var e, t, n, r, i, o, a, s, l, c;
27756 b.li[0] && (T === le ? (o = b.li[d.index] || b.li[0], a = b.scrollContainer.offsetHeight, s = o && o.offsetTop || 0, l = s + o.clientHeight, c = b.scrollContainer.scrollTop, s < c ? J(s) : c + a < l && J(l - a)) : (e = b.li[0].offsetHeight, t = e * d.index, n = t + e, r = b.scroller.clientHeight, i = b.scroller.scrollTop, t < i ? J(t) : i + r < n && J(n - r)))
27760 T === le ? b.scrollContainer.scrollTop = e : b.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
27764 var e = (d.scope.searchText || "").length;
27765 return d.hasNotFound && !B() && (!d.loading || 0 !== E) && e >= H() && (w || _) && !z()
27769 var e = h.searchText || "",
27770 t = e.toLowerCase();
27771 !h.noCache && y[t] ? ne(y[t]) : function(t) {
27772 var e = h.$parent.$eval(v),
27773 n = t.toLowerCase(),
27778 y[n] = e, (t || "") === (h.searchText || "") && ne(e)
27780 r ? o(e) : i && (a = e, a && (a = s.when(a), E++, F(!0), m.nextTick(function() {
27781 a.then(o).finally(function() {
27786 }(e), d.hidden = q()
27791 d.matches = e, d.hidden = q(), d.loading && F(!1), h.selectOnMatch && (n = h.searchText, t = d.matches, r = t[0], 1 === t.length && j(r).then(function(e) {
27793 h.matchInsensitive && !t && (t = n.toLowerCase() === e.toLowerCase()), t && G(0)
27794 })), D(), X(!0, A.Count)
27797 function re(e, t) {
27798 g[e] && h.$parent.$eval(g[e], t || {})
27805 t = ["standard", u];
27808 return e ? (e = e.toLowerCase(), -1 < t.indexOf(e) ? e : u) : u
27811 controller: "MdAutocompleteCtrl",
27812 controllerAs: "$mdAutocompleteCtrl",
27814 inputName: "@mdInputName",
27815 inputMinlength: "@mdInputMinlength",
27816 inputMaxlength: "@mdInputMaxlength",
27817 searchText: "=?mdSearchText",
27818 selectedItem: "=?mdSelectedItem",
27819 itemsExpr: "@mdItems",
27820 itemText: "&mdItemText",
27821 placeholder: "@placeholder",
27822 inputAriaDescribedBy: "@?inputAriaDescribedby",
27823 inputAriaLabelledBy: "@?inputAriaLabelledby",
27824 inputAriaLabel: "@?inputAriaLabel",
27825 noCache: "=?mdNoCache",
27826 requireMatch: "=?mdRequireMatch",
27827 selectOnMatch: "=?mdSelectOnMatch",
27828 matchInsensitive: "=?mdMatchCaseInsensitive",
27829 itemChange: "&?mdSelectedItemChange",
27830 textChange: "&?mdSearchTextChange",
27831 minLength: "=?mdMinLength",
27832 delay: "=?mdDelay",
27833 autofocus: "=?mdAutofocus",
27834 floatingLabel: "@?mdFloatingLabel",
27835 autoselect: "=?mdAutoselect",
27836 menuClass: "@?mdMenuClass",
27837 menuContainerClass: "@?mdMenuContainerClass",
27838 inputClass: "@?mdInputClass",
27839 inputId: "@?mdInputId",
27840 escapeOptions: "@?mdEscapeOptions",
27841 dropdownItems: "=?mdDropdownItems",
27842 dropdownPosition: "@?mdDropdownPosition",
27843 clearButton: "=?mdClearButton",
27844 selectedMessage: "@?mdSelectedMessage",
27847 compile: function(e, n) {
27848 var r = e.find("input");
27849 return ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"].forEach(function(e) {
27850 var t = n[n.$normalize(e)];
27851 null !== t && r.attr(e, t)
27853 function(e, t, n, r) {
27854 r.hasNotFound = !!t.attr("md-has-not-found"), ue.isDefined(n.mdClearButton) || e.floatingLabel || (e.clearButton = !0), e.mdMode = d(n.mdMode)
27857 template: function(n, e) {
27858 var t, r, i = (t = n.find("md-not-found").detach(), (r = t.length ? t.html() : "") ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" md-autocomplete-parent-scope>' + r + "</li>" : ""),
27860 var e = n.find("md-item-template").detach(),
27861 t = e.length ? e.html() : n.html();
27862 e.length || n.empty();
27863 return "<md-autocomplete-parent-scope md-autocomplete-replace>" + t + "</md-autocomplete-parent-scope>"
27867 return i && n.attr("md-has-not-found", !0), n.attr("tabindex", "-1"), " <md-autocomplete-wrap ng-class=\"{ 'md-whiteframe-z1': !floatingLabel, 'md-menu-showing': !$mdAutocompleteCtrl.hidden, 'md-show-clear-button': !!clearButton }\"> " + (e.mdFloatingLabel ? ' <md-input-container ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="search" ' + (null != s ? 'tabindex="' + s + '"' : "") + ' id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" ng-class="::inputClass" 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-label="{{floatingLabel}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" ng-attr-aria-activedescendant="{{$mdAutocompleteCtrl.index >= 0 ? \'selected_option\' : undefined}}"> <div md-autocomplete-parent-scope md-autocomplete-replace>' + a + "</div> </md-input-container>" : ' <input type="search" ' + (null != s ? 'tabindex="' + s + '"' : "") + ' id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" ng-class="::inputClass" 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-label="{{placeholder}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" ng-attr-aria-activedescendant="{{$mdAutocompleteCtrl.index >= 0 ? \'selected_option\' : undefined}}">') + ' <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="' + c.mdClose + '"></md-icon></button> <md-progress-linear class="' + (e.mdFloatingLabel ? "md-inline" : "") + '" ng-if="$mdAutocompleteCtrl.loadingIsVisible()" md-mode="indeterminate"></md-progress-linear> ' + function(e, t) {
27868 if (e = e ? " " + e : "", l(t)) return ' <div ng-hide="$mdAutocompleteCtrl.hidden" class="md-standard-list-container md-autocomplete-suggestions-container md-whiteframe-z1' + e + '" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" role="presentation"> <div class="md-standard-list-scroller" role="presentation">';
27869 return ' <md-virtual-repeat-container md-auto-shrink md-auto-shrink-min="1" ng-hide="$mdAutocompleteCtrl.hidden" class="md-virtual-repeat-container md-autocomplete-suggestions-container md-whiteframe-z1' + e + '" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" role="presentation">'
27870 }(e.mdMenuContainerClass, e.mdMode) + ' <ul class="md-autocomplete-suggestions" ng-class="::menuClass" id="ul-{{$mdAutocompleteCtrl.id}}" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" ng-mouseup="$mdAutocompleteCtrl.mouseUp()" role="listbox"> <li ' + (l(e.mdMode) ? "ng-repeat" : "md-virtual-repeat") + ' ="item in $mdAutocompleteCtrl.matches" ng-class="{ selected: $index === $mdAutocompleteCtrl.index }" ng-attr-id="{{$index === $mdAutocompleteCtrl.index ? \'selected_option\' : undefined}}" ng-click="$mdAutocompleteCtrl.select($index)" role="option" aria-setsize="{{$mdAutocompleteCtrl.matches.length}}" aria-posinset="{{$index+1}}" aria-selected="{{$index === $mdAutocompleteCtrl.index ? true : false}}" md-extra-name="$mdAutocompleteCtrl.itemName"> ' + o + " </li>" + i + " </ul> " + (l(e.mdMode) ? " </div> </div> </div>" : "</md-virtual-repeat-container>") + " </md-autocomplete-wrap>";
27878 e.$inject = ["$$mdSvgRegistry"], ue.module("material.components.autocomplete").directive("mdAutocomplete", e)
27884 compile: function(e, t, c) {
27885 return function(n, t, e) {
27886 var r, i, o = n.$mdAutocompleteCtrl,
27887 a = o.parent.$new(),
27891 a[t] = n[e], n.$watch(e, function(e) {
27892 u.nextTick(function() {
27897 l("$index", "$index"), l("item", s), i = r = !1, n.$watch(function() {
27898 i || r || (r = !0, n.$$postDigest(function() {
27899 i || a.$digest(), r = i = !1
27901 }), a.$watch(function() {
27903 }), c(a, function(e) {
27909 transclude: "element"
27912 e.$inject = ["$compile", "$mdUtil"], ue.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
27915 function e(e, t, n) {
27916 this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
27918 e.$inject = ["$scope", "$element", "$attrs"], ue.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(t, n) {
27919 this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(e) {
27924 }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
27925 }, e.prototype.onRender = function(e, t) {
27926 var n = e.contentText;
27927 null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
27928 }, e.prototype.applyRegex = function(e) {
27929 var t = this.resolveTokens(e);
27930 this.$element.empty(), t.forEach(function(e) {
27932 var t = ue.element('<span class="highlight">').text(e.text);
27933 this.$element.append(t)
27934 } else this.$element.append(document.createTextNode(e))
27936 }, e.prototype.resolveTokens = function(r) {
27939 return r.replace(this.regex, function(e, t) {
27943 }), n = t + e.length
27947 var n = r.slice(e, t);
27950 }, e.prototype.createRegex = function(e, t) {
27953 i = this.sanitizeRegex(e);
27954 return 0 <= t.indexOf("^") && (n = "^"), 0 <= t.indexOf("$") && (r = "$"), new RegExp(n + i + r, t.replace(/[$^]/g, ""))
27955 }, e.prototype.sanitizeRegex = function(e) {
27956 return e && e.toString().replace(/[\\^$*+?.()|{}[\]]/g, "\\$&")
27963 controller: "MdHighlightCtrl",
27964 compile: function(e, t) {
27965 var i = r(t.mdHighlightText),
27967 return function(e, t, n, r) {
27973 e.$inject = ["$interpolate", "$parse"], ue.module("material.components.autocomplete").directive("mdHighlightText", e)
27974 }(), ue.module("material.components.backdrop", ["material.core"]).directive("mdBackdrop", ["$mdTheming", "$mdUtil", "$animate", "$rootElement", "$window", "$log", "$$rAF", "$document", function(s, l, t, n, c, u, d, f) {
27977 link: function(r, i, e) {
27981 var e = parseInt(o.height, 10) + Math.abs(parseInt(o.top, 10));
27982 i.css("height", e + "px")
27984 t.pin && t.pin(i, n), d(function() {
27985 if ("fixed" === (o = c.getComputedStyle(f[0].body)).position) {
27986 var e = l.debounce(function() {
27987 o = c.getComputedStyle(f[0].body), a()
27989 a(), ue.element(c).on("resize", e), r.$on("$destroy", function() {
27990 ue.element(c).off("resize", e)
27993 var t = i.parent();
27995 "BODY" === t[0].nodeName && i.css("position", "fixed");
27996 var n = c.getComputedStyle(t[0]);
27997 "static" === n.position && u.warn("<md-backdrop> may not work properly in a scrolled, static-positioned parent container."), s.inherit(i, t)
28007 link: function(e, t) {
28008 t.addClass("_md"), e.$on("$destroy", function() {
28016 t.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
28019 return e("$mdBottomSheet").setDefaults({
28020 methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
28024 function t(i, a, s, o, l, c, u, d) {
28028 onShow: function(e, t, n, r) {
28029 if ((t = s.extractElementByName(t, "md-bottom-sheet")).attr("tabindex", "-1"), t.hasClass("ng-cloak")) {
28030 d.warn("$mdBottomSheet: using `<md-bottom-sheet ng-cloak>` will affect the bottom-sheet opening animations.", t[0])
28032 n.isLockedOpen ? (n.clickOutsideToClose = !1, n.escapeToClose = !1) : n.cleanupGestures = function(r, e) {
28033 var t = u.register(e, "drag", {
28036 return e.on("$md.dragstart", n).on("$md.drag", i).on("$md.dragend", o),
28038 t(), e.off("$md.dragstart", n), e.off("$md.drag", i), e.off("$md.dragend", o)
28042 r.css(a.CSS.TRANSITION_DURATION, "0ms")
28046 var t = e.pointer.distanceY;
28047 t < 5 && (t = Math.max(-p, t / 2)), r.css(a.CSS.TRANSFORM, "translate3d(0," + (p + t) + "px,0)")
28051 if (0 < e.pointer.distanceY && (20 < e.pointer.distanceY || Math.abs(e.pointer.velocityY) > h)) {
28052 var t = r.prop("offsetHeight") - e.pointer.distanceY,
28053 n = Math.min(t / e.pointer.velocityY * .75, 500);
28054 r.css(a.CSS.TRANSITION_DURATION, n + "ms"), s.nextTick(l.cancel, !0)
28055 } else r.css(a.CSS.TRANSITION_DURATION, ""), r.css(a.CSS.TRANSFORM, "")
28058 n.disableBackdrop || ((f = s.createBackdrop(e, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, n.clickOutsideToClose && f.on("click", function() {
28059 s.nextTick(l.cancel, !0)
28060 }), o.inherit(f, n.parent), i.enter(f, n.parent, null));
28061 o.inherit(t, n.parent), n.disableParentScroll && (n.restoreScroll = s.disableScrollAround(t, n.parent));
28062 return i.enter(t, n.parent, f).then(function() {
28063 var e = s.findFocusTarget(t) || ue.element(t[0].querySelector("button") || t[0].querySelector("a") || t[0].querySelector(s.prefixer("ng-click", !0))) || f;
28064 n.escapeToClose && (n.rootElementKeyupCallback = function(e) {
28065 e.keyCode === a.KEY_CODE.ESCAPE && s.nextTick(l.cancel, !0)
28066 }, c.on("keyup", n.rootElementKeyupCallback), e && e.focus())
28069 onRemove: function(e, t, n) {
28070 n.disableBackdrop || i.leave(f);
28071 return i.leave(t).then(function() {
28072 n.disableParentScroll && (n.restoreScroll(), delete n.restoreScroll), n.cleanupGestures && n.cleanupGestures()
28075 disableBackdrop: !1,
28077 clickOutsideToClose: !0,
28078 disableParentScroll: !0,
28083 e.$inject = ["$mdBottomSheet"], t.$inject = ["$$interimElementProvider"], ue.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", t)
28089 link: function(e, t) {
28095 function t(r, i, o, a) {
28100 template: function(e, t) {
28102 if (s(t)) return '<a class="md-button" ng-transclude></a>';
28103 var n = void 0 === t.type ? "button" : t.type;
28104 return '<button class="md-button" type="' + n + '" ng-transclude></button>'
28107 link: function(e, t, n) {
28108 i(t), r.attach(e, t), o.expectWithoutText(t, "aria-label"), s(n) && ue.isDefined(n.ngDisabled) && !t.hasClass("_md-nav-button") && e.$watch(n.ngDisabled, function(e) {
28109 t.attr("tabindex", e ? -1 : 0)
28111 t.on("click", function(e) {
28112 !0 === n.disabled && (e.preventDefault(), e.stopImmediatePropagation())
28113 }), t.hasClass("md-no-focus") || (t.on("focus", function() {
28114 a.isUserInvoked() && "keyboard" !== a.getLastInteractionType() || t.addClass("md-focused")
28115 }), t.on("blur", function() {
28116 t.removeClass("md-focused")
28122 return ue.isDefined(e.href) || ue.isDefined(e.ngHref) || ue.isDefined(e.ngLink) || ue.isDefined(e.uiSref)
28125 t.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], ue.module("material.components.button", ["material.core"]).directive("mdButton", t).directive("a", e)
28131 link: function(e, t, n) {
28132 t.addClass("_md"), r(t)
28136 e.$inject = ["$mdTheming"], ue.module("material.components.card", ["material.core"]).directive("mdCard", e)
28139 function e(p, m, g, v, b, y) {
28143 require: ["^?mdInputContainer", "?ngModel", "?^form"],
28144 priority: g.BEFORE_NG_ARIA,
28145 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>',
28146 compile: function(e, t) {
28147 return t.$set("tabindex", t.tabindex || "0"), t.$set("type", "checkbox"), t.$set("role", t.type), {
28148 pre: function(e, t) {
28149 t.on("click", function(e) {
28150 this.hasAttribute("disabled") && e.stopImmediatePropagation()
28153 post: function(e, i, n, t) {
28154 var r, o, a, s, l = t[0],
28155 c = t[1] || b.fakeNgModel(),
28158 var d = l.isErrorGetter || function() {
28159 return c.$invalid && (c.$touched || u && u.$submitted)
28161 l.input = i, e.$watch(d, l.setInvalid)
28165 i[0].hasAttribute("disabled") || e.skipToggle || e.$apply(function() {
28166 var e = n.ngChecked && n.ngClick ? n.checked : !c.$viewValue;
28167 c.$setViewValue(e, t && t.type), c.$render()
28172 (r = !1 !== e) && i.attr("aria-checked", "mixed"), i.toggleClass("md-indeterminate", r)
28174 v(i), i.children().on("focus", function() {
28176 }), b.parseAttributeBoolean(n.mdIndeterminate) && (h(), e.$watch(n.mdIndeterminate, h)), n.ngChecked && e.$watch(e.$eval.bind(e, n.ngChecked), function(e) {
28177 c.$setViewValue(e), c.$render()
28178 }), o = "ngDisabled", a = "tabindex", s = {
28181 }, n[o] && e.$watch(n[o], function(e) {
28182 s[e] && i.attr(a, s[e])
28183 }), m.expectWithText(i, "aria-label"), p.link.pre(e, {
28186 }, n, [c]), i.on("click", f).on("keypress", function(e) {
28187 var t, n, r = e.which || e.keyCode;
28188 switch (e.preventDefault(), r) {
28189 case g.KEY_CODE.SPACE:
28190 i.addClass("md-focused"), f(e);
28192 case g.KEY_CODE.ENTER:
28193 (n = b.getClosest(e.target, "form")) && (t = n.querySelector('button[type="submit"]:enabled, input[type="submit"]:enabled')) && t.click()
28195 }).on("focus", function() {
28196 "keyboard" === y.getLastInteractionType() && i.addClass("md-focused")
28197 }).on("blur", function() {
28198 i.removeClass("md-focused")
28199 }), c.$render = function() {
28200 i.toggleClass("md-checked", !!c.$viewValue && !r)
28207 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], ue.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
28208 }(), ue.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
28210 function e(e, t, n, r, i) {
28211 this.$scope = e, this.$element = t, this.$mdConstant = n, this.$timeout = r, this.$mdUtil = i, this.isEditing = !1, this.parentController = de, this.enableChipEdit = !1
28213 e.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], ue.module("material.components.chips").controller("MdChipCtrl", e), e.prototype.init = function(e) {
28214 this.parentController = e, this.enableChipEdit = this.parentController.enableChipEdit, this.enableChipEdit && (this.$element.on("keydown", this.chipKeyDown.bind(this)), this.$element.on("dblclick", this.chipMouseDoubleClick.bind(this)), this.getChipContent().addClass("_md-chip-content-edit-is-enabled"))
28215 }, e.prototype.getChipContent = function() {
28216 var e = this.$element[0].getElementsByClassName("md-chip-content");
28217 return ue.element(e[0])
28218 }, e.prototype.getContentElement = function() {
28219 var e = ue.element(this.getChipContent().children()[0]);
28220 return e && 0 !== e.length || (e = ue.element(this.getChipContent().contents()[0])), e
28221 }, e.prototype.getChipIndex = function() {
28222 return parseInt(this.$element.attr("index"))
28223 }, e.prototype.goOutOfEditMode = function() {
28224 if (this.isEditing) {
28225 this.isEditing = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
28226 var e = this.getChipIndex(),
28227 t = this.getContentElement().text();
28228 t ? (this.parentController.updateChipContents(e, t), this.$mdUtil.nextTick(function() {
28229 this.parentController.selectedChip === e && this.parentController.focusChip(e)
28230 }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
28232 }, e.prototype.selectNodeContents = function(e) {
28234 document.body.createTextRange ? ((t = document.body.createTextRange()).moveToElementText(e), t.select()) : F.getSelection && (n = F.getSelection(), (t = document.createRange()).selectNodeContents(e), n.removeAllRanges(), n.addRange(t))
28235 }, e.prototype.goInEditMode = function() {
28236 this.isEditing = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
28237 this.goOutOfEditMode()
28238 }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
28239 }, e.prototype.chipKeyDown = function(e) {
28240 this.isEditing || e.keyCode !== this.$mdConstant.KEY_CODE.ENTER && e.keyCode !== this.$mdConstant.KEY_CODE.SPACE ? this.isEditing && e.keyCode === this.$mdConstant.KEY_CODE.ENTER && (e.preventDefault(), this.goOutOfEditMode()) : (e.preventDefault(), this.goInEditMode())
28241 }, e.prototype.chipMouseDoubleClick = function() {
28242 this.enableChipEdit && !this.isEditing && this.goInEditMode()
28246 function e(s, e, t, l) {
28249 require: ["^?mdChips", "mdChip"],
28250 link: function(e, t, n, r) {
28253 a = ue.element(t[0].querySelector(".md-chip-content"));
28254 s(t), i && (o.init(i), a.on("blur", function() {
28255 i.resetSelectedChip(), i.$scope.$applyAsync()
28258 i && i.shouldFocusLastChip && i.focusLastChipThenInput()
28261 controller: "MdChipCtrl"
28264 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], ue.module("material.components.chips").directive("mdChip", e)
28270 require: "^mdChips",
28272 link: function(t, e, n, r) {
28273 e.on("click", function(e) {
28274 t.$apply(function() {
28275 r.removeChip(t.$$replacedScope.$index)
28280 "aria-hidden": "true"
28281 }), e.find("button").attr("tabindex", "-1")
28286 e.$inject = ["$timeout"], ue.module("material.components.chips").directive("mdChipRemove", e)
28293 link: function(e, t, n) {
28294 var r = e.$parent.$mdChipsCtrl,
28295 i = r.parent.$new(!1, r.parent);
28296 i.$$replacedScope = e, i.$chip = e.$chip, i.$index = e.$index;
28297 var o = (i.$mdChipsCtrl = r).$scope.$eval(n.mdChipTransclude);
28298 t.html(o), a(t.contents())(i)
28303 e.$inject = ["$compile"], ue.module("material.components.chips").directive("mdChipTransclude", e)
28306 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil", "$mdLiveAnnouncer", "$exceptionHandler"];
28309 function e(e, t, n, r, i, o, a, s, l) {
28310 this.$timeout = o, this.$mdConstant = n, this.$scope = e, this.parent = e.$parent, this.$mdUtil = a, this.$log = r, this.$mdLiveAnnouncer = s, this.$exceptionHandler = l, this.$element = i, this.$attrs = t, this.ngModelCtrl = null, this.userInputNgModelCtrl = null, this.autocompleteCtrl = null, this.userInputElement = null, this.items = [], this.selectedChip = -1, this.enableChipEdit = a.parseAttributeBoolean(t.mdEnableChipEdit), this.addOnBlur = a.parseAttributeBoolean(t.mdAddOnBlur), this.inputAriaLabel = "Chips input.", this.containerHint = "Chips container. Use arrow keys to select chips.", this.containerEmptyHint = "Chips container. Enter the text area, then type text, and press enter to add a chip.", 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 = c, this.deRegister = [], this.addedMessage = "added", this.removedMessage = "removed", this.init()
28312 ue.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
28314 this.wrapperId = "_md-chips-wrapper-" + this.$mdUtil.nextUid(), this.$element.attr("ng-model") || this.setupStaticChips(), this.deRegister.push(this.$scope.$watchCollection("$mdChipsCtrl.items", function() {
28315 t.setupInputAria(), t.setupWrapperAria()
28316 })), this.deRegister.push(this.$attrs.$observe("mdChipAppendDelay", function(e) {
28317 t.chipAppendDelay = parseInt(e) || c
28319 }, e.prototype.$onDestroy = function() {
28320 for (var e; e = this.deRegister.pop();) e.call(this)
28321 }, e.prototype.setupInputAria = function() {
28322 var e = this.$element.find("input");
28323 e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0), this.inputAriaDescribedBy && e.attr("aria-describedby", this.inputAriaDescribedBy), this.inputAriaLabelledBy ? (e.attr("aria-labelledby", this.inputAriaLabelledBy), e.removeAttr("aria-label")) : e.attr("aria-label", this.inputAriaLabel))
28324 }, e.prototype.setupWrapperAria = function() {
28326 t = this.$element.find("md-chips-wrap");
28327 this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
28328 return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
28329 }), t.attr("aria-owns", this.contentIds.join(" ")), t.attr("aria-label", this.containerHint)) : (t.removeAttr("role"), t.removeAttr("aria-owns"), t.attr("aria-label", this.containerEmptyHint))
28330 }, e.prototype.setupStaticChips = function() {
28331 var e, t, n = this,
28332 r = this.$element.find("md-chips-wrap");
28333 this.$timeout(function() {
28334 for (r.attr("role", "list"), t = r[0].children, e = 0; e < t.length; e++) t[e].setAttribute("role", "listitem"), t[e].setAttribute("aria-setsize", t.length);
28335 n.inputAriaDescribedBy && r.attr("aria-describedby", n.inputAriaDescribedBy), n.inputAriaLabelledBy ? (r.attr("aria-labelledby", n.inputAriaLabelledBy), r.removeAttr("aria-label")) : r.attr("aria-label", n.inputAriaLabel)
28337 }, e.prototype.inputKeydown = function(e) {
28338 var t = this.getChipBuffer();
28339 if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
28340 if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
28341 if (0 !== this.getCursorPosition(e.target)) return;
28342 return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
28344 if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
28345 if (this.autocompleteCtrl && this.requireMatch || !t) return;
28346 if (e.preventDefault(), this.hasMaxChipsReached()) return;
28347 return this.appendChip(t.trim()), this.resetChipBuffer(), !1
28350 }, e.prototype.getCursorPosition = function(t) {
28352 if (t.selectionStart === t.selectionEnd) return t.selectionStart
28354 if (!t.value) return 0
28356 }, e.prototype.updateChipContents = function(e, t) {
28357 0 <= e && e < this.items.length && (this.items[e] = t, this.updateNgModel(!0))
28358 }, e.prototype.isEditingChip = function() {
28359 return !!this.$element[0].querySelector("._md-chip-editing")
28360 }, e.prototype._isChipObject = function(e) {
28361 return ue.isObject(e)
28362 }, e.prototype.isRemovable = function() {
28363 return !!this.ngModelCtrl && (this.readonly ? this.removable : !ue.isDefined(this.removable) || this.removable)
28364 }, e.prototype.chipKeydown = function(e) {
28365 if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
28366 case this.$mdConstant.KEY_CODE.BACKSPACE:
28367 case this.$mdConstant.KEY_CODE.DELETE:
28368 if (this.selectedChip < 0) return;
28369 if (e.preventDefault(), !this.isRemovable()) return;
28370 this.removeAndSelectAdjacentChip(this.selectedChip, e);
28372 case this.$mdConstant.KEY_CODE.LEFT_ARROW:
28373 e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 === this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
28375 case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
28376 e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
28378 case this.$mdConstant.KEY_CODE.ESCAPE:
28379 case this.$mdConstant.KEY_CODE.TAB:
28380 if (this.selectedChip < 0) return;
28381 e.preventDefault(), this.onFocus()
28383 }, e.prototype.getPlaceholder = function() {
28384 return this.items && this.items.length && ("" === this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
28385 }, e.prototype.removeAndSelectAdjacentChip = function(e, t) {
28387 r = n.getAdjacentChipIndex(e);
28388 this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
28389 n.removeChip(e, t), n.$timeout(function() {
28390 n.$timeout(function() {
28391 n.selectAndFocusChipSafe(r)
28394 }, e.prototype.resetSelectedChip = function() {
28395 this.selectedChip = -1, this.ariaTabIndex = null
28396 }, e.prototype.getAdjacentChipIndex = function(e) {
28397 var t = this.items.length - 1;
28398 return 0 === t ? -1 : e === t ? e - 1 : e
28399 }, e.prototype.appendChip = function(t) {
28400 if (this.shouldFocusLastChip = !this.addOnBlur, this.useTransformChip && this.transformChip) {
28401 var e = this.transformChip({
28404 ue.isDefined(e) && (t = e)
28406 if (ue.isObject(t) && this.items.some(function(e) {
28407 return ue.equals(t, e)
28409 if (!(null == t || this.items.indexOf(t) + 1)) {
28410 var n = this.items.push(t) - 1;
28411 this.updateNgModel();
28412 var r = ue.isObject(t) ? "" : t;
28413 this.$mdLiveAnnouncer.announce(r + " " + this.addedMessage, "assertive"), this.useOnAdd && this.onAdd && this.onAdd({
28418 }, e.prototype.useTransformChipExpression = function() {
28419 this.useTransformChip = !0
28420 }, e.prototype.useOnAddExpression = function() {
28422 }, e.prototype.useOnRemoveExpression = function() {
28423 this.useOnRemove = !0
28424 }, e.prototype.useOnSelectExpression = function() {
28425 this.useOnSelect = !0
28426 }, e.prototype.getChipBuffer = function() {
28427 var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
28428 return ue.isString(e) ? e : ""
28429 }, e.prototype.resetChipBuffer = function() {
28430 this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
28431 }, e.prototype.hasMaxChipsReached = function() {
28432 return ue.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), 0 < this.maxChips && this.items.length >= this.maxChips
28433 }, e.prototype.validateModel = function() {
28434 this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached()), this.ngModelCtrl.$validate()
28435 }, e.prototype.updateNgModel = function(e) {
28436 e || this.validateModel(), ue.forEach(this.ngModelCtrl.$viewChangeListeners, function(e) {
28440 this.$exceptionHandler(e)
28443 }, e.prototype.removeChip = function(e, t) {
28444 var n = this.items.splice(e, 1);
28445 this.updateNgModel(), this.ngModelCtrl.$setDirty();
28446 var r = ue.isObject(n[0]) ? "" : n[0];
28447 this.$mdLiveAnnouncer.announce(r + " " + this.removedMessage, "assertive"), n && n.length && this.useOnRemove && this.onRemove && this.onRemove({
28452 }, e.prototype.removeChipAndFocusInput = function(e, t) {
28453 this.removeChip(e, t), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
28454 }, e.prototype.selectAndFocusChipSafe = function(e) {
28455 if (!this.items.length || -1 === e) return this.focusInput();
28456 if (e >= this.items.length) {
28457 if (!this.readonly) return this.onFocus();
28460 e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
28461 }, e.prototype.focusLastChipThenInput = function() {
28463 e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
28465 }, e.chipAppendDelay)
28466 }, e.prototype.focusInput = function() {
28467 this.selectChip(-1), this.onFocus()
28468 }, e.prototype.selectChip = function(e) {
28469 -1 <= e && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
28470 $chip: this.items[e]
28471 })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
28472 }, e.prototype.selectAndFocusChip = function(e) {
28473 this.selectChip(e), -1 !== e && this.focusChip(e)
28474 }, e.prototype.focusChip = function(e) {
28475 var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
28476 this.ariaTabIndex = e, t.focus()
28477 }, e.prototype.configureNgModel = function(e) {
28478 this.ngModelCtrl = e;
28480 e.$isEmpty = function(e) {
28481 return !e || 0 === e.length
28482 }, e.$render = function() {
28483 t.items = t.ngModelCtrl.$viewValue
28485 }, e.prototype.onFocus = function() {
28486 var e = this.$element[0].querySelector("input");
28487 e && e.focus(), this.resetSelectedChip()
28488 }, e.prototype.onInputFocus = function() {
28489 this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
28490 }, e.prototype.onInputBlur = function() {
28491 this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
28492 }, e.prototype.configureInput = function(e) {
28493 var t = e.controller("ngModel"),
28495 t && (this.deRegister.push(this.$scope.$watch(function() {
28498 e && n.ngModelCtrl.$setTouched()
28499 })), this.deRegister.push(this.$scope.$watch(function() {
28502 e && n.ngModelCtrl.$setDirty()
28504 }, e.prototype.configureUserInput = function(e) {
28505 var t = (this.userInputElement = e).controller("ngModel");
28506 t !== this.ngModelCtrl && (this.userInputNgModelCtrl = t);
28507 var n = this.$scope,
28509 i = function(e, t) {
28510 n.$evalAsync(ue.bind(r, t, e))
28514 }).on("keydown", function(e) {
28515 i(e, r.inputKeydown)
28516 }).on("focus", function(e) {
28517 i(e, r.onInputFocus)
28518 }).on("blur", function(e) {
28519 i(e, r.onInputBlur)
28521 }, e.prototype.configureAutocomplete = function(e) {
28522 e && (this.autocompleteCtrl = e, this.$element.attr("container-empty-hint") || (this.containerEmptyHint = "Chips container with autocompletion. Enter the text area, type text to search, and then use the up and down arrow keys to select an option. Press enter to add the selected option as a chip.", this.setupWrapperAria()), e.registerSelectedItemWatcher(ue.bind(this, function(e) {
28524 if (this.hasMaxChipsReached()) return;
28525 this.appendChip(e), this.resetChipBuffer()
28527 })), this.$element.find("input").on("focus", ue.bind(this, this.onInputFocus)).on("blur", ue.bind(this, this.onInputBlur)))
28528 }, e.prototype.shouldAddOnBlur = function() {
28529 this.validateModel();
28530 var e = this.getChipBuffer().trim(),
28531 t = this.ngModelCtrl.$isEmpty(this.ngModelCtrl.$modelValue) || this.ngModelCtrl.$valid,
28532 n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
28533 return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
28534 }, e.prototype.hasFocus = function() {
28535 return this.inputHasFocus || 0 <= this.selectedChip
28536 }, e.prototype.contentIdFor = function(e) {
28537 return this.contentIds[e]
28541 r.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], ue.module("material.components.chips").directive("mdChips", r);
28542 var e = ' <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() }" class="md-chips"> <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-setsize="{{$mdChipsCtrl.items.length}}" aria-posinset="{{$index+1}}" ng-click="!$mdChipsCtrl.readonly && $mdChipsCtrl.focusChip($index)" aria-label="{{$mdChipsCtrl._isChipObject($chip) ? \'\' : $chip + \'. \'}}{{$mdChipsCtrl.isRemovable() ? \'\' + $mdChipsCtrl.deleteHint : \'\'}}" 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>',
28543 t = ' <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)">',
28544 n = " <span>{{$chip}}</span>",
28545 i = ' <button class="md-chip-remove" ng-if="$mdChipsCtrl.isRemovable()" ng-click="$mdChipsCtrl.removeChipAndFocusInput($$replacedScope.$index, $event)" type="button" tabindex="-1" aria-label="{{$mdChipsCtrl.deleteButtonLabel}}{{$mdChipsCtrl._isChipObject($chip) ? \'\' : \' \' + $chip}}"> <md-icon md-svg-src="{{$mdChipsCtrl.mdCloseIcon}}" aria-hidden="true"></md-icon> </button>';
28547 function r(f, h, p, r, m, g) {
28549 chips: h.processTemplate(e),
28550 input: h.processTemplate(t),
28551 default: h.processTemplate(n),
28552 remove: h.processTemplate(i)
28555 template: function(e, t) {
28556 return t.$mdUserTemplate = e.clone(), v.chips
28558 require: ["mdChips"],
28560 controller: "MdChipsCtrl",
28561 controllerAs: "$mdChipsCtrl",
28562 bindToController: !0,
28563 compile: function(e, a) {
28564 var n = a.$mdUserTemplate;
28565 a.$mdUserTemplate = null;
28566 var s = t("md-chips>md-chip-template"),
28567 l = t(h.prefixer().buildList("md-chip-remove").map(function(e) {
28568 return "md-chips>*[" + e + "]"
28569 }).join(",")) || v.remove,
28570 c = s || v.default,
28571 u = t("md-chips>md-autocomplete") || t("md-chips>input") || v.input,
28572 d = n.find("md-chip");
28573 n[0].querySelector("md-chip-template>*[md-chip-remove]") && r.warn("invalid placement of md-chip-remove within md-chip-template.");
28577 var t = n[0].querySelector(e);
28578 return t && t.outerHTML
28581 return function(e, t, n, r) {
28582 h.initOptionalProperties(e, a), f(t);
28584 if (s && (i.enableChipEdit = !1), i.chipContentsTemplate = c, i.chipRemoveTemplate = l, i.chipInputTemplate = u, i.mdCloseIcon = g.mdClose, t.attr({
28586 }).on("focus", function() {
28588 }).on("click", function() {
28589 i.readonly || -1 !== i.selectedChip || i.onFocus()
28590 }), a.ngModel && (i.configureNgModel(t.controller("ngModel")), n.mdTransformChip && i.useTransformChipExpression(), n.mdOnAppend && i.useOnAppendExpression(), n.mdOnAdd && i.useOnAddExpression(), n.mdOnRemove && i.useOnRemoveExpression(), n.mdOnSelect && i.useOnSelectExpression(), u !== v.input && e.$watch("$mdChipsCtrl.readonly", function(e) {
28591 e || h.nextTick(function() {
28592 if (0 === u.indexOf("<md-autocomplete")) {
28593 var e = t.find("md-autocomplete");
28594 i.configureAutocomplete(e.controller("mdAutocomplete"))
28596 i.configureUserInput(t.find("input"))
28598 }), h.nextTick(function() {
28599 var e = t.find("input");
28600 e && (i.configureInput(e), e.toggleClass("md-input", !0))
28601 })), 0 < d.length) {
28602 var o = p(d.clone())(e.$parent);
28604 t.find("md-chips-wrap").prepend(o)
28610 readonly: "=?readonly",
28611 removable: "=?mdRemovable",
28613 secondaryPlaceholder: "@?",
28614 maxChips: "@?mdMaxChips",
28615 transformChip: "&mdTransformChip",
28616 onAppend: "&?mdOnAppend",
28617 onAdd: "&?mdOnAdd",
28618 onRemove: "&?mdOnRemove",
28619 addedMessage: "@?mdAddedMessage",
28620 removedMessage: "@?mdRemovedMessage",
28621 onSelect: "&?mdOnSelect",
28622 inputAriaDescribedBy: "@?inputAriaDescribedby",
28623 inputAriaLabelledBy: "@?inputAriaLabelledby",
28624 inputAriaLabel: "@?",
28625 containerHint: "@?",
28626 containerEmptyHint: "@?",
28628 deleteButtonLabel: "@?",
28629 separatorKeys: "=?mdSeparatorKeys",
28630 requireMatch: "=?mdRequireMatch",
28631 chipAppendDelayString: "@?mdChipAppendDelay",
28638 function e(e, t, n) {
28639 this.$element = t, this.$attrs = e, this.$timeout = n, this.selectedItem = null, this.searchText = "", this.deRegister = [], this.init()
28641 e.$inject = ["$attrs", "$element", "$timeout"], ue.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.init = function() {
28643 t = this.deRegister,
28645 this.$timeout(function() {
28646 t.push(n.find("md-chips").scope().$watchCollection("$mdChipsCtrl.items", function() {
28647 e.setupChipsAria(), e.setupAutocompleteAria()
28650 }, e.prototype.setupChipsAria = function() {
28651 var e = this.$element.find("md-chips"),
28652 t = e.controller("mdChips");
28653 this.removedMessage && (t.removedMessage = this.removedMessage), this.containerHint && (t.containerHint = this.containerHint), this.containerEmptyHint && (e.attr("container-empty-hint", this.containerEmptyHint), t.containerEmptyHint = this.containerEmptyHint), this.deleteHint && (t.deleteHint = this.deleteHint), this.inputAriaLabel && (t.inputAriaLabel = this.inputAriaLabel)
28654 }, e.prototype.setupAutocompleteAria = function() {
28655 var e = this.$element.find("md-chips-wrap").find("md-autocomplete").find("input");
28656 this.inputAriaDescribedBy && e.attr("aria-describedby", this.inputAriaDescribedBy), this.inputAriaLabelledBy && (e.removeAttr("aria-label"), e.attr("aria-labelledby", this.inputAriaLabelledBy))
28657 }, e.prototype.queryContact = function(e) {
28658 return this.contactQuery({
28661 }, e.prototype.inputKeydown = function(e) {
28662 if (this.separatorKeys && !(this.separatorKeys.indexOf(e.keyCode) < 0)) {
28663 e.stopPropagation(), e.preventDefault();
28664 var t = ue.element(e.target).controller("mdAutocomplete");
28667 }, e.prototype.itemName = function(e) {
28668 return e[this.contactName]
28669 }, e.prototype.$onDestroy = function() {
28670 for (var e; e = this.deRegister.pop();) e.call(this)
28674 e.$inject = ["$mdTheming", "$mdUtil"], ue.module("material.components.chips").directive("mdContactChips", e);
28675 var n = ' <md-chips class="md-contact-chips" ng-model="$mdContactChipsCtrl.contacts" ng-change="$mdContactChipsCtrl.ngChange($mdContactChipsCtrl.contacts)" md-require-match="$mdContactChipsCtrl.requireMatch" md-chip-append-delay="{{$mdContactChipsCtrl.chipAppendDelay}}" md-separator-keys="$mdContactChipsCtrl.separatorKeys" 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 ng-keydown="$mdContactChipsCtrl.inputKeydown($event)" 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>';
28679 template: function(e, t) {
28683 controller: "MdContactChipsCtrl",
28684 controllerAs: "$mdContactChipsCtrl",
28685 bindToController: !0,
28686 compile: function(e, o) {
28687 return function(e, t, n, r) {
28689 s.initOptionalProperties(e, o), a(t), t.attr("tabindex", "-1"), n.$observe("mdChipAppendDelay", function(e) {
28690 i.chipAppendDelay = e
28695 contactQuery: "&mdContacts",
28697 secondaryPlaceholder: "@?",
28698 contactName: "@mdContactName",
28699 contactImage: "@mdContactImage",
28700 contactEmail: "@mdContactEmail",
28701 contacts: "=ngModel",
28703 requireMatch: "=?mdRequireMatch",
28704 minLength: "=?mdMinLength",
28705 highlightFlags: "@?mdHighlightFlags",
28706 chipAppendDelay: "@?mdChipAppendDelay",
28707 separatorKeys: "=?mdSeparatorKeys",
28708 removedMessage: "@?mdRemovedMessage",
28709 inputAriaDescribedBy: "@?inputAriaDescribedby",
28710 inputAriaLabelledBy: "@?inputAriaLabelledby",
28711 inputAriaLabel: "@?",
28712 containerHint: "@?",
28713 containerEmptyHint: "@?",
28720 t.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
28721 var a = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
28724 function e(o, a, r) {
28725 return c = c || Object.keys(o.PALETTES), {
28726 applyThemeColors: function(e, t) {
28728 t && e.css((i = {}, o = (n = t).hasOwnProperty("color"), ue.forEach(n, function(e, t) {
28730 r = -1 < t.indexOf("background");
28731 i[t] = s(n), r && !o && (i.color = s(n, !0))
28738 getThemeColor: function(e) {
28741 hasTheme: function(e) {
28742 return ue.isDefined(o.THEMES[e.split("-")[0]])
28748 var n = o.PALETTES[e.palette][e.hue];
28749 return n = t ? n.contrast : n.value, a.supplant("rgba({0}, {1}, {2}, {3})", [n[0], n[1], n[2], n[3] || e.opacity])
28753 var t = e.split("-"),
28754 n = ue.isDefined(o.THEMES[t[0]]) ? t.splice(0, 1)[0] : o.defaultTheme();
28757 palette: function(e, t) {
28758 var n = 1 < e.length && -1 !== c.indexOf(e[1]),
28759 r = e[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
28760 if (n && (r = e[0] + "-" + e.splice(1, 1)), -1 === c.indexOf(r)) {
28761 var i = o.THEMES[t].colors[r];
28762 if (!i) throw new Error(a.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
28769 hue: function(e, t) {
28770 var n = o.THEMES[t].colors;
28771 if ("hue" !== e[1]) return e[1] || n[e[0] in n ? e[0] : "primary"].hues.default;
28772 var r = parseInt(e.splice(2, 1)[0], 10);
28773 if (r < 1 || 3 < r) throw new Error(a.supplant("mdColors: 'hue-{hueNumber}' is not a valid hue, can be only 'hue-1', 'hue-2' and 'hue-3'", {
28776 if (e[1] = "hue-" + r, e[0] in n) return n[e[0]].hues[e[1]];
28777 throw new Error(a.supplant("mdColors: 'hue-x' can only be used with [{availableThemes}], but was used with '{usedTheme}'", {
28778 availableThemes: Object.keys(n).join(", "),
28787 function t(u, o, d, f) {
28790 require: ["^?mdTheme"],
28791 compile: function(e, i) {
28792 var c = function() {
28793 var e = i.mdColors,
28794 t = -1 < e.indexOf("::"),
28795 n = !!t || a.test(i.mdColors);
28796 i.mdColors = e.replace("::", "");
28797 var r = ue.isDefined(i.mdColorsWatch);
28798 return !t && !n && (!r || o.parseAttributeBoolean(i.mdColorsWatch))
28800 return function(e, n, t, r) {
28804 "string" != typeof n && (n = ""), t.mdColors || (t.mdColors = "{}");
28805 var r = f(t.mdColors)(e);
28806 return i && Object.keys(r).forEach(function(e) {
28808 u.hasTheme(t) || (r[e] = (n || i.$mdTheme) + "-" + t)
28812 if (!ue.equals(e, o)) {
28813 var t = Object.keys(o);
28814 o.background && !t.color && t.push("color"), t.forEach(function(e) {
28821 i && (l = i.registerChanges(function(e) {
28822 u.applyThemeColors(n, a(e))
28823 })), e.$on("$destroy", function() {
28827 c ? e.$watch(a, ue.bind(this, u.applyThemeColors, n), !0) : u.applyThemeColors(n, a())
28835 ue.module("material.components.colors", ["material.core"]).directive("mdColors", t).service("$mdColors", e)
28841 controller: ["$scope", "$element", function(e, t) {
28842 this.$scope = e, this.$element = t
28844 link: function(e, t) {
28846 t.addClass("_md"), r(t), e.$broadcast("$mdContentLoaded", t), n = t[0], ue.element(n).on("$md.pressdown", function(e) {
28847 "t" === e.pointer.type && (e.$materialScrollFixed || (e.$materialScrollFixed = !0, 0 === n.scrollTop ? n.scrollTop = 1 : n.scrollHeight === n.scrollTop + n.offsetHeight && (n.scrollTop -= 1)))
28852 e.$inject = ["$mdTheming"], ue.module("material.components.content", ["material.core"]).directive("mdContent", e)
28853 }(), ue.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
28855 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], ue.module("material.components.datepicker").directive("mdCalendar", function() {
28857 template: function(e, t) {
28858 var n = t.hasOwnProperty("ngIf") ? "" : 'ng-if="calendarCtrl.isInitialized"',
28859 r = '<div ng-switch="calendarCtrl.currentView" ' + n + '><md-calendar-year ng-switch-when="year"></md-calendar-year><md-calendar-month ng-switch-default></md-calendar-month></div>';
28863 minDate: "=mdMinDate",
28864 maxDate: "=mdMaxDate",
28865 dateFilter: "=mdDateFilter",
28867 _currentView: "@mdCurrentView"
28869 require: ["ngModel", "mdCalendar"],
28871 controllerAs: "calendarCtrl",
28872 bindToController: !0,
28873 link: function(e, t, n, r) {
28876 o.configureNgModel(i)
28886 function e(e, t, n, r, i, o, a, s, l) {
28887 o(e), this.$element = e, this.$scope = t, this.dateUtil = n, this.$mdUtil = r, this.keyCode = i.KEY_CODE, this.$$rAF = a, this.$mdDateLocale = l, 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 = d++, this.displayDate = null, this.selectedDate = null, this.firstRenderableDate = null, this.lastRenderableDate = null, this.isInitialized = !1, this.width = 0, this.scrollbarWidth = 0, s.tabindex || e.attr("tabindex", "-1");
28888 var c, u = ue.bind(this, this.handleKeyEvent);
28889 (c = e.parent().hasClass("md-datepicker-calendar") ? ue.element(document.body) : e).on("keydown", u), t.$on("$destroy", function() {
28890 c.off("keydown", u)
28891 }), 1 === ue.version.major && ue.version.minor <= 4 && this.$onInit()
28893 e.prototype.$onInit = function() {
28894 this._mode && t.hasOwnProperty(this._mode) ? (this.currentView = t[this._mode], this.mode = this._mode) : (this.currentView = this._currentView || "month", this.mode = null);
28895 var e = this.$mdDateLocale;
28896 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
28897 }, e.prototype.configureNgModel = function(e) {
28899 t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
28900 t.isInitialized = !0
28901 }), e.$render = function() {
28902 var e = this.$viewValue;
28903 t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
28905 }, e.prototype.setNgModelValue = function(e) {
28906 var t = this.dateUtil.createDateAtMidnight(e);
28907 return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
28908 }, e.prototype.setCurrentView = function(e, t) {
28910 n.$mdUtil.nextTick(function() {
28911 n.currentView = e, t && (n.displayDate = ue.isDate(t) ? t : new Date(t))
28913 }, e.prototype.focus = function(e) {
28914 if (this.dateUtil.isValidDate(e)) {
28915 var t = this.$element[0].querySelector("." + this.FOCUSED_DATE_CLASS);
28916 t && t.classList.remove(this.FOCUSED_DATE_CLASS);
28917 var n = this.getDateId(e, this.currentView),
28918 r = document.getElementById(n);
28919 r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
28921 var i = this.$element[0].querySelector("[ng-switch]");
28924 }, e.prototype.changeSelectedDate = function(e) {
28925 var t = this.SELECTED_DATE_CLASS,
28926 n = this.$element[0].querySelector("." + t);
28927 if (n && (n.classList.remove(t), n.setAttribute("aria-selected", "false")), e) {
28928 var r = document.getElementById(this.getDateId(e, this.currentView));
28929 r && (r.classList.add(t), r.setAttribute("aria-selected", "true"))
28931 this.selectedDate = e
28932 }, e.prototype.getActionFromKeyEvent = function(e) {
28933 var t = this.keyCode;
28937 case t.RIGHT_ARROW:
28938 return "move-right";
28940 return "move-left";
28942 return e.metaKey ? "move-page-down" : "move-row-down";
28944 return e.metaKey ? "move-page-up" : "move-row-up";
28946 return "move-page-down";
28948 return "move-page-up";
28956 }, e.prototype.handleKeyEvent = function(t) {
28958 this.$scope.$apply(function() {
28959 if (t.which == n.keyCode.ESCAPE || t.which == n.keyCode.TAB) return n.$scope.$emit("md-calendar-close"), void(t.which == n.keyCode.TAB && t.preventDefault());
28960 var e = n.getActionFromKeyEvent(t);
28961 e && (t.preventDefault(), t.stopPropagation(), n.$scope.$broadcast("md-calendar-parent-action", e))
28963 }, e.prototype.hideVerticalScrollbar = function(r) {
28966 o = t.querySelector(".md-calendar-scroll-mask");
28969 var e = i.width || 340,
28970 t = i.scrollbarWidth,
28971 n = r.calendarScroller;
28972 o.style.width = e + "px", n.style.width = e + t + "px", n.style.paddingRight = t + "px"
28974 0 < i.width ? n() : i.$$rAF(function() {
28975 var e = r.calendarScroller;
28976 i.scrollbarWidth = e.offsetWidth - e.clientWidth, i.width = t.querySelector("table").offsetWidth, n()
28978 }, e.prototype.getDateId = function(e, t) {
28979 if (!t) throw new Error("A namespace for the date id has to be specified.");
28980 return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
28981 }, e.prototype.updateVirtualRepeat = function() {
28982 var e = this.$scope,
28983 t = e.$on("$md-resize-enable", function() {
28984 e.$$phase || e.$apply(), t()
28989 t.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], ue.module("material.components.datepicker").directive("mdCalendarMonth", function() {
28991 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="' + (e - 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>",
28992 require: ["^^mdCalendar", "mdCalendarMonth"],
28994 controllerAs: "monthCtrl",
28995 bindToController: !0,
28996 link: function(e, t, n, r) {
29006 function t(e, t, n, r, i, o) {
29007 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;
29009 this.cellClickHandler = function() {
29010 var e = i.getTimestampFromNode(this);
29011 a.$scope.$apply(function() {
29012 a.calendarCtrl.setNgModelValue(e)
29014 }, this.headerClickHandler = function() {
29015 a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
29018 t.prototype.initialize = function(e) {
29020 length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
29021 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
29022 }, t.prototype.getSelectedMonthIndex = function() {
29023 var e = this.calendarCtrl;
29024 return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
29025 }, t.prototype.changeDisplayDate = function(e) {
29026 if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
29027 if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
29028 this.isMonthTransitionInProgress = !0;
29029 var t = this.animateDateChange(e);
29030 this.calendarCtrl.displayDate = e;
29032 return t.then(function() {
29033 n.isMonthTransitionInProgress = !1
29035 }, t.prototype.animateDateChange = function(e) {
29036 if (this.dateUtil.isValidDate(e)) {
29037 var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
29038 this.calendarScroller.scrollTop = t * n
29040 return this.$q.when()
29041 }, t.prototype.buildWeekHeader = function() {
29042 for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
29043 var i = document.createElement("th");
29044 i.textContent = t[(r + e) % 7], n.appendChild(i)
29046 this.$element.find("thead").append(n)
29047 }, t.prototype.attachScopeListeners = function() {
29049 n.$scope.$on("md-calendar-parent-changed", function(e, t) {
29050 n.calendarCtrl.changeSelectedDate(t), n.changeDisplayDate(t)
29051 }), n.$scope.$on("md-calendar-parent-action", ue.bind(this, this.handleKeyEvent))
29052 }, t.prototype.handleKeyEvent = function(e, t) {
29053 var n = this.calendarCtrl,
29055 if ("select" === t) n.setNgModelValue(r);
29061 i = o.incrementDays(r, 1);
29064 i = o.incrementDays(r, -1);
29066 case "move-page-down":
29067 i = o.incrementMonths(r, 1);
29069 case "move-page-up":
29070 i = o.incrementMonths(r, -1);
29072 case "move-row-down":
29073 i = o.incrementDays(r, 7);
29075 case "move-row-up":
29076 i = o.incrementDays(r, -7);
29079 i = o.getFirstDateOfMonth(r);
29082 i = o.getLastDateOfMonth(r)
29084 i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
29092 var s = e('<md-icon md-svg-src="' + t.mdTabsArrow + '"></md-icon>')({})[0];
29094 require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
29096 offset: "=mdMonthOffset"
29099 controllerAs: "mdMonthBodyCtrl",
29100 bindToController: !0,
29101 link: function(e, t, n, r) {
29105 a.calendarCtrl = i, a.monthCtrl = o, a.arrowIcon = s.cloneNode(!0), e.$watch(function() {
29108 ue.isNumber(e) && a.generateContent()
29114 function n(e, t, n) {
29115 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
29117 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], ue.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
29118 var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
29119 this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
29120 }, n.prototype.buildDateCell = function(e) {
29121 var t = this.monthCtrl,
29122 n = this.calendarCtrl,
29123 r = document.createElement("td");
29124 if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
29125 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"));
29126 var i = this.dateLocale.dates[e.getDate()];
29127 if (this.isDateEnabled(e)) {
29128 var o = document.createElement("span");
29129 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)
29130 } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
29133 }, n.prototype.isDateEnabled = function(e) {
29134 return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!ue.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
29135 }, n.prototype.buildDateRow = function(e) {
29136 var t = document.createElement("tr");
29137 return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
29138 }, n.prototype.buildCalendarForMonth = function(e) {
29139 var t = this.dateUtil.isValidDate(e) ? e : new Date,
29140 n = this.dateUtil.getFirstDateOfMonth(t),
29141 r = this.getLocaleDay_(n),
29142 i = this.dateUtil.getNumberOfDaysInMonth(t),
29143 o = document.createDocumentFragment(),
29145 s = this.buildDateRow(a);
29147 var l = this.offset === this.monthCtrl.items.length - 1,
29149 u = document.createElement("td"),
29150 d = document.createElement("span"),
29151 f = this.calendarCtrl;
29152 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) {
29153 u.setAttribute("colspan", "7");
29154 var h = this.buildDateRow();
29155 if (h.appendChild(u), o.insertBefore(h, s), l) return o
29156 } else c = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
29157 for (var p = c; p < r; p++) s.appendChild(this.buildDateCell());
29158 for (var m = r, g = n, v = 1; v <= i; v++) {
29161 m = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
29164 var b = this.buildDateCell(g);
29165 s.appendChild(b), m++
29167 for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
29168 for (; o.childNodes.length < 6;) {
29169 for (var y = this.buildDateRow(), _ = 0; _ < 7; _++) y.appendChild(this.buildDateCell());
29173 }, n.prototype.getLocaleDay_ = function(e) {
29174 return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
29178 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdUtil"], ue.module("material.components.datepicker").directive("mdCalendarYear", function() {
29180 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>",
29181 require: ["^^mdCalendar", "mdCalendarYear"],
29183 controllerAs: "yearCtrl",
29184 bindToController: !0,
29185 link: function(e, t, n, r) {
29194 function e(e, t, n, r, i, o) {
29195 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;
29197 this.cellClickHandler = function() {
29198 a.onTimestampSelected(i.getTimestampFromNode(this))
29201 e.prototype.initialize = function(e) {
29203 length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
29204 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
29205 }, e.prototype.getFocusedYearIndex = function() {
29206 var e = this.calendarCtrl;
29207 return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
29208 }, e.prototype.changeDate = function(e) {
29209 if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
29210 if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
29212 n = this.animateDateChange(e);
29213 return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
29214 t.isMonthTransitionInProgress = !1
29217 }, e.prototype.animateDateChange = function(e) {
29218 if (this.dateUtil.isValidDate(e)) {
29219 var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
29220 this.calendarScroller.scrollTop = t * n
29222 return this.$q.when()
29223 }, e.prototype.handleKeyEvent = function(e, t) {
29225 r = n.calendarCtrl,
29227 if ("select" === t) n.changeDate(i).then(function() {
29228 n.onTimestampSelected(i)
29235 o = a.incrementMonths(i, 1);
29238 o = a.incrementMonths(i, -1);
29240 case "move-row-down":
29241 o = a.incrementMonths(i, 6);
29243 case "move-row-up":
29244 o = a.incrementMonths(i, -6)
29247 var s = r.minDate ? a.getFirstDateOfMonth(r.minDate) : null,
29248 l = r.maxDate ? a.getFirstDateOfMonth(r.maxDate) : null;
29249 o = a.getFirstDateOfMonth(n.dateUtil.clampDate(o, s, l)), n.changeDate(o).then(function() {
29254 }, e.prototype.attachScopeListeners = function() {
29256 n.$scope.$on("md-calendar-parent-changed", function(e, t) {
29257 n.calendarCtrl.changeSelectedDate(t ? n.dateUtil.getFirstDateOfMonth(t) : t), n.changeDate(t)
29258 }), n.$scope.$on("md-calendar-parent-action", ue.bind(n, n.handleKeyEvent))
29259 }, e.prototype.onTimestampSelected = function(e) {
29260 var t = this.calendarCtrl;
29261 t.mode ? this.$mdUtil.nextTick(function() {
29262 t.setNgModelValue(e)
29263 }) : t.setCurrentView("month", e)
29267 function e(e, t, n) {
29268 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
29270 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], ue.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
29272 require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
29274 offset: "=mdYearOffset"
29277 controllerAs: "mdYearBodyCtrl",
29278 bindToController: !0,
29279 link: function(e, t, n, r) {
29283 a.calendarCtrl = i, a.yearCtrl = o, e.$watch(function() {
29286 ue.isNumber(e) && a.generateContent()
29290 }), e.prototype.generateContent = function() {
29291 var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
29292 this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
29293 }, e.prototype.buildMonthCell = function(e, t) {
29294 var n = this.calendarCtrl,
29296 i = this.buildBlankCell(),
29297 o = new Date(e, t, 1);
29298 i.setAttribute("aria-label", this.dateLocale.monthFormatter(o)), i.id = n.getDateId(o, "year"), i.setAttribute("data-timestamp", String(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"));
29299 var a = this.dateLocale.shortMonths[t];
29300 if (!this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate) || ue.isFunction(this.calendarCtrl.dateFilter) && !this.calendarCtrl.dateFilter(o)) i.classList.add("md-calendar-date-disabled"), i.textContent = a;
29302 var s = document.createElement("span");
29303 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)
29306 }, e.prototype.buildBlankCell = function() {
29307 var e = document.createElement("td");
29308 return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
29309 }, e.prototype.buildCalendarForYear = function(e) {
29310 var t, n = e.getFullYear(),
29311 r = document.createDocumentFragment(),
29312 i = document.createElement("tr"),
29313 o = document.createElement("td");
29314 for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
29316 var a = document.createElement("tr");
29317 for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
29318 return r.appendChild(a), r
29320 }(), ue.module("material.components.datepicker").config(["$provide", function(e) {
29322 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.isDateComplete = null, this.msgCalendar = "", this.msgOpenCalendar = ""
29323 }(t.prototype.$get = function(e, i) {
29324 for (var t = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
29325 return e.substring(0, 1)
29326 }), n = Array(32), r = 1; r <= 31; r++) n[r] = r;
29327 var o = new Date(1880, 0, 1),
29328 a = new Date(o.getFullYear() + 250, 0, 1),
29330 months: this.months || e.DATETIME_FORMATS.MONTH,
29331 shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
29332 days: this.days || e.DATETIME_FORMATS.DAY,
29333 shortDays: this.shortDays || t,
29334 dates: this.dates || n,
29335 firstDayOfWeek: this.firstDayOfWeek || 0,
29336 formatDate: this.formatDate || function(e, t) {
29338 var n = e.toLocaleTimeString(),
29340 return 0 !== e.getHours() || -1 === n.indexOf("11:") && -1 === n.indexOf("23:") || (r = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 1, 0, 0)), i("date")(r, "M/d/yyyy", t)
29342 parseDate: this.parseDate || function(e) {
29345 isDateComplete: this.isDateComplete || function(e) {
29346 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ .,]+|[/-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
29348 monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
29349 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
29351 monthFormatter: this.monthFormatter || function(e) {
29352 return s.months[e.getMonth()] + " " + e.getFullYear()
29354 weekNumberFormatter: this.weekNumberFormatter || function(e) {
29357 longDateFormatter: this.longDateFormatter || function(e) {
29358 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
29360 msgCalendar: this.msgCalendar || "Calendar",
29361 msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
29362 firstRenderableDate: this.firstRenderableDate || o,
29363 lastRenderableDate: this.lastRenderableDate || a
29366 }).$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
29367 }]), ue.module("material.components.datepicker").factory("$$mdDateUtil", function() {
29369 getFirstDateOfMonth: n,
29370 getNumberOfDaysInMonth: i,
29371 getDateInNextMonth: r,
29372 getDateInPreviousMonth: o,
29373 isInNextMonth: function(e, t) {
29376 isInPreviousMonth: function(e, t) {
29380 getDateMidpoint: function(e, t) {
29381 return u((e.getTime() + t.getTime()) / 2)
29383 isSameMonthAndYear: a,
29384 getWeekOfMonth: function(e) {
29386 return Math.floor((t.getDay() + e.getDate() - 1) / 7)
29388 incrementDays: function(e, t) {
29389 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
29391 incrementMonths: s,
29392 getLastDateOfMonth: function(e) {
29393 return new Date(e.getFullYear(), e.getMonth(), i(e))
29395 isSameDay: function(e, t) {
29396 return e.getDate() == t.getDate() && a(e, t)
29398 getMonthDistance: function(e, t) {
29399 return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
29402 setDateTimeToMidnight: c,
29403 createDateAtMidnight: u,
29404 isDateWithinRange: function(e, t, n) {
29406 i = l(t) ? u(t) : null,
29407 o = l(n) ? u(n) : null;
29408 return (!i || i <= r) && (!o || r <= o)
29410 incrementYears: function(e, t) {
29411 return s(e, 12 * t)
29413 getYearDistance: function(e, t) {
29414 return t.getFullYear() - e.getFullYear()
29416 clampDate: function(e, t, n) {
29418 return t && e < t && (r = new Date(t.getTime())), n && n < e && (r = new Date(n.getTime())), r
29420 getTimestampFromNode: function(e) {
29421 if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
29423 isMonthWithinRange: function(e, t, n) {
29424 var r = e.getMonth(),
29425 i = e.getFullYear();
29426 return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
29431 return new Date(e.getFullYear(), e.getMonth(), 1)
29435 return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
29439 return new Date(e.getFullYear(), e.getMonth() + 1, 1)
29443 return new Date(e.getFullYear(), e.getMonth() - 1, 1)
29447 return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
29451 var n = new Date(e.getFullYear(), e.getMonth() + t, 1),
29453 return r < e.getDate() ? n.setDate(r) : n.setDate(e.getDate()), n
29457 return e && e.getTime && !isNaN(e.getTime())
29461 l(e) && e.setHours(0, 0, 0, 0)
29466 return c(t = ue.isUndefined(e) ? new Date : new Date(e)), t
29470 function e(a, d, f, h) {
29472 template: function(e, t) {
29473 var n = t.mdHideIcons,
29474 r = t.ariaLabel || t.mdPlaceholder,
29475 i = "all" === n || "calendar" === n ? "" : '<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="' + a.mdCalendar + '"></md-icon></md-button>',
29477 return "all" !== n && "triangle" !== n && (o = '<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>', e.addClass(s)), i + '<div class="md-datepicker-input-container" ng-class="{\'md-datepicker-focused\': ctrl.isFocused}"><input ' + (r ? 'aria-label="' + r + '" ' : "") + 'class="md-datepicker-input" aria-haspopup="true" aria-expanded="{{ctrl.isCalendarOpen}}" ng-focus="ctrl.setFocused(true)" ng-blur="ctrl.setFocused(false)"> ' + o + '</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>'
29479 require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
29481 minDate: "=mdMinDate",
29482 maxDate: "=mdMaxDate",
29483 placeholder: "@mdPlaceholder",
29484 currentView: "@mdCurrentView",
29486 dateFilter: "=mdDateFilter",
29487 isOpen: "=?mdIsOpen",
29488 debounceInterval: "=mdDebounceInterval",
29489 dateLocale: "=mdDateLocale"
29492 controllerAs: "ctrl",
29493 bindToController: !0,
29494 link: function(e, t, n, r) {
29499 l = d.parseAttributeBoolean(n.mdNoAsterisk);
29500 if (o.configureNgModel(i, a, h), a) {
29501 var c = t[0].querySelector(".md-errors-spacer");
29502 c && t.after(ue.element("<div>").append(c)), a.setHasPlaceholder(n.mdPlaceholder), a.input = t, a.element.addClass(p).toggleClass(m, "calendar" !== n.mdHideIcons && "all" !== n.mdHideIcons), a.label ? l || n.$observe("required", function(e) {
29503 a.label.toggleClass("md-required", !!e)
29504 }) : f.expect(t, "aria-label", n.mdPlaceholder), e.$watch(a.isErrorGetter || function() {
29505 return i.$invalid && (i.$touched || s && s.$submitted)
29507 } else if (s) var u = e.$watch(function() {
29508 return s.$submitted
29510 e && (o.updateErrorState(), u())
29515 t.$inject = ["$scope", "$element", "$attrs", "$window", "$mdConstant", "$mdTheming", "$mdUtil", "$mdDateLocale", "$$mdDateUtil", "$$rAF", "$filter", "$timeout"], e.$inject = ["$$mdSvgRegistry", "$mdUtil", "$mdAria", "inputDirective"], ue.module("material.components.datepicker").directive("mdDatepicker", e);
29516 var a = "md-datepicker-invalid",
29517 d = "md-datepicker-open",
29518 p = "_md-datepicker-floating-label",
29519 m = "_md-datepicker-has-calendar-icon",
29520 s = "_md-datepicker-has-triangle-icon",
29521 h = /ipad|iphone|ipod|android/i;
29523 function t(e, t, n, r, i, o, a, s, l, c, u, d) {
29524 this.$window = r, this.dateUtil = l, this.$mdConstant = i, this.$mdUtil = a, this.$$rAF = c, this.$mdDateLocale = s, this.$timeout = d, this.documentElement = ue.element(document.documentElement), this.ngModelCtrl = null, this.inputElement = t[0].querySelector("input"), this.ngInputElement = ue.element(this.inputElement), this.inputContainer = t[0].querySelector(".md-datepicker-input-container"), this.calendarPane = t[0].querySelector(".md-datepicker-calendar-pane"), this.calendarButton = t[0].querySelector(".md-datepicker-button"), this.inputMask = ue.element(t[0].querySelector(".md-datepicker-input-mask-opaque")), this.$element = t, this.$attrs = n, this.$scope = e, this.date = null, this.isFocused = !1, this.isDisabled, this.setDisabled(t[0].disabled || ue.isString(n.disabled)), this.isCalendarOpen = !1, this.openOnFocus = n.hasOwnProperty("mdOpenOnFocus"), this.mdInputContainer = null, this.calendarPaneOpenedFrom = null, this.calendarPaneId = "md-date-pane-" + a.nextUid(), this.bodyClickHandler = ue.bind(this, this.handleBodyClick), this.windowEventName = h.test(navigator.userAgent || navigator.vendor || F.opera) ? "orientationchange" : "resize", this.windowEventHandler = a.debounce(ue.bind(this, this.closeCalendarPane), 100), this.windowBlurHandler = ue.bind(this, this.handleWindowBlur), this.ngDateFilter = u("date"), this.leftMargin = 20, this.topMargin = null, n.tabindex ? (this.ngInputElement.attr("tabindex", n.tabindex), n.$set("tabindex", null)) : n.$set("tabindex", "-1"), n.$set("aria-owns", this.calendarPaneId), o(t), o(ue.element(this.calendarPane));
29526 e.$on("$destroy", function() {
29527 f.detachCalendarPane()
29528 }), n.mdIsOpen && e.$watch("ctrl.isOpen", function(e) {
29529 e ? f.openCalendarPane({
29530 target: f.inputElement
29531 }) : f.closeCalendarPane()
29532 }), 1 === ue.version.major && ue.version.minor <= 4 && this.$onInit()
29534 t.prototype.$onInit = function() {
29535 this.locale = this.dateLocale ? ue.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
29536 }, t.prototype.configureNgModel = function(e, t, n) {
29537 this.ngModelCtrl = e, this.mdInputContainer = t, this.$attrs.$set("type", "date"), n[0].link.pre(this.$scope, {
29541 }, this.$attrs, [e]);
29543 r.ngModelCtrl.$formatters.push(function(e) {
29544 var t = ue.isDefined(e) ? e : null;
29545 if (!(e instanceof Date) && (t = Date.parse(e), !isNaN(t) && ue.isNumber(t) && (e = new Date(t)), 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);
29546 return r.onExternalChange(e), e
29547 }), e.$viewChangeListeners.unshift(ue.bind(this, this.updateErrorState));
29548 var i = r.$mdUtil.getModelOption(e, "updateOn");
29549 i && this.ngInputElement.on(i, ue.bind(this.$element, this.$element.triggerHandler, i))
29550 }, t.prototype.attachChangeListeners = function() {
29552 n.$scope.$on("md-calendar-change", function(e, t) {
29553 n.setModelValue(t), n.onExternalChange(t), n.closeCalendarPane()
29554 }), n.ngInputElement.on("input", ue.bind(n, n.resizeInputElement));
29555 var e = ue.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
29556 n.ngInputElement.on("input", n.$mdUtil.debounce(n.handleInputEvent, e, n))
29557 }, t.prototype.attachInteractionListeners = function() {
29560 r = this.$mdConstant.KEY_CODE;
29561 t.ngInputElement.on("keydown", function(e) {
29562 e.altKey && e.keyCode === r.DOWN_ARROW && (t.openCalendarPane(e), n.$digest())
29563 }), t.openOnFocus && (t.ngInputElement.on("focus", ue.bind(t, t.openCalendarPane)), t.ngInputElement.on("click", function(e) {
29564 e.stopPropagation()
29565 }), t.ngInputElement.on("pointerdown", function(e) {
29566 e.target && e.target.setPointerCapture && e.target.setPointerCapture(e.pointerId)
29567 }), ue.element(t.$window).on("blur", t.windowBlurHandler), n.$on("$destroy", function() {
29568 ue.element(t.$window).off("blur", t.windowBlurHandler)
29569 })), n.$on("md-calendar-close", function() {
29570 t.closeCalendarPane()
29572 }, t.prototype.installPropertyInterceptors = function() {
29574 if (this.$attrs.ngDisabled) {
29575 var e = this.$scope.$parent;
29576 e && e.$watch(this.$attrs.ngDisabled, function(e) {
29580 Object.defineProperty(this, "placeholder", {
29582 return t.inputElement.placeholder
29585 t.inputElement.placeholder = e || ""
29588 }, t.prototype.setDisabled = function(e) {
29589 this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
29590 }, t.prototype.updateErrorState = function(e) {
29591 var t = e || this.date;
29592 if (this.clearErrorState(), this.dateUtil.isValidDate(t)) {
29593 if (t = this.dateUtil.createDateAtMidnight(t), this.dateUtil.isValidDate(this.minDate)) {
29594 var n = this.dateUtil.createDateAtMidnight(this.minDate);
29595 this.ngModelCtrl.$setValidity("mindate", n <= t)
29597 if (this.dateUtil.isValidDate(this.maxDate)) {
29598 var r = this.dateUtil.createDateAtMidnight(this.maxDate);
29599 this.ngModelCtrl.$setValidity("maxdate", t <= r)
29601 ue.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(t))
29602 } else this.ngModelCtrl.$setValidity("valid", null == t);
29603 var i = this.inputElement.value,
29604 o = this.locale.parseDate(i);
29605 !this.isInputValid(i, o) && this.ngModelCtrl.$valid && this.ngModelCtrl.$setValidity("valid", null == t), ue.element(this.inputContainer).toggleClass(a, !this.ngModelCtrl.$valid)
29606 }, t.prototype.isInputValid = function(e, t) {
29607 return "" === e || this.dateUtil.isValidDate(t) && this.locale.isDateComplete(e) && this.isDateEnabled(t)
29608 }, t.prototype.clearErrorState = function() {
29609 this.inputContainer.classList.remove(a), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
29610 this.ngModelCtrl.$setValidity(e, !0)
29612 }, t.prototype.resizeInputElement = function() {
29613 this.inputElement.size = this.inputElement.value.length + 3
29614 }, t.prototype.handleInputEvent = function() {
29615 var e = this.inputElement.value,
29616 t = e ? this.locale.parseDate(e) : null;
29617 this.dateUtil.setDateTimeToMidnight(t), this.isInputValid(e, t) && (this.setModelValue(t), this.date = t), this.updateErrorState(t)
29618 }, t.prototype.isDateEnabled = function(e) {
29619 return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!ue.isFunction(this.dateFilter) || this.dateFilter(e))
29620 }, t.prototype.attachCalendarPane = function() {
29621 var e = this.calendarPane,
29623 e.style.transform = "", this.$element.addClass(d), this.mdInputContainer && this.mdInputContainer.element.addClass(d), ue.element(t).addClass("md-datepicker-is-showing");
29624 var n = this.inputContainer.getBoundingClientRect(),
29625 r = t.getBoundingClientRect();
29626 (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
29627 var i = n.top - r.top - this.topMargin,
29628 o = n.left - r.left - this.leftMargin,
29629 a = r.top < 0 && 0 == document.body.scrollTop ? -r.top : document.body.scrollTop,
29630 s = r.left < 0 && 0 == document.body.scrollLeft ? -r.left : document.body.scrollLeft,
29631 l = a + this.$window.innerHeight,
29632 c = s + this.$window.innerWidth;
29633 if (this.inputMask.css({
29634 position: "absolute",
29635 left: this.leftMargin + "px",
29636 top: this.topMargin + "px",
29637 width: n.width - 1 + "px",
29638 height: n.height - 2 + "px"
29640 if (0 < c - 360) o = c - 360;
29643 var u = this.$window.innerWidth / 360;
29644 e.style.transform = "scale(" + u + ")"
29646 e.classList.add("md-datepicker-pos-adjusted")
29648 l < i + 368 && a < l - 368 && (i = l - 368, e.classList.add("md-datepicker-pos-adjusted")), e.style.left = o + "px", e.style.top = i + "px", document.body.appendChild(e), this.$$rAF(function() {
29649 e.classList.add("md-pane-open")
29651 }, t.prototype.detachCalendarPane = function() {
29652 this.$element.removeClass(d), this.mdInputContainer && this.mdInputContainer.element.removeClass(d), ue.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)
29653 }, t.prototype.openCalendarPane = function(e) {
29654 if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
29655 this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = e.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
29657 this.$mdUtil.nextTick(function() {
29658 t.documentElement.on("click touchstart", t.bodyClickHandler)
29659 }, !1), F.addEventListener(this.windowEventName, this.windowEventHandler)
29661 }, t.prototype.closeCalendarPane = function() {
29662 if (this.isCalendarOpen) {
29664 e.detachCalendarPane(), e.ngModelCtrl.$setTouched(), e.evalAttr("ngBlur"), e.documentElement.off("click touchstart", e.bodyClickHandler), F.removeEventListener(e.windowEventName, e.windowEventHandler), e.calendarPaneOpenedFrom.focus(), e.calendarPaneOpenedFrom = null, e.openOnFocus ? e.$timeout(t) : t()
29668 e.isCalendarOpen = e.isOpen = !1
29670 }, t.prototype.getCalendarCtrl = function() {
29671 return ue.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
29672 }, t.prototype.focusCalendar = function() {
29674 this.$mdUtil.nextTick(function() {
29675 e.getCalendarCtrl().focus()
29677 }, t.prototype.setFocused = function(e) {
29678 e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
29679 }, t.prototype.handleBodyClick = function(e) {
29680 this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
29681 }, t.prototype.handleWindowBlur = function() {
29682 this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
29683 }, t.prototype.evalAttr = function(e) {
29684 this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
29685 }, t.prototype.setModelValue = function(e) {
29686 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
29687 this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
29688 }, t.prototype.onExternalChange = function(e) {
29689 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
29690 this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
29694 function e(e, t, o) {
29697 link: function(r, i) {
29698 i.addClass("_md"), t(i), e(function() {
29699 var e, t = i[0].querySelector("md-dialog-content");
29702 i.toggleClass("md-content-overflow", t.scrollHeight > t.clientHeight)
29704 t && (e = t.getElementsByTagName("img"), n(), ue.element(e).on("load", n)), r.$on("$destroy", function() {
29714 return n.$inject = ["$mdDialog", "$mdConstant"], r.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"], e("$mdDialog").setDefaults({
29715 methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
29717 }).addPreset("alert", {
29718 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
29720 }).addPreset("confirm", {
29721 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
29723 }).addPreset("prompt", {
29724 methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css", "required"],
29730 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, ""),
29732 controllerAs: "dialog",
29733 bindToController: !0
29738 this.$onInit = function() {
29739 var n = "prompt" == this.$type;
29740 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
29741 r.hide(!n || this.result)
29742 }, this.abort = function() {
29744 }, this.keypress = function(e) {
29745 var t = n && this.required && !ue.isDefined(this.result);
29746 e.keyCode !== i.KEY_CODE.ENTER || t || r.hide(this.result)
29751 function r(f, l, h, p, c, u, m, d, g, a, t, s, v) {
29755 onCompiling: function(e) {
29756 e.defaultTheme = t.defaultTheme(),
29759 t.targetEvent && t.targetEvent.target && (e = ue.element(t.targetEvent.target));
29760 var n = e && e.controller("mdTheme");
29761 if (t.hasTheme = !!n, !t.hasTheme) return;
29762 t.themeWatch = n.$shouldWatch;
29763 var r = t.theme || n.$mdTheme;
29764 r && (t.scope.theme = r);
29765 var i = n.registerChanges(function(e) {
29766 t.scope.theme = e, t.themeWatch || i()
29770 onShow: function(e, t, n, r) {
29771 ue.element(u[0].body).addClass("md-dialog-is-showing");
29772 var i = t.find("md-dialog");
29773 if (i.hasClass("ng-cloak")) {
29774 g.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", t[0])
29776 return function(e) {
29778 var n = ue.element(e || {});
29779 if (n && n.length) {
29780 var r = ue.isFunction(n[0].getBoundingClientRect);
29781 return ue.extend(t || {}, {
29782 element: r ? n : de,
29783 bounds: r ? n[0].getBoundingClientRect() : ue.extend({}, {
29789 focus: ue.bind(n, n.focus)
29795 return ue.isString(e) && (e = u[0].querySelector(e)), ue.element(e || t)
29797 e.origin = ue.extend({
29801 }, e.origin || {}), e.parent = n(e.parent, d), e.closeTo = t(n(e.closeTo)), e.openFrom = t(n(e.openFrom)), e.targetEvent && (e.origin = t(e.targetEvent.target, e.origin), e.originInteraction = v.getLastInteractionType())
29804 var n = "alert" === t.$type ? "alertdialog" : "dialog",
29805 r = e.find("md-dialog-content"),
29807 o = "dialogContent_" + (i || h.nextUid());
29811 }), 0 === r.length && (r = e, i && (o = i)), r.attr("id", o), e.attr("aria-describedby", o), t.ariaLabel ? l.expect(e, "aria-label", t.ariaLabel) : l.expectAsync(e, "aria-label", function() {
29812 if (t.title) return t.title;
29813 var e = r.text().split(/\s+/);
29814 return 3 < e.length && (e = e.slice(0, 3).concat("...")), e.join(" ")
29815 }), (_ = document.createElement("div")).classList.add("md-dialog-focus-trap"), _.tabIndex = 0, $ = _.cloneNode(!1);
29816 var a = function() {
29819 _.addEventListener("focus", a), $.addEventListener("focus", a), e[0].parentNode.insertBefore(_, e[0]), e.after($)
29820 }(i, n), o = e, a = t, s = n, s.disableParentScroll && (s.restoreScroll = h.disableScrollAround(a, s.parent)), s.hasBackdrop && (s.backdrop = h.createBackdrop(o, "md-dialog-backdrop md-opaque"), c.enter(s.backdrop, s.parent)), s.hideBackdrop = function(e) {
29821 s.backdrop && (e ? s.backdrop.remove() : c.leave(s.backdrop)), s.disableParentScroll && (s.restoreScroll && s.restoreScroll(), delete s.restoreScroll), s.hideBackdrop = null
29824 var n = ue.element(m),
29825 r = h.debounce(function() {
29830 var e = "alert" == t.$type ? f.hide : f.cancel;
29833 if (t.escapeToClose) {
29836 e.keyCode === p.KEY_CODE.ESCAPE && (e.stopImmediatePropagation(), e.preventDefault(), o())
29838 e.on("keydown", s), a.on("keydown", s), i.push(function() {
29839 e.off("keydown", s), a.off("keydown", s)
29842 if (n.on("resize", r), i.push(function() {
29844 }), t.clickOutsideToClose) {
29850 l === c[0] && e.target === c[0] && (e.stopPropagation(), e.preventDefault(), o())
29852 c.on("mousedown", u), c.on("mouseup", d), i.push(function() {
29853 c.off("mousedown", u), c.off("mouseup", d)
29856 t.deactivateListeners = function() {
29857 i.forEach(function(e) {
29859 }), t.deactivateListeners = null
29863 t.parent.append(e), t.reverseContainerStretch = b(e, t);
29864 var n = e.find("md-dialog"),
29865 r = h.dom.animator,
29866 i = r.calculateZoomToOrigin,
29868 transitionInClass: "md-transition-in",
29869 transitionOutClass: "md-transition-out"
29871 a = r.toTransformCss(i(n, t.openFrom || t.origin)),
29872 s = r.toTransformCss("");
29873 return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, a, s, o).then(function(e) {
29874 return t.reverseAnimate = function() {
29875 return delete t.reverseAnimate, t.closeTo ? (o = {
29876 transitionInClass: "md-transition-out",
29877 transitionOutClass: "md-transition-in"
29878 }, a = s, s = r.toTransformCss(i(n, t.closeTo)), r.translate3d(n, a, s, o)) : e(s = r.toTransformCss(i(n, t.origin)))
29879 }, t.clearAnimate = function() {
29880 return delete t.clearAnimate, n.removeClass([o.transitionOutClass, o.transitionInClass].join(" ")), r.translate3d(n, s, r.toTransformCss(""), {})
29883 }(t, n).then(function() {
29888 for (var t = function(e) {
29889 for (var t = []; e.parentNode;) {
29890 if (e === document.body) return t;
29891 for (var n = e.parentNode.children, r = 0; r < n.length; r++) e === n[r] || y(n[r], ["SCRIPT", "STYLE"]) || n[r].hasAttribute("aria-live") || t.push(n[r]);
29895 }(e), n = 0; n < t.length; n++) t[n].setAttribute("aria-hidden", r)
29897 n(e[0]), t.unlockScreenReader = function() {
29898 r = !1, n(e[0]), t.unlockScreenReader = null
29900 }(t, n), t[0].querySelector(".md-actions") && g.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>."),
29902 if (n.focusOnOpen) {
29903 var e = h.findFocusTarget(t) || t[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || i;
29910 onShowing: function(e, t, n, r) {
29912 var i = r.htmlContent || n.htmlContent || "",
29913 o = r.textContent || n.textContent || r.content || n.content || "";
29914 if (i && !a.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
29915 if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
29916 r.mdHtmlContent = i, r.mdTextContent = o
29919 onRemove: function(e, t, n) {
29920 n.deactivateListeners(), n.unlockScreenReader(), n.hideBackdrop(n.$destroy), _ && _.parentNode && _.parentNode.removeChild(_);
29921 $ && $.parentNode && $.parentNode.removeChild($);
29922 return n.$destroy ? i() : (r = n, r.reverseAnimate().then(function() {
29923 r.contentElement && r.clearAnimate()
29928 ue.element(u[0].body).removeClass("md-dialog-is-showing"), n.contentElement && n.reverseContainerStretch(), n.cleanupElement(), n.$destroy || "keyboard" !== n.originInteraction || n.origin.focus()
29931 clickOutsideToClose: !1,
29937 disableParentScroll: !0,
29940 transformTemplate: function(e, t) {
29941 var n, r = s.startSymbol(),
29943 o = r + (t.themeWatch ? "" : "::") + "theme" + i;
29944 return '<div class="md-dialog-container" tabindex="-1" ' + (t.hasTheme ? 'md-theme="' + o + '"' : "") + ">" + (n = e, t.autoWrap && !/<\/md-dialog>/g.test(n) ? "<md-dialog>" + (n || "") + "</md-dialog>" : n || "") + "</div>"
29949 var n = "fixed" == m.getComputedStyle(u[0].body).position,
29950 r = t.backdrop ? m.getComputedStyle(t.backdrop[0]) : null,
29951 i = r ? Math.min(u[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
29954 height: e.css("height")
29956 a = Math.abs(t.parent[0].getBoundingClientRect().top);
29958 top: (n ? a : 0) + "px",
29959 height: i ? i + "px" : "100%"
29967 if (-1 !== t.indexOf(e.nodeName)) return !0
29971 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], t.$inject = ["$$interimElementProvider"], ue.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", t)
29980 e.$inject = ["$mdTheming"], ue.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
29986 require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
29987 compile: function(e, t) {
29988 var n = e.children();
29989 r.prefixer().hasAttribute(n, "ng-repeat") ? n.addClass("md-fab-action-item") : n.wrap('<div class="md-fab-action-item">')
29993 e.$inject = ["$mdUtil"], ue.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
29996 function e(t, o, a, s, l, i) {
30002 "click" == e.type && (n = (t = e).target, s.getClosest(n, "md-fab-trigger") && u.toggle(), r = t.target, s.getClosest(r, "md-fab-actions") && u.close()), "focusout" != e.type || c || (c = i(function() {
30004 }, 100, !1)), "focusin" == e.type && c && (i.cancel(c), c = null)
30008 u.currentActionIndex = -1
30012 0 < o[0].scrollHeight ? a.addClass(o, "_md-animations-ready").then(function() {
30013 o.removeClass("md-animations-waiting")
30014 }) : e < 10 && (i(f, 100), e += 1)
30018 o.off("keydown", m), ue.element(document).off("click touchend", p)
30023 var t = s.getClosest(e.target, "md-fab-trigger"),
30024 n = s.getClosest(e.target, "md-fab-actions");
30025 t || n || u.close()
30031 case l.KEY_CODE.ESCAPE:
30032 return u.close(), e.preventDefault(), !1;
30033 case l.KEY_CODE.LEFT_ARROW:
30034 return i = e, "left" === u.direction ? v(i) : g(i), !1;
30035 case l.KEY_CODE.UP_ARROW:
30036 return r = e, "down" === u.direction ? g(r) : v(r), !1;
30037 case l.KEY_CODE.RIGHT_ARROW:
30038 return n = e, "left" === u.direction ? g(n) : v(n), !1;
30039 case l.KEY_CODE.DOWN_ARROW:
30040 return t = e, "up" === u.direction ? g(t) : v(t), !1
30054 var n, r = (n = b()[0].querySelectorAll(".md-fab-action-item"), ue.forEach(n, function(e) {
30055 ue.element(ue.element(e).children()[0]).attr("tabindex", -1)
30057 u.currentActionIndex = u.currentActionIndex + t, u.currentActionIndex = Math.min(r.length - 1, u.currentActionIndex), u.currentActionIndex = Math.max(0, u.currentActionIndex);
30058 var i = ue.element(r[u.currentActionIndex]).children()[0];
30059 ue.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
30063 return o.find("md-fab-actions")
30065 u.open = function() {
30066 t.$evalAsync("vm.isOpen = true")
30067 }, u.close = function() {
30068 t.$evalAsync("vm.isOpen = false"), o.find("md-fab-trigger")[0].focus()
30069 }, u.toggle = function() {
30070 t.$evalAsync("vm.isOpen = !vm.isOpen")
30071 }, u.$onInit = function() {
30073 u.direction = u.direction || "down", u.isOpen = u.isOpen || !1, d(), o.addClass("md-animations-waiting"), e = ["click", "focusin", "focusout"], ue.forEach(e, function(e) {
30075 }), t.$on("$destroy", function() {
30076 ue.forEach(e, function(e) {
30079 }), t.$watch("vm.direction", function(e, t) {
30080 a.removeClass(o, "md-" + t), a.addClass(o, "md-" + e), d()
30081 }), t.$watch("vm.isOpen", function(e) {
30082 d(), r && i || (r = o.find("md-fab-trigger"), i = b()), e ? (o.on("keydown", m), s.nextTick(function() {
30083 ue.element(document).on("click touchend", p)
30085 var t = e ? "md-is-open" : "",
30086 n = e ? "" : "md-is-open";
30087 r.attr("aria-haspopup", !0), r.attr("aria-expanded", e), i.attr("aria-hidden", !e), a.setClass(o, t, n)
30089 }, 1 === ue.version.major && ue.version.minor <= 4 && this.$onInit()
30091 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], ue.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
30094 e.$inject = ["$timeout"], t.$inject = ["$timeout"];
30103 if (!e.hasClass("md-animations-waiting") || e.hasClass("_md-animations-ready")) {
30105 l = e.controller("mdFabSpeedDial"),
30106 r = t.querySelectorAll(".md-fab-action-item"),
30107 c = t.querySelector("md-fab-trigger"),
30108 n = t.querySelector("._md-css-variables"),
30109 i = parseInt(F.getComputedStyle(n).zIndex);
30110 ue.forEach(r, function(e, t) {
30112 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = r.length - t + i
30113 }), c.style.zIndex = i + r.length + 1, l.isOpen || ue.forEach(r, function(e, t) {
30114 var n, r, i = e.style,
30115 o = (c.clientHeight - e.clientHeight) / 2,
30116 a = (c.clientWidth - e.clientWidth) / 2;
30117 switch (l.direction) {
30119 n = e.scrollHeight * (t + 1) + o, r = "Y";
30122 n = -(e.scrollHeight * (t + 1) + o), r = "Y";
30125 n = e.scrollWidth * (t + 1) + a, r = "X";
30128 n = -(e.scrollWidth * (t + 1) + a), r = "X"
30130 var s = "translate" + r + "(" + n + "px)";
30131 i.transform = i.webkitTransform = s
30136 addClass: function(e, t, n) {
30137 e.hasClass("md-fling") ? (i(e), r(n)) : n()
30139 removeClass: function(e, t, n) {
30152 i = e.controller("mdFabSpeedDial"),
30153 o = t.querySelectorAll(".md-fab-action-item"),
30154 n = t.querySelector("._md-css-variables"),
30155 a = parseInt(F.getComputedStyle(n).zIndex);
30156 ue.forEach(o, function(e, t) {
30159 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 + a
30163 addClass: function(e, t, n) {
30166 removeClass: function(e, t, n) {
30171 ue.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
30175 direction: "@?mdDirection",
30178 bindToController: !0,
30179 controller: "MdFabController",
30180 controllerAs: "vm",
30181 link: function(e, t) {
30182 t.prepend('<div class="_md-css-variables"></div>')
30185 }).animation(".md-fling", e).animation(".md-scale", t).service("mdFabSpeedDialFlingAnimation", e).service("mdFabSpeedDialScaleAnimation", t)
30189 function r(e, t, n) {
30192 i = e.controller("mdFabToolbar"),
30193 o = r.querySelector(".md-fab-toolbar-background"),
30194 a = r.querySelector("md-fab-trigger button"),
30195 s = r.querySelector("md-toolbar"),
30196 l = r.querySelector("md-fab-trigger button md-icon"),
30197 c = e.find("md-fab-actions").children();
30199 var u = F.getComputedStyle(a).getPropertyValue("background-color"),
30201 f = (r.offsetHeight, d / a.offsetWidth * 2);
30202 o.style.backgroundColor = u, o.style.borderRadius = d + "px", i.isOpen ? (s.style.pointerEvents = "inherit", o.style.width = a.offsetWidth + "px", o.style.height = a.offsetHeight + "px", o.style.transform = "scale(" + f + ")", o.style.transitionDelay = "0ms", l && (l.style.transitionDelay = ".3s"), ue.forEach(c, function(e, t) {
30203 e.style.transitionDelay = 25 * (c.length - t) + "ms"
30204 })) : (s.style.pointerEvents = "none", o.style.transform = "scale(1)", o.style.top = "0", e.hasClass("md-right") && (o.style.left = "0", o.style.right = null), e.hasClass("md-left") && (o.style.right = "0", o.style.left = null), o.style.transitionDelay = "200ms", l && (l.style.transitionDelay = "0ms"), ue.forEach(c, function(e, t) {
30205 e.style.transitionDelay = 200 + 25 * t + "ms"
30211 addClass: function(e, t, n) {
30214 removeClass: function(e, t, n) {
30219 ue.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
30223 template: '<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',
30225 direction: "@?mdDirection",
30228 bindToController: !0,
30229 controller: "MdFabController",
30230 controllerAs: "vm",
30231 link: function(e, t, n) {
30232 t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
30235 }).animation(".md-fab-toolbar", e).service("mdFabToolbarAnimation", e)
30238 function e(h, v, b, y) {
30245 link: function(o, a, s, t) {
30246 a.addClass("_md"), a.attr("role", "list"), t.layoutDelegate = function(e) {
30247 var r = [].filter.call(a.children(), function(e) {
30248 return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
30251 tileSpans: (t = r, [].map.call(t, function(e) {
30252 var t = ue.element(e).controller("mdGridTile");
30254 row: parseInt(y.getResponsiveAttribute(t.$attrs, "md-rowspan"), 10) || 1,
30255 col: parseInt(y.getResponsiveAttribute(t.$attrs, "md-colspan"), 10) || 1
30258 colCount: function() {
30259 var e = parseInt(y.getResponsiveAttribute(s, "md-cols"), 10);
30260 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
30264 rowHeight: function() {
30265 var e = y.getResponsiveAttribute(s, "md-row-height");
30266 if (!e) throw "md-grid-list: md-row-height attribute was not found";
30271 var t = e.split(":");
30272 return parseFloat(t[0]) / parseFloat(t[1]);
30277 gutter: f(y.getResponsiveAttribute(s, "md-gutter") || 1)
30280 if (!e && ue.equals(i, l)) return;
30281 var n = b(i.colCount, i.tileSpans, r).map(function(e, n) {
30285 style: function(e, t, n, r, i) {
30293 }), o.paddingBottom = "";
30296 var a = 1 === e ? 0 : (e - 1) / e,
30304 o.height = "", o.paddingBottom = g({
30311 }(i.colCount, n, i.gutter, i.rowMode, i.rowHeight)
30313 tiles: e.map(function(e, t) {
30315 element: ue.element(r[t]),
30316 style: function(e, t, n, r, i, o, a) {
30317 var s = 1 / n * 100,
30324 u = "rtl" != document.dir && "rtl" != document.body.dir ? {
30378 }), u.marginTop = m({
30385 var h = (r - 1) / r;
30387 share: d = 1 / r * 100,
30401 }(e.position, e.spans, i.colCount, n, i.gutter, i.rowMode, i.rowHeight)
30405 }).reflow().performance();
30412 var l, n = ue.bind(t, t.invalidateLayout),
30414 for (var e in v.MEDIA) y(e), y.getQuery(v.MEDIA[e]).addListener(n);
30415 return y.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], s, i)
30419 null == e ? t.invalidateLayout() : y(e) && t.invalidateLayout()
30421 o.$on("$destroy", function() {
30422 for (var e in t.layoutDelegate = ue.noop, r(), v.MEDIA) y.getQuery(v.MEDIA[e]).removeListener(n)
30424 var c = h.startSymbol(),
30430 var p = h(e("share") + "% - (" + e("gutter") + " * " + e("gutterShare") + ")"),
30431 m = h("calc((" + e("unit") + " + " + e("gutter") + ") * " + e("offset") + ")"),
30432 g = h("calc((" + e("unit") + ") * " + e("span") + " + (" + e("span") + " - 1) * " + e("gutter") + ")");
30435 var e = y.getResponsiveAttribute(s, "md-row-height");
30436 if (!e) throw "md-grid-list: md-row-height attribute was not found";
30437 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
30441 return /\D$/.test(e) ? e : e + "px"
30448 this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = ue.noop
30453 return e.animateWith = function(e) {
30454 c = ue.isFunction(e) ? e : t
30458 var n, r, i, o, a, s;
30459 return o = l.time(function() {
30460 r = function(i, e) {
30464 for (var e = [], t = 0; t < i; t++) e.push(0);
30468 positioning: e.map(function(e, t) {
30471 position: function(e, t) {
30472 if (e.col > i) throw "md-grid-list: Tile at position " + t + " has a colspan (" + e.col + ") that exceeds the column count (" + i + ")";
30475 for (; r - n < e.col;) i <= o ? l() : -1 !== (n = s.indexOf(0, o)) && -1 !== (r = u(n + 1)) ? o = r + 1 : (n = r = 0, l());
30476 return c(n, e.col, e.row), o = n + e.col, {
30483 rowCount: a + Math.max.apply(Math, s)
30487 a++, c(o = 0, i, -1)
30490 function c(e, t, n) {
30491 for (var r = e; r < e + t; r++) s[r] = Math.max(s[r] + n, 0)
30496 for (t = e; t < s.length; t++)
30497 if (0 !== s[t]) return t;
30498 if (t === s.length) return t
30502 layoutInfo: function() {
30506 return a = l.time(function() {
30507 var e = n.layoutInfo();
30508 i = t(e.positioning, e.rowCount)
30511 reflow: function(e) {
30512 return s = l.time(function() {
30513 (e || c)(i.grid, i.tiles)
30516 performance: function() {
30518 tileCount: t.length,
30522 totalTime: o + a + s
30529 e.element.css(e.style), t.forEach(function(e) {
30530 e.element.css(e.style)
30538 require: "^mdGridList",
30539 template: "<figure ng-transclude></figure>",
30542 controller: ["$attrs", function(e) {
30545 link: function(e, t, n, r) {
30546 t.attr("role", "listitem");
30547 var i = o.watchResponsiveAttributes(["md-colspan", "md-rowspan"], n, ue.bind(r, r.invalidateLayout));
30548 r.invalidateTiles(), e.$on("$destroy", function() {
30549 t[0].$$mdDestroyed = !0, i(), r.invalidateLayout()
30550 }), ue.isDefined(e.$parent.$index) && e.$watch(function() {
30551 return e.$parent.$index
30552 }, function(e, t) {
30553 e !== t && r.invalidateTiles()
30561 template: "<figcaption ng-transclude></figcaption>",
30565 t.$inject = ["$mdUtil"], n.$inject = ["$mdUtil"], e.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia"], r.$inject = ["$mdMedia"], ue.module("material.components.gridList", ["material.core"]).directive("mdGridList", e).directive("mdGridTile", r).directive("mdGridTileFooter", i).directive("mdGridTileHeader", i).factory("$mdGridLayout", n), t.prototype = {
30566 invalidateTiles: function() {
30567 this.tilesInvalidated = !0, this.invalidateLayout()
30569 invalidateLayout: function() {
30570 this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(ue.bind(this, this.layout)))
30572 layout: function() {
30574 this.layoutDelegate(this.tilesInvalidated)
30576 this.layoutInvalidated = !1, this.tilesInvalidated = !1
30580 }(), ue.module("material.components.icon", ["material.core"]), ue.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(l, c, u, e) {
30583 link: function(e, t, n) {
30585 var r = n.mdFontIcon,
30586 i = l.fontSet(n.mdFontSet);
30587 n.mdSvgIcon || n.mdSvgSrc || (n.mdFontIcon && t.addClass("md-font " + n.mdFontIcon), t.addClass(i)), n.$observe("mdFontIcon", s), n.$observe("mdFontSet", s), t[0].getAttribute(n.$attr.mdSvgSrc);
30588 var o, a = n.$normalize(n.$attr.mdSvgIcon || n.$attr.mdSvgSrc || "");
30591 if (!n.mdSvgIcon && !n.mdSvgSrc) {
30592 n.mdFontIcon && (t.removeClass(r), t.addClass(n.mdFontIcon), r = n.mdFontIcon);
30593 var e = l.fontSet(n.mdFontSet);
30594 i !== e && (t.removeClass(i), t.addClass(e), i = e)
30597 n.role || (u.expect(t, "role", "img"), n.role = "img"), "img" !== n.role || n.ariaHidden || u.hasAriaLabel(t) || (n.alt ? u.expect(t, "aria-label", n.alt) : u.parentHasAriaLabel(t, 2) ? u.expect(t, "aria-hidden", "true") : (o = n.mdFontIcon || n.mdSvgIcon || t.text()) ? u.expect(t, "aria-label", o) : u.expect(t, "aria-hidden", "true")), a && n.$observe(a, function(e) {
30598 t.empty(), e && l(e).then(function(e) {
30599 t.empty(), t.append(e)
30606 a.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], ue.module("material.components.icon").constant("$$mdSvgRegistry", {
30607 mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
30608 mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
30609 mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
30610 mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
30611 mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
30612 mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
30613 mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
30614 }).provider("$mdIcon", e);
30616 defaultViewBoxSize: 24,
30617 defaultFontSet: "material-icons",
30624 this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
30627 function a(a, o, s, l, u, t) {
30630 n = /[-\w@:%+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%+.~#?&//=]*)?/i,
30631 d = /^data:image\/svg\+xml[\s*;\w\-=]*?(base64)?,(.*)$/i;
30632 return v.prototype = {
30633 clone: function() {
30634 return this.element.cloneNode(!0)
30636 prepare: function() {
30637 var e = this.config ? this.config.viewBoxSize : a.defaultViewBoxSize;
30642 preserveAspectRatio: "xMidYMid meet",
30643 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
30645 }, function(e, t) {
30646 this.element.setAttribute(t, e)
30649 }, e.fontSet = function(t) {
30650 if (ue.isUndefined(t) || !t || !t.length) return a.defaultFontSet;
30652 return ue.forEach(a.fontSets, function(e) {
30653 e.alias === t && (n = e.fontSet || n)
30658 return e = e || "", ue.isString(e) || (e = t.getTrustedUrl(e)), r[e] ? s.when(i(r[e])) : n.test(e) || d.test(e) ? g(e).then(h(e)) : (-1 === e.indexOf(":") && (e = "$default:" + e), (a[e] ? p : m)(e).then(h(e)))
30662 var n, r, i, o, a = e.clone(),
30664 l = ["clip-path", "color-profile", "cursor", "fill", "filter", "href", "marker-start", "marker-mid", "marker-end", "mask", "stroke", "style", "vector-effect"],
30665 c = a.innerHTML === de;
30666 if (!isFinite(Number(s))) throw new Error("Unsafe and unexpected non-number result from $mdUtil.nextUid().");
30667 return n = "_cache" + s, a.id && (a.id += n), ue.forEach(a.querySelectorAll("[id]"), function(t) {
30668 for (r = "", i = 0; i < l.length; i++) r += "[" + l[i] + '="url(#' + t.id + ')"]', i + 1 < l.length && (r += ", ");
30669 ue.forEach(a.querySelectorAll(r), function(e) {
30671 }), ue.forEach(a.querySelectorAll("style"), function(e) {
30673 }), ue.forEach(a.querySelectorAll("[*|href]:not([href])"), function(e) {
30674 (o = e.getAttribute("xlink:href")) && (o = o.replace("#" + t.id, "#" + t.id + n), e.setAttribute("xlink:href", o))
30679 function f(e, t, n, r) {
30681 if (!isFinite(Number(r))) throw new Error("Unsafe and unexpected non-number result for newUid.");
30682 o = "_cache" + r, n ? (i = (i = u.getOuterHTML(t)).replace("url(#" + e.id + ")", "url(#" + e.id + o + ")"), t.textContent = ue.element(i)[0].innerHTML) : t.outerHTML = t.outerHTML.replace("url(#" + e.id + ")", "url(#" + e.id + o + ")")
30686 return function(e) {
30688 return r[n] = (t = e, ue.isDefined(t.element) && ue.isDefined(t.config) ? e : new v(e, a[n])), i(r[n])
30694 return g(t.url).then(function(e) {
30700 var e = r.substring(0, r.lastIndexOf(":")) || "$default",
30702 return i ? g(i.url).then(function(e) {
30703 var t = r.slice(r.lastIndexOf(":") + 1),
30704 n = e.querySelector("#" + t);
30705 return n ? new v(n, i) : o(r)
30709 var t = "icon " + e + " not found";
30710 return l.warn(t), s.reject(t || e)
30715 return d.test(e) ? (t = e, n = d.exec(t), i = /base64/i.test(t) ? F.atob(n[2]) : n[2], s.when(ue.element(i)[0])) : (r = e, s(function(t, n) {
30716 o(r, !0).then(function(e) {
30717 c[r] || (c[r] = ue.element("<div>").append(e)[0].querySelector("svg")), t(c[r])
30719 var t = ue.isString(e) ? e : e.message || e.data || e.statusText;
30727 if (e && "symbol" === e.tagName.toLowerCase()) {
30728 var n = e.getAttribute("viewBox");
30729 e = e.innerHTML ? ue.element('<svg xmlns="http://www.w3.org/2000/svg">').html(e.innerHTML)[0] : ue.element('<svg xmlns="http://www.w3.org/2000/svg">').append(u.getInnerHTML(e))[0], n && e.setAttribute("viewBox", n)
30731 e && "svg" !== e.tagName.toLowerCase() && (e = ue.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 = t, this.prepare()
30735 icon: function(e, t, n) {
30736 return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
30738 iconSet: function(e, t, n) {
30739 return o[e] = new r(t, n), this
30741 defaultIconSet: function(e, t) {
30742 var n = "$default";
30743 return o[n] || (o[n] = new r(e, t)), o[n].viewBoxSize = t || o.defaultViewBoxSize, this
30745 defaultViewBoxSize: function(e) {
30746 return o.defaultViewBoxSize = e, this
30748 fontSet: function(e, t) {
30749 return o.fontSets.push({
30754 defaultFontSet: function(e) {
30755 return o.defaultFontSet = e || "", this
30757 defaultIconSize: function(e) {
30758 return o.defaultIconSize = e, this
30760 $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, i) {
30761 return a(o, e, t, n, r, i)
30766 t.$inject = ["$mdTheming", "$parse", "$$rAF"], n.$inject = ["$mdUtil", "$window", "$mdAria", "$timeout", "$mdGesture"], r.$inject = ["$animate", "$mdUtil"], i.$inject = ["$compile"], u.$inject = ["$mdUtil"], o.$inject = ["$document", "$timeout"], d.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil"], f.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil"], h.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"];
30767 var e = ue.module("material.components.input", ["material.core"]).directive("mdInputContainer", t).directive("label", function() {
30770 require: "^?mdInputContainer",
30771 link: function(e, t, n, r) {
30772 !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
30777 }).directive("input", n).directive("textarea", n).directive("mdMaxlength", r).directive("placeholder", i).directive("ngMessages", function() {
30780 link: function(e, t, n, r) {
30782 t.toggleClass("md-input-messages-animation", !0), t.toggleClass("md-auto-hide", !0), ("false" == n.mdAutoHide || (i = n, c.some(function(e) {
30784 }))) && t.toggleClass("md-auto-hide", !1);
30787 require: "^^?mdInputContainer"
30789 }).directive("ngMessage", u).directive("ngMessageExp", u).directive("mdSelectOnFocus", o).animation(".md-input-invalid", d).animation(".md-input-messages-animation", f).animation(".md-input-message-animation", h);
30791 function t(i, o, a) {
30792 n.$inject = ["$scope", "$element", "$attrs", "$animate"];
30793 var e = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
30794 t = e.reduce(function(e, t) {
30795 return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
30797 s = e.reduce(function(e, t) {
30798 return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
30802 compile: function(e) {
30803 var n = e[0].querySelector(t),
30804 r = e[0].querySelector(s);
30805 return function(e, t) {
30806 i(t), (n || r) && a(function() {
30807 var e = t[0].querySelector("md-icon") || t[0].querySelector(".md-icon");
30808 n && e && t.addClass("md-icon-left"), r && e && t.addClass("md-icon-right")
30815 function n(e, t, n, r) {
30817 i.isErrorGetter = n.mdIsError && o(n.mdIsError), i.delegateClick = function() {
30819 }, i.element = t, i.setFocused = function(e) {
30820 t.toggleClass("md-input-focused", !!e)
30821 }, i.setHasValue = function(e) {
30822 t.toggleClass("md-input-has-value", !!e)
30823 }, i.setHasPlaceholder = function(e) {
30824 t.toggleClass("md-input-has-placeholder", !!e)
30825 }, i.setInvalid = function(e) {
30826 e ? r.addClass(t, "md-input-invalid") : r.removeClass(t, "md-input-invalid")
30827 }, e.$watch(function() {
30828 return i.label && i.input
30830 e && !i.label.attr("for") && i.label.attr("for", i.input.attr("id"))
30835 function n(v, b, u, y, _) {
30838 require: ["^?mdInputContainer", "?ngModel", "?^form"],
30839 link: function(d, f, h, e) {
30842 g = e[1] || v.fakeNgModel(),
30844 n = ue.isDefined(h.readonly),
30845 r = v.parseAttributeBoolean(h.mdNoAsterisk),
30846 i = f[0].tagName.toLowerCase();
30848 if ("hidden" === h.type) return void f.attr("aria-hidden", "true");
30850 if (p.input[0].contains(f[0])) return;
30851 throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
30854 p.input = f, p.label && h.$observe("required", function(e) {
30855 p.label.toggleClass("md-required", e && !r)
30857 var o = ue.element('<div class="md-errors-spacer">');
30859 var a = ue.isString(h.placeholder) ? h.placeholder.trim() : "";
30860 p.label || a.length || u.expect(f, "aria-label");
30861 f.addClass("md-input"), f.attr("id") || f.attr("id", "input_" + v.nextUid());
30862 "input" === i && "number" === h.type && h.min && h.max && !h.step ? f.attr("step", "any") : "textarea" === i && function() {
30863 var t = !h.hasOwnProperty("mdNoAutogrow");
30865 if (!h.hasOwnProperty("mdNoResize")) {
30866 var e = ue.element('<div class="md-resize-handle"></div>'),
30870 i = _.register(e, "drag", {
30873 f.wrap('<div class="md-resize-wrapper">').after(e), e.on("mousedown", o), r.on("$md.dragstart", a).on("$md.drag", s).on("$md.dragend", l), d.$on("$destroy", function() {
30874 e.off("mousedown", o).remove(), r.off("$md.dragstart", a).off("$md.drag", s).off("$md.dragend", l), i(), i = r = e = null
30879 e.preventDefault(), t = !0, e.clientY, n = parseFloat(f.css("height")) || f.prop("offsetHeight")
30883 t && (e.preventDefault(), c(), r.addClass("md-input-resized"))
30887 t && f.css("height", n + e.pointer.distanceY + "px")
30891 t && (t = !1, r.removeClass("md-input-resized"))
30894 var o = h.hasOwnProperty("rows") ? parseInt(h.rows) : NaN,
30895 a = h.hasOwnProperty("maxRows") ? parseInt(h.maxRows) : NaN,
30896 n = d.$on("md-resize-textarea", r),
30901 }, 10, !1), f.on("input", r), m && g.$formatters.push(i);
30902 o || f.attr("rows", 1);
30905 f.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
30906 var e, t, n = (e = l.offsetHeight, t = l.scrollHeight - e, e + Math.max(t, 0));
30908 var r = f[0].style.padding || "";
30909 s = f.css("padding", 0).prop("offsetHeight"), f[0].style.padding = r
30911 if (o && s && (n = Math.max(n, s * o)), a && s) {
30913 i < n ? (f.attr("md-no-autogrow", ""), n = i) : f.removeAttr("md-no-autogrow")
30915 s && f.attr("rows", Math.round(n / s)), f.css("height", n + "px").removeClass("md-no-flex")
30919 return v.nextTick(r), e
30923 if (t && (t = !1, ue.element(b).off("resize", r), n && n(), f.attr("md-no-autogrow", "").off("input", r), m)) {
30924 var e = g.$formatters.indexOf(i); - 1 < e && g.$formatters.splice(e, 1)
30927 if (ue.element(b).on("resize", r), d.$on("$destroy", c), h.hasOwnProperty("mdDetectHidden")) {
30928 var e = (u = !1, function() {
30929 var e = 0 === l.offsetHeight;
30930 !1 === e && !0 === u && r(), u = e
30932 d.$watch(function() {
30933 return v.nextTick(e, !1), !0
30939 var s = p.isErrorGetter || function() {
30940 return g.$invalid && (g.$touched || t && t.$submitted)
30942 d.$watch(s, p.setInvalid), h.ngValue && h.$observe("value", c);
30943 g.$parsers.push(l), g.$formatters.push(l), f.on("input", c), n || f.on("focus", function(e) {
30944 v.nextTick(function() {
30947 }).on("blur", function(e) {
30948 v.nextTick(function() {
30949 p.setFocused(!1), c()
30954 return p.setHasValue(!g.$isEmpty(e)), e
30958 p.setHasValue(0 < f.val().length || (f[0].validity || {}).badInput)
30960 d.$on("$destroy", function() {
30961 p.setFocused(!1), p.setHasValue(!1), p.input = null
30970 require: ["ngModel", "^mdInputContainer"],
30971 link: function(e, r, t, n) {
30972 var i = parseInt(t.mdMaxlength);
30973 isNaN(i) && (i = -1);
30974 var o, a, s = n[0],
30976 c = !ue.isDefined(t.ngTrim) || p.parseAttributeBoolean(t.ngTrim),
30977 u = "password" === t.type;
30980 return (e = c && !u && ue.isString(e) ? e.trim() : e) !== de && null !== e || (e = ""), String(e).length
30984 o && o.parent() && o.text(d(r.val()) + " / " + i)
30986 e.$watch(t.mdMaxlength, function(e) {
30988 }), s.$validators["md-maxlength"] = function(e, t) {
30989 if (!ue.isNumber(i) || i < 0) return !0;
30991 var n = r.val() || t;
30992 return n !== de && null !== n || (n = ""), n = c && !u && ue.isString(n) ? n.trim() : n, String(n).length <= i
30993 }, s.$isEmpty = function(e) {
30995 }, p.nextTick(function() {
30996 a = ue.element(l.element[0].querySelector(".md-errors-spacer")), o = ue.element('<div class="md-char-counter">'), a.append(o), t.$observe("ngTrim", function(e) {
30997 c = !ue.isDefined(e) || p.parseAttributeBoolean(e)
30998 }), e.$watch(t.mdMaxlength, function(e) {
30999 ue.isNumber(e) && 0 < e ? (o.parent().length || h.enter(o, a), f()) : h.leave(o)
31009 require: "^^?mdInputContainer",
31012 pre: function(e, t, n, r) {
31014 var i = r.element.find("label"),
31015 o = r.element.attr("md-no-float");
31016 if (i && i.length || "" === o || e.$eval(o)) return void r.setHasPlaceholder(!0);
31017 if ("MD-SELECT" !== t[0].nodeName) {
31018 var a = ue.element('<label ng-click="delegateClick()" tabindex="-1" aria-hidden="true">' + n.placeholder + "</label>");
31019 n.$set("placeholder", null), r.element.addClass("md-icon-float").prepend(a), s(a)(e)
31029 link: function(e, t, n) {
31030 if ("INPUT" !== t[0].nodeName && "TEXTAREA" !== t[0].nodeName) return;
31035 a[0].activeElement === t[0] && t[0].select(), r = !1
31040 r && e.preventDefault()
31042 t.on("focus", i).on("mouseup", o), e.$on("$destroy", function() {
31043 t.off("focus", i).off("mouseup", o)
31048 F._mdMocksIncluded && e.service("$$mdInput", function() {
31054 }).service("mdInputInvalidAnimation", d).service("mdInputMessagesAnimation", f).service("mdInputMessageAnimation", h);
31055 var a, s, l, c = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"];
31060 compile: function(n) {
31062 else if (function() {
31064 for (; e = e.parentNode;)
31065 if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
31067 }()) return function(e, t) {
31072 return !!t.getClosest(e, "md-input-container")
31076 e.toggleClass("md-input-message-animation", !0)
31083 function d(e, t, n) {
31084 return y(e, t, n), {
31085 addClass: function(e, t, n) {
31091 function f(e, t, n) {
31092 return y(e, t, n), {
31093 enter: function(e, t) {
31096 leave: function(e, t) {
31099 addClass: function(e, t, n) {
31100 "ng-hide" == t ? m(e, n) : n()
31102 removeClass: function(e, t, n) {
31103 "ng-hide" == t ? p(e, n) : n()
31108 function h(e, t, n, r) {
31109 return y(e, t, n), {
31110 enter: function(e, t) {
31111 g(e).start().done(t)
31113 leave: function(e, t) {
31114 v(e).start().done(t)
31123 0 != i.length && 0 != o.length ? (ue.forEach(o, function(e) {
31124 n = g(ue.element(e)), r.push(n.start())
31125 }), a.all(r, t)) : t()
31132 0 != i.length && 0 != o.length ? (ue.forEach(o, function(e) {
31133 n = v(ue.element(e)), r.push(n.start())
31134 }), a.all(r, t)) : t()
31138 var t = parseInt(F.getComputedStyle(e[0]).height),
31139 n = parseInt(F.getComputedStyle(e[0]).marginTop),
31141 i = e.controller("mdInputContainer").element;
31142 return -t < n || r.hasClass("md-auto-hide") && !i.hasClass("md-input-invalid") ? s(e, {}) : s(e, {
31147 "margin-top": -t + "px"
31158 var t = e[0].offsetHeight,
31159 n = F.getComputedStyle(e[0]);
31160 return 0 === parseInt(n.opacity) ? s(e, {}) : s(e, {
31169 "margin-top": -t + "px"
31176 return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? ue.element(l.getClosest(e, function(e) {
31177 return e.classList.contains("md-input-messages-animation")
31178 })) : ue.element(e[0].querySelector(".md-input-messages-animation"))
31181 function y(e, t, n) {
31182 a = e, s = t, l = n
31189 compile: function(e) {
31190 return e[0].setAttribute("role", "list"), t
31195 function t(f, h, p, m) {
31196 var g = ["md-checkbox", "md-switch", "md-menu"];
31199 controller: "MdListController",
31200 compile: function(o, a) {
31201 var e, i, t, n = o[0].querySelectorAll(".md-secondary"),
31203 if (o[0].setAttribute("role", "listitem"), a.ngClick || a.ngDblclick || a.ngHref || a.href || a.uiSref || a.ngAttrUiSref) c("button");
31204 else if (!o.hasClass("md-no-proxy")) {
31205 for (var s, l = 0; s = g[l]; ++l)
31206 if (i = o[0].querySelector(s)) {
31209 } e ? c("div") : o.addClass("md-no-proxy")
31213 if ("div" == e)(r = ue.element('<div class="md-no-style md-list-item-inner">')).append(o.contents()), o.addClass("md-proxy-focus");
31215 r = ue.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');
31216 var t = ue.element('<md-button class="md-no-style"></md-button>');
31217 u(o[0], t[0]), t.attr("aria-label") || t.attr("aria-label", f.getText(o)), o.hasClass("md-no-focus") && t.addClass("md-no-focus"), r.prepend(t), r.children().eq(1).append(o.contents()), o.addClass("_md-button-wrap")
31219 o[0].setAttribute("tabindex", "-1"), o.append(r)
31222 function u(t, n, e) {
31223 var r = p.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"]);
31224 e && (r = r.concat(p.prefixer(e))), ue.forEach(r, function(e) {
31225 t.hasAttribute(e) && (n.setAttribute(e, t.getAttribute(e)), t.removeAttribute(e))
31230 for (var t = e.attributes, n = 0; n < t.length; n++)
31231 if ("ngClick" === a.$normalize(t[n].name)) return !0;
31234 return t = ue.element('<div class="md-secondary-container">'), ue.forEach(n, function(e) {
31236 if (e && ("MD-BUTTON" != (r = e.nodeName.toUpperCase()) && "BUTTON" != r) && e.hasAttribute("ng-click")) {
31237 f.expect(e, "aria-label");
31238 var n = ue.element('<md-button class="md-secondary md-icon-button">');
31239 u(e, n[0], ["ng-if", "ng-hide", "ng-show"]), e.setAttribute("tabindex", "-1"), n.append(e), e = n[0]
31242 !e || d(e) && (a.ngClick || (i = e, -1 == g.indexOf(i.nodeName.toLowerCase()))) || ue.element(e).removeClass("md-secondary"), o.addClass("md-with-secondary"), t.append(e)
31246 for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
31247 if ((e = o.find(t)[0]) && !e.hasAttribute("aria-label")) {
31248 var i = o.find("p")[0];
31250 e.setAttribute("aria-label", "Toggle " + i.textContent)
31252 }(), e && "MD-MENU" === i.nodeName && function() {
31253 var e = ue.element(i),
31254 t = e.parent().hasClass("md-secondary-container") || i.parentNode.firstElementChild !== i,
31256 t && (n = "right");
31257 e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
31258 var r = e.children().eq(0);
31259 d(r[0]) || r.attr("ng-click", "$mdMenu.open($event)");
31260 r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
31262 function(e, i, t, n) {
31265 o = i[0].firstElementChild,
31266 a = i.hasClass("_md-button-wrap") ? o.firstElementChild : o,
31268 l = i.hasClass("md-no-proxy");
31269 o && o.children && !s && !l && ue.forEach(g, function(e) {
31270 ue.forEach(o.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
31273 }), (1 == r.length || s) && (i.addClass("md-clickable"), s || n.attachRipple(e, ue.element(i[0].querySelector(".md-no-style")))), r.length && ue.forEach(r, function(t) {
31274 t = ue.element(t), e.mouseActive = !1, t.on("mousedown", function() {
31275 e.mouseActive = !0, m(function() {
31278 }).on("focus", function() {
31279 !1 === e.mouseActive && i.addClass("md-focused"), t.on("blur", function e() {
31280 i.removeClass("md-focused"), t.off("blur", e)
31284 var c = function(e) {
31285 if ("INPUT" != e.target.nodeName && "TEXTAREA" != e.target.nodeName && !e.target.isContentEditable) {
31286 var t = e.which || e.keyCode;
31287 t == h.KEY_CODE.SPACE && a && (a.click(), e.preventDefault(), e.stopPropagation())
31290 s || r.length || a && a.addEventListener("keypress", c);
31291 i.off("click"), i.off("keypress"), 1 == r.length && a && i.children().eq(0).on("click", function(t) {
31292 if (! function(e) {
31293 var t = ["md-slider"];
31294 if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
31295 for (var n = e.path.indexOf(i.children()[0]), r = 0; r < n; r++)
31296 if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
31298 var e = p.getClosest(t.target, "BUTTON");
31299 !e && a.contains(t.target) && ue.forEach(r, function(e) {
31300 t.target === e || e.contains(t.target) || ("MD-MENU" === e.nodeName && (e = e.children[0]), ue.element(e).triggerHandler("click"))
31304 e.$on("$destroy", function() {
31305 a && a.removeEventListener("keypress", c)
31312 function n(e, t, n) {
31313 this.attachRipple = function(e, t) {
31317 n.$inject = ["$scope", "$element", "$mdListInkRipple"], e.$inject = ["$mdTheming"], t.$inject = ["$mdAria", "$mdConstant", "$mdUtil", "$timeout"], ue.module("material.components.list", ["material.core"]).controller("MdListController", n).directive("mdList", e).directive("mdListItem", t)
31318 }(), ue.module("material.components.menu", ["material.core", "material.components.backdrop"]),
31320 function e(i, t, o, a, s, r, e, n, l) {
31321 var c, u, d = s.prefixer(),
31323 this.nestLevel = parseInt(t.mdNestLevel, 10) || 0, this.init = function(e, t) {
31324 t = t || {}, c = e, (u = o[0].querySelector(d.buildSelector(["ng-click", "ng-mouseenter"]))).setAttribute("aria-expanded", "false"), this.isInMenuBar = t.isInMenuBar, this.nestedMenus = s.nodesToArray(c[0].querySelectorAll(".md-nested-menu")), c.on("$mdInterimElementRemove", function() {
31325 f.isOpen = !1, s.nextTick(function() {
31326 f.onIsOpenChanged(f.isOpen)
31328 }), s.nextTick(function() {
31329 f.onIsOpenChanged(f.isOpen)
31331 var n = "menu_container_" + s.nextUid();
31332 c.attr("id", n), ue.element(u).attr({
31334 "aria-haspopup": "true"
31335 }), a.$on("$destroy", ue.bind(this, function() {
31336 this.disableHoverListener(), i.destroy()
31337 })), c.on("$destroy", function() {
31342 this.enableHoverListener = function() {
31343 m.push(e.$on("$mdMenuOpen", function(e, t) {
31344 c[0].contains(t[0]) && (f.currentlyOpenMenu = t.controller("mdMenu"), f.isAlreadyOpening = !1, f.currentlyOpenMenu.registerContainerProxy(f.triggerContainerProxy.bind(f)))
31345 })), m.push(e.$on("$mdMenuClose", function(e, t) {
31346 c[0].contains(t[0]) && (f.currentlyOpenMenu = de)
31347 })), (p = ue.element(s.nodesToArray(c[0].children[0].children))).on("mouseenter", f.handleMenuItemHover), p.on("mouseleave", f.handleMenuItemMouseLeave)
31348 }, this.disableHoverListener = function() {
31349 for (; m.length;) m.shift()();
31350 p && p.off("mouseenter", f.handleMenuItemHover), p && p.off("mouseleave", f.handleMenuItemMouseLeave)
31351 }, this.handleMenuItemHover = function(e) {
31352 if (!f.isAlreadyOpening) {
31353 var t = e.target.querySelector("md-menu") || s.getClosest(e.target, "MD-MENU");
31355 if (t && (t = ue.element(t).controller("mdMenu")), f.currentlyOpenMenu && f.currentlyOpenMenu != t) {
31356 var e = f.nestLevel + 1;
31357 f.currentlyOpenMenu.close(!0, {
31359 }), f.isAlreadyOpening = !!t, t && t.open()
31360 } else t && !t.isOpen && t.open && (f.isAlreadyOpening = !!t, t && t.open())
31362 var n = e.currentTarget.querySelector(".md-button:not([disabled])");
31365 }, this.handleMenuItemMouseLeave = function() {
31366 h && (r.cancel(h), h = de)
31367 }, this.open = function(e) {
31368 e && e.stopPropagation(), e && e.preventDefault(), f.isOpen || (f.enableHoverListener(), f.isOpen = !0, s.nextTick(function() {
31369 f.onIsOpenChanged(f.isOpen)
31370 }), (u = u || (e ? e.target : o[0])).setAttribute("aria-expanded", "true"), a.$emit("$mdMenuOpen", o), i.show({
31373 nestLevel: f.nestLevel,
31376 preserveElement: !0,
31378 }).finally(function() {
31379 u.setAttribute("aria-expanded", "false"), f.disableHoverListener()
31381 }, this.onIsOpenChanged = function(e) {
31382 e ? (c.attr("aria-hidden", "false"), o[0].classList.add("md-open"), ue.forEach(f.nestedMenus, function(e) {
31383 e.classList.remove("md-open")
31384 })) : (c.attr("aria-hidden", "true"), o[0].classList.remove("md-open")), a.$mdMenuIsOpen = f.isOpen
31385 }, this.focusMenuContainer = function() {
31386 var e = c[0].querySelector(d.buildSelector(["md-menu-focus-target", "md-autofocus"]));
31387 e || (e = c[0].querySelector(".md-button:not([disabled])")), e.focus()
31388 }, this.registerContainerProxy = function(e) {
31389 this.containerProxy = e
31390 }, this.triggerContainerProxy = function(e) {
31391 this.containerProxy && this.containerProxy(e)
31392 }, this.destroy = function() {
31393 return f.isOpen ? i.destroy() : n.when(!1)
31394 }, this.close = function(e, t) {
31396 f.isOpen = !1, s.nextTick(function() {
31397 f.onIsOpenChanged(f.isOpen)
31399 var n = ue.extend({}, t, {
31402 if (a.$emit("$mdMenuClose", o, n), i.hide(null, t), !e) {
31403 var r = f.restoreFocusTo || o.find("button")[0];
31404 r instanceof ue.element && (r = r[0]), r && r.focus()
31407 }, this.positionMode = function() {
31408 var e = (t.mdPositionMode || "target").split(" ");
31409 return 1 === e.length && e.push(e[0]), {
31413 }, this.offsets = function() {
31414 var e = (t.mdOffset || "0 0").split(" ").map(parseFloat);
31415 if (2 === e.length) return {
31419 if (1 === e.length) return {
31423 throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
31427 }, a.$mdOpenMenu = ue.bind(this, function() {
31428 return l.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
31431 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], ue.module("material.components.menu").controller("mdMenuCtrl", e)
31435 var s = "Invalid HTML for md-menu: ";
31438 require: ["mdMenu", "?^mdMenuBar"],
31439 controller: "mdMenuCtrl",
31441 compile: function(e) {
31442 e.addClass("md-menu");
31443 var t = e.children()[0],
31445 n.hasAttribute(t, "ng-click") || (t = t.querySelector(n.buildSelector(["ng-click", "ng-mouseenter"])) || t);
31446 var r = "MD-BUTTON" === t.nodeName || "BUTTON" === t.nodeName;
31447 t && r && !t.hasAttribute("type") && t.setAttribute("type", "button");
31448 if (!t) throw Error(s + "Expected the menu to have a trigger element.");
31449 if (2 !== e.children().length) throw Error(s + "Expected two children elements. The second element must have a `md-menu-content` element.");
31450 t && t.setAttribute("aria-haspopup", "true");
31451 var i = e[0].querySelectorAll("md-menu"),
31452 o = parseInt(e[0].getAttribute("md-nest-level"), 10) || 0;
31453 i && ue.forEach(a.nodesToArray(i), function(e) {
31454 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", o + 1)
31460 function l(e, t, n, r) {
31463 a = ue.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
31464 s = t.children()[1];
31465 t.addClass("_md"), s.hasAttribute("role") || s.setAttribute("role", "menu"), a.append(s), t.on("$destroy", function() {
31467 }), t.append(a), a[0].style.display = "none", i.init(a, {
31472 e.$inject = ["$mdUtil"], ue.module("material.components.menu").directive("mdMenu", e)
31476 t.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
31478 return e("$mdMenu").setDefaults({
31479 methods: ["target"],
31483 function t(w, c, u, E, C, d, f, h, p, m) {
31484 var k = w.prefixer(),
31485 g = w.dom.animator;
31488 onShow: function(a, n, s) {
31490 if (!s.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
31494 target: ue.element(s.target),
31495 parent: ue.element(s.parent),
31496 menuContentEl: ue.element(n[0].querySelector("md-menu-content"))
31498 })(), s.menuContentEl[0] ? c.inherit(s.menuContentEl, s.target) : m.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.", n);
31499 return s.cleanupResizing = (r = n, i = s, o = f.throttle(function() {
31500 if (!s.isRemoved) {
31504 }), C.addEventListener("resize", o), C.addEventListener("orientationchange", o), function() {
31505 C.removeEventListener("resize", o), C.removeEventListener("orientationchange", o)
31506 }), s.hideBackdrop = (e = a, t = s, t.nestLevel ? ue.noop : (t.disableParentScroll && !w.getClosest(t.target, "MD-DIALOG") ? t.restoreScroll = w.disableScrollAround(t.element, t.parent) : t.disableParentScroll = !1, t.hasBackdrop && (t.backdrop = w.createBackdrop(e, "md-menu-backdrop md-click-catcher"), p.enter(t.backdrop, E[0].body)), function() {
31507 t.backdrop && t.backdrop.remove(), t.disableParentScroll && t.restoreScroll()
31508 })), (s.parent.append(n), n[0].style.display = "", d(function(e) {
31510 n.removeClass("md-leave"), h(n, {
31511 addClass: "md-active",
31517 })).then(function(e) {
31518 return s.alreadyOpen = !0, s.cleanupInteraction = function() {
31519 if (!s.menuContentEl[0]) return ue.noop;
31520 s.menuContentEl.on("keydown", i), s.menuContentEl[0].addEventListener("click", o, !0);
31521 var e = s.menuContentEl[0].querySelector(k.buildSelector(["md-menu-focus-target", "md-autofocus"]));
31523 for (var t = s.menuContentEl[0].children.length, n = 0; n < t; n++) {
31524 var r = s.menuContentEl[0].children[n];
31525 if (e = r.querySelector(".md-button:not([disabled])")) break;
31526 if (r.firstElementChild && !r.firstElementChild.disabled) {
31527 e = r.firstElementChild;
31531 return e && e.focus(),
31533 s.menuContentEl.off("keydown", i), s.menuContentEl[0].removeEventListener("click", o, !0)
31538 switch (e.keyCode) {
31539 case u.KEY_CODE.ESCAPE:
31540 s.mdMenuCtrl.close(!1, {
31544 case u.KEY_CODE.TAB:
31545 s.mdMenuCtrl.close(!1, {
31549 case u.KEY_CODE.UP_ARROW:
31550 v(e, s.menuContentEl, s, -1) || s.nestLevel || s.mdMenuCtrl.triggerContainerProxy(e), t = !0;
31552 case u.KEY_CODE.DOWN_ARROW:
31553 v(e, s.menuContentEl, s, 1) || s.nestLevel || s.mdMenuCtrl.triggerContainerProxy(e), t = !0;
31555 case u.KEY_CODE.LEFT_ARROW:
31556 s.nestLevel ? s.mdMenuCtrl.close() : s.mdMenuCtrl.triggerContainerProxy(e), t = !0;
31558 case u.KEY_CODE.RIGHT_ARROW:
31559 var n = w.getClosest(e.target, "MD-MENU");
31560 n && n != s.parent[0] ? e.target.click() : s.mdMenuCtrl.triggerContainerProxy(e), t = !0
31562 t && (e.preventDefault(), e.stopImmediatePropagation())
31568 if (t == s.menuContentEl[0]) return;
31569 if ((r(t, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == t.nodeName || "MD-BUTTON" == t.nodeName) && !r(t, ["md-prevent-menu-close"])) {
31570 var n = w.getClosest(t, "MD-MENU");
31571 t.hasAttribute("disabled") || n && n != s.parent[0] || a.$apply(function() {
31572 s.mdMenuCtrl.close(!0, {
31578 } while (t = t.parentNode);
31582 for (var n, r = 0; n = t[r]; ++r)
31583 if (k.hasAttribute(e, n)) return !0;
31587 }(), s.cleanupBackdrop = s.backdrop ? (s.backdrop.on("click", l), function() {
31588 s.backdrop.off("click", l)
31589 }) : ue.noop, n.addClass("md-clickable"), e
31595 e.preventDefault(), e.stopPropagation(), a.$apply(function() {
31596 s.mdMenuCtrl.close(!0, {
31602 onRemove: function(e, n, r) {
31603 return r.cleanupInteraction(), r.cleanupBackdrop(), r.cleanupResizing(), r.hideBackdrop(), n.removeClass("md-clickable"), !0 === r.$destroy ? t() : h(n, {
31604 addClass: "md-leave"
31605 }).start().then(t);
31609 n.removeClass("md-active"), e = n, (t = r).preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e)), r.alreadyOpen = !1
31613 disableParentScroll: !0,
31620 function v(e, t, n, r) {
31621 for (var i, o = w.getClosest(e.target, "MD-MENU-ITEM"), a = w.nodesToArray(t[0].children), s = a.indexOf(o) + r; 0 <= s && s < a.length; s += r) {
31622 if (i = l(a[s].querySelector(".md-button"))) break
31628 if (e && -1 != e.getAttribute("tabindex")) return e.focus(), E[0].activeElement == e
31633 i = e[0].firstElementChild,
31634 o = i.getBoundingClientRect(),
31635 a = E[0].body.getBoundingClientRect(),
31636 s = C.getComputedStyle(i),
31637 l = t.target[0].querySelector(k.buildSelector("md-menu-origin")) || t.target[0],
31638 c = l.getBoundingClientRect(),
31641 top: Math.max(a.top, 0) + x,
31642 bottom: Math.max(a.bottom, Math.max(a.top, 0) + a.height) - x,
31657 h = t.mdMenuCtrl.positionMode();
31658 "target" !== h.top && "target" !== h.left && "target-right" !== h.left || (n = function() {
31659 for (var e = 0; e < i.children.length; ++e)
31660 if ("none" != C.getComputedStyle(i.children[e]).display) return i.children[e]
31661 }()) && (d = (n = (n = n.firstElementChild || n).querySelector(k.buildSelector("md-menu-align-target")) || n).getBoundingClientRect(), f = {
31662 top: parseFloat(r.style.top || 0),
31663 left: parseFloat(r.style.left || 0)
31669 p.top = f.top + c.top - d.top;
31672 p.top = c.top - parseFloat(s.paddingTop) - l.style.top;
31675 p.top = c.top + c.height;
31678 throw new Error('Invalid target mode "' + h.top + '" specified for md-menu on Y axis.')
31680 var g = "rtl" === w.bidi();
31683 p.left = f.left + c.left - d.left, m += g ? "right" : "left";
31685 case "target-left":
31686 p.left = c.left, m += "left";
31688 case "target-right":
31689 p.left = c.right - o.width + (o.right - d.right), m += "right";
31692 var v = g ? c.left - o.width < u.left : c.right + o.width < u.right;
31693 p.left = v ? c.right - l.style.left : c.left - l.style.left - o.width, m += v ? "left" : "right";
31696 g ? (p.left = c.right - c.width, m += "left") : (p.left = c.right - o.width, m += "right");
31699 g ? (p.left = c.right - o.width, m += "right") : (p.left = c.left, m += "left");
31702 throw new Error('Invalid target mode "' + h.left + '" specified for md-menu on X axis.')
31704 var b, y = t.mdMenuCtrl.offsets();
31705 p.top += y.top, p.left += y.left, (b = p).top = Math.max(Math.min(b.top, u.bottom - r.offsetHeight), u.top), b.left = Math.max(Math.min(b.left, u.right - r.offsetWidth), u.left);
31706 var _ = Math.round(100 * Math.min(c.width / r.offsetWidth, 1)) / 100,
31707 $ = Math.round(100 * Math.min(c.height / r.offsetHeight, 1)) / 100;
31709 top: Math.round(p.top),
31710 left: Math.round(p.left),
31711 transform: t.alreadyOpen ? de : w.supplant("scale({0},{1})", [_, $]),
31718 return e instanceof ue.element && (e = e[0]), e
31721 e.$inject = ["$$interimElementProvider"], ue.module("material.components.menu").provider("$mdMenu", e)
31722 }(), ue.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
31724 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], ue.module("material.components.menuBar").controller("MenuBarController", e);
31725 var c = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
31727 function e(e, t, n, r, i, o, a, s) {
31728 this.$element = n, this.$attrs = r, this.$mdConstant = i, this.$mdUtil = a, this.$document = o, this.$scope = e, this.$rootScope = t, this.$timeout = s;
31730 ue.forEach(c, function(e) {
31731 l[e] = ue.bind(l, l[e])
31734 e.prototype.init = function() {
31735 var o = this.$element,
31740 o.on("keydown", this.handleKeyDown), this.parentToolbar = a.getClosest(o, "MD-TOOLBAR"), t.push(this.$rootScope.$on("$mdMenuOpen", function(e, t) {
31741 -1 != s.getMenus().indexOf(t[0]) && (o[0].classList.add("md-open"), t[0].classList.add("md-open"), s.currentlyOpenMenu = t.controller("mdMenu"), s.currentlyOpenMenu.registerContainerProxy(s.handleKeyDown), s.enableOpenOnHover())
31742 })), t.push(this.$rootScope.$on("$mdMenuClose", function(e, t, n) {
31743 var r = s.getMenus();
31744 if (-1 != r.indexOf(t[0]) && (o[0].classList.remove("md-open"), t[0].classList.remove("md-open")), o[0].contains(t[0])) {
31745 for (var i = t[0]; i && -1 == r.indexOf(i);) i = a.getClosest(i, "MD-MENU", !0);
31746 i && (n.skipFocus || i.querySelector("button:not([disabled])").focus(), s.currentlyOpenMenu = de, s.disableOpenOnHover(), s.setKeyboardMode(!0))
31748 })), e.$on("$destroy", function() {
31749 for (s.disableOpenOnHover(); t.length;) t.shift()()
31750 }), this.setKeyboardMode(!0)
31751 }, e.prototype.setKeyboardMode = function(e) {
31752 e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
31753 }, e.prototype.enableOpenOnHover = function() {
31754 if (!this.openOnHoverEnabled) {
31756 e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
31757 ue.element(e.parentToolbar).on("click", e.handleParentClick)
31758 }, !1)), ue.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
31760 }, e.prototype.handleMenuHover = function(e) {
31761 this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
31762 }, e.prototype.disableOpenOnHover = function() {
31763 this.openOnHoverEnabled && (this.openOnHoverEnabled = !1, this.parentToolbar && (this.parentToolbar.classList.remove("md-has-open-menu"), ue.element(this.parentToolbar).off("click", this.handleParentClick)), ue.element(this.getMenus()).off("mouseenter", this.handleMenuHover))
31764 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
31765 var t = ue.element(e.currentTarget).controller("mdMenu");
31766 this.setKeyboardMode(!1), this.scheduleOpenMenu(t)
31767 }, e.prototype.scheduleOpenMenu = function(e) {
31770 e != t.currentlyOpenMenu && (n.cancel(t.pendingMenuOpen), t.pendingMenuOpen = n(function() {
31771 t.pendingMenuOpen = de, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
31775 }, e.prototype.handleKeyDown = function(e) {
31776 var t, n, r, i = this.$mdConstant.KEY_CODE,
31777 o = this.currentlyOpenMenu,
31779 switch (this.setKeyboardMode(!0), e.keyCode) {
31781 o ? o.focusMenuContainer() : this.openFocusedMenu(), t = !0;
31784 o && o.close(), t = !0;
31787 n = this.focusMenu(-1), a && (r = ue.element(n).controller("mdMenu"), this.scheduleOpenMenu(r)), t = !0;
31789 case i.RIGHT_ARROW:
31790 n = this.focusMenu(1), a && (r = ue.element(n).controller("mdMenu"), this.scheduleOpenMenu(r)), t = !0
31792 t && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
31793 }, e.prototype.focusMenu = function(e) {
31794 var t = this.getMenus(),
31795 n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
31797 if (-1 == n ? r = !(n = 0) : (e < 0 && 0 < n || 0 < e && n < t.length - e) && (n += e, r = !0), r) return t[n].querySelector("button").focus(), t[n]
31798 }, e.prototype.openFocusedMenu = function() {
31799 var e = this.getFocusedMenu();
31800 e && ue.element(e).controller("mdMenu").open()
31801 }, e.prototype.getMenus = function() {
31802 var e = this.$element;
31803 return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
31804 return "MD-MENU" == e.nodeName
31806 }, e.prototype.getFocusedMenu = function() {
31807 return this.getMenus()[this.getFocusedMenuIndex()]
31808 }, e.prototype.getFocusedMenuIndex = function() {
31809 var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
31810 return e ? this.getMenus().indexOf(e) : -1
31811 }, e.prototype.getOpenMenuIndex = function() {
31812 for (var e = this.getMenus(), t = 0; t < e.length; ++t)
31813 if (e[t].classList.contains("md-open")) return t;
31815 }, e.prototype.handleParentClick = function(e) {
31816 var t = this.querySelector("md-menu.md-open");
31817 t && !t.contains(e.target) && ue.element(t).controller("mdMenu").close(!0, {
31826 require: "mdMenuBar",
31827 controller: "MenuBarController",
31828 compile: function(e, t) {
31829 return t.ariaRole || e[0].setAttribute("role", "menubar"), ue.forEach(e[0].children, function(e) {
31830 if ("MD-MENU" == e.nodeName) {
31831 e.hasAttribute("md-position-mode") || (e.setAttribute("md-position-mode", "left bottom"), e.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
31832 var t = n.nodesToArray(e.querySelectorAll("md-menu-content"));
31833 ue.forEach(t, function(e) {
31834 e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
31837 }), e.find("md-menu-item").addClass("md-in-menu-bar"),
31838 function(e, t, n, r) {
31839 t.addClass("_md"), i(e, t), r.init()
31844 e.$inject = ["$mdUtil", "$mdTheming"], ue.module("material.components.menuBar").directive("mdMenuBar", e)
31845 }(), ue.module("material.components.menuBar").directive("mdMenuDivider", function() {
31848 compile: function(e, t) {
31849 t.role || e[0].setAttribute("role", "separator")
31854 function e(e, t, n) {
31855 this.$element = t, this.$attrs = n, this.$scope = e
31857 e.$inject = ["$scope", "$element", "$attrs"], ue.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
31858 var t = this.$element,
31860 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())
31861 }, e.prototype.clearNgAria = function() {
31862 var t = this.$element[0];
31863 ue.forEach(["role", "tabindex", "aria-invalid", "aria-checked"], function(e) {
31864 t.removeAttribute(e)
31866 }, e.prototype.initClickListeners = function() {
31871 i = (this.$element, this.mode);
31872 this.handleClick = ue.bind(this, this.handleClick);
31873 var o = this.iconEl,
31874 a = ue.element(this.buttonEl),
31875 s = this.handleClick;
31878 e ? a.off("click", s) : a.on("click", s)
31880 r.$observe("disabled", l), l(r.disabled), t.$render = function() {
31881 e.clearNgAria(), ! function() {
31883 if ("radio" != i) return t.$modelValue;
31884 var e = r.ngValue ? n.$eval(r.ngValue) : r.value;
31885 return t.$modelValue == e
31887 }() ? (o.style.display = "none", a.attr("aria-checked", "false")) : (o.style.display = "", a.attr("aria-checked", "true"))
31888 }, n.$$postDigest(t.$render)
31889 }, e.prototype.handleClick = function(e) {
31890 var t, n = this.mode,
31893 "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
31897 function e(u, e, d) {
31899 controller: "MenuItemController",
31900 require: ["mdMenuItem", "?ngModel"],
31901 priority: e.BEFORE_NG_ARIA,
31902 compile: function(r, e) {
31903 var t, n, i = e.type,
31904 o = "md-in-menu-bar";
31905 if ("checkbox" !== i && "radio" !== i || !r.hasClass(o)) c("role", "menuitem", r[0].querySelector("md-button, button, a"));
31907 var a = r[0].textContent,
31908 s = ue.element('<md-button type="button"></md-button>'),
31909 l = '<md-icon md-svg-src="' + d.mdChecked + '"></md-icon>';
31910 s.html(a), s.attr("tabindex", "0"), ue.isDefined(e.mdPreventMenuClose) && s.attr("md-prevent-menu-close", e.mdPreventMenuClose), r.html(""), r.append(ue.element(l)), r.append(s), r.addClass("md-indent").removeClass(o), c("role", "checkbox" === i ? "menuitemcheckbox" : "menuitemradio", s), t = "ng-disabled", n = u.prefixer(t), ue.forEach(n, function(e) {
31911 if (r[0].hasAttribute(e)) {
31912 var t = r[0].getAttribute(e);
31913 s[0].setAttribute(e, t), r[0].removeAttribute(e)
31917 return function(e, t, n, r) {
31923 function c(e, t, n) {
31924 (n = n || r) instanceof ue.element && (n = n[0]), n.hasAttribute(e) || n.setAttribute(e, t)
31929 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], ue.module("material.components.menuBar").directive("mdMenuItem", e)
31937 controllerAs: "ctrl",
31938 bindToController: !0,
31940 mdSelectedNavItem: "=?",
31942 navBarAriaLabel: "@?"
31944 template: '<div class="md-nav-bar"><nav role="navigation"><ul class="_md-nav-bar-list" ng-transclude role="tablist" ng-focus="ctrl.onFocus()" aria-label="{{ctrl.navBarAriaLabel}}"></ul></nav><md-nav-ink-bar ng-hide="ctrl.mdNoInkBar"></md-nav-ink-bar></div>',
31945 link: function(e, t, n, r) {
31946 o(t), r.navBarAriaLabel || i.expectAsync(t, "aria-label", ue.noop)
31951 function t(e, t, n, r) {
31952 this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
31954 o = this._$scope.$watch(function() {
31955 return i._navBarEl.querySelectorAll("._md-nav-button").length
31957 0 < e && (i._initTabs(), o())
31961 function n(u, e, d, f) {
31964 require: ["mdNavItem", "^mdNavBar"],
31966 bindToController: !0,
31967 controllerAs: "ctrl",
31970 template: function(e, t) {
31971 var n, r, i = t.mdNavClick,
31975 if (1 < (i ? 1 : 0) + (o ? 1 : 0) + (a ? 1 : 0)) throw Error("Please do not specify more than one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
31976 if (i !== de && null !== i) n = 'ng-click="ctrl.mdNavClick()"';
31977 else if (o !== de && null !== o) n = 'ng-href="{{ctrl.mdNavHref}}"';
31979 if (a === de || null === a) throw Error("Please specify at least one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
31980 n = 'ui-sref="{{ctrl.mdNavSref}}"'
31982 return n && (r = '<md-button class="_md-nav-button md-accent" ng-class="ctrl.getNgClassMap()" ng-blur="ctrl.setFocused(false)" ng-disabled="ctrl.disabled" tabindex="-1" role="tab" ng-attr-aria-label="{{ctrl.navItemAriaLabel ? ctrl.navItemAriaLabel : undefined}}" aria-selected="{{ctrl.isSelected()}}" ' + (s ? 'ui-sref-opts="{{ctrl.srefOpts}}" ' : "") + n + '><span ng-transclude class="_md-nav-button-text"></span></md-button>'), '<li class="md-nav-item" role="presentation">' + (r || "") + "</li>"
31990 navItemAriaLabel: "@?"
31992 link: function(n, r, i, o) {
31995 if (s = o[0], l = o[1], c = ue.element(r[0].querySelector("._md-nav-button")), s.name || (s.name = ue.element(r[0].querySelector("._md-nav-button-text")).text().trim()), c.on("keydown", function(e) {
31997 }), c.on("focus", function() {
31998 l.getFocusedTab() || l.onFocus()
31999 }), c.on("click", function() {
32000 l.mdSelectedNavItem = s.name, n.$apply()
32001 }), s.disabled = d.parseAttributeBoolean(i.disabled, !1), "MutationObserver" in f) {
32003 t = new MutationObserver(function(e) {
32004 d.nextTick(function() {
32005 s.disabled = d.parseAttributeBoolean(i[e[0].attributeName], !1)
32010 attributeFilter: ["disabled"]
32011 }), a = t.disconnect.bind(t)
32012 } else i.$observe("disabled", function(e) {
32013 s.disabled = d.parseAttributeBoolean(e, !1)
32015 s.navItemAriaLabel || u.expectWithText(c, "aria-label")
32016 }), n.$on("destroy", function() {
32017 c.off("keydown"), c.off("focus"), c.off("click"), a()
32024 this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this.navItemAriaLabel, this._selected = !1, this._focused = !1
32026 e.$inject = ["$mdAria", "$mdTheming"], t.$inject = ["$element", "$scope", "$timeout", "$mdConstant"], n.$inject = ["$mdAria", "$$rAF", "$mdUtil", "$window"], r.$inject = ["$element"], ue.module("material.components.navBar", ["material.core"]).controller("MdNavBarController", t).directive("mdNavBar", e).controller("MdNavItemController", r).directive("mdNavItem", n), t.prototype._initTabs = function() {
32027 this._inkbar = ue.element(this._navBarEl.querySelector("md-nav-ink-bar"));
32029 this._$timeout(function() {
32030 n._updateTabs(n.mdSelectedNavItem, de)
32031 }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(e, t) {
32032 n._$timeout(function() {
32033 n._updateTabs(e, t)
32036 }, t.prototype._updateTabs = function(e, t) {
32038 r = this._getTabs(),
32043 s = this._getTabByName(e),
32044 l = this._getTabByName(t);
32045 l && (l.setSelected(!1), o = r.indexOf(l)), s && (s.setSelected(!0), a = r.indexOf(s)), this._$timeout(function() {
32046 n._updateInkBarStyles(s, a, o), s && l && !i && n._moveFocus(l, s)
32049 }, t.prototype._updateInkBarStyles = function(e, t, n) {
32050 if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", n < t), this._inkbar.css({
32051 display: t < 0 ? "none" : ""
32053 var r = e.getButtonEl(),
32057 width: r.offsetWidth + "px"
32060 }, t.prototype._getTabs = function() {
32061 var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
32062 return ue.element(e).controller("mdNavItem")
32064 return e.indexOf(de) ? e : null
32065 }, t.prototype._getTabByName = function(t) {
32066 return this._findTab(function(e) {
32067 return e.getName() === t
32069 }, t.prototype._getSelectedTab = function() {
32070 return this._findTab(function(e) {
32071 return e.isSelected()
32073 }, t.prototype.getFocusedTab = function() {
32074 return this._findTab(function(e) {
32075 return e.hasFocus()
32077 }, t.prototype._findTab = function(e, t) {
32078 var n = this._getTabs();
32079 t !== de && null !== t || (t = 0);
32080 for (var r = t; r < n.length; r++)
32081 if (e(n[r])) return n[r];
32083 }, t.prototype._findTabReverse = function(e, t) {
32084 var n = this._getTabs();
32085 t !== de && null !== t || (t = n.length - 1);
32086 for (var r = t; 0 <= r; r--)
32087 if (e(n[r])) return n[r];
32089 }, t.prototype.onFocus = function() {
32090 var e = this._getSelectedTab();
32091 e && e.setFocused(!0)
32092 }, t.prototype._moveFocus = function(e, t) {
32093 e.setFocused(!1), t.setFocused(!0)
32094 }, t.prototype._focusFirstTab = function() {
32095 if (this._getTabs()) {
32096 var e = this._findTab(function(e) {
32097 return e._isEnabled()
32099 e && this._moveFocus(this.getFocusedTab(), e)
32101 }, t.prototype._focusLastTab = function() {
32102 if (this._getTabs()) {
32103 var e = this._findTabReverse(function(e) {
32104 return e._isEnabled()
32106 e && this._moveFocus(this.getFocusedTab(), e)
32108 }, t.prototype._focusNextTab = function(e) {
32109 if (this._getTabs()) {
32110 var t = this._findTab(function(e) {
32111 return e._isEnabled()
32113 t ? this._moveFocus(this.getFocusedTab(), t) : this._focusFirstTab()
32115 }, t.prototype._focusPreviousTab = function(e) {
32116 if (this._getTabs()) {
32117 var t = this._findTabReverse(function(e) {
32118 return e._isEnabled()
32120 t ? this._moveFocus(this.getFocusedTab(), t) : this._focusLastTab()
32122 }, t.prototype.onKeydown = function(e) {
32123 var t = this._$mdConstant.KEY_CODE,
32124 n = this._getTabs(),
32125 r = this.getFocusedTab();
32127 var i = n.indexOf(r);
32128 switch (e.keyCode) {
32131 e.preventDefault(), this._focusPreviousTab(i);
32134 case t.RIGHT_ARROW:
32135 e.preventDefault(), this._focusNextTab(i);
32139 this._$timeout(function() {
32140 r.getButtonEl().click()
32144 e.preventDefault(), this._focusFirstTab();
32147 e.preventDefault(), this._focusLastTab()
32150 }, r.prototype.getNgClassMap = function() {
32152 "md-active": this._selected,
32153 "md-primary": this._selected,
32154 "md-unselected": !this._selected,
32155 "md-focused": this._focused
32157 }, r.prototype.getName = function() {
32159 }, r.prototype.getButtonEl = function() {
32160 return this._$element[0].querySelector("._md-nav-button")
32161 }, r.prototype.setSelected = function(e) {
32162 (this._selected = e) ? this.getButtonEl().setAttribute("tabindex", "0"): this.getButtonEl().setAttribute("tabindex", "-1")
32163 }, r.prototype.isSelected = function() {
32164 return this._selected
32165 }, r.prototype.setFocused = function(e) {
32166 (this._focused = e) && this.getButtonEl().focus()
32167 }, r.prototype.hasFocus = function() {
32168 return this._focused
32169 }, r.prototype._isEnabled = function() {
32170 return !this._$element.attr("disabled")
32174 s.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], ue.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
32179 $get: ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
32180 return new s(i, e, t, n, r)
32185 a = "_md-panel-hidden",
32186 n = ue.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
32190 if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
32191 if (i.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
32192 delete t.id, delete t.position, delete t.animation, i[e] = t
32203 function s(e, t, n, r, i) {
32204 this._defaultConfigOptions = {
32205 bindToController: !0,
32206 clickOutsideToClose: !1,
32207 disableParentScroll: !1,
32212 propagateContainerEvents: !1,
32213 transformTemplate: ue.bind(this, this._wrapTemplate),
32216 }, this._config = {}, this._presets = e, this._$rootElement = t, this._$rootScope = n, this._$injector = r, this._$window = i, this._$mdUtil = this._$injector.get("$mdUtil"), this._trackedPanels = {}, this._groups = Object.create(null), this.animation = c.animation, this.xPosition = p.xPosition, this.yPosition = p.yPosition, this.interceptorTypes = l.interceptorTypes, this.closeReasons = l.closeReasons, this.absPosition = p.absPosition
32220 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 = {
32227 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
32231 this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
32235 var t = ue.isString(e) ? document.querySelector(e) : e;
32236 return ue.element(t)
32240 return ue.isNumber(e) ? e + "px" : e
32242 s.prototype.create = function(e, t) {
32243 if ("string" == typeof e ? e = this._getPresetByName(e) : "object" != typeof e || !ue.isUndefined(t) && t || (t = e, e = {}), e = e || {}, t = t || {}, ue.isDefined(t.id) && this._trackedPanels[t.id]) {
32244 var n = this._trackedPanels[t.id];
32245 return ue.extend(n.config, t), n
32247 this._config = ue.extend({
32248 id: t.id || "panel_" + this._$mdUtil.nextUid(),
32249 scope: this._$rootScope.$new(!0),
32250 attachTo: this._$rootElement
32251 }, this._defaultConfigOptions, t, e);
32252 var r = new l(this._config, this._$injector);
32253 return this._trackedPanels[this._config.id] = r, this._config.groupName && (ue.isString(this._config.groupName) && (this._config.groupName = [this._config.groupName]), ue.forEach(this._config.groupName, function(e) {
32255 })), this._config.scope.$on("$destroy", ue.bind(r, r.detach)), r
32256 }, s.prototype.open = function(e, t) {
32257 var n = this.create(e, t);
32258 return n.open().then(function() {
32261 }, s.prototype._getPresetByName = function(e) {
32262 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.");
32263 return this._presets[e]
32264 }, s.prototype.newPanelPosition = function() {
32265 return new p(this._$injector)
32266 }, s.prototype.newPanelAnimation = function() {
32267 return new c(this._$injector)
32268 }, s.prototype.newPanelGroup = function(e, t) {
32269 if (!this._groups[e]) {
32273 maxOpen: 0 < (t = t || {}).maxOpen ? t.maxOpen : 1 / 0
32275 this._groups[e] = n
32277 return this._groups[e]
32278 }, s.prototype.setGroupMaxOpen = function(e, t) {
32279 if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
32280 this._groups[e].maxOpen = t
32281 }, s.prototype._openCountExceedsMaxOpen = function(e) {
32282 if (this._groups[e]) {
32283 var t = this._groups[e];
32284 return 0 < t.maxOpen && t.openPanels.length > t.maxOpen
32287 }, s.prototype._closeFirstOpenedPanel = function(e) {
32288 this._groups[e].openPanels[0].close()
32289 }, s.prototype._wrapTemplate = function(e) {
32290 return '<div class="md-panel-outer-wrapper"> <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
32291 }, s.prototype._wrapContentElement = function(e) {
32292 var t = ue.element('<div class="md-panel-outer-wrapper">');
32293 return e.addClass("md-panel _md-panel-offscreen"), t.append(e), t
32294 }, l.interceptorTypes = {
32296 }, l.prototype.open = function() {
32298 return this._$q(function(e, t) {
32299 var n = i._done(e, i),
32300 r = i._simpleBind(i.show, i);
32301 i.attach().then(r).then(function() {
32302 i.config.groupName && ue.forEach(i.config.groupName, function(e) {
32303 i._$mdPanel._openCountExceedsMaxOpen(e) && i._$mdPanel._closeFirstOpenedPanel(e)
32305 }).then(n).catch(t)
32307 }, l.prototype.close = function(o) {
32309 return this._$q(function(r, i) {
32310 a._callInterceptors(l.interceptorTypes.CLOSE).then(function() {
32311 var e = a._done(r, a),
32312 t = a._simpleBind(a.detach, a),
32313 n = a.config.onCloseSuccess || ue.noop;
32314 n = ue.bind(a, n, a, o), a.hide().then(t).then(e).then(n).catch(i)
32317 }, l.prototype.attach = function() {
32318 if (this.isAttached && this.panelEl) return this._$q.when(this);
32320 return this._$q(function(e, t) {
32321 var n = i._done(e, i),
32322 r = i.config.onDomAdded || ue.noop;
32323 i._$q.all([i._createBackdrop(), i._createPanel().then(function(e) {
32324 return i.isAttached = !0, i._addEventListeners(), e
32325 }).catch(t)]).then(r).then(n).catch(t)
32327 }, l.prototype.detach = function() {
32328 if (!this.isAttached) return this._$q.when(this);
32330 i = r.config.onDomRemoved || ue.noop;
32331 return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(e, t) {
32332 var n = r._done(e, r);
32333 r._$q.all([(r._removeEventListeners(), r._topFocusTrap && r._topFocusTrap.parentNode && r._topFocusTrap.parentNode.removeChild(r._topFocusTrap), r._bottomFocusTrap && r._bottomFocusTrap.parentNode && r._bottomFocusTrap.parentNode.removeChild(r._bottomFocusTrap), r._restoreCache.classes && (r.panelEl[0].className = r._restoreCache.classes), r.panelEl[0].style.cssText = r._restoreCache.styles || "", r._compilerCleanup(), r.panelContainer.remove(), r.isAttached = !1, r._$q.when(r)), !r._backdropRef || r._backdropRef.detach()]).then(i).then(n).catch(t)
32335 }, l.prototype.destroy = function() {
32337 this.config.groupName && ue.forEach(this.config.groupName, function(e) {
32338 t.removeFromGroup(e)
32339 }), this.config.scope.$destroy(), this.config.locals = null, this.config.onDomAdded = null, this.config.onDomRemoved = null, this.config.onRemoving = null, this.config.onOpenComplete = null, this._interceptors = null
32340 }, l.prototype.show = function() {
32341 if (!this.panelContainer) return this._$q(function(e, t) {
32342 t("mdPanel: Panel does not exist yet. Call open() or attach().")
32344 if (!this.panelContainer.hasClass(a)) return this._$q.when(this);
32346 return this._$q(function(e, t) {
32347 var n = i._done(e, i),
32348 r = i.config.onOpenComplete || ue.noop;
32349 i._$q.all([i._backdropRef ? i._backdropRef.show() : i, (i.panelContainer.removeClass(a), i._animateOpen()).then(function() {
32351 }, t)]).then(r).then(function() {
32352 i.config.groupName && ue.forEach(i.config.groupName, function(e) {
32353 i._$mdPanel._groups[e].openPanels.push(i)
32355 }).then(n).catch(t)
32357 }, l.prototype.hide = function() {
32358 if (!this.panelContainer) return this._$q(function(e, t) {
32359 t("mdPanel: Panel does not exist yet. Call open() or attach().")
32361 if (this.panelContainer.hasClass(a)) return this._$q.when(this);
32363 return this._$q(function(e, t) {
32364 var n = i._done(e, i),
32365 r = i.config.onRemoving || ue.noop;
32366 i._$q.all([i._backdropRef ? i._backdropRef.hide() : i, i._animateClose().then(r).then(function() {
32367 i.panelContainer.addClass(a)
32368 }).then(function() {
32370 i.config.groupName && ue.forEach(i.config.groupName, function(e) {
32371 e = i._$mdPanel._groups[e], -1 < (t = e.openPanels.indexOf(i)) && e.openPanels.splice(t, 1)
32373 }).then(function() {
32374 var e = i.config.origin;
32376 }).catch(t)]).then(n, t)
32378 }, l.prototype.addClass = function(e, t) {
32379 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().");
32380 t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
32381 }, l.prototype.removeClass = function(e, t) {
32382 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().");
32383 !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
32384 }, l.prototype.toggleClass = function(e, t) {
32385 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().");
32386 t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
32387 }, l.prototype._compile = function() {
32389 return r._$mdCompiler.compile(r.config).then(function(e) {
32391 if (t.contentElement) {
32393 r._restoreCache.styles = n[0].style.cssText, r._restoreCache.classes = n[0].className, r.panelContainer = r._$mdPanel._wrapContentElement(n), r.panelEl = n
32394 } else r.panelContainer = e.link(t.scope), r.panelEl = ue.element(r.panelContainer[0].querySelector(".md-panel"));
32395 return r._compilerCleanup = e.cleanup, u(r.config.attachTo).append(r.panelContainer), r
32397 }, l.prototype._createPanel = function() {
32399 return this._$q(function(e, t) {
32400 n.config.locals || (n.config.locals = {}), (n.config.locals.mdPanelRef = n)._compile().then(function() {
32401 n.config.disableParentScroll && (n._restoreScroll = n._$mdUtil.disableScrollAround(null, n.panelContainer, {
32402 disableScrollMask: !0
32403 })), n.config.panelClass && n.panelEl.addClass(n.config.panelClass), n.config.propagateContainerEvents && (n.panelContainer.css("pointer-events", "none"), n.panelEl.css("pointer-events", "all")), n._$animate.pin && n._$animate.pin(n.panelContainer, u(n.config.attachTo)), n._configureTrapFocus(), n._addStyles().then(function() {
32408 }, l.prototype._addStyles = function() {
32410 return this._$q(function(e) {
32411 n.panelContainer.css("z-index", n.config.zIndex), n.panelEl.css("z-index", n.config.zIndex + 1);
32412 var t = function() {
32413 n._setTheming(), n.panelEl.removeClass("_md-panel-offscreen"), n.panelContainer.addClass(a), e(n)
32415 if (n.config.fullscreen) return n.panelEl.addClass("_md-panel-fullscreen"), void t();
32416 n.config.position ? n._$rootScope.$$postDigest(function() {
32417 n._updatePosition(!0), n._setTheming(), e(n)
32420 }, l.prototype._setTheming = function() {
32421 this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
32422 }, l.prototype.updatePosition = function(e) {
32423 if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
32424 this.config.position = e, this._updatePosition()
32425 }, l.prototype._updatePosition = function(e) {
32426 var t = this.config.position;
32427 t && (t._setPanelPosition(this.panelEl), e && (this.panelEl.removeClass("_md-panel-offscreen"), this.panelContainer.addClass(a)), this.panelEl.css(p.absPosition.TOP, t.getTop()), this.panelEl.css(p.absPosition.BOTTOM, t.getBottom()), this.panelEl.css(p.absPosition.LEFT, t.getLeft()), this.panelEl.css(p.absPosition.RIGHT, t.getRight()))
32428 }, l.prototype._focusOnOpen = function() {
32429 if (this.config.focusOnOpen) {
32431 this._$rootScope.$$postDigest(function() {
32432 (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
32435 }, l.prototype._createBackdrop = function() {
32436 if (this.config.hasBackdrop) {
32437 if (!this._backdropRef) {
32438 var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
32439 open: "_md-opaque-enter",
32440 close: "_md-opaque-leave"
32442 this.config.animation && e.duration(this.config.animation._rawDuration);
32445 attachTo: this.config.attachTo,
32447 panelClass: "_md-panel-backdrop",
32448 zIndex: this.config.zIndex - 1
32450 this._backdropRef = this._$mdPanel.create(t)
32452 if (!this._backdropRef.isAttached) return this._backdropRef.attach()
32454 }, l.prototype._addEventListeners = function() {
32455 this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
32456 }, l.prototype._removeEventListeners = function() {
32457 this._removeListeners && this._removeListeners.forEach(function(e) {
32459 }), this._removeListeners = []
32460 }, l.prototype._configureEscapeToClose = function() {
32461 if (this.config.escapeToClose) {
32462 var e = u(this.config.attachTo),
32465 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(l.closeReasons.ESCAPE))
32467 this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
32468 t.panelContainer.off("keydown", n), e.off("keydown", n)
32471 }, l.prototype._configureClickOutsideToClose = function() {
32472 if (this.config.clickOutsideToClose) {
32473 var t, n = this.config.propagateContainerEvents ? ue.element(document.body) : this.panelContainer,
32479 r.config.propagateContainerEvents ? t === r.panelEl[0] || r.panelEl[0].contains(t) || r.close() : t === n[0] && e.target === n[0] && (e.stopPropagation(), e.preventDefault(), r.close(l.closeReasons.CLICK_OUTSIDE))
32481 n.on("mousedown", e), n.on("mouseup", i), this._removeListeners.push(function() {
32482 n.off("mousedown", e), n.off("mouseup", i)
32485 }, l.prototype._configureScrollListener = function() {
32486 if (!this.config.disableParentScroll) {
32487 var e = ue.bind(this, this._updatePosition),
32488 t = this._$$rAF.throttle(e),
32493 this._$window.addEventListener("scroll", r, !0), this._removeListeners.push(function() {
32494 n._$window.removeEventListener("scroll", r, !0)
32497 }, l.prototype._configureTrapFocus = function() {
32498 if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
32499 var e = this.panelEl;
32500 this._topFocusTrap = n.clone()[0], this._bottomFocusTrap = n.clone()[0];
32501 var t = function() {
32504 this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
32505 this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
32506 }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
32508 }, l.prototype.updateAnimation = function(e) {
32509 this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
32510 }, l.prototype._animateOpen = function() {
32511 this.panelContainer.addClass("md-panel-is-showing");
32512 var n = this.config.animation;
32513 if (!n) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
32515 return this._$q(function(e) {
32516 var t = r._done(e, r);
32517 n.animateOpen(r.panelEl).then(t, function() {
32518 r._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), t()
32521 }, l.prototype._animateClose = function() {
32522 var n = this.config.animation;
32523 if (!n) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
32525 return this._$q(function(e) {
32526 var t = function() {
32527 r.panelContainer.removeClass("md-panel-is-showing"), e(r)
32529 n.animateClose(r.panelEl).then(t, function() {
32530 r._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), t()
32533 }, l.prototype.registerInterceptor = function(e, t) {
32535 if (ue.isString(e) ? ue.isFunction(t) || (n = "Interceptor callback must be a function, instead got " + typeof t) : n = "Interceptor type must be a string, instead got " + typeof e, n) throw new Error("MdPanel: " + n);
32536 var r = this._interceptors[e] = this._interceptors[e] || [];
32537 return -1 === r.indexOf(t) && r.push(t), this
32538 }, l.prototype.removeInterceptor = function(e, t) {
32539 var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
32540 return -1 < n && this._interceptors[e].splice(n, 1), this
32541 }, l.prototype.removeAllInterceptors = function(e) {
32542 return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
32543 }, l.prototype._callInterceptors = function(e) {
32546 return (r._interceptors && r._interceptors[e] || []).reduceRight(function(e, t) {
32547 var n = t && ue.isFunction(t.then) ? t : null;
32548 return e.then(function() {
32557 }, l.prototype._simpleBind = function(t, n) {
32558 return function(e) {
32559 return t.apply(n, e)
32561 }, l.prototype._done = function(e, t) {
32562 return function() {
32565 }, l.prototype.addToGroup = function(e) {
32566 this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
32567 var t = this._$mdPanel._groups[e];
32568 t.panels.indexOf(this) < 0 && t.panels.push(this)
32569 }, l.prototype.removeFromGroup = function(e) {
32570 if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
32571 var t = this._$mdPanel._groups[e],
32572 n = t.panels.indexOf(this); - 1 < n && t.panels.splice(n, 1)
32573 }, l.closeReasons = {
32574 CLICK_OUTSIDE: "clickOutsideToClose",
32575 ESCAPE: "escapeToClose"
32578 ALIGN_START: "align-start",
32579 ALIGN_END: "align-end",
32580 OFFSET_START: "offset-start",
32581 OFFSET_END: "offset-end"
32584 ALIGN_TOPS: "align-tops",
32585 ALIGN_BOTTOMS: "align-bottoms",
32588 }, p.absPosition = {
32593 }, p.viewportMargin = 8, p.prototype.absolute = function() {
32594 return this._absolute = !0, this
32595 }, p.prototype._setPosition = function(e, t) {
32596 if (e === p.absPosition.RIGHT || e === p.absPosition.LEFT) this._left = this._right = "";
32598 if (e !== p.absPosition.BOTTOM && e !== p.absPosition.TOP) {
32599 var n = Object.keys(p.absPosition).join().toLowerCase();
32600 throw new Error("mdPanel: Position must be one of " + n + ".")
32602 this._top = this._bottom = ""
32604 return this["_" + e] = ue.isString(t) ? t : "0", this
32605 }, p.prototype.top = function(e) {
32606 return this._setPosition(p.absPosition.TOP, e)
32607 }, p.prototype.bottom = function(e) {
32608 return this._setPosition(p.absPosition.BOTTOM, e)
32609 }, p.prototype.start = function(e) {
32610 var t = this._isRTL ? p.absPosition.RIGHT : p.absPosition.LEFT;
32611 return this._setPosition(t, e)
32612 }, p.prototype.end = function(e) {
32613 var t = this._isRTL ? p.absPosition.LEFT : p.absPosition.RIGHT;
32614 return this._setPosition(t, e)
32615 }, p.prototype.left = function(e) {
32616 return this._setPosition(p.absPosition.LEFT, e)
32617 }, p.prototype.right = function(e) {
32618 return this._setPosition(p.absPosition.RIGHT, e)
32619 }, p.prototype.centerHorizontally = function() {
32620 return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
32621 }, p.prototype.centerVertically = function() {
32622 return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
32623 }, p.prototype.center = function() {
32624 return this.centerHorizontally().centerVertically()
32625 }, p.prototype.relativeTo = function(e) {
32626 return this._absolute = !1, this._relativeToEl = u(e), this
32627 }, p.prototype.addPanelPosition = function(e, t) {
32628 if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
32629 return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
32633 }, p.prototype._validateYPosition = function(e) {
32635 for (var t, n = Object.keys(p.yPosition), r = [], i = 0; t = n[i]; i++) {
32636 var o = p.yPosition[t];
32637 if (r.push(o), o === e) return
32639 throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
32641 }, p.prototype._validateXPosition = function(e) {
32643 for (var t, n = Object.keys(p.xPosition), r = [], i = 0; t = n[i]; i++) {
32644 var o = p.xPosition[t];
32645 if (r.push(o), o === e) return
32647 throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
32649 }, p.prototype.withOffsetX = function(e) {
32650 return this._translateX.push(d(e)), this
32651 }, p.prototype.withOffsetY = function(e) {
32652 return this._translateY.push(d(e)), this
32653 }, p.prototype.getTop = function() {
32655 }, p.prototype.getBottom = function() {
32656 return this._bottom
32657 }, p.prototype.getLeft = function() {
32659 }, p.prototype.getRight = function() {
32661 }, p.prototype.getTransform = function() {
32662 return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
32663 }, p.prototype._setTransform = function(e) {
32664 return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
32665 }, p.prototype._isOnscreen = function(e) {
32666 var t = parseInt(this.getLeft()),
32667 n = parseInt(this.getTop());
32668 if (this._translateX.length || this._translateY.length) {
32669 var r = function(e, t) {
32670 var n = getComputedStyle(e[0] || e)[t],
32671 r = n.indexOf("("),
32672 i = n.lastIndexOf(")"),
32677 if (-1 < r && -1 < i) {
32678 var a = n.substring(r + 1, i).split(", ").slice(-2);
32679 o.x = parseInt(a[0]), o.y = parseInt(a[1])
32682 }(e, this._$mdConstant.CSS.TRANSFORM);
32685 var i = t + e[0].offsetWidth,
32686 o = n + e[0].offsetHeight;
32687 return 0 <= t && 0 <= n && o <= this._$window.innerHeight && i <= this._$window.innerWidth
32688 }, p.prototype.getActualPosition = function() {
32689 return this._actualPosition
32690 }, p.prototype._reduceTranslateValues = function(n, e) {
32691 return e.map(function(e) {
32692 var t = ue.isFunction(e) ? d(e(this)) : e;
32693 return n + "(" + t + ")"
32695 }, p.prototype._setPanelPosition = function(e) {
32696 if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
32698 if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
32699 for (var t = 0; t < this._positions.length; t++)
32700 if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
32701 this._constrainToViewport(e)
32703 }, p.prototype._constrainToViewport = function(e) {
32704 var t = p.viewportMargin,
32707 if (this.getTop()) {
32708 var i = parseInt(this.getTop()),
32709 o = e[0].offsetHeight + i,
32710 a = this._$window.innerHeight;
32711 i < t ? this._top = t + "px" : a < o && (this._top = i - (o - a + t) + "px")
32713 if (this.getLeft()) {
32714 var s = parseInt(this.getLeft()),
32715 l = e[0].offsetWidth + s,
32716 c = this._$window.innerWidth;
32717 s < t ? this._left = t + "px" : c < l && (this._left = s - (l - c + t) + "px")
32719 e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
32720 }, p.prototype._reverseXPosition = function(e) {
32721 if (e === p.xPosition.CENTER) return e;
32722 return -1 < e.indexOf("start") ? e.replace("start", "end") : e.replace("end", "start")
32723 }, p.prototype._bidi = function(e) {
32724 return this._isRTL ? this._reverseXPosition(e) : e
32725 }, p.prototype._calculatePanelPosition = function(e, t) {
32726 var n = e[0].getBoundingClientRect(),
32727 r = Math.max(n.width, e[0].clientWidth),
32728 i = Math.max(n.height, e[0].clientHeight),
32729 o = this._relativeToEl[0].getBoundingClientRect(),
32733 switch (this._bidi(t.x)) {
32734 case p.xPosition.OFFSET_START:
32735 this._left = a - r + "px";
32737 case p.xPosition.ALIGN_END:
32738 this._left = s - r + "px";
32740 case p.xPosition.CENTER:
32741 var c = a + .5 * l - .5 * r;
32742 this._left = c + "px";
32744 case p.xPosition.ALIGN_START:
32745 this._left = a + "px";
32747 case p.xPosition.OFFSET_END:
32748 this._left = s + "px"
32754 case p.yPosition.ABOVE:
32755 this._top = u - i + "px";
32757 case p.yPosition.ALIGN_BOTTOMS:
32758 this._top = d - i + "px";
32760 case p.yPosition.CENTER:
32761 var h = u + .5 * f - .5 * i;
32762 this._top = h + "px";
32764 case p.yPosition.ALIGN_TOPS:
32765 this._top = u + "px";
32767 case p.yPosition.BELOW:
32768 this._top = d + "px"
32771 SLIDE: "md-panel-animate-slide",
32772 SCALE: "md-panel-animate-scale",
32773 FADE: "md-panel-animate-fade"
32774 }, c.prototype.openFrom = function(e) {
32775 return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
32776 }, c.prototype.closeTo = function(e) {
32777 return this._closeTo = this._getPanelAnimationTarget(e), this
32778 }, c.prototype.duration = function(e) {
32779 return e && (ue.isNumber(e) ? this._openDuration = this._closeDuration = t(e) : ue.isObject(e) && (this._openDuration = t(e.open), this._closeDuration = t(e.close))), this._rawDuration = e, this;
32782 if (ue.isNumber(e)) return e / 1e3
32784 }, c.prototype._getPanelAnimationTarget = function(e) {
32785 return ue.isDefined(e.top) || ue.isDefined(e.left) ? {
32791 } : this._getBoundingClientRect(u(e))
32792 }, c.prototype.withAnimation = function(e) {
32793 return this._animationClass = e, this
32794 }, c.prototype.animateOpen = function(e) {
32795 var t = this._$mdUtil.dom.animator;
32796 this._fixBounds(e);
32798 r = e[0].style.transform || "",
32799 i = t.toTransformCss(r),
32800 o = t.toTransformCss(r);
32801 switch (this._animationClass) {
32802 case c.animation.SLIDE:
32803 e.css("opacity", "1"), n = {
32804 transitionInClass: "_md-panel-animate-enter"
32806 var a = t.calculateSlideToOrigin(e, this._openFrom) || "";
32807 i = t.toTransformCss(a + " " + r);
32809 case c.animation.SCALE:
32811 transitionInClass: "_md-panel-animate-enter"
32813 var s = t.calculateZoomToOrigin(e, this._openFrom) || "";
32814 i = t.toTransformCss(s + " " + r);
32816 case c.animation.FADE:
32818 transitionInClass: "_md-panel-animate-enter"
32822 n = ue.isString(this._animationClass) ? {
32823 transitionInClass: this._animationClass
32825 transitionInClass: this._animationClass.open,
32826 transitionOutClass: this._animationClass.close
32829 return n.duration = this._openDuration, t.translate3d(e, i, o, n)
32830 }, c.prototype.animateClose = function(e) {
32831 var t = this._$mdUtil.dom.animator,
32833 r = e[0].style.transform || "",
32834 i = t.toTransformCss(r),
32835 o = t.toTransformCss(r);
32836 switch (this._animationClass) {
32837 case c.animation.SLIDE:
32838 e.css("opacity", "1"), n = {
32839 transitionInClass: "_md-panel-animate-leave"
32841 var a = t.calculateSlideToOrigin(e, this._closeTo) || "";
32842 o = t.toTransformCss(a + " " + r);
32844 case c.animation.SCALE:
32846 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
32848 var s = t.calculateZoomToOrigin(e, this._closeTo) || "";
32849 o = t.toTransformCss(s + " " + r);
32851 case c.animation.FADE:
32853 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
32857 n = ue.isString(this._animationClass) ? {
32858 transitionOutClass: this._animationClass
32860 transitionInClass: this._animationClass.close,
32861 transitionOutClass: this._animationClass.open
32864 return n.duration = this._closeDuration, t.translate3d(e, i, o, n)
32865 }, c.prototype._fixBounds = function(e) {
32866 var t = e[0].offsetWidth,
32867 n = e[0].offsetHeight;
32868 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)
32869 }, c.prototype._getBoundingClientRect = function(e) {
32870 if (e instanceof ue.element) return {
32872 bounds: e[0].getBoundingClientRect()
32875 }(), ue.module("material.components.progressCircular", ["material.core"]),
32877 function e(_, $, s, w, h, e) {
32878 var E = _.requestAnimationFrame || _.webkitRequestAnimationFrame || ue.noop,
32879 p = _.cancelAnimationFrame || _.webkitCancelAnimationFrame || _.webkitCancelRequestAnimationFrame || ue.noop,
32881 C = "indeterminate",
32882 k = "_md-progress-circular-disabled",
32883 x = "md-mode-indeterminate";
32891 template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
32892 compile: function(e, t) {
32894 "aria-valuemin": 0,
32895 "aria-valuemax": 100,
32896 role: "progressbar"
32897 }), ue.isUndefined(t.mdMode)) {
32898 var n = t.hasOwnProperty("value") ? m : C;
32899 t.$set("mdMode", n)
32900 } else t.$set("mdMode", t.mdMode.trim());
32905 function r(g, l, c) {
32906 var v, e, t = l[0],
32907 a = ue.element(t.querySelector("svg")),
32908 b = ue.element(t.querySelector("path")),
32909 n = $.startIndeterminate,
32910 r = $.endIndeterminate,
32914 function u(n, e, t, r, i, o) {
32918 c = S(g.mdDiameter),
32921 f = r || $.duration,
32922 h = -90 * (i || 0),
32926 b.attr("stroke-dashoffset", M(c, u, e, p)), b.attr("transform", "rotate(" + h + " " + c / 2 + " " + c / 2 + ")")
32928 e === n ? m(e) : v = E(function e() {
32929 var t = _.Math.max(0, _.Math.min(w.now() - s, f));
32930 m(d(t, n, l, f)), a === y && t < f && (v = E(e))
32935 u(n, r, $.easeFnIndeterminate, $.durationIndeterminate, i, 75), i = ++i % 4
32939 e || (e = h(o, $.durationIndeterminate, 0, !1), o(), l.addClass(x).removeAttr("aria-valuenow"))
32943 e && (h.cancel(e), e = null, l.removeClass(x))
32945 s(l), l.toggleClass(k, c.hasOwnProperty("disabled")), g.mdMode === C && d(), g.$on("$destroy", function() {
32947 }), g.$watchGroup(["value", "mdMode", function() {
32948 var e = t.disabled;
32949 return !0 === e || !1 === e ? e : ue.isDefined(l.attr("disabled"))
32950 }], function(e, t) {
32955 if (r !== t[2] && l.toggleClass(k, !!r), r) f();
32956 else if (n !== m && n !== C && (n = C, c.$set("mdMode", n)), n === C) t[1] === m && (o = D(i = S(g.mdDiameter)), b.attr("d", T(i, o, !0)), b.attr("stroke-dasharray", (i - o) * _.Math.PI * .75)), d();
32960 f(), t[1] === C && (o = D(i = S(g.mdDiameter)), b.attr("d", T(i, o, !1)), b.attr("stroke-dasharray", (i - o) * _.Math.PI)), l.attr("aria-valuenow", a), u(s, a)
32962 }), g.$watch("mdDiameter", function(e) {
32971 a[0].setAttribute("viewBox", "0 0 " + t + " " + t), a.css(o).css("transform-origin", i + " " + i + " " + i), l.css(o), b.attr("stroke-width", n), b.attr("stroke-linecap", "square"), g.mdMode == C ? (b.attr("d", T(t, n, !0)), b.attr("stroke-dasharray", (t - n) * _.Math.PI * .75), b.attr("stroke-dashoffset", M(t, n, 1, 75))) : (b.attr("d", T(t, n, !1)), b.attr("stroke-dasharray", (t - n) * _.Math.PI), b.attr("stroke-dashoffset", M(t, n, 0, 100)), u(r, r))
32975 function T(e, t, n) {
32980 return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
32983 function M(e, t, n, r) {
32984 return (e - t) * _.Math.PI * (3 * (r || 100) / 100 - n / 100)
32988 return _.Math.max(0, _.Math.min(e || 0, 100))
32992 var t = $.progressSize;
32994 var n = parseFloat(e);
32995 return e.lastIndexOf("%") === e.length - 1 && (n = n / 100 * t), n
33001 return $.strokeWidth / 100 * e
33004 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], ue.module("material.components.progressCircular").directive("mdProgressCircular", e)
33005 }(), ue.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
33011 durationIndeterminate: 1333,
33012 startIndeterminate: 1,
33013 endIndeterminate: 149,
33014 easeFnIndeterminate: n,
33021 configure: function(e) {
33022 return t = ue.extend(t, e || {})
33029 function e(e, t, n, r) {
33030 return n * e / r + t
33033 function n(e, t, n, r) {
33034 var i = (e /= r) * e,
33036 return t + n * (6 * o * i + -15 * i * i + 10 * o)
33040 function e(d, f, e) {
33041 var h = "determinate",
33042 p = "indeterminate",
33045 v = "_md-progress-linear-disabled";
33048 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>',
33049 compile: function(e, t, n) {
33050 return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), r
33054 function r(e, n, r) {
33057 var i = r.hasOwnProperty("disabled"),
33058 o = f.dom.animator.toCss,
33059 a = ue.element(n[0].querySelector(".md-bar1")),
33060 s = ue.element(n[0].querySelector(".md-bar2")),
33061 l = ue.element(n[0].querySelector(".md-container"));
33064 var e = (r.mdMode || "").trim();
33065 if (e) switch (e) {
33079 var n = f.supplant("translateX({0}%) scale({1},1)", [(t - 100) / 2, t / 100]),
33083 ue.element(e).css(r)
33086 n.attr("md-mode", c()).toggleClass(v, i),
33088 if (ue.isUndefined(r.mdMode)) {
33089 var e = ue.isDefined(r.value),
33091 n.attr("md-mode", t), r.mdMode = t
33093 }(), r.$observe("value", function(e) {
33095 n.attr("aria-valuenow", t), c() != g && u(s, t)
33096 }), r.$observe("mdBufferValue", function(e) {
33098 }), r.$observe("disabled", function(e) {
33099 i = !0 === e || !1 === e ? !!e : ue.isDefined(e), n.toggleClass(v, i), l.toggleClass(t, !i)
33100 }), r.$observe("mdMode", function(e) {
33101 switch (t && l.removeClass(t), e) {
33106 l.addClass(t = "md-mode-" + e);
33109 l.addClass(t = "md-mode-" + p)
33115 return Math.max(0, Math.min(e || 0, 100))
33118 e.$inject = ["$mdTheming", "$mdUtil", "$log"], ue.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
33121 function e(s, l, c, u) {
33122 return e.prototype = {
33123 init: function(e) {
33124 this._ngModelCtrl = e, this._ngModelCtrl.$render = ue.bind(this, this.render)
33127 this._radioButtonRenderFns.push(e)
33129 remove: function(e) {
33130 var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
33132 render: function() {
33133 this._radioButtonRenderFns.forEach(function(e) {
33137 setViewValue: function(e, t) {
33138 this._ngModelCtrl.$setViewValue(e, t), this.render()
33140 getViewValue: function() {
33141 return this._ngModelCtrl.$viewValue
33143 selectNext: function() {
33144 return t(this.$element, 1)
33146 selectPrevious: function() {
33147 return t(this.$element, -1)
33149 setActiveDescendant: function(e) {
33150 this.$element.attr("aria-activedescendant", e)
33152 isDisabled: function() {
33153 return this.$element[0].hasAttribute("disabled")
33157 controller: ["$element", e],
33158 require: ["mdRadioGroup", "?ngModel"],
33160 pre: function(t, r, e, n) {
33161 r.addClass("_md"), c(r);
33163 o = n[1] || s.fakeNgModel();
33166 r.hasClass("md-focused") || r.addClass("md-focused")
33168 i.init(o), t.mouseActive = !1, r.attr({
33169 role: "radiogroup",
33170 tabIndex: r.attr("tabindex") || "0"
33171 }).on("keydown", function(e) {
33172 var t = e.which || e.keyCode;
33173 if (t != l.KEY_CODE.ENTER && e.currentTarget != e.target) return;
33175 case l.KEY_CODE.LEFT_ARROW:
33176 case l.KEY_CODE.UP_ARROW:
33177 e.preventDefault(), i.selectPrevious(), a();
33179 case l.KEY_CODE.RIGHT_ARROW:
33180 case l.KEY_CODE.DOWN_ARROW:
33181 e.preventDefault(), i.selectNext(), a();
33183 case l.KEY_CODE.ENTER:
33184 var n = ue.element(s.getClosest(r[0], "form"));
33185 0 < n.length && n.triggerHandler("submit")
33187 }).on("mousedown", function(e) {
33188 t.mouseActive = !0, u(function() {
33191 }).on("focus", function() {
33192 !1 === t.mouseActive && i.$element.addClass("md-focused")
33193 }).on("blur", function() {
33194 i.$element.removeClass("md-focused")
33201 this._radioButtonRenderFns = [], this.$element = e
33205 var n = s.iterator(e[0].querySelectorAll("md-radio-button"), !0);
33207 var r = e[0].querySelector("md-radio-button.md-checked"),
33208 i = n[t < 0 ? "previous" : "next"](r, function(e) {
33209 return !ue.element(e).attr("disabled")
33211 ue.element(i).triggerHandler("click")
33216 function t(c, u, d) {
33217 var f = "md-checked";
33220 require: "^mdRadioGroup",
33222 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>',
33223 link: function(t, n, r, i) {
33225 d(n), e = n, e.attr({
33226 id: r.id || "radio_" + u.nextUid(),
33228 "aria-checked": "false"
33229 }), c.expectWithText(e, "aria-label"), r.ngValue ? u.nextTick(a, !1) : a();
33233 if (!i) throw "RadioButton: No RadioGroupController could be found.";
33234 i.add(l), r.$observe("value", l), n.on("click", s).on("$destroy", function() {
33240 n[0].hasAttribute("disabled") || i.isDisabled() || t.$apply(function() {
33241 i.setViewValue(r.value, e && e.type)
33246 var e = i.getViewValue() == r.value;
33247 e !== o && ("md-radio-group" !== n[0].parentNode.nodeName.toLowerCase() && n.parent().toggleClass(f, e), e && i.setActiveDescendant(n.attr("id")), o = e, n.attr("aria-checked", e).toggleClass(f, e))
33252 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], t.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], ue.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", t)
33255 e.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], t.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], n.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], r.$inject = ["$$interimElementProvider"];
33258 u = ue.element('<div class="md-container"><div class="md-icon"></div></div>');
33260 function e(M, A, S, D, O, N, I, e) {
33261 var t = S.KEY_CODE;
33262 t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW;
33265 require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
33266 compile: function(e, t) {
33267 var n = ue.element("<md-select-value><span></span></md-select-value>");
33268 n.append('<span class="md-select-icon" aria-hidden="true"></span>'), n.addClass("md-select-value"), n[0].hasAttribute("id") || n.attr("id", "select_value_label_" + A.nextUid());
33269 var r = e.find("md-content");
33270 r.length || e.append(ue.element("<md-content>").append(e.contents()));
33271 r.attr("role", "presentation"), t.mdOnOpen && (e.find("md-content").prepend(ue.element('<div> <md-progress-circular md-mode="indeterminate" ng-if="$$loadingAsyncDone === false" md-diameter="25px"></md-progress-circular></div>')), e.find("md-option").attr("ng-show", "$$loadingAsyncDone"));
33273 var i = ue.element('<select class="md-visually-hidden"></select>');
33276 "aria-hidden": "true",
33279 var o = e.find("md-option");
33280 ue.forEach(o, function(e) {
33281 var t = ue.element("<option>" + e.innerHTML + "</option>");
33282 e.hasAttribute("ng-value") ? t.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && t.attr("value", e.getAttribute("value")), i.append(t)
33283 }), i.append('<option ng-value="' + t.ngModel + '" selected></option>'), e.parent().append(i)
33285 var T = A.parseAttributeBoolean(t.multiple),
33286 a = T ? "multiple" : "",
33287 s = '<div class="md-select-menu-container" aria-hidden="true" role="presentation"><md-select-menu role="presentation" {0}>{1}</md-select-menu></div>';
33288 s = A.supplant(s, [a, e.html()]), e.empty().append(n), e.append(s), t.tabindex || t.$set("tabindex", 0);
33289 return function(i, n, o, e) {
33290 var t, r, a, s, l, c = !0,
33295 p = n.find("md-select-value"),
33296 m = ue.isDefined(o.readonly),
33297 g = A.parseAttributeBoolean(o.mdNoAsterisk);
33298 if (g && n.addClass("md-no-asterisk"), u) {
33299 var v = u.isErrorGetter || function() {
33300 return f.$invalid && (f.$touched || h && h.$submitted)
33302 if (u.input && n.find("md-select-header").find("input")[0] !== u.input[0]) throw new Error("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");
33303 u.input = n, u.label || O.expect(n, "aria-label", n.attr("placeholder")), i.$watch(v, u.setInvalid)
33305 if (a = ue.element(n[0].querySelector(".md-select-menu-container")), s = i, o.mdContainerClass) {
33306 var e = a[0].getAttribute("class") + " " + o.mdContainerClass;
33307 a[0].setAttribute("class", e)
33308 }(l = a.find("md-select-menu").controller("mdSelectMenu")).init(f, o.ngModel), n.on("$destroy", function() {
33312 var b, y = f.$render;
33315 a && (l = l || a.find("md-select-menu").controller("mdSelectMenu"), d.setLabelText(l.selectedLabels()))
33320 var e = l.selectedLabels({
33323 n.attr("aria-label", e.length ? r + ": " + e : r)
33326 f.$render = function() {
33328 }, o.$observe("placeholder", f.$render), u && u.label && o.$observe("required", function(e) {
33329 u.label.toggleClass("md-required", e && !g)
33330 }), d.setLabelText = function(e) {
33331 d.setIsPlaceholder(!e);
33333 if (o.mdSelectedText && o.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
33334 if (o.mdSelectedText || o.mdSelectedHtml) e = N(o.mdSelectedText || o.mdSelectedHtml)(i), t = !0;
33336 var n = o.placeholder || (u && u.label ? u.label.text() : "");
33337 e = n || "", t = !0
33339 var r = p.children().eq(0);
33340 o.mdSelectedHtml ? r.html(I.getTrustedHtml(e)) : t ? r.text(e) : r.html(e)
33341 }, d.setIsPlaceholder = function(e) {
33342 e ? (p.addClass("md-select-placeholder"), u && u.label && u.label.addClass("md-placeholder")) : (p.removeClass("md-select-placeholder"), u && u.label && u.label.removeClass("md-placeholder"))
33343 }, m || (n.on("focus", function(e) {
33344 u && u.setFocused(!0)
33345 }), n.on("blur", function(e) {
33346 c && (c = !1, s._mdSelectIsOpen && e.stopImmediatePropagation()), s._mdSelectIsOpen || (u && u.setFocused(!1), C())
33347 })), d.triggerClose = function() {
33349 }, i.$$postDigest(function() {
33351 var e = n.attr("aria-label") || n.attr("placeholder");
33352 !e && u && u.label && (e = u.label.text());
33353 r = e, O.expect(n, "aria-label", e)
33355 }), i.$watch(function() {
33356 return l.selectedLabels()
33357 }, _), o.$observe("ngMultiple", function(e) {
33360 b = i.$watch(function() {
33362 }, function(e, t) {
33363 e === de && t === de || (e ? n.attr("multiple", "multiple") : n.removeAttr("multiple"), n.attr("aria-multiselectable", e ? "true" : "false"), a && (l.setMultiple(e), y = f.$render, f.$render = function() {
33367 }), o.$observe("disabled", function(e) {
33368 ue.isString(e) && (e = !0), t !== de && t === e || ((t = e) ? n.attr({
33369 "aria-disabled": "true"
33370 }).removeAttr("tabindex").off("click", x).off("keydown", k) : n.attr({
33371 tabindex: o.tabindex,
33372 "aria-disabled": "false"
33373 }).on("click", x).on("keydown", k))
33374 }), o.hasOwnProperty("disabled") || o.hasOwnProperty("ngDisabled") || (n.attr({
33375 "aria-disabled": "false"
33376 }), n.on("click", x), n.on("keydown", k));
33379 "aria-expanded": "false",
33380 "aria-multiselectable": T && !o.ngMultiple ? "true" : "false"
33382 n[0].hasAttribute("id") || (w.id = "select_" + A.nextUid());
33383 var E = "select_container_" + A.nextUid();
33386 A.nextTick(function() {
33387 u && u.setHasValue(0 < l.selectedLabels().length || (n[0].validity || {}).badInput)
33392 if (S.isNavigationKey(e)) e.preventDefault(), x();
33393 else if (L(e, S)) {
33394 e.preventDefault();
33395 var t = l.optNodeForKeyboardSearch(e);
33396 if (!t || t.hasAttribute("disabled")) return;
33397 var n = ue.element(t).controller("mdOption");
33398 l.isMultiple || l.deselect(Object.keys(l.selected)[0]), l.select(n.hashKey, n.value), l.refreshViewValue()
33403 s._mdSelectIsOpen = !0, n.attr("aria-expanded", "true"), M.show({
33410 preserveElement: !0,
33412 loadingAsync: !!o.mdOnOpen && (i.$eval(o.mdOnOpen) || !0)
33413 }).finally(function() {
33414 s._mdSelectIsOpen = !1, n.focus(), n.attr("aria-expanded", "false"), f.$setTouched()
33417 a.attr("id", E), n.find("md-select-menu").length || (w["aria-owns"] = E), n.attr(w), i.$on("$destroy", function() {
33418 M.destroy().finally(function() {
33419 u && (u.setFocused(!1), u.setHasValue(!1), u.input = null), f.$setTouched()
33424 controller: function() {}
33428 function t(h, p, e, i) {
33431 require: ["mdSelectMenu"],
33432 scope: !(t.$inject = ["$scope", "$attrs", "$element"]),
33435 pre: function(o, e, t, n) {
33439 var t = p.getClosest(e.target, "md-option"),
33440 n = t && ue.element(t).data("$mdOptionController");
33442 if (t.hasAttribute("disabled")) return e.stopImmediatePropagation(), !1;
33443 var r = a.hashGetter(n.value),
33444 i = ue.isDefined(a.selected[r]);
33445 o.$apply(function() {
33446 a.isMultiple ? i ? a.deselect(r) : a.select(r, n.value) : i || (a.deselect(Object.keys(a.selected)[0]), a.select(r, n.value)), a.refreshViewValue()
33450 e.addClass("_md"), i(e), e.on("click", r), e.on("keypress", function(e) {
33451 13 != e.keyCode && 32 != e.keyCode || r(e)
33457 function t(o, e, i) {
33459 s.isMultiple = ue.isDefined(e.multiple), s.selected = {}, s.options = {}, o.$watchCollection(function() {
33462 s.ngModel.$render()
33463 }), s.setMultiple = function(e) {
33465 if (a = a || t.$isEmpty, s.isMultiple = e, s.isMultiple) {
33468 n ? d() : p.nextTick(function() {
33472 t.$validators["md-multiple"] = i, t.$render = r, o.$watchCollection(s.modelBinding, function(e) {
33474 }), t.$isEmpty = function(e) {
33475 return !e || 0 === e.length
33477 } else delete t.$validators["md-multiple"], t.$render = f;
33480 return ue.isArray(e || t || [])
33483 var r, l, c, u = "";
33486 var n = s.ngModel.$modelValue || s.ngModel.$viewValue || [];
33487 if (ue.isArray(n)) {
33488 var e = Object.keys(s.selected),
33489 t = n.map(s.hashGetter);
33490 e.filter(function(e) {
33491 return -1 === t.indexOf(e)
33492 }).forEach(s.deselect), t.forEach(function(e, t) {
33499 var e = s.ngModel.$viewValue || s.ngModel.$modelValue;
33500 Object.keys(s.selected).forEach(s.deselect), s.select(s.hashGetter(e), e)
33502 s.optNodeForKeyboardSearch = function(e) {
33503 r && clearTimeout(r), r = setTimeout(function() {
33504 u = "", l = c = r = de
33505 }, 300), u += e.key;
33506 var t = new RegExp("^" + u, "i");
33507 l || (l = i.find("md-option"), c = new Array(l.length), ue.forEach(l, function(e, t) {
33508 c[t] = e.textContent.trim()
33510 for (var n = 0; n < c.length; ++n)
33511 if (t.test(c[n])) return l[n]
33512 }, s.init = function(e, t) {
33513 s.ngModel = e, s.modelBinding = t, s.ngModel.$isEmpty = function(e) {
33514 return !s.options[s.hashGetter(e)]
33516 var n = p.getModelOption(e, "trackBy");
33520 s.hashGetter = function(e, t) {
33521 return r.$value = e, i(t || o, r)
33523 } else s.hashGetter = function(e) {
33524 return ue.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++m)) : e
33526 s.setMultiple(s.isMultiple)
33527 }, s.selectedLabels = function(e) {
33528 var t, n = (e = e || {}).mode || "html",
33529 r = p.nodesToArray(i[0].querySelectorAll("md-option[selected]"));
33530 return r.length ? ("html" == n ? t = function(e) {
33531 if (e.hasAttribute("md-option-empty")) return "";
33532 var t = e.innerHTML,
33533 n = e.querySelector(".md-ripple-container");
33534 n && (t = t.replace(n.outerHTML, ""));
33535 var r = e.querySelector(".md-container");
33536 return r && (t = t.replace(r.outerHTML, "")), t
33537 } : "aria" == n && (t = function(e) {
33538 return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
33539 }), p.uniq(r.map(t)).join(", ")) : ""
33540 }, s.select = function(e, t) {
33541 var n = s.options[e];
33542 n && n.setSelected(!0), s.selected[e] = t
33543 }, s.deselect = function(e) {
33544 var t = s.options[e];
33545 t && t.setSelected(!1), delete s.selected[e]
33546 }, s.addOption = function(e, t) {
33547 if (ue.isDefined(s.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + t.value + '" found.');
33548 s.options[e] = t, ue.isDefined(s.selected[e]) && (s.select(e, t.value), ue.isDefined(s.ngModel.$$rawModelValue) && s.hashGetter(s.ngModel.$$rawModelValue) === e && s.ngModel.$validate(), s.refreshViewValue())
33549 }, s.removeOption = function(e) {
33550 delete s.options[e]
33551 }, s.refreshViewValue = function() {
33553 for (var n in s.selected)(e = s.options[n]) ? t.push(e.value) : t.push(s.selected[n]);
33554 var r = p.getModelOption(s.ngModel, "trackBy"),
33555 i = s.isMultiple ? t : t[0],
33556 o = s.ngModel.$modelValue;
33557 (r ? ue.equals(o, i) : o + "" === i) || (s.ngModel.$setViewValue(i), s.ngModel.$render())
33562 function n(r, i, c) {
33563 return e.$inject = ["$element"], {
33565 require: ["mdOption", "^^mdSelectMenu"],
33567 compile: function(e, t) {
33568 e.append(ue.element('<div class="md-text">').append(e.contents())), e.attr("tabindex", t.tabindex || "0"), n = t, r = n.value, i = n.ngValue, r || i || e.attr("md-option-empty", "");
33574 function o(o, t, e, n) {
33578 function l(e, t, n) {
33579 if (s.hashGetter) {
33580 var r = s.hashGetter(t, o),
33581 i = s.hashGetter(e, o);
33582 a.hashKey = i, a.value = e, s.removeOption(r, a), s.addOption(i, a)
33583 } else n || o.$$postDigest(function() {
33587 c(t), s.isMultiple && (t.addClass("md-checkbox-enabled"), t.prepend(u.clone())), ue.isDefined(e.ngValue) ? o.$watch(e.ngValue, l) : ue.isDefined(e.value) ? l(e.value) : o.$watch(function() {
33588 return t.text().trim()
33589 }, l), e.$observe("disabled", function(e) {
33590 e ? t.attr("tabindex", "-1") : t.attr("tabindex", "0")
33591 }), o.$$postDigest(function() {
33592 e.$observe("selected", function(e) {
33593 ue.isDefined(e) && ("string" == typeof e && (e = !0), e ? (s.isMultiple || s.deselect(Object.keys(s.selected)[0]), s.select(a.hashKey, a.value)) : s.deselect(a.hashKey), s.refreshViewValue())
33595 }), r.attach(o, t),
33599 "aria-selected": "false"
33601 t[0].hasAttribute("id") || (e.id = "select_option_" + i.nextUid());
33603 }(), o.$on("$destroy", function() {
33604 s.removeOption(a.hashKey, a)
33609 this.selected = !1, this.setSelected = function(e) {
33610 e && !this.selected ? t.attr({
33611 selected: "selected",
33612 "aria-selected": "true"
33613 }) : !e && this.selected && (t.removeAttr("selected"), t.attr("aria-selected", "false")), this.selected = e
33619 return t.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], e("$mdSelect").setDefaults({
33620 methods: ["target"],
33624 function t(u, d, I, R, o, f, h, p, P) {
33625 var m = I.dom.animator,
33630 onShow: function(a, s, l) {
33631 return l.loadingAsync && !l.isRemoved && (a.$$loadingAsyncDone = !1, o.when(l.loadingAsync).then(function() {
33632 a.$$loadingAsyncDone = !0, delete l.loadingAsync
33633 }).then(function() {
33637 var n = s.find("md-select-menu");
33638 if (!t.target) throw new Error(I.supplant("$mdSelect.show() expected a target element in options.target but got '{0}'!", [t.target]));
33641 target: ue.element(t.target),
33642 parent: ue.element(t.parent),
33644 contentEl: s.find("md-content"),
33645 optionNodes: n[0].getElementsByTagName("md-option")
33647 }(0, l), l.hideBackdrop = (t = a, r = l, r.disableParentScroll && !I.getClosest(r.target, "MD-DIALOG") ? r.restoreScroll = I.disableScrollAround(r.element, r.parent) : r.disableParentScroll = !1, r.hasBackdrop && (r.backdrop = I.createBackdrop(t, "md-select-backdrop md-click-catcher"), p.enter(r.backdrop, P[0].body, null, {
33650 r.backdrop && r.backdrop.remove(), r.disableParentScroll && r.restoreScroll(), delete r.restoreScroll
33651 }), (n = s, e = l, e.parent !== n.parent() && n.parent().attr("aria-owns", n.attr("id")), n.parent().find("md-select-value").attr("aria-hidden", "true"), e.parent.append(n), o(function(e, t) {
33654 removeClass: "md-leave",
33656 }).start().then(i).then(e)
33660 })).then(function(e) {
33662 return s.attr("aria-hidden", "false"), l.alreadyOpen = !0, l.cleanupInteraction = function() {
33663 if (!l.isRemoved) {
33664 var r = l.selectEl,
33665 t = r.controller("mdSelectMenu") || {};
33666 return s.addClass("md-clickable"), l.backdrop && l.backdrop.on("click", e), r.on("keydown", n), r.on("click", o),
33668 l.backdrop && l.backdrop.off("click", e), r.off("keydown", n), r.off("click", o), s.removeClass("md-clickable"), l.isRemoved = !0
33673 e.preventDefault(), e.stopPropagation(), l.restoreFocus = !1, I.nextTick(u.hide, !0)
33677 switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
33679 return void i("prev");
33681 return void i("next");
33684 var t = I.getClosest(e.target, "md-option");
33685 t && (r.triggerHandler({
33688 }), e.preventDefault()), o(e);
33692 e.stopPropagation(), e.preventDefault(), l.restoreFocus = !0, I.nextTick(u.hide, !0);
33696 var n = r.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
33697 l.focusedNode = n || l.focusedNode, n && n.focus()
33703 for (var t, n = I.nodesToArray(l.optionNodes), r = n.indexOf(l.focusedNode); - 1 === r ? r = 0 : "next" === e && r < n.length - 1 ? r++ : "prev" === e && 0 < r && r--, (t = n[r]).hasAttribute("disabled") && (t = de), !t && r < n.length - 1 && 0 < r;);
33704 t && t.focus(), l.focusedNode = t
33708 if (!(i && "click" == i.type && i.currentTarget != r[0] || function() {
33710 if (i && 0 < i.currentTarget.children.length) {
33711 var t = i.currentTarget.children[0],
33712 n = t.scrollHeight > t.clientHeight;
33713 if (n && 0 < t.children.length) {
33714 var r = i.pageX - i.currentTarget.getBoundingClientRect().left;
33715 r > t.querySelector("md-option").offsetWidth && (e = !0)
33720 var e = I.getClosest(i.target, "md-option");
33721 e && e.hasAttribute && !e.hasAttribute("disabled") && (i.preventDefault(), i.stopPropagation(), t.isMultiple || (l.restoreFocus = !0, I.nextTick(function() {
33722 u.hide(t.ngModel.$viewValue)
33726 }(), l.cleanupResizing = (r = a, i = s, o = l, t = function() {
33727 if (!o.isRemoved) {
33728 var e = v(r, i, o),
33731 t.element.css(m.toCss(t.styles)), n.element.css(m.toCss(n.styles))
33733 }, (n = ue.element(R)).on("resize", t), n.on("orientationchange", t), function() {
33734 n.off("resize", t), n.off("orientationchange", t)
33735 }), c(l.focusedNode), e
33736 }, l.hideBackdrop);
33741 return o(function(e) {
33742 if (l.isRemoved) return o.reject(!1);
33743 var t = v(a, s, l);
33744 t.container.element.css(m.toCss(t.container.styles)), t.dropDown.element.css(m.toCss(t.dropDown.styles)), f(function() {
33745 s.addClass("md-active"), t.dropDown.element.css(m.toCss({
33747 })), c(l.focusedNode), e()
33753 e && !e.hasAttribute("disabled") && e.focus()
33756 onRemove: function(e, t, n) {
33758 i = e.$on("$destroy", function() {
33761 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? o() : (r = h(t, {
33762 addClass: "md-leave"
33763 })).start().then(o);
33766 i(), t.removeClass("md-active").attr("aria-hidden", "true").css({
33774 }), t.parent().find("md-select-value").removeAttr("aria-hidden"),
33776 var t = e.selectCtrl;
33778 var n = e.selectEl.controller("mdSelectMenu");
33779 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
33781 }(n), !n.$destroy && n.restoreFocus && n.target.focus()
33785 disableParentScroll: !0
33788 function v(e, t, n) {
33789 var r, i, o = t[0],
33790 a = n.target[0].children[0],
33793 c = n.contentEl[0],
33794 u = s.getBoundingClientRect(),
33795 d = a.getBoundingClientRect(),
33799 bottom: u.height - j,
33800 right: u.width - j - (I.floatingScrollbars() ? 16 : 0)
33803 p = (d.left, d.left, d.width, f.bottom - (d.top + d.height)),
33804 m = u.width - 2 * j,
33805 g = l.querySelector("md-option[selected]"),
33806 v = l.getElementsByTagName("md-option"),
33807 b = l.getElementsByTagName("md-optgroup"),
33808 y = function(e, t) {
33811 var r = e[0].style.display;
33812 e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
33816 r = (i = n.loadingAsync) && ue.isFunction(i.then) ? c.firstElementChild || c : g || (b.length ? b[0] : v.length ? v[0] : c.firstElementChild || c), c.offsetWidth > m ? c.style["max-width"] = m + "px" : c.style.maxWidth = null, y && l.classList.add("md-overflow");
33818 "MD-OPTGROUP" === (_.tagName || "").toUpperCase() && (r = _ = v[0] || c.firstElementChild || c), n.focusedNode = _, o.style.display = "block";
33819 var $, w, E, C, k, x, T = l.getBoundingClientRect(),
33821 left: $.offsetLeft,
33823 width: $.offsetWidth,
33824 height: $.offsetHeight
33832 var A = R.getComputedStyle(r);
33833 M.paddingLeft = parseInt(A.paddingLeft, 10) || 0, M.paddingRight = parseInt(A.paddingRight, 10) || 0
33836 var S = c.offsetHeight / 2;
33837 c.scrollTop = M.top + M.height / 2 - S, h < S ? c.scrollTop = Math.min(M.top, c.scrollTop + S - h) : p < S && (c.scrollTop = Math.max(M.top + M.height - T.height, c.scrollTop - S + p))
33839 w = d.left + M.left - M.paddingLeft + 2, E = Math.floor(d.top + d.height / 2 - M.height / 2 - M.top + c.scrollTop) + 2, C = M.left + d.width / 2 + "px " + (M.top + M.height / 2 - c.scrollTop) + "px 0px", k = Math.min(d.width + M.paddingLeft + M.paddingRight, m), x = F.getComputedStyle(a)["font-size"];
33840 var D = o.getBoundingClientRect(),
33841 O = Math.round(100 * Math.min(d.width / T.width, 1)) / 100,
33842 N = Math.round(100 * Math.min(d.height / T.height, 1)) / 100;
33845 element: ue.element(o),
33847 left: Math.floor(H(f.left, w, f.right - D.width)),
33848 top: Math.floor(H(f.top, E, f.bottom - D.height)),
33854 element: ue.element(l),
33856 transformOrigin: C,
33857 transform: n.alreadyOpen ? "" : I.supplant("scale({0},{1})", [O, N])
33864 function H(e, t, n) {
33865 return Math.max(e, Math.min(t, n))
33870 var n = String.fromCharCode(e.keyCode),
33871 r = e.keyCode <= 31;
33872 return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
33874 ue.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", e).directive("mdSelectMenu", t).directive("mdOption", n).directive("mdOptgroup", function() {
33877 compile: function(t, n) {
33878 t.parent().find("md-select-header").length || function() {
33879 var e = t.find("label");
33880 e.length || (e = ue.element("<label>"), t.prepend(e));
33881 e.addClass("md-container-ignore"), e.attr("aria-hidden", "true"), n.label && e.text(n.label)
33885 }).directive("mdSelectHeader", function() {
33889 }).provider("$mdSelect", r)
33893 return ["$mdUtil", "$window", function(a, s) {
33897 link: function(r, i, t) {
33898 var o = r.$on("$md-resize-enable", function() {
33901 n = e.nodeType === s.Node.ELEMENT_NODE ? s.getComputedStyle(e) : {};
33902 r.$watch(t[l], function(e) {
33904 a.nextTick(function() {
33905 r.$broadcast("$md-resize")
33908 cachedTransitionStyles: n
33910 a.dom.animator.waitTransitionEnd(i, t).then(function() {
33911 r.$broadcast("$md-resize")
33920 ue.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
33923 function e(r, l, c, i) {
33924 var u = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
33926 find: function(e, t) {
33928 return n || t ? n : (i.error(l.supplant(u, [e || ""])), de)
33932 return function(e, t) {
33933 if (ue.isUndefined(e)) return d;
33934 var n, r, i, o, a = !0 === t,
33936 return !s && a ? d.waitFor(e) : !s && ue.isUndefined(t) ? (n = d, r = e, i = function() {
33938 }, o = function() {
33939 return c.when(l.supplant(u, [r || ""]))
33947 then: function(e) {
33948 return f(r).then(e || ue.noop)
33954 return r.when(e).catch(i.error)
33958 function t(r, b, i, y, _, $, e, w, E, C, k, x, T) {
33962 isOpen: "=?mdIsOpen"
33964 controller: "$mdSidenavController",
33965 compile: function(e) {
33966 return e.addClass("md-closed").attr("tabIndex", "-1"), t
33970 function t(o, a, e, t) {
33971 var s, l, c, u, d, f = null,
33974 n = w(e.mdIsLockedOpen),
33978 return e.keyCode === i.KEY_CODE.ESCAPE ? v(e) : C.when(!0)
33982 return e.preventDefault(), t.close()
33984 e.mdDisableScrollTarget && ((f = k[0].querySelector(e.mdDisableScrollTarget)) ? f = ue.element(f) : E.warn(b.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.', {
33985 selector: e.mdDisableScrollTarget
33986 }))), f || (f = a.parent()), e.hasOwnProperty("mdDisableBackdrop") || (l = b.createBackdrop(o, "md-sidenav-backdrop md-opaque ng-enter")), e.hasOwnProperty("mdDisableCloseEvents") && (c = !0), a.addClass("_md"), y(a), l && y.inherit(l, a), a.on("$destroy", function() {
33987 l && l.remove(), t.destroy()
33988 }), o.$on("$destroy", function() {
33990 }), o.$watch(function() {
33991 return n(o.$parent, {
33992 $media: function(e) {
33993 return E.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), r(e)
33997 }, function(e, t) {
33998 (o.isLockedOpen = e) === t ? a.toggleClass("md-locked-open", !!e) : $[e ? "addClass" : "removeClass"](a, "md-locked-open");
33999 l && l.toggleClass("md-locked-open", !!e)
34000 }), o.$watch("isOpen", function(e) {
34001 var t, n = b.findFocusTarget(a) || b.findFocusTarget(a, "[md-sidenav-focus]") || a,
34003 c || (r[e ? "on" : "off"]("keydown", g), l && l[e ? "on" : "off"]("click", v));
34004 t = function(e, t) {
34006 r = e[0].scrollTop;
34010 bottom: n.style.bottom,
34011 height: n.style.height
34016 height: e[0].clientHeight + "px"
34020 if (!t && d) return function() {
34021 n.style.top = d.top, n.style.bottom = d.bottom, n.style.height = d.height, l[0].style.top = null, l[0].style.bottom = null, l[0].style.height = null, d = null
34023 }(r, e), e && (h = k[0].activeElement, u = _.getLastInteractionType());
34024 return i = e, i && !s ? (s = f.css("overflow"), f.css("overflow", "hidden")) : ue.isDefined(s) && (f.css("overflow", s), s = de), p = C.all([e && l ? $.enter(l, r) : l ? $.leave(l) : C.when(!0), $[e ? "removeClass" : "addClass"](a, "md-closed")]).then(function() {
34025 o.isOpen && (T(function() {
34026 m.triggerHandler("resize")
34027 }), n && n.focus()), t && t()
34030 }), t.$toggleOpen = function(e) {
34031 return o.isOpen === e ? C.when(!0) : (o.isOpen && t.onCloseCb && t.onCloseCb(), C(function(t) {
34032 o.isOpen = e, b.nextTick(function() {
34033 p.then(function(e) {
34034 !o.isOpen && h && "keyboard" === u && (h.focus(), h = null), t(e)
34042 function n(t, e, n, r, i) {
34044 o.isOpen = function() {
34046 }, o.isLockedOpen = function() {
34047 return !!t.isLockedOpen
34048 }, o.onClose = function(e) {
34049 return o.onCloseCb = e, o
34050 }, o.open = function() {
34051 return o.$toggleOpen(!0)
34052 }, o.close = function() {
34053 return o.$toggleOpen(!1)
34054 }, o.toggle = function() {
34055 return o.$toggleOpen(!t.isOpen)
34056 }, o.$toggleOpen = function(e) {
34057 return r.when(t.isOpen = e)
34059 var a = e.mdComponentId,
34060 s = a && -1 < a.indexOf(i.startSymbol()),
34061 l = s ? i(a)(t.$parent) : a;
34062 o.destroy = n.register(o, l), s && e.$observe("mdComponentId", function(e) {
34063 e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
34066 e.$inject = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"], t.$inject = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$mdInteraction", "$animate", "$compile", "$parse", "$log", "$q", "$document", "$window", "$$rAF"], n.$inject = ["$scope", "$attrs", "$mdComponentRegistry", "$q", "$interpolate"], ue.module("material.components.sidenav", ["material.core", "material.components.backdrop"]).factory("$mdSidenav", e).directive("mdSidenav", t).directive("mdSidenavFocus", function() {
34069 require: "^mdSidenav",
34070 link: function(e, t, n, r) {}
34072 }).controller("$mdSidenavController", n)
34075 e.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse", "$log", "$timeout"], ue.module("material.components.slider", ["material.core"]).directive("mdSlider", e).directive("mdSliderContainer", function() {
34077 controller: function() {},
34078 compile: function(e) {
34079 var t = e.find("md-slider");
34081 var n = t.attr("md-vertical");
34082 return n !== de && e.attr("md-vertical", ""), t.attr("flex") || t.attr("flex", ""),
34083 function(e, a, t, n) {
34085 a.children().attr("disabled", e), a.find("input").attr("disabled", e)
34088 var s, i = ue.noop;
34089 t.disabled ? r(!0) : t.ngDisabled && (i = e.$watch(t.ngDisabled, function(e) {
34091 })), e.$on("$destroy", function() {
34093 }), n.fitInputWidthToTextLength = function(e) {
34094 var t = a[0].querySelector("md-input-container");
34096 var n = getComputedStyle(t),
34097 r = parseInt(n.minWidth),
34098 i = parseInt(n.paddingLeft) + parseInt(n.paddingRight);
34099 s = s || parseInt(n.maxWidth);
34100 var o = Math.max(s, r + i + r / 2 * e);
34101 t.style.maxWidth = o + "px"
34112 function e(B, z, i, W, Y, G, K, Z, X, Q) {
34115 require: ["?ngModel", "?^mdSliderContainer"],
34116 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>',
34117 compile: function(e, t) {
34118 var n = ue.element(e[0].getElementsByClassName("md-slider-wrapper")),
34119 r = t.tabindex || 0;
34120 n.attr("tabindex", r), (t.disabled || t.ngDisabled) && n.attr("tabindex", -1);
34121 return n.attr("role", "slider"), i.expect(e, "aria-label"), o
34125 function o(i, o, e, t) {
34128 $setViewValue: function(e) {
34129 this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
34135 $viewChangeListeners: []
34138 a = (ue.element(W.getClosest(o, "_md-slider-container", !0)), e.ngDisabled ? ue.bind(null, Z(e.ngDisabled), i.$parent) : function() {
34139 return o[0].hasAttribute("disabled")
34141 s = ue.element(o[0].querySelector(".md-thumb")),
34142 l = ue.element(o[0].querySelector(".md-thumb-text")),
34144 u = ue.element(o[0].querySelector(".md-track-container")),
34145 d = ue.element(o[0].querySelector(".md-track-fill")),
34146 f = ue.element(o[0].querySelector(".md-track-ticks")),
34147 h = ue.element(o[0].getElementsByClassName("md-slider-wrapper")),
34148 p = (ue.element(o[0].getElementsByClassName("md-slider-content")), W.throttle(D, 5e3)),
34149 m = ue.isDefined(e.mdVertical),
34150 g = ue.isDefined(e.mdDiscrete),
34151 v = ue.isDefined(e.mdInvert);
34152 ue.isDefined(e.min) ? e.$observe("min", x) : x(0), ue.isDefined(e.max) ? e.$observe("max", T) : T(100), ue.isDefined(e.step) ? e.$observe("step", M) : M(1), ue.isDefined(e.round) ? e.$observe("round", A) : A(3);
34158 e.ngDisabled && i.$parent.$watch(e.ngDisabled, function() {
34159 o.attr("aria-disabled", !!a())
34160 }), K.register(h, "drag", {
34162 }), i.mouseActive = !1, h.on("keydown", function(e) {
34164 var t, n = Y.KEY_CODE;
34165 switch (e.keyCode) {
34168 e.preventDefault(), t = -$;
34171 case n.RIGHT_ARROW:
34172 e.preventDefault(), t = $;
34175 e.preventDefault(), t = -$ * J;
34178 e.preventDefault(), t = $ * J;
34181 e.preventDefault(), e.stopPropagation(), N(y);
34184 e.preventDefault(), e.stopPropagation(), N(_)
34186 t && (t = v ? -t : t, (e.metaKey || e.ctrlKey || e.altKey) && (t *= ee), e.preventDefault(), e.stopPropagation(), N(r.$viewValue + t))
34187 }).on("mousedown", function() {
34189 if (!g || a()) return;
34190 if (ue.isUndefined($)) return;
34192 var e = "Slider step value must be greater than zero when in discrete mode";
34193 throw X.error(e), new Error(e)
34195 var t = Math.floor((_ - y) / $);
34196 E || (E = ue.element("<canvas>").css("position", "absolute"), f.append(E), C = E[0].getContext("2d"));
34198 !r || r.height || r.width || (D(), r = S);
34199 E[0].width = r.width, E[0].height = r.height;
34200 for (var i = 0; i <= t; i++) {
34201 var o = z.getComputedStyle(f[0]);
34202 C.fillStyle = o.color || "black", n = Math.floor((m ? r.height : r.width) * (i / t)), C.fillRect(m ? 0 : n - 1, m ? n - 1 : 0, m ? r.width : 2, m ? 2 : r.height)
34204 })(), i.mouseActive = !0, h.removeClass("md-focused"), Q(function() {
34207 }).on("focus", function() {
34208 !1 === i.mouseActive && h.addClass("md-focused")
34209 }).on("blur", function() {
34210 h.removeClass("md-focused"), o.removeClass("md-active"),
34214 C.clearRect(0, 0, e.width, e.height)
34217 }).on("$md.pressdown", function(e) {
34219 o.addClass("md-active"), o[0].focus(), D();
34220 var t = P(H(U(q(m ? e.pointer.y : e.pointer.x))));
34221 i.$apply(function() {
34224 }).on("$md.pressup", function(e) {
34226 o.removeClass("md-dragging");
34227 var t = P(H(U(q(m ? e.pointer.y : e.pointer.x))));
34228 i.$apply(function() {
34231 }).on("$md.dragstart", function(e) {
34233 L = !0, e.stopPropagation(), o.addClass("md-dragging"), F(e)
34234 }).on("$md.drag", function(e) {
34236 e.stopPropagation(), F(e)
34237 }).on("$md.dragend", function(e) {
34239 e.stopPropagation(), L = !1
34240 }), setTimeout(b, 0);
34241 var y, _, $, w, E, C, k = B.throttle(b);
34244 y = parseFloat(e), r.$viewValue = P(r.$modelValue, y, _), h.attr("aria-valuemin", e), b()
34248 _ = parseFloat(e), r.$viewValue = P(r.$modelValue, y, _), h.attr("aria-valuemax", e), b()
34256 w = P(parseInt(e), 0, 6)
34258 ue.element(z).on("resize", k), i.$on("$destroy", function() {
34259 ue.element(z).off("resize", k)
34260 }), r.$render = R, r.$viewChangeListeners.push(R), r.$formatters.push(P), r.$formatters.push(H);
34264 S = u[0].getBoundingClientRect()
34272 i.$evalAsync(function() {
34278 r.$setViewValue(P(H(e)))
34282 isNaN(r.$viewValue) && (r.$viewValue = r.$modelValue), r.$viewValue = P(r.$viewValue);
34283 var e = V(r.$viewValue);
34284 i.modelValue = r.$viewValue, h.attr("aria-valuenow", r.$viewValue), j(e), l.text(r.$viewValue)
34287 function P(e, t, n) {
34288 if (ue.isNumber(e)) return t = ue.isNumber(t) ? t : y, n = ue.isNumber(n) ? n : _, Math.max(t, Math.min(n, e))
34292 if (ue.isNumber(e)) {
34293 var t = Math.round((e - y) / $) * $ + y;
34294 return t = Math.round(t * Math.pow(10, w)) / Math.pow(10, w), n && n.fitInputWidthToTextLength && W.debounce(function() {
34295 n.fitInputWidthToTextLength(t.toString().length)
34303 var n = 100 * (e = Math.max(0, Math.min(t || 0, 1))) + "%",
34304 r = v ? 100 * (1 - e) + "%" : n;
34305 m ? c.css("bottom", n) : W.bidiProperty(c, "left", "right", n), d.css(m ? "height" : "width", r), o.toggleClass(v ? "md-max" : "md-min", 0 === e), o.toggleClass(v ? "md-min" : "md-max", 1 === e)
34312 g ? (n = m ? e.pointer.y : e.pointer.x, r = P(H(U(q(n)))), j(q(n)), l.text(r)) : (t = m ? e.pointer.y : e.pointer.x, i.$evalAsync(function() {
34318 var t = (e - (m ? S.top : S.left)) / (m ? S.height : S.width);
34319 return m || "rtl" !== W.bidi() || (t = 1 - t), Math.max(0, Math.min(1, m ? 1 - t : t))
34323 return y + (v ? 1 - e : e) * (_ - y)
34327 var t = (e - y) / (_ - y);
34328 return v ? 1 - t : t
34334 function e(c, u, d, s) {
34335 var l = d.checkStickySupport();
34336 return function(e, t, n) {
34337 var r = t.controller("mdContent");
34345 var i = r.$element.data("$$sticky");
34346 i || (i = function(e) {
34347 var r, i = e.$element,
34349 return function(e) {
34353 +d.now() - n > r ? (t = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), u.throttle(i))
34355 e.on("scroll touchmove", function() {
34356 t || (t = !0, u.throttle(i), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), n = +d.now()
34358 }(i), i.on("$scrollstart", o), i.on("$scroll", function e() {
34359 var t = i.prop("scrollTop"),
34360 n = (e.prevScrollTop || 0) < t;
34361 if (0 !== (e.prevScrollTop = t)) {
34363 if (r.next && r.next.top <= t) return void s(r.next);
34364 if (r.current && r.next && r.next.top - t <= r.next.height) return void l(r.current, t + (r.next.top - r.next.height - t))
34367 if (r.current && r.prev && t < r.current.top) return void s(r.prev);
34368 if (r.next && r.current && t >= r.next.top - r.current.height) return void l(r.current, t + (r.next.top - t - r.current.height))
34370 r.current && l(r.current, t)
34377 add: function(n, e) {
34378 e.addClass("md-sticky-clone");
34383 return r.items.push(t), d.nextTick(function() {
34387 r.items.forEach(function(e, t) {
34388 e.element[0] === n[0] && (r.items.splice(t, 1), e.clone.remove())
34397 r.items.forEach(a), r.items = r.items.sort(function(e, t) {
34398 return e.top < t.top ? -1 : 1
34400 for (var t = i.prop("scrollTop"), n = r.items.length - 1; 0 <= n; n--)
34401 if (t > r.items[n].top) {
34408 var t = e.element[0];
34409 for (e.top = 0, e.left = 0, e.right = 0; t && t !== i[0];) e.top += t.offsetTop, e.left += t.offsetLeft, t.offsetParent && (e.right += t.offsetParent.offsetWidth - t.offsetWidth - t.offsetLeft), t = t.offsetParent;
34410 e.height = e.element.prop("offsetHeight");
34411 var n = d.floatingScrollbars() ? "0" : de;
34412 d.bidi(e.clone, "margin-left", e.left, n), d.bidi(e.clone, "margin-right", n, e.right)
34416 if (r.current !== e) {
34417 r.current && (l(r.current, null), n(r.current, null)), e && n(e, "active"), r.current = e;
34418 var t = r.items.indexOf(e);
34419 r.next = r.items[t + 1], r.prev = r.items[t - 1], n(r.next, "next"), n(r.prev, "prev")
34424 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)
34428 e && (null === t || t === de ? e.translateY && (e.translateY = null, e.clone.css(c.CSS.TRANSFORM, "")) : (e.translateY = t, d.bidi(e.clone, c.CSS.TRANSFORM, "translate3d(" + e.left + "px," + t + "px,0)", "translateY(" + t + "px)")))
34430 }(r), r.$element.data("$$sticky", i));
34431 var o = n || s(t.clone())(e),
34433 e.$on("$destroy", a)
34437 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], ue.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
34440 function e(s, l, c, u, d) {
34445 template: '<div class="md-subheader _md"> <div class="md-subheader-inner"> <div class="md-subheader-content"></div> </div></div>',
34446 link: function(n, r, e, t, i) {
34447 c(r), r.addClass("_md"), u.prefixer().removeAttribute(r, "ng-repeat");
34448 var o = r[0].outerHTML;
34451 return ue.element(e[0].querySelector(".md-subheader-content"))
34453 e.$set("role", "heading"), d.expect(r, "aria-level", "2"), i(n, function(e) {
34455 }), r.hasClass("md-no-sticky") || i(n, function(e) {
34456 var t = l('<div class="md-subheader-wrapper" aria-hidden="true">' + o + "</div>")(n);
34457 u.nextTick(function() {
34464 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], ue.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
34468 t.$inject = ["$parse"];
34470 a = "$md." + e.toLowerCase();
34476 link: function(n, e, t) {
34478 e.on(a, function(e) {
34479 var t = e.currentTarget;
34480 n.$applyAsync(function() {
34493 ue.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
34496 function e(e, d, f, h, p, m, g) {
34500 priority: f.BEFORE_NG_ARIA,
34502 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>',
34503 require: ["^?mdInputContainer", "?ngModel", "?^form"],
34504 compile: function(e, t) {
34505 var u = n.compile(e, t).post;
34506 return e.addClass("md-dragging"),
34507 function(n, r, e, t) {
34509 var i = t[1] || d.fakeNgModel(),
34511 null != e.disabled ? o = function() {
34513 } : e.ngDisabled && (o = h(e.ngDisabled));
34514 var a, s = ue.element(r[0].querySelector(".md-thumb-container")),
34515 l = ue.element(r[0].querySelector(".md-container")),
34516 c = ue.element(r[0].querySelector(".md-label"));
34518 r.removeClass("md-dragging")
34519 }), u(n, r, e, t), o && n.$watch(o, function(e) {
34520 r.attr("tabindex", e ? -1 : 0)
34521 }), e.$observe("mdInvert", function(e) {
34522 var t = d.parseAttributeBoolean(e);
34523 t ? r.prepend(c) : r.prepend(l), r.toggleClass("md-inverted", t)
34524 }), m.register(l, "drag"), l.on("$md.dragstart", function(e) {
34525 o && o(n) || (e.stopPropagation(), r.addClass("md-dragging"), a = {
34526 width: s.prop("offsetWidth")
34528 }).on("$md.drag", function(e) {
34530 e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
34531 var t = e.pointer.distanceX / a.width,
34532 n = i.$viewValue ? 1 + t : t;
34533 n = Math.max(0, Math.min(1, n)), s.css(f.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), a.translate = n
34535 }).on("$md.dragend", function(e) {
34537 a && (e.stopPropagation(), r.removeClass("md-dragging"), s.css(f.CSS.TRANSFORM, ""), (i.$viewValue ? a.translate < .5 : .5 < a.translate) && (t = !i.$viewValue, n.$apply(function() {
34538 i.$setViewValue(t), i.$render()
34539 })), a = null, n.skipToggle = !0, g(function() {
34547 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], ue.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
34548 }(), ue.module("material.components.tabs", ["material.core", "material.components.icon"]), ue.module("material.components.tabs").service("MdTabsPaginationService", function() {
34550 decreasePageOffset: function(e, t) {
34551 var n, r, i = e.canvas,
34553 for (n = 0; n < o.length; n++)
34557 } return Math.max(0, r - i.clientWidth)
34559 increasePageOffset: function(e, t) {
34560 var n, r, i = e.canvas,
34561 o = l(e) - i.clientWidth,
34563 for (n = 0; a.length, a[n] <= t + i.clientWidth; n++) r = a[n];
34564 return Math.min(o, r)
34567 getTotalTabsWidth: l
34573 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], i.push(r), r += n.offsetWidth;
34579 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], r += n.offsetWidth;
34582 }), ue.module("material.components.tabs").directive("mdTab", function() {
34584 require: "^?mdTabs",
34586 compile: function(e, t) {
34587 var n = l(e, "md-tab-label"),
34588 r = l(e, "md-tab-body");
34589 if (0 === n.length && (n = ue.element("<md-tab-label></md-tab-label>"), t.label ? n.text(t.label) : n.append(e.contents()), 0 === r.length)) {
34590 var i = e.contents().detach();
34591 (r = ue.element("<md-tab-body></md-tab-body>")).append(i)
34593 return e.append(n), r.html() && e.append(r), o
34596 active: "=?mdActive",
34597 disabled: "=?ngDisabled",
34598 select: "&?mdOnSelect",
34599 deselect: "&?mdOnDeselect",
34600 tabClass: "@mdTabClass"
34604 function o(e, t, n, r) {
34606 var i = r.getTabElementIndex(t),
34607 o = l(t, "md-tab-body").remove(),
34608 a = l(t, "md-tab-label").remove(),
34614 template: o.html(),
34617 e.select = e.select || ue.noop, e.deselect = e.deselect || ue.noop, e.$watch("active", function(e) {
34618 e && r.select(s.getIndex(), !0)
34619 }), e.$watch("disabled", function() {
34621 }), e.$watch(function() {
34622 return r.getTabElementIndex(t)
34624 s.index = e, r.updateTabOrder()
34625 }), e.$on("$destroy", function() {
34632 for (var n = e[0].children, r = 0, i = n.length; r < i; r++) {
34634 if (o.tagName === t.toUpperCase()) return ue.element(o)
34636 return ue.element()
34638 }), ue.module("material.components.tabs").directive("mdTabItem", function() {
34640 require: "^?mdTabs",
34641 link: function(e, t, n, r) {
34642 r && r.attachRipple(e, t)
34645 }), ue.module("material.components.tabs").directive("mdTabLabel", function() {
34654 compile: function(e, t) {
34655 var n = r(t.mdTabScroll, null, !0);
34656 return function(t, e) {
34657 e.on("wheel", function(e) {
34658 t.$apply(function() {
34668 e.$inject = ["$parse"], ue.module("material.components.tabs").directive("mdTabScroll", e)
34671 function e(c, u, n, r, i, d, l, o, a, s, t, f, h) {
34679 var n = o.$normalize("md-" + t);
34682 p[t] = "false" !== e
34684 e && P(t, e), o.hasOwnProperty(n) && r(o[n]), o.$observe(n, r)
34688 v = !0, ue.element(n).off("resize", S)
34693 ue.element(e.wrapper).toggleClass("md-stretch-tabs", function() {
34694 switch (p.stretchTabs) {
34700 return !p.shouldPaginate && n.matchMedia("(max-width: 600px)").matches
34706 p.shouldCenterTabs = I()
34712 ue.forEach(n.tabs, function(e) {
34713 e.style.maxWidth = t + "px"
34714 }), ue.forEach(n.dummies, function(e) {
34715 e.style.maxWidth = t + "px"
34716 }), d.nextTick(p.updateInkBarStyles)
34721 e !== t && (p.maxTabWidth = L(), p.shouldCenterTabs = I(), d.nextTick(function() {
34722 p.maxTabWidth = L(), U(p.selectedIndex)
34727 u[e ? "removeClass" : "addClass"]("md-no-tab-content")
34731 var t = (p.shouldCenterTabs || Y() ? "" : "-") + e + "px";
34732 t = t.replace("--", ""), ue.element(N().paging).css(r.CSS.TRANSFORM, "translate(" + t + ", 0)"), c.$broadcast("$mdTabsPaginationChanged")
34736 e !== t && N().tabs[e] && (U(), q())
34740 e !== t && (p.selectedIndex = R(e), p.lastSelectedIndex = t, p.updateInkBarStyles(), B(), U(e), c.$broadcast("$mdTabsChanged"), p.tabs[t] && p.tabs[t].scope.deselect(), p.tabs[e] && p.tabs[e].scope.select())
34744 m || (p.focusIndex = p.selectedIndex = e), t && p.noSelectClick || d.nextTick(function() {
34745 p.tabs[e].element.triggerHandler("click")
34750 p.lastSelectedIndex = p.selectedIndex, p.offsetLeft = W(p.offsetLeft), d.nextTick(function() {
34751 p.updateInkBarStyles(), H()
34756 ue.element(N().inkBar).toggleClass("ng-hide", e)
34760 u.toggleClass("md-dynamic-height", e)
34766 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
34770 return p.centerTabs && !p.shouldPaginate
34774 if (-1 === e) return -1;
34775 var t, n, r = Math.max(p.tabs.length - e, e);
34776 for (t = 0; t <= r; t++) {
34777 if ((n = p.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
34778 if ((n = p.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
34783 function P(e, n, r) {
34784 Object.defineProperty(p, e, {
34790 r = e, n && n(e, t)
34796 p.maxTabWidth = L(), p.shouldPaginate = function() {
34798 if (p.noPagination || !b) return !1;
34799 var t = u.prop("clientWidth");
34800 return ue.forEach(N().tabs, function(e) {
34802 }), e = t < 0, d.msie && (N().paging.style.width = e ? "999999px" : de), e
34808 return ue.forEach(e, function(e) {
34809 t += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
34814 var e = N().canvas.clientWidth;
34815 return Math.max(0, Math.min(e - 1, 264))
34819 var n, r = t ? "focusIndex" : "selectedIndex",
34821 for (n = i + e; p.tabs[n] && p.tabs[n].scope.disabled; n += e);
34822 n = (i + e + p.tabs.length) % p.tabs.length, p.tabs[n] && (p[r] = n)
34826 p.styleTabItemFocus = "keyboard" === t.getLastInteractionType();
34827 var e = N().tabs[p.focusIndex];
34833 if (ue.isNumber(e) || (e = p.focusIndex), t.tabs[e] && !p.shouldCenterTabs) {
34836 i = n.offsetWidth + r;
34839 var o = j(Array.prototype.slice.call(t.tabs, 0, e)),
34840 a = j(Array.prototype.slice.call(t.tabs, 0, e + 1));
34841 p.offsetLeft = Math.min(p.offsetLeft, W(o)), p.offsetLeft = Math.max(p.offsetLeft, W(a - t.canvas.clientWidth))
34842 } else p.offsetLeft = Math.max(p.offsetLeft, W(i - t.canvas.clientWidth + 32)), p.offsetLeft = Math.min(p.offsetLeft, W(r));
34843 else p.offsetLeft = 0
34848 p.selectedIndex = R(p.selectedIndex), p.focusIndex = R(p.focusIndex)
34852 if (!p.dynamicHeight) return u.css("height", "");
34853 if (!p.tabs.length) return g.push(B);
34855 t = e.contents[p.selectedIndex],
34856 n = t ? t.offsetHeight : 0,
34857 r = e.wrapper.offsetHeight,
34859 o = u.prop("clientHeight");
34861 "bottom" === u.attr("md-align-tabs") && (o -= r, i -= r, u.attr("md-border-bottom") !== de && ++o), m = !0;
34871 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
34873 }).start().done(function() {
34875 transition: "none",
34877 }), d.nextTick(function() {
34878 u.css("transition", "")
34887 if (n.tabs[p.selectedIndex])
34889 if (u.prop("offsetParent")) {
34890 var r = p.selectedIndex,
34891 i = n.paging.offsetWidth,
34894 s = i - a - o.offsetWidth;
34895 if (p.shouldCenterTabs) {
34897 l < i && e !== i && t !== l && f(z, 0, !0, i, l)
34900 t = p.selectedIndex,
34901 n = p.lastSelectedIndex,
34902 r = ue.element(e.inkBar);
34903 if (!ue.isNumber(n)) return;
34904 r.toggleClass("md-left", t < n).toggleClass("md-right", n < t)
34905 }(), ue.element(n.inkBar).css({
34909 } else(function e() {
34910 e.watcher || (e.watcher = c.$watch(function() {
34911 d.nextTick(function() {
34912 e.watcher && u.prop("offsetParent") && (e.watcher(), e.watcher = null, S())
34916 else g.push(p.updateInkBarStyles);
34917 else ue.element(n.inkBar).css({
34926 if (!t.tabs.length || !p.shouldPaginate) return 0;
34927 var n = t.tabs[t.tabs.length - 1],
34928 r = n.offsetLeft + n.offsetWidth;
34929 return e = Y() ? (e = Math.min(t.paging.offsetWidth - t.canvas.clientWidth, e), Math.max(0, e)) : (e = Math.max(0, e), Math.min(r - t.canvas.clientWidth, e))
34933 return "rtl" === d.bidi()
34935 p.$onInit = function() {
34937 var n = o.$normalize("md-" + t);
34939 o.$observe(n, function(e) {
34942 })("stretchTabs", $), P("focusIndex", T, p.selectedIndex || 0), P("offsetLeft", x, 0), P("hasContent", k, !1), P("maxTabWidth", E, L()), P("shouldPaginate", C, !1), y("noInkBar", D), y("dynamicHeight", O), y("noPagination"), y("swipeContent"), y("noDisconnect"), y("autoselect"), y("noSelectClick"), y("centerTabs", w), y("enableDisconnect"), p.scope = c, p.parent = c.$parent, p.tabs = [], p.lastSelectedIndex = null, p.hasFocus = !1, p.styleTabItemFocus = !1, p.shouldCenterTabs = I(), p.tabContentPrefix = "tab-content-", p.navigationHint = "Use the left and right arrow keys to navigate between tabs", p.selectedIndex = p.selectedIndex || 0, e = o.$mdTabsTemplate, t = ue.element(u[0].querySelector("md-tab-data")), t.html(e), a(t.contents())(p.parent), delete o.$mdTabsTemplate, c.$watch("$mdTabsCtrl.selectedIndex", M), ue.element(n).on("resize", S), c.$on("$destroy", _), s(u), d.nextTick(function() {
34943 B(), U(), z(), p.tabs[p.selectedIndex] && p.tabs[p.selectedIndex].scope.select(), b = !0, H()
34946 }, p.updatePagination = d.debounce(H, 100), p.redirectFocus = q, p.attachRipple = function(e, t) {
34949 colorElement: ue.element(n.inkBar)
34952 }, p.insertTab = function(e, t) {
34955 getIndex: function() {
34956 return p.tabs.indexOf(i)
34958 isActive: function() {
34959 return this.getIndex() === p.selectedIndex
34961 isLeft: function() {
34962 return this.getIndex() < p.selectedIndex
34964 isRight: function() {
34965 return this.getIndex() > p.selectedIndex
34967 shouldRender: function() {
34968 return !p.noDisconnect || this.isActive()
34970 hasFocus: function() {
34971 return p.styleTabItemFocus && p.hasFocus && this.getIndex() === p.focusIndex
34974 hasContent: !(!e.template || !e.template.trim())
34976 i = ue.extend(r, e);
34977 ue.isDefined(t) ? p.tabs.splice(t, 0, i) : p.tabs.push(i);
34978 return g.forEach(function(e) {
34983 for (e = 0; e < p.tabs.length; e++)
34984 if (p.tabs[e].hasContent) {
34988 }(), d.nextTick(function() {
34991 if (e.hasContent) {
34992 var t = u[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
34993 ue.element(t).attr("aria-controls", p.tabContentPrefix + e.id)
34995 }(i), n && p.autoselect && d.nextTick(function() {
34996 d.nextTick(function() {
34997 A(p.tabs.indexOf(i))
35001 }, p.removeTab = function(e) {
35003 var t = p.selectedIndex,
35004 n = p.tabs.splice(e.getIndex(), 1)[0];
35005 V(), p.selectedIndex === t && (n.scope.deselect(), p.tabs[p.selectedIndex] && p.tabs[p.selectedIndex].scope.select());
35006 d.nextTick(function() {
35007 H(), p.offsetLeft = W(p.offsetLeft)
35009 }, p.select = A, p.scroll = function(e) {
35010 if (!p.shouldPaginate) return;
35011 e.preventDefault(), e.deltaY ? p.offsetLeft = W(p.offsetLeft + e.deltaY) : e.deltaX && (p.offsetLeft = W(p.offsetLeft + e.deltaX))
35012 }, p.nextPage = function() {
35013 if (!p.canPageForward()) return;
35014 var e = h.increasePageOffset(N(), p.offsetLeft);
35015 p.offsetLeft = W(e)
35016 }, p.previousPage = function() {
35017 if (!p.canPageBack()) return;
35018 var e = h.decreasePageOffset(N(), p.offsetLeft);
35019 p.offsetLeft = W(e)
35020 }, p.keydown = function(e) {
35021 switch (e.keyCode) {
35022 case r.KEY_CODE.LEFT_ARROW:
35023 e.preventDefault(), F(-1, !0);
35025 case r.KEY_CODE.RIGHT_ARROW:
35026 e.preventDefault(), F(1, !0);
35028 case r.KEY_CODE.SPACE:
35029 case r.KEY_CODE.ENTER:
35030 e.preventDefault(), m || A(p.focusIndex);
35032 case r.KEY_CODE.TAB:
35033 p.focusIndex !== p.selectedIndex && (p.focusIndex = p.selectedIndex)
35035 }, p.canPageForward = function() {
35037 t = e.tabs[e.tabs.length - 1];
35038 if (Y()) return p.offsetLeft < e.paging.offsetWidth - e.canvas.offsetWidth;
35039 return t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + p.offsetLeft
35040 }, p.canPageBack = function() {
35041 return 0 < p.offsetLeft
35042 }, p.refreshIndex = V, p.incrementIndex = F, p.getTabElementIndex = function(e) {
35043 var t = u[0].getElementsByTagName("md-tab");
35044 return Array.prototype.indexOf.call(t, e[0])
35045 }, p.updateInkBarStyles = d.debounce(z, 100), p.updateTabOrder = d.debounce(function() {
35046 var e = p.tabs[p.selectedIndex],
35047 t = p.tabs[p.focusIndex];
35048 p.tabs = p.tabs.sort(function(e, t) {
35049 return e.index - t.index
35050 }), p.selectedIndex = p.tabs.indexOf(e), p.focusIndex = p.tabs.indexOf(t)
35051 }, 100), p.getFocusedTabId = function() {
35052 var e = p.tabs[p.focusIndex];
35053 return e && e.id ? "tab-item-" + e.id : null
35054 }, 1 === ue.version.major && ue.version.minor <= 4 && this.$onInit()
35056 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction", "$timeout", "MdTabsPaginationService"], ue.module("material.components.tabs").controller("MdTabsController", e)
35062 navigationHint: "@?mdNavigationHint",
35063 selectedIndex: "=?mdSelected"
35065 template: function(e, t) {
35066 return t.$mdTabsTemplate = e.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="' + n.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="' + n.mdTabsArrow + '"></md-icon> </md-next-button> <md-tabs-canvas tabindex="{{ $mdTabsCtrl.hasFocus ? -1 : 0 }}" 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" aria-label="{{::$mdTabsCtrl.navigationHint}}"><md-tab-item tabindex="{{ tab.isActive() ? 0 : -1 }}" class="md-tab {{::tab.scope.tabClass}}" 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-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" 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>'
35068 controller: "MdTabsController",
35069 controllerAs: "$mdTabsCtrl",
35070 bindToController: !0
35073 e.$inject = ["$$mdSvgRegistry"], ue.module("material.components.tabs").directive("mdTabs", e)
35078 require: "^?mdTabs",
35079 link: function(e, t, n, r) {
35081 var i, o, a = function() {
35082 r.updatePagination(), r.updateInkBarStyles()
35084 if ("MutationObserver" in c) {
35085 (i = new MutationObserver(a)).observe(t[0], {
35089 }), o = i.disconnect.bind(i)
35091 var s = l.debounce(a, 15, null, !1);
35092 t.on("DOMSubtreeModified", s), o = t.off.bind(t, "DOMSubtreeModified", s)
35094 e.$on("$destroy", function() {
35101 e.$inject = ["$mdUtil", "$window"], ue.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
35107 link: function(e, t, n, r) {
35109 var i = r.enableDisconnect ? e.compileScope.$new() : e.compileScope;
35110 return t.html(e.template), a(t.contents())(i), s.nextTick(function() {
35111 e.$watch("connected", function(e) {
35112 !1 === e ? r.enableDisconnect && s.disconnectScope(i) : o()
35113 }), e.$on("$destroy", o)
35117 r.enableDisconnect && s.reconnectScope(i)
35121 template: "=mdTabsTemplate",
35122 connected: "=?mdConnectedIf",
35123 compileScope: "=mdScope"
35125 require: "^?mdTabs"
35128 e.$inject = ["$compile", "$mdUtil"], ue.module("material.components.tabs").directive("mdTabsTemplate", e)
35134 link: function(e, t) {
35135 t.addClass("_md"), e.$on("$destroy", function() {
35143 n.$inject = ["$mdToast", "$scope", "$log"], r.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia", "$document"];
35149 return e("$mdToast").setDefaults({
35150 methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
35152 }).addPreset("simple", {
35153 argOption: "textContent",
35154 methods: ["textContent", "content", "action", "actionKey", "actionHint", "highlightAction", "highlightClass", "theme", "parent", "dismissHint"],
35155 options: ["$mdToast", "$mdTheming", function(e, t) {
35157 template: '<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}"> <div class="md-toast-content" aria-live="polite" aria-relevant="all"> <span class="md-toast-text"> {{ toast.content }} </span> <span class="md-visually-hidden">{{ toast.dismissHint }}</span> <span class="md-visually-hidden" ng-if="toast.action && toast.actionKey"> {{ toast.actionHint }} </span> <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="highlightClasses"> {{ toast.action }} </md-button> </div></md-toast>',
35159 theme: t.defaultTheme(),
35160 controllerAs: "toast",
35161 bindToController: !0
35164 }).addMethod("updateTextContent", t).addMethod("updateContent", t);
35166 function n(t, n, r) {
35167 this.$onInit = function() {
35169 e.highlightAction && (n.highlightClasses = ["md-highlight", e.highlightClass]), e.action && !e.actionKey && r.warn("Toasts with actions should define an actionKey for accessibility.", "Details: https://material.angularjs.org/latest/api/service/$mdToast#mdtoast-simple"), e.actionKey && !e.actionHint && (e.actionHint = 'Press Control-"' + e.actionKey + '" to '), e.dismissHint || (e.dismissHint = "Press Escape to dismiss."), n.$watch(function() {
35173 }), this.resolve = function() {
35179 function r(r, s, l, c, u) {
35180 var d = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
35182 onShow: function(e, i, o) {
35183 f = o.textContent || o.content;
35184 var a = !c("gt-sm");
35185 i = l.extractElementByName(i, "md-toast", !0), o.element = i, o.onSwipe = function(e, t) {
35186 var n = e.type.replace("$md.", ""),
35187 r = n.replace("swipe", "");
35188 "down" === r && -1 !== o.position.indexOf("top") && !a || "up" === r && (-1 !== o.position.indexOf("bottom") || a) || ("left" !== r && "right" !== r || !a) && (i.addClass("md-" + n), l.nextTick(s.cancel))
35189 }, o.openClass = (t = o.position, c("gt-xs") ? "md-toast-open-" + (-1 < t.indexOf("top") ? "top" : "bottom") : "md-toast-open-bottom"), i.addClass(o.toastClass), o.parent.addClass(o.openClass), l.hasComputedStyle(o.parent, "position", "static") && o.parent.css("position", "relative");
35191 n = e.toast && e.toast.actionKey ? e.toast.actionKey : de, u.on("keydown", function(e) {
35192 "Escape" === e.key && s.hide(!1), n && e.key === n && e.ctrlKey && s.hide(h)
35193 }), i.on(d, o.onSwipe), i.addClass(a ? "md-bottom" : o.position.split(" ").map(function(e) {
35195 }).join(" ")), o.parent && o.parent.addClass("md-toast-animating");
35197 return r.enter(i, o.parent).then(function() {
35198 o.parent && o.parent.removeClass("md-toast-animating")
35201 onRemove: function(e, t, n) {
35202 e.toast && e.toast.actionKey && u.off("keydown");
35203 t.off(d, n.onSwipe), n.parent && n.parent.addClass("md-toast-animating");
35204 n.openClass && n.parent.removeClass(n.openClass);
35205 return (!0 === n.$destroy ? t.remove() : r.leave(t)).then(function() {
35206 n.parent && n.parent.removeClass("md-toast-animating"), l.hasComputedStyle(n.parent, "position", "static") && n.parent.css("position", "")
35210 position: "bottom left",
35214 transformTemplate: function(e, t) {
35215 if (t.autoWrap && e && !/md-toast-content/g.test(e)) {
35216 var n = document.createElement("md-template");
35218 for (var r = 0; r < n.children.length; r++)
35219 if ("MD-TOAST" === n.children[r].nodeName) {
35220 var i = ue.element('<div class="md-toast-content">');
35221 i.append(ue.element(n.children[r].childNodes)), n.children[r].appendChild(i[0])
35222 } return n.innerHTML
35229 e.$inject = ["$mdToast"], t.$inject = ["$$interimElementProvider"], ue.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", t)
35232 function e(m, g, v, e, b) {
35233 var y = ue.bind(null, v.supplant, "translate3d(0,{0}px,0)");
35237 link: function(f, h, p) {
35238 h.addClass("_md"), e(h), v.nextTick(function() {
35239 h.addClass("_md-toolbar-transitions")
35240 }, !1), ue.isDefined(p.mdScrollShrink) && function() {
35241 var n, r, i = ue.noop,
35244 s = p.mdShrinkSpeedFactor || .5,
35246 c = v.debounce(e, 5e3);
35247 f.$on("$mdContentLoaded", u), p.$observe("mdScrollShrink", function(e) {
35248 var t = h.parent().find("md-content");
35249 !r && t.length && u(null, t), !1 === (e = f.$eval(e)) ? i() : i = d()
35250 }), p.ngShow && f.$watch(p.ngShow, e);
35251 p.ngHide && f.$watch(p.ngHide, e);
35254 t && h.parent()[0] === t.parent()[0] && (r && r.off("scroll", l), r = t, i = d())
35258 var t = e ? e.target.scrollTop : a;
35259 c(), o = Math.min(n / s, Math.max(0, o + t - a)), h.css(g.CSS.TRANSFORM, y([-o * s])), r.css(g.CSS.TRANSFORM, y([(n - o) * s])), a = t, v.nextTick(function() {
35260 var e = h.hasClass("md-whiteframe-z1");
35261 e && !o ? b.removeClass(h, "md-whiteframe-z1") : !e && o && b.addClass(h, "md-whiteframe-z1")
35266 return r ? (r.on("scroll", l), r.attr("scroll-shrink", "true"), v.nextTick(e, !1), function() {
35267 r.off("scroll", l), r.attr("scroll-shrink", "false"), e()
35272 var e = -(n = h.prop("offsetHeight")) * s + "px";
35278 f.$on("$destroy", i)
35283 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], ue.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
35286 function e(b, y, _, $, w, E, C, k) {
35287 var x = "focus touchstart mouseenter",
35288 T = "blur touchcancel mouseleave",
35291 x: C.xPosition.CENTER,
35292 y: C.yPosition.ABOVE
35295 x: C.xPosition.OFFSET_END,
35296 y: C.yPosition.CENTER
35299 x: C.xPosition.CENTER,
35300 y: C.yPosition.BELOW
35303 x: C.xPosition.OFFSET_START,
35304 y: C.yPosition.CENTER
35311 mdZIndex: "=?mdZIndex",
35312 mdDelay: "=?mdDelay",
35313 mdVisible: "=?mdVisible",
35314 mdAutohide: "=?mdAutohide",
35315 mdDirection: "@?mdDirection"
35317 link: function(s, r, l) {
35318 var i, e, o, a, c, u = "md-tooltip-" + E.nextUid(),
35319 d = E.getParentWithPointerEvents(r),
35325 s.mdZIndex = s.mdZIndex || 100, s.mdDelay = s.mdDelay || 0, M[s.mdDirection] || (s.mdDirection = "bottom")
35329 var t = e || w(r.text().trim())(s.$parent);
35330 (!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", u))
35334 t(), a && a.panelEl && a.panelEl.removeClass(i), i = "md-origin-" + s.mdDirection, e = M[s.mdDirection], o = C.newPanelPosition().relativeTo(d).addPanelPosition(e.x, e.y), a && a.panelEl && (a.panelEl.addClass(i), a.updatePosition(o))
35338 g.queued && g.value === !!e || !g.queued && s.mdVisible === !!e || (g.value = !!e, g.queued || (e ? (g.queued = !0, c = b(function() {
35339 s.mdVisible = g.value, g.queued = !1, c = null, s.visibleWatcher || v(s.mdVisible)
35340 }, s.mdDelay)) : E.nextTick(function() {
35341 s.mdVisible = !1, s.visibleWatcher || v(!1)
35347 if (!r[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
35349 var e = ue.element(document.body),
35350 t = C.newPanelAnimation().openFrom(d).closeTo(d).withAnimation({
35358 propagateContainerEvents: !0,
35359 panelClass: "md-tooltip",
35362 zIndex: s.mdZIndex,
35364 onDomAdded: function() {
35365 a.panelEl.addClass(i)
35370 a.open().then(function() {
35371 a.panelEl.attr("role", "tooltip")
35373 }() : a && a.close()
35375 t(), n(), r.detach(), m(),
35377 if (d[0] && "MutationObserver" in y) {
35378 var e = new MutationObserver(function(e) {
35379 e.some(function(e) {
35380 return "disabled" === e.attributeName && d[0].disabled
35393 p = document.activeElement === d[0]
35397 "focus" === e.type && p ? p = !1 : s.mdVisible || (d.on(T, i), g(!0), "touchstart" === e.type && d.one("touchend", function() {
35398 E.nextTick(function() {
35399 $.one("touchend", i)
35405 ((s.hasOwnProperty("mdAutohide") ? s.mdAutohide : l.hasOwnProperty("mdAutohide")) || h || $[0].activeElement !== d[0]) && (c && (b.cancel(c), g.queued = !1, c = null), d.off(T, i), d.triggerHandler("blur"), g(!1)), h = !1
35413 k.deregister("scroll", t, !0), k.deregister("blur", n), k.deregister("resize", f), d.off(x, r).off(T, i).off("mousedown", o), i(), e && e.disconnect()
35415 p = !1, k.register("scroll", t, !0), k.register("blur", n), k.register("resize", f), s.$on("$destroy", a), d.on("mousedown", o), d.on(x, r)
35418 if (r[0] && "MutationObserver" in y) {
35419 var e = new MutationObserver(function(e) {
35420 e.forEach(function(e) {
35421 "md-visible" !== e.attributeName || s.visibleWatcher || (s.visibleWatcher = s.$watch("mdVisible", v))
35426 }), l.hasOwnProperty("mdVisible") && (s.visibleWatcher = s.$watch("mdVisible", v))
35427 } else s.visibleWatcher = s.$watch("mdVisible", v);
35428 s.$watch("mdDirection", m), r.one("$destroy", t), d.one("$destroy", t), s.$on("$destroy", function() {
35429 g(!1), a && a.destroy(), e && e.disconnect(), r.remove()
35430 }), -1 < r.text().indexOf(w.startSymbol()) && s.$watch(function() {
35431 return r.text().trim()
35441 e.$inject = ["$timeout", "$window", "$$rAF", "$document", "$interpolate", "$mdUtil", "$mdPanel", "$$mdTooltipRegistry"], ue.module("material.components.tooltip", ["material.core", "material.components.panel"]).directive("mdTooltip", e).service("$$mdTooltipRegistry", function() {
35445 register: function(e, t, n) {
35446 var r = o[e] = o[e] || [];
35447 r.length || (n ? F.addEventListener(e, s, !0) : a.on(e, s)); - 1 === r.indexOf(t) && r.push(t)
35449 deregister: function(e, t, n) {
35451 i = r ? r.indexOf(t) : -1; - 1 < i && (r.splice(i, 1), 0 === r.length && (n ? F.removeEventListener(e, s, !0) : a.off(e, s)))
35456 o[t.type] && o[t.type].forEach(function(e) {
35464 e.addClass("md-truncate")
35466 e.$inject = ["$element"], ue.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
35475 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>"
35477 t.$inject = ["$$rAF", "$mdUtil", "$mdConstant", "$parse", "$rootScope", "$window", "$scope", "$element", "$attrs"], i.$inject = ["$scope", "$element", "$attrs", "$browser", "$document", "$rootScope", "$$rAF", "$mdUtil"], n.$inject = ["$parse"], ue.module("material.components.virtualRepeat", ["material.core", "material.components.showHide"]).directive("mdVirtualRepeatContainer", function() {
35481 compile: function(e, t) {
35482 e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
35485 }).directive("mdVirtualRepeat", n).directive("mdForceHeight", o);
35487 function t(e, n, t, r, i, o, a, s, l) {
35488 this.$rootScope = i, this.$scope = a, this.$element = s, 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 = t.ELEMENT_MAX_PIXELS, this.$attrs.mdTopIndex ? (this.bindTopIndex = r(this.$attrs.mdTopIndex), this.topIndex = this.bindTopIndex(this.$scope), ue.isDefined(this.topIndex) || (this.topIndex = 0, this.bindTopIndex.assign(this.$scope, 0)), this.$scope.$watch(this.bindTopIndex, ue.bind(this, function(e) {
35489 e !== this.topIndex && this.scrollToIndex(e)
35490 }))) : this.topIndex = 0, this.scroller = s[0].querySelector(".md-virtual-repeat-scroller"), this.sizer = this.scroller.querySelector(".md-virtual-repeat-sizer"), this.offsetter = this.scroller.querySelector(".md-virtual-repeat-offsetter");
35491 var c = ue.bind(this, this.updateSize);
35492 e(ue.bind(this, function() {
35494 var e = n.debounce(c, 10, null, !1),
35496 this.size || e(), t.on("resize", e), a.$on("$destroy", function() {
35498 }), a.$emit("$md-resize-enable"), a.$on("$md-resize", c)
35506 require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
35509 transclude: "element",
35510 compile: function(e, t) {
35511 var n = t.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
35514 s = t.mdExtraName && r(t.mdExtraName);
35515 return function(e, t, n, r, i) {
35516 r[0].link_(r[1], i, o, a, s)
35522 function i(e, t, n, r, i, o, a, s) {
35523 this.$scope = e, this.$element = t, this.$attrs = n, this.$browser = r, this.$document = i, this.$mdUtil = s, this.$rootScope = o, this.$$rAF = a, this.onDemand = s.parseAttributeBoolean(n.mdOnDemand), this.browserCheckUrlChange = r.$$checkUrlChange, this.newStartIndex = 0, this.newEndIndex = 0, this.newVisibleEnd = 0, this.startIndex = 0, this.endIndex = 0, this.itemSize = e.$eval(n.mdItemSize) || null, this.isFirstRender = !0, this.isVirtualRepeatUpdating_ = !1, this.itemsLength = 0, this.unwatchItemSize_ = ue.noop, this.blocks = {}, this.pooledBlocks = [], e.$on("$destroy", ue.bind(this, this.cleanupBlocks_))
35527 if (!ue.isFunction(e.getItemAtIndex) || !ue.isFunction(e.getLength)) throw Error("When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement functions getItemAtIndex() and getLength().");
35534 link: function(e, t, n) {
35535 var r = e.$eval(n.mdForceHeight) || null;
35536 r && t && (t[0].style.height = r)
35540 t.prototype.register = function(e) {
35541 this.repeater = e, ue.element(this.scroller).on("scroll wheel touchmove touchend", ue.bind(this, this.handleScroll_))
35542 }, t.prototype.isHorizontal = function() {
35543 return this.horizontal
35544 }, t.prototype.getSize = function() {
35546 }, t.prototype.setSize_ = function(e) {
35547 var t = this.getDimensionName_();
35548 this.size = e, this.$element[0].style[t] = e + "px"
35549 }, t.prototype.unsetSize_ = function() {
35550 this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
35551 }, t.prototype.updateSize = function() {
35552 if (!this.originalSize) {
35553 var e = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight;
35554 e && (this.size = e), this.handleScroll_(), this.repeater && this.repeater.containerUpdated()
35556 }, t.prototype.getScrollSize = function() {
35557 return this.scrollSize
35558 }, t.prototype.getDimensionName_ = function() {
35559 return this.isHorizontal() ? "width" : "height"
35560 }, t.prototype.sizeScroller_ = function(e) {
35561 var t = this.getDimensionName_(),
35562 n = this.isHorizontal() ? "height" : "width";
35563 if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
35565 this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
35566 var r = Math.floor(e / this.maxElementPixels),
35567 i = document.createElement("div");
35568 i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
35569 for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
35570 i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
35572 }, t.prototype.autoShrink_ = function(e) {
35573 var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
35574 if (this.autoShrink && t !== this.size) {
35575 null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
35576 var n = this.originalSize || this.size;
35577 if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
35578 else if (null !== this.originalSize) {
35580 var r = this.originalSize;
35581 this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
35583 this.repeater.containerUpdated()
35585 }, t.prototype.setScrollSize = function(e) {
35586 var t = e + this.offsetSize;
35587 this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
35588 }, t.prototype.getScrollOffset = function() {
35589 return this.scrollOffset
35590 }, t.prototype.scrollTo = function(e) {
35591 this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
35592 }, t.prototype.scrollToIndex = function(e) {
35593 var t = this.repeater.getItemSize(),
35594 n = this.repeater.itemsLength;
35595 n < e && (e = n - 1), this.scrollTo(t * e)
35596 }, t.prototype.resetScroll = function() {
35598 }, t.prototype.handleScroll_ = function() {
35599 var e = "rtl" !== document.dir && "rtl" !== document.body.dir;
35600 e || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
35601 var t = this.isHorizontal() ? e ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
35602 if (!(this.scrollSize < this.size) && (t > this.scrollSize - this.size && (t = this.scrollSize - this.size), t !== this.scrollOffset)) {
35603 var n = this.repeater.getItemSize();
35605 var r = Math.max(0, Math.floor(t / n) - 3),
35606 i = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || e ? r * n : -r * n) + "px)";
35607 if (this.scrollOffset = t, this.offsetter.style.webkitTransform = i, this.offsetter.style.transform = i, this.bindTopIndex) {
35608 var o = Math.floor(t / n);
35609 o !== this.topIndex && o < this.repeater.getItemCount() && (this.topIndex = o, this.bindTopIndex.assign(this.$scope, o), this.$rootScope.$$phase || this.$scope.$digest())
35611 this.repeater.containerUpdated()
35614 }, i.prototype.link_ = function(e, t, n, r, i) {
35615 this.container = e, this.transclude = t, this.repeatName = n, this.rawRepeatListExpression = r, this.extraName = i, this.sized = !1, this.repeatListExpression = ue.bind(this, this.repeatListExpression_), this.container.register(this)
35616 }, i.prototype.cleanupBlocks_ = function() {
35617 ue.forEach(this.pooledBlocks, function(e) {
35620 }, i.prototype.readItemSize_ = function() {
35621 if (!this.itemSize) {
35622 this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
35623 var e = this.getBlock_(0);
35624 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()
35626 }, i.prototype.repeatListExpression_ = function(e) {
35627 var t = this.rawRepeatListExpression(e);
35628 if (this.onDemand && t) {
35630 return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
35633 }, i.prototype.containerUpdated = function() {
35634 if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== ue.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, ue.bind(this, function(e) {
35635 e && e.length && this.readItemSize_()
35636 })), void(this.$rootScope.$$phase || this.$scope.$digest());
35637 this.sized || (this.items = this.repeatListExpression(this.$scope)), this.sized || (this.unwatchItemSize_(), this.sized = !0, this.$scope.$watchCollection(this.repeatListExpression, ue.bind(this, function(e, t) {
35638 this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
35639 }))), this.updateIndexes_(), (this.newStartIndex !== this.startIndex || this.newEndIndex !== this.endIndex || this.container.getScrollOffset() > this.container.getScrollSize()) && (this.items instanceof r && this.items.$$includeIndexes(this.newStartIndex, this.newEndIndex), this.virtualRepeatUpdate_(this.items, this.items))
35640 }, i.prototype.getItemSize = function() {
35641 return this.itemSize
35642 }, i.prototype.getItemCount = function() {
35643 return this.itemsLength
35644 }, i.prototype.virtualRepeatUpdate_ = function(e, t) {
35645 this.isVirtualRepeatUpdating_ = !0;
35646 var n = e && e.length || 0,
35648 if (this.items && n < this.items.length && 0 !== this.container.getScrollOffset()) {
35650 var i = this.container.getScrollOffset();
35651 this.container.resetScroll(), this.container.scrollTo(i)
35653 n !== this.itemsLength && (r = !0, this.itemsLength = n), ((this.items = e) !== t || r) && this.updateIndexes_(), this.parentNode = this.$element[0].parentNode, r && this.container.setScrollSize(n * this.itemSize), Object.keys(this.blocks).forEach(function(e) {
35654 var t = parseInt(e, 10);
35655 (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
35656 }, this), this.$browser.$$checkUrlChange = ue.noop;
35659 for (o = this.newStartIndex; o < this.newEndIndex && null == this.blocks[o]; o++) a = this.getBlock_(o), this.updateBlock_(a, o), s.push(a);
35660 for (; null != this.blocks[o]; o++) this.updateBlock_(this.blocks[o], o);
35661 for (var c = o - 1; o < this.newEndIndex; o++) a = this.getBlock_(o), this.updateBlock_(a, o), l.push(a);
35662 if (s.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(s), this.$element[0].nextSibling), l.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(l), this.blocks[c] && this.blocks[c].element[0].nextSibling), this.$browser.$$checkUrlChange = this.browserCheckUrlChange, this.startIndex = this.newStartIndex, this.endIndex = this.newEndIndex, this.isFirstRender) {
35663 this.isFirstRender = !1;
35664 var u = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex;
35665 this.$mdUtil.nextTick(function() {
35666 this.container.scrollToIndex(u)
35669 this.isVirtualRepeatUpdating_ = !1
35670 }, i.prototype.getBlock_ = function(n) {
35671 return this.pooledBlocks.length ? this.pooledBlocks.pop() : (this.transclude(ue.bind(this, function(e, t) {
35676 }, this.updateScope_(t, n), this.parentNode.appendChild(e[0])
35679 }, i.prototype.updateBlock_ = function(e, t) {
35680 ((this.blocks[t] = 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())
35681 }, i.prototype.updateScope_ = function(e, t) {
35682 e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
35683 }, i.prototype.poolBlock_ = function(e) {
35684 this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
35685 }, i.prototype.domFragmentFromBlocks_ = function(e) {
35686 var t = this.$document[0].createDocumentFragment();
35687 return e.forEach(function(e) {
35688 t.appendChild(e.element[0])
35690 }, i.prototype.updateIndexes_ = function() {
35691 var e = this.items ? this.items.length : 0,
35692 t = Math.ceil(this.container.getSize() / this.itemSize);
35693 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)
35694 }, r.prototype.$$includeIndexes = function(e, t) {
35695 for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
35696 this.length = this.model.getLength()
35697 }, o.$inject = ["$mdUtil"]
35702 link: function(e, n, r) {
35704 r.$observe("mdWhiteframe", function(e) {
35705 -1 != (e = parseInt(e, 10) || 4) && (24 < e || e < 1) && (o.warn("md-whiteframe attribute value is invalid. It should be a number between 1 and 24", n[0]), e = 4);
35706 var t = -1 == e ? "" : "md-whiteframe-" + e + "dp";
35707 r.$updateClass(t, i), i = t
35712 e.$inject = ["$log"], ue.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
35713 }(), ue.module("material.core").constant("$MD_THEME_CSS", 'md-autocomplete.md-THEME_NAME-theme{background:"{{background-hue-1}}"}md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]){background:"{{background-hue-2}}"}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.md-THEME_NAME-theme input{color:"{{foreground-1}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-input-container.md-input-focused .md-input{border-color:"{{accent-color}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-input-container.md-input-focused label,md-autocomplete.md-THEME_NAME-theme.md-accent md-input-container.md-input-focused md-icon{color:"{{accent-color}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-progress-linear .md-container{background-color:"{{accent-100}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-progress-linear .md-bar{background-color:"{{accent-color}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-input-container.md-input-focused .md-input{border-color:"{{warn-A700}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-input-container.md-input-focused label,md-autocomplete.md-THEME_NAME-theme.md-warn md-input-container.md-input-focused md-icon{color:"{{warn-A700}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-progress-linear .md-container{background-color:"{{warn-100}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-progress-linear .md-bar{background-color:"{{warn-color}}"}.md-autocomplete-standard-list-container.md-THEME_NAME-theme,.md-autocomplete-suggestions-container.md-THEME_NAME-theme{background:"{{background-hue-1}}"}.md-autocomplete-standard-list-container.md-THEME_NAME-theme li,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li{color:"{{foreground-1}}"}.md-autocomplete-standard-list-container.md-THEME_NAME-theme li#selected_option,.md-autocomplete-standard-list-container.md-THEME_NAME-theme li:hover,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li#selected_option,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover{background:"{{background-500-0.18}}"}md-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-bottom-sheet.md-THEME_NAME-theme{background-color:"{{background-color}}";border-top-color:"{{background-hue-3}}"}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-color}}";color:"{{foreground-1}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme:not([disabled]):hover{background-color:"{{background-500-0.2}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover{background-color:transparent}.md-button.md-THEME_NAME-theme.md-fab md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab,.md-button.md-THEME_NAME-theme.md-primary.md-raised{color:"{{primary-contrast}}";background-color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon{color:"{{primary-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover{background-color:"{{primary-600}}"}.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-fab{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-raised{color:"{{background-900}}";background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon{color:"{{background-900}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover{background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused{background-color:"{{background-200}}"}.md-button.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab,.md-button.md-THEME_NAME-theme.md-warn.md-raised{color:"{{warn-contrast}}";background-color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon{color:"{{warn-contrast}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover{background-color:"{{warn-600}}"}.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab,.md-button.md-THEME_NAME-theme.md-accent.md-raised{color:"{{accent-contrast}}";background-color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent[disabled],.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled],.md-button.md-THEME_NAME-theme.md-warn[disabled],.md-button.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}";cursor:default}.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon,.md-button.md-THEME_NAME-theme[disabled] md-icon{color:"{{foreground-3}}"}.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled]{background-color:"{{foreground-4}}"}.md-button.md-THEME_NAME-theme[disabled]{background-color:transparent}._md a.md-THEME_NAME-theme:not(.md-button).md-primary{color:"{{primary-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover{color:"{{primary-700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent{color:"{{accent-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover{color:"{{accent-A700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn{color:"{{warn-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover{color:"{{warn-700}}"}md-card.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-hue-1}}";border-radius:2px}md-card.md-THEME_NAME-theme .md-card-image{border-radius:2px 2px 0 0}md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon{color:"{{background-color}}";background-color:"{{foreground-3}}"}md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead,md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead{color:"{{foreground-2}}"}md-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-THEME_NAME-theme .md-calendar{background:"{{background-hue-1}}";color:"{{foreground-1-0.87}}"}.md-THEME_NAME-theme .md-calendar tr:last-child td{border-bottom-color:"{{background-hue-2}}"}.md-THEME_NAME-theme .md-calendar-day-header{background:"{{background-500-0.32}}";color:"{{foreground-1-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-500-0.32}}"}.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:"{{foreground-3}}"}.md-THEME_NAME-theme .md-calendar-month-label md-icon,.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-hue-1}}"}.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-hue-1}}"}md-menu-content.md-THEME_NAME-theme md-menu-item{color:"{{foreground-1}}"}md-menu-content.md-THEME_NAME-theme md-menu-item md-icon{color:"{{foreground-2}}"}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:"{{foreground-3}}"}md-menu-content.md-THEME_NAME-theme md-menu-divider{background-color:"{{foreground-4}}"}md-menu-bar.md-THEME_NAME-theme>button.md-button{color:"{{foreground-1}}";border-radius:2px}md-menu-bar.md-THEME_NAME-theme md-menu>button{color:"{{foreground-1}}"}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-color:"{{ background-500-0.18}}"}md-menu-bar.md-THEME_NAME-theme.md-open:not(.md-keyboard-mode) md-menu:hover>button{background-color:"{{ background-500-0.18}}"}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:"{{foreground-2}}"}md-menu-content.md-THEME_NAME-theme .md-menu.md-open>.md-button{background-color:"{{ background-500-0.18}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar{background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler{background-color:"{{primary-color}}";color:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler md-icon{color:"{{primary-contrast}}"}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-button._md-nav-button[disabled]{color:"{{foreground-3}}"}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.ng-empty>md-radio-button:first-child .md-container:before{background-color:"{{foreground-3-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-input-container:not(.md-input-invalid).md-input-focused.md-accent .md-select-value{border-color:"{{accent-color}}"}md-input-container:not(.md-input-invalid).md-input-focused.md-accent .md-select-value span{color:"{{accent-color}}"}md-input-container:not(.md-input-invalid).md-input-focused.md-warn .md-select-value{border-color:"{{warn-A700}}"}md-input-container:not(.md-input-invalid).md-input-focused.md-warn .md-select-value span{color:"{{warn-A700}}"}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-color:"{{background-hue-1}}"}md-select-menu.md-THEME_NAME-theme md-content md-optgroup{color:"{{foreground-2}}"}md-select-menu.md-THEME_NAME-theme md-content md-option{color:"{{foreground-1}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[disabled] .md-text{color:"{{foreground-3}}"}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-color:"{{background-500-0.18}}"}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:"{{foreground-1}}"}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-focused:not(.md-checked) .md-thumb:before,md-switch.md-THEME_NAME-theme.md-focused[disabled] .md-thumb:before{background-color:"{{foreground-4}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]) .md-ink-ripple{color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]) .md-thumb{background-color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]) .md-bar{background-color:"{{accent-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-focused .md-thumb:before{background-color:"{{accent-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary .md-ink-ripple{color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary .md-thumb{background-color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary .md-bar{background-color:"{{primary-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary.md-focused .md-thumb:before{background-color:"{{primary-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn .md-ink-ripple{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn .md-thumb{background-color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn .md-bar{background-color:"{{warn-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).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}}"}')
35714 }(window, window.angular), window.ngMaterial = {
35720 angular.module("ngCsv.config", []).value("ngCsv.config", {
35722 }).config(["$compileProvider", function(e) {
35723 angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
35724 }]), 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(n) {
35732 this.stringifyField = function(e, t) {
35733 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 || -1 < e.indexOf(",") || -1 < e.indexOf("\n") || -1 < e.indexOf("\r")) && (e = t.txtDelim + e + t.txtDelim), e) : "boolean" == typeof e ? e ? "TRUE" : "FALSE" : e
35734 }, this.isFloat = function(e) {
35735 return +e === e && (!isFinite(e) || Boolean(e % 1))
35736 }, this.stringify = function(e, s) {
35741 t = n.when(e).then(function(e) {
35743 angular.isDefined(s.header) && s.header && (t = [], angular.forEach(s.header, function(e, t) {
35744 this.push(c.stringifyField(e, s))
35745 }, t), n = t.join(s.fieldSep ? s.fieldSep : ","), d += n + "\r\n");
35747 if (angular.isArray(e) ? a = e : angular.isFunction(e) && (a = e()), angular.isDefined(s.label) && s.label && "boolean" == typeof s.label) {
35750 var o = s.columnOrder ? s.columnOrder : a[0];
35751 angular.forEach(o, function(e, t) {
35752 var n = s.columnOrder ? e : t;
35753 this.push(c.stringifyField(n, s))
35754 }, r), i = r.join(s.fieldSep ? s.fieldSep : ","), d += i + "\r\n"
35756 angular.forEach(a, function(e, t) {
35757 var n, r, i = angular.copy(a[t]);
35759 var o = s.columnOrder ? s.columnOrder : i;
35760 angular.forEach(o, function(e, t) {
35761 var n = s.columnOrder ? i[e] : e;
35762 this.push(c.stringifyField(n, s))
35763 }, r), n = r.join(s.fieldSep ? s.fieldSep : ","), d += t < a.length ? n + "\r\n" : n
35764 }), s.addByteOrderMarker && (u += "\ufeff"), u += d, l.resolve(u)
35766 return "function" == typeof t.catch && t.catch(function(e) {
35769 }, this.isSpecialChar = function(e) {
35770 return void 0 !== t[e]
35771 }, this.getSpecialChar = function(e) {
35774 }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(e, a, s, o, l) {
35779 filename: "@filename",
35780 header: "&csvHeader",
35781 columnOrder: "&csvColumnOrder",
35782 txtDelim: "@textDelimiter",
35783 decimalSep: "@decimalSeparator",
35784 quoteStrings: "@quoteStrings",
35785 fieldSep: "@fieldSeparator",
35786 lazyLoad: "@lazyLoad",
35787 addByteOrderMarker: "@addBom",
35789 charset: "@charset",
35792 controller: ["$scope", "$element", "$attrs", "$transclude", function(r, i, o, e) {
35793 r.csv = "", angular.isDefined(r.lazyLoad) && "true" == r.lazyLoad || angular.isArray(r.data) && r.$watch("data", function(e) {
35795 }, !0), r.getFilename = function() {
35796 return r.filename || "download.csv"
35797 }, r.buildCSV = function() {
35798 var e, t = a.defer(),
35800 return i.addClass(o.ngCsvLoadingClass || "ng-csv-loading"), n = r.data(), angular.isFunction(n) && (n = n()), s.stringify(n, (e = {
35801 txtDelim: r.txtDelim ? r.txtDelim : '"',
35802 decimalSep: r.decimalSep ? r.decimalSep : ".",
35803 quoteStrings: r.quoteStrings,
35804 addByteOrderMarker: r.addByteOrderMarker
35805 }, angular.isDefined(o.csvHeader) && (e.header = r.$eval(r.header)), angular.isDefined(o.csvColumnOrder) && (e.columnOrder = r.$eval(r.columnOrder)), angular.isDefined(o.csvLabel) && (e.label = r.$eval(r.label)), e.fieldSep = r.fieldSep ? r.fieldSep : ",", e.fieldSep = s.isSpecialChar(e.fieldSep) ? s.getSpecialChar(e.fieldSep) : e.fieldSep, e)).then(function(e) {
35806 r.csv = e, i.removeClass(o.ngCsvLoadingClass || "ng-csv-loading"), t.resolve(e)
35807 }), r.$apply(), t.promise
35810 link: function(i, e, t) {
35811 e.bind("click", function(e) {
35812 i.buildCSV().then(function(e) {
35814 var e = i.charset || "utf-8",
35815 t = new Blob([i.csv], {
35816 type: "text/csv;charset=" + e + ";"
35818 if (c.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(t, i.getFilename());
35820 var n = angular.element('<div data-tap-disabled="true"><a></a></div>'),
35821 r = angular.element(n.children()[0]);
35822 r.attr("href", c.URL.createObjectURL(t)), r.attr("download", i.getFilename()), o.find("body").append(n), l(function() {
35823 r[0].click(), r.remove()
35832 }(window, document), angular.module("ngRateIt", ["ng"]).directive("ngRateIt", ["$q", function(r) {
35840 readOnly: "&?readOnly",
35841 pristine: "=?pristine",
35842 resetable: "&?resetable",
35843 starWidth: "=?starWidth",
35844 starHeight: "=?starHeight",
35845 canelWidth: "=?canelWidth",
35846 cancelHeight: "=?cancelHeight",
35849 beforeRated: "&?beforeRated",
35850 beforeReset: "&?beforeReset"
35852 templateUrl: "ngRateIt/ng-rate-it.html",
35853 require: "ngModel",
35855 link: function(e, t, n) {
35856 n.readOnly || (e.readOnly = function() {
35858 }), n.resetable || (e.resetable = function() {
35860 }), n.beforeRated || (e.beforeRated = function() {
35862 return e.resolve(), e.promise
35863 }), n.rated || (e.rated = function() {}), n.beforeReset || (e.beforeReset = function() {
35865 return e.resolve(), e.promise
35866 }), n.reset || (e.reset = function() {})
35868 controller: "ngRateItController"
35870 }]).controller("ngRateItController", ["$scope", "$timeout", function(n, r) {
35872 n.isTouch = !!window.hasOwnProperty("ontouchstart") || 0 < window.navigator.msMaxTouchPoints, n.orgValue = angular.copy(n.ngModel), n.min = n.min || 0, n.max = n.max || 5, n.step = n.step || .5, n.pristine = n.orgValue === n.ngModel, n.starWidth = n.starWidth || 16, n.starPartWidth = n.starWidth * n.step, n.starHeight = n.starHeight || 16, n.canelWidth = n.canelWidth || n.starWidth, n.cancelHeight = n.cancelHeight || n.starHeight;
35873 var t = n.max - n.min,
35875 e = n.$watch("ngModel", function() {
35876 n.pristine = n.orgValue === n.ngModel
35879 return (e + 1) / i * t
35881 n.getStartParts = function() {
35882 return new Array(i)
35883 }, n.getStarOffset = function(e) {
35884 var t = 1 / n.step;
35885 return -n.starWidth / t * (e % t)
35886 }, n.isSelected = function(e) {
35887 return o(e) <= n.ngModel - n.min
35888 }, n.removeRating = function() {
35889 n.resetable() && !n.readOnly() && n.beforeReset({
35891 }).then(function() {
35892 n.ngModel = n.min, n.reset({
35896 }, n.setValue = function(e) {
35897 if (!n.readOnly()) {
35898 var t = angular.copy(n.min + o(e));
35901 }).then(function() {
35902 n.ngModel = t, r(function() {
35909 }, n.$on("$destroy", function() {
35912 }]).run(["$templateCache", function(e) {
35914 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>")
35917 if ("function" == typeof define && define.amd) define(["jquery"], e);
35918 else if ("object" == typeof module && module.exports) {
35919 var t = require("jquery");
35920 module.exports = e(t)
35923 if (void 0 === e) throw new Error("jQuery.textcomplete requires jQuery");
35925 return function(o) {
35928 o.fn.textcomplete = function(t, n) {
35929 var i = Array.prototype.slice.call(arguments);
35930 return this.each(function() {
35932 r = e.data("textComplete");
35933 if (r || (n || (n = {}), n._oid = a++, r = new o.fn.textcomplete.Completer(this, n), e.data("textComplete", r)), "string" == typeof t) {
35935 i.shift(), r[t].apply(r, i), "destroy" === t && e.removeData("textComplete")
35936 } else o.each(t, function(n) {
35937 o.each(["header", "footer", "placement", "maxCount"], function(e) {
35939 n[e] && (r.option[e] = n[e], t = e + "as a strategy param is deprecated. Use option.", console.warn && console.warn(t), delete n[e])
35941 }), r.register(o.fn.textcomplete.Strategy.parse(t, {
35950 var r, i, o, a = 0,
35954 if (this.$el = s(e), this.id = "textcomplete" + a++, this.strategies = [], this.views = [], this.option = s.extend({}, c.defaults, t), !(this.$el.is("input[type=text]") || this.$el.is("input[type=search]") || this.$el.is("textarea") || e.isContentEditable || "true" == e.contentEditable)) throw new Error("textcomplete must be called on a Textarea or a ContentEditable.");
35955 if (e === e.ownerDocument.activeElement) this.initialize();
35958 this.$el.one("focus." + this.id, function() {
35960 }), this.option.adapter && "CKEditor" != this.option.adapter || "undefined" == typeof CKEDITOR || !this.$el.is("textarea") || CKEDITOR.on("instanceReady", function(t) {
35961 -1 == s.inArray(t.editor.id, l) && (l.push(t.editor.id), t.editor.on("focus", function(e) {
35962 n.$el = s(t.editor.editable().$), n.option.adapter || (n.option.adapter = s.fn.textcomplete.CKEditor), n.option.ckeditor_instance = t.editor, n.initialize()
35970 dropdownClassName: "dropdown-menu textcomplete-dropdown",
35973 rightEdgeOffset: 30
35974 }, s.extend(c.prototype, {
35982 initialize: function() {
35983 var e, t, n = this.$el.get(0);
35984 if (this.$el.prop("ownerDocument") !== document && window.frames.length)
35985 for (var r = 0; r < window.frames.length; r++)
35986 if (this.$el.prop("ownerDocument") === window.frames[r].document) {
35987 this.$iframe = s(window.frames[r].frameElement);
35989 } this.dropdown = new s.fn.textcomplete.Dropdown(n, this, this.option), e = this.option.adapter ? this.option.adapter : (t = this.$el.is("textarea") || this.$el.is("input[type=text]") || this.$el.is("input[type=search]") ? "number" == typeof n.selectionEnd ? "Textarea" : "IETextarea" : "ContentEditable", s.fn.textcomplete[t]), this.adapter = new e(n, this, this.option)
35991 destroy: function() {
35992 this.$el.off("." + this.id), this.adapter && this.adapter.destroy(), this.dropdown && this.dropdown.destroy(), this.$el = this.adapter = this.dropdown = null
35994 deactivate: function() {
35995 this.dropdown && this.dropdown.deactivate()
35997 trigger: function(e, t) {
35998 this.dropdown || this.initialize(), null != e || (e = this.adapter.getTextFromHeadToCaret());
35999 var n = this._extractSearchQuery(e);
36002 if (t && this._term === r && "" !== r) return;
36003 this._term = r, this._search.apply(this, n)
36004 } else this._term = null, this.dropdown.deactivate()
36006 fire: function(e) {
36007 var t = Array.prototype.slice.call(arguments, 1);
36008 return this.$el.trigger(e, t), this
36010 register: function(e) {
36011 Array.prototype.push.apply(this.strategies, e)
36013 select: function(e, t, n) {
36014 this._term = null, this.adapter.select(e, t, n), this.fire("change").fire("textComplete:select", e, t), this.adapter.focus()
36018 _extractSearchQuery: function(e) {
36019 for (var t = 0; t < this.strategies.length; t++) {
36020 var n = this.strategies[t],
36022 if (r || "" === r) {
36023 var i = s.isFunction(n.match) ? n.match(e) : n.match;
36024 a = r, "[object String]" === Object.prototype.toString.call(a) && (e = r);
36025 var o = e.match(i);
36026 if (o) return [n, o[n.index], o]
36032 _search: (r = function(n, r, i, e) {
36034 r.search(i, function(e, t) {
36035 o.dropdown.shown || o.dropdown.activate(), o._clearAtNext && (o.dropdown.clear(), o._clearAtNext = !1), o.dropdown.setPosition(o.adapter.getCaretPosition()), o.dropdown.render(o._zip(e, r, i)), t || (n(), o._clearAtNext = !0)
36038 var e = Array.prototype.slice.call(arguments);
36043 e.unshift(function e() {
36046 o = void 0, t.unshift(e), r.apply(n, t)
36048 }), r.apply(this, e)
36051 _zip: function(e, t, n) {
36052 return s.map(e, function(e) {
36060 }), s.fn.textcomplete.Completer = c
36065 a = function(e, t) {
36066 var n, r, i = t.strategy.idProperty;
36067 for (n = 0; n < e.length; n++)
36068 if ((r = e[n]).strategy === t.strategy)
36070 if (r.value[i] === t.value[i]) return !0
36071 } else if (r.value === t.value) return !0;
36075 i(document).on("click", function(e) {
36076 var n = e.originalEvent && e.originalEvent.keepTextCompleteDropdown;
36077 i.each(s, function(e, t) {
36078 e !== n && t.deactivate()
36091 function l(e, t, n) {
36092 this.$el = l.createElement(n), this.completer = t, this.id = t.id + "dropdown", this._data = [], this.$inputEl = i(e), (this.option = n).listPosition && (this.setPosition = n.listPosition), n.height && this.$el.height(n.height);
36094 i.each(["maxCount", "placement", "footer", "header", "noResultsMessage", "className"], function(e, t) {
36095 null != n[t] && (r[t] = n[t])
36096 }), this._bindEvents(e), s[this.id] = this
36099 createElement: function(e) {
36100 var t = e.appendTo;
36101 return t instanceof i || (t = i(t)), i("<ul></ul>").addClass(e.dropdownClassName).attr("id", "textcomplete-dropdown-" + e._oid).css({
36104 position: "absolute",
36108 }), i.extend(l.prototype, {
36120 destroy: function() {
36121 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 s[this.id]
36123 render: function(e) {
36124 var t = this._buildContents(e),
36125 n = i.map(e, function(e) {
36129 var r = e[0].strategy;
36130 r.id ? this.$el.attr("data-strategy", r.id) : this.$el.removeAttr("data-strategy"), this._renderHeader(n), this._renderFooter(n), t && (this._renderContents(t), this._fitToBottom(), this._fitToRight(), this._activateIndexedItem()), this._setScroll()
36131 } else this.noResultsMessage ? this._renderNoResultsMessage(n) : this.shown && this.deactivate()
36133 setPosition: function(e) {
36134 var t = "absolute";
36135 return this.$inputEl.add(this.$inputEl.parents()).each(function() {
36136 return "absolute" !== i(this).css("position") && ("fixed" === i(this).css("position") ? (e.top -= o.scrollTop(), e.left -= o.scrollLeft(), !(t = "fixed")) : void 0)
36137 }), this.$el.css(this._applyPlacement(e)), this.$el.css({
36141 clear: function() {
36142 this.$el.html(""), this.data = [], this._index = 0, this._$header = this._$footer = this._$noResultsMessage = null
36144 activate: function() {
36145 return this.shown || (this.clear(), this.$el.show(), this.className && this.$el.addClass(this.className), this.completer.fire("textComplete:show"), this.shown = !0), this
36147 deactivate: function() {
36148 return this.shown && (this.$el.hide(), this.className && this.$el.removeClass(this.className), this.completer.fire("textComplete:hide"), this.shown = !1), this
36150 isUp: function(e) {
36151 return 38 === e.keyCode || e.ctrlKey && 80 === e.keyCode
36153 isDown: function(e) {
36154 return 40 === e.keyCode || e.ctrlKey && 78 === e.keyCode
36156 isEnter: function(e) {
36157 return !(e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) && (13 === e.keyCode || 9 === e.keyCode || !0 === this.option.completeOnSpace && 32 === e.keyCode)
36159 isPageup: function(e) {
36160 return 33 === e.keyCode
36162 isPagedown: function(e) {
36163 return 34 === e.keyCode
36165 isEscape: function(e) {
36166 return 27 === e.keyCode
36171 _$noResultsMessage: null,
36173 _bindEvents: function() {
36174 this.$el.on("mousedown." + this.id, ".textcomplete-item", i.proxy(this._onClick, this)), this.$el.on("touchstart." + this.id, ".textcomplete-item", i.proxy(this._onClick, this)), this.$el.on("mouseover." + this.id, ".textcomplete-item", i.proxy(this._onMouseover, this)), this.$inputEl.on("keydown." + this.id, i.proxy(this._onKeydown, this))
36176 _onClick: function(e) {
36177 var t = i(e.target);
36178 e.preventDefault(), e.originalEvent.keepTextCompleteDropdown = this.id, t.hasClass("textcomplete-item") || (t = t.closest(".textcomplete-item"));
36179 var n = this.data[parseInt(t.data("index"), 10)];
36180 this.completer.select(n.value, n.strategy, e);
36182 setTimeout(function() {
36183 r.deactivate(), "touchstart" === e.type && r.$inputEl.focus()
36186 _onMouseover: function(e) {
36187 var t = i(e.target);
36188 e.preventDefault(), t.hasClass("textcomplete-item") || (t = t.closest(".textcomplete-item")), this._index = parseInt(t.data("index"), 10), this._activateIndexedItem()
36190 _onKeydown: function(e) {
36192 if (this.shown) switch (i.isFunction(this.option.onKeydown) && (t = this.option.onKeydown(e, n)), null == t && (t = this._defaultKeydown(e)), t) {
36194 e.preventDefault(), this._up();
36197 e.preventDefault(), this._down();
36200 e.preventDefault(), this._enter(e);
36203 e.preventDefault(), this._pageup();
36205 case n.KEY_PAGEDOWN:
36206 e.preventDefault(), this._pagedown();
36209 e.preventDefault(), this.deactivate()
36212 _defaultKeydown: function(e) {
36213 return this.isUp(e) ? n.KEY_UP : this.isDown(e) ? n.KEY_DOWN : this.isEnter(e) ? n.KEY_ENTER : this.isPageup(e) ? n.KEY_PAGEUP : this.isPagedown(e) ? n.KEY_PAGEDOWN : this.isEscape(e) ? n.KEY_ESCAPE : void 0
36216 0 === this._index ? this._index = this.data.length - 1 : this._index -= 1, this._activateIndexedItem(), this._setScroll()
36218 _down: function() {
36219 this._index === this.data.length - 1 ? this._index = 0 : this._index += 1, this._activateIndexedItem(), this._setScroll()
36221 _enter: function(e) {
36222 var t = this.data[parseInt(this._getActiveElement().data("index"), 10)];
36223 this.completer.select(t.value, t.strategy, e), this.deactivate()
36225 _pageup: function() {
36227 n = this._getActiveElement().position().top - this.$el.innerHeight();
36228 this.$el.children().each(function(e) {
36229 if (i(this).position().top + i(this).outerHeight() > n) return t = e, !1
36230 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36232 _pagedown: function() {
36233 var t = this.data.length - 1,
36234 n = this._getActiveElement().position().top + this.$el.innerHeight();
36235 this.$el.children().each(function(e) {
36236 if (i(this).position().top > n) return t = e, !1
36237 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36239 _activateIndexedItem: function() {
36240 this.$el.find(".textcomplete-item.active").removeClass("active"), this._getActiveElement().addClass("active")
36242 _getActiveElement: function() {
36243 return this.$el.children(".textcomplete-item:nth(" + this._index + ")")
36245 _setScroll: function() {
36246 var e = this._getActiveElement(),
36247 t = e.position().top,
36248 n = e.outerHeight(),
36249 r = this.$el.innerHeight(),
36250 i = this.$el.scrollTop();
36251 0 === this._index || this._index == this.data.length - 1 || t < 0 ? this.$el.scrollTop(t + i) : r < t + n && this.$el.scrollTop(t + n + i - r)
36253 _buildContents: function(e) {
36254 var t, n, r, i = "";
36255 for (n = 0; n < e.length && this.data.length !== this.maxCount; n++) t = e[n], a(this.data, t) || (r = this.data.length, this.data.push(t), i += '<li class="textcomplete-item" data-index="' + r + '"><a>', i += t.strategy.template(t.value, t.term), i += "</a></li>");
36258 _renderHeader: function(e) {
36260 this._$header || (this._$header = i('<li class="textcomplete-header"></li>').prependTo(this.$el));
36261 var t = i.isFunction(this.header) ? this.header(e) : this.header;
36262 this._$header.html(t)
36265 _renderFooter: function(e) {
36267 this._$footer || (this._$footer = i('<li class="textcomplete-footer"></li>').appendTo(this.$el));
36268 var t = i.isFunction(this.footer) ? this.footer(e) : this.footer;
36269 this._$footer.html(t)
36272 _renderNoResultsMessage: function(e) {
36273 if (this.noResultsMessage) {
36274 this._$noResultsMessage || (this._$noResultsMessage = i('<li class="textcomplete-no-results-message"></li>').appendTo(this.$el));
36275 var t = i.isFunction(this.noResultsMessage) ? this.noResultsMessage(e) : this.noResultsMessage;
36276 this._$noResultsMessage.html(t)
36279 _renderContents: function(e) {
36280 this._$footer ? this._$footer.before(e) : this.$el.append(e)
36282 _fitToBottom: function() {
36283 var e = o.scrollTop() + o.height(),
36284 t = this.$el.height();
36285 this.$el.position().top + t > e && (this.completer.$iframe || this.$el.offset({
36289 _fitToRight: function() {
36290 for (var e, t = this.option.rightEdgeOffset, n = this.$el.offset().left, r = this.$el.width(), i = o.width() - t; i < n + r && (this.$el.offset({
36292 }), !(n <= (e = this.$el.offset().left)));) n = e
36294 _applyPlacement: function(e) {
36295 return -1 !== this.placement.indexOf("top") ? e = {
36297 bottom: this.$el.parent().height() - e.top + e.lineHeight,
36299 } : (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
36301 }), i.fn.textcomplete.Dropdown = l, i.extend(i.fn.textcomplete, n)
36308 t.extend(this, e), this.cache && (this.search = (r = this.search, i = {}, function(t, n) {
36309 i[t] ? n(i[t]) : r.call(this, t, function(e) {
36310 i[t] = (i[t] || []).concat(e), n.apply(null, arguments)
36314 r.parse = function(e, n) {
36315 return t.map(e, function(e) {
36317 return t.el = n.el, t.$el = n.$el, t
36319 }, t.extend(r.prototype, {
36325 context: function() {
36329 template: function(e) {
36333 }), t.fn.textcomplete.Strategy = r
36337 var f = Date.now || function() {
36338 return (new Date).getTime()
36342 d.extend(e.prototype, {
36348 initialize: function(e, t, n) {
36349 var r, i, o, a, s, l, c, u;
36350 this.el = e, this.$el = d(e), this.id = t.id + this.constructor.name, this.completer = t, this.option = n, this.option.debounce && (this._onKeyup = (r = this._onKeyup, i = this.option.debounce, u = function() {
36352 e < i ? o = setTimeout(u, i - e) : (o = null, c = r.apply(s, a), s = a = null)
36354 return s = this, a = arguments, l = f(), o || (o = setTimeout(u, i)), c
36355 })), this._bindEvents()
36357 destroy: function() {
36358 this.$el.off("." + this.id), this.$el = this.el = this.completer = null
36360 select: function() {
36361 throw new Error("Not implemented")
36363 getCaretPosition: function() {
36364 var e = this._getCaretRelativePosition(),
36365 t = this.$el.offset(),
36366 n = this.option.appendTo;
36368 n instanceof d || (n = d(n));
36369 var r = n.offsetParent().offset();
36370 t.top -= r.top, t.left -= r.left
36372 return e.top += t.top, e.left += t.left, e
36374 focus: function() {
36377 _bindEvents: function() {
36378 this.$el.on("keyup." + this.id, d.proxy(this._onKeyup, this))
36380 _onKeyup: function(e) {
36381 this._skipSearch(e) || this.completer.trigger(this.getTextFromHeadToCaret(), !0)
36383 _skipSearch: function(e) {
36384 switch (e.keyCode) {
36397 if (e.ctrlKey) switch (e.keyCode) {
36403 }), d.fn.textcomplete.Adapter = e
36408 function e(e, t, n) {
36409 this.initialize(e, t, n)
36411 s.extend(e.prototype, s.fn.textcomplete.Adapter.prototype, {
36412 select: function(e, t, n) {
36413 var r, i = this.getTextFromHeadToCaret(),
36414 o = this.el.value.substring(this.el.selectionEnd),
36415 a = t.replace(e, n);
36416 void 0 !== a && (s.isArray(a) && (o = a[1] + o, a = a[0]), r = s.isFunction(t.match) ? t.match(i) : t.match, i = i.replace(r, a), this.$el.val(i + o), this.el.selectionStart = this.el.selectionEnd = i.length)
36418 getTextFromHeadToCaret: function() {
36419 return this.el.value.substring(0, this.el.selectionEnd)
36421 _getCaretRelativePosition: function() {
36422 var e = s.fn.textcomplete.getCaretCoordinates(this.el, this.el.selectionStart);
36424 top: e.top + this._calculateLineHeight() - this.$el.scrollTop(),
36425 left: e.left - this.$el.scrollLeft(),
36426 lineHeight: this._calculateLineHeight()
36429 _calculateLineHeight: function() {
36430 var e = parseInt(this.$el.css("line-height"), 10);
36432 var t = this.el.parentNode,
36433 n = document.createElement(this.el.nodeName),
36435 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)
36439 }), s.fn.textcomplete.Textarea = e
36444 function e(e, t, n) {
36445 this.initialize(e, t, n), l("<span>吶</span>").css({
36446 position: "absolute",
36451 l.extend(e.prototype, l.fn.textcomplete.Textarea.prototype, {
36452 select: function(e, t, n) {
36453 var r, i = this.getTextFromHeadToCaret(),
36454 o = this.el.value.substring(i.length),
36455 a = t.replace(e, n);
36456 if (void 0 !== a) {
36457 l.isArray(a) && (o = a[1] + o, a = a[0]), r = l.isFunction(t.match) ? t.match(i) : t.match, i = i.replace(r, a), this.$el.val(i + o), this.el.focus();
36458 var s = this.el.createTextRange();
36459 s.collapse(!0), s.moveEnd("character", i.length), s.moveStart("character", i.length), s.select()
36462 getTextFromHeadToCaret: function() {
36464 var e = document.selection.createRange();
36465 e.moveStart("character", -this.el.value.length);
36466 var t = e.text.split("吶");
36467 return 1 === t.length ? t[0] : t[1]
36469 }), l.fn.textcomplete.IETextarea = e
36474 function e(e, t, n) {
36475 this.initialize(e, t, n)
36477 m.extend(e.prototype, m.fn.textcomplete.Adapter.prototype, {
36478 select: function(e, t, n) {
36479 var r = this.getTextFromHeadToCaret(),
36480 i = this.el.ownerDocument.getSelection(),
36481 o = i.getRangeAt(0),
36482 a = o.cloneRange();
36483 a.selectNodeContents(o.startContainer);
36484 var s, l = a.toString().substring(o.startOffset),
36485 c = t.replace(e, n);
36486 if (void 0 !== c) {
36487 m.isArray(c) && (l = c[1] + l, c = c[0]), s = m.isFunction(t.match) ? t.match(r) : t.match, r = r.replace(s, c).replace(/ $/, " "), o.selectNodeContents(o.startContainer), o.deleteContents();
36488 var u = this.el.ownerDocument.createElement("div");
36490 var d = this.el.ownerDocument.createElement("div");
36492 for (var f, h, p = this.el.ownerDocument.createDocumentFragment(); f = u.firstChild;) h = p.appendChild(f);
36493 for (; f = d.firstChild;) p.appendChild(f);
36494 o.insertNode(p), o.setStartAfter(h), o.collapse(!0), i.removeAllRanges(), i.addRange(o)
36497 _getCaretRelativePosition: function() {
36498 var e = this.el.ownerDocument.getSelection().getRangeAt(0).cloneRange(),
36499 t = e.endContainer.parentNode,
36500 n = this.el.ownerDocument.createElement("span");
36501 e.insertNode(n), e.selectNodeContents(n), e.deleteContents(), setTimeout(function() {
36506 if (i.left -= this.$el.offset().left, i.top += r.height() - this.$el.offset().top, i.lineHeight = r.height(), this.completer.$iframe) {
36507 var o = this.completer.$iframe.offset();
36508 i.top += o.top, i.left += o.left, i.top -= m(this.completer.$iframe[0].contentWindow.document).scrollTop()
36510 return r.remove(), i
36512 getTextFromHeadToCaret: function() {
36513 var e = this.el.ownerDocument.getSelection().getRangeAt(0),
36514 t = e.cloneRange();
36515 return t.selectNodeContents(e.startContainer), t.toString().substring(0, e.startOffset)
36517 }), m.fn.textcomplete.ContentEditable = e
36522 function t(e, t, n) {
36523 this.initialize(e, t, n)
36525 e.extend(t.prototype, e.fn.textcomplete.ContentEditable.prototype, {
36526 _bindEvents: function() {
36528 this.option.ckeditor_instance.on("key", function(e) {
36530 if (n._onKeyup(t), n.completer.dropdown.shown && n._skipSearch(t)) return !1
36531 }, null, null, 1), this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36533 }), e.fn.textcomplete.CKEditor = t
36534 }(e), t = e, u = ["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"], d = "undefined" != typeof window, f = d && null != window.mozInnerScreenX, t.fn.textcomplete.getCaretCoordinates = function(e, t, n) {
36535 if (!d) throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");
36536 var r = n && n.debug || !1;
36538 var i = document.querySelector("#input-textarea-caret-position-mirror-div");
36539 i && i.parentNode.removeChild(i)
36541 var o = document.createElement("div");
36542 o.id = "input-textarea-caret-position-mirror-div", document.body.appendChild(o);
36544 s = window.getComputedStyle ? getComputedStyle(e) : e.currentStyle;
36545 a.whiteSpace = "pre-wrap", "INPUT" !== e.nodeName && (a.wordWrap = "break-word"), a.position = "absolute", r || (a.visibility = "hidden"), u.forEach(function(e) {
36547 }), f ? e.scrollHeight > parseInt(s.height) && (a.overflowY = "scroll") : a.overflow = "hidden", o.textContent = e.value.substring(0, t), "INPUT" === e.nodeName && (o.textContent = o.textContent.replace(/\s/g, " "));
36548 var l = document.createElement("span");
36549 l.textContent = e.value.substring(t) || ".", o.appendChild(l);
36551 top: l.offsetTop + parseInt(s.borderTopWidth),
36552 left: l.offsetLeft + parseInt(s.borderLeftWidth)
36554 return r ? l.style.backgroundColor = "#aaa" : document.body.removeChild(o), c
36556 }), window = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, document = window.document || {},
36558 "function" == typeof require && "object" == typeof exports && "object" == typeof module ? e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(t.jQuery)
36564 E = window.emojione,
36568 E ? e() : i.push(e)
36570 var C, k, l, x = "data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",
36572 T = "emojionearea",
36576 function S(n, e, r) {
36580 e = e.toLowerCase();
36582 var o = 1 == t ? "@" + e : e;
36583 a[n.id][o] && a[n.id][o].length && w.each(a[n.id][o], function(e, t) {
36584 return i = !1 !== t.apply(n, r || [])
36591 function D(n, r, i, o) {
36592 o = o || function(e, t) {
36593 return w(t.currentTarget)
36594 }, w.each(i, function(e, t) {
36595 e = w.isArray(i) ? t : e, (s[n.id][t] || (s[n.id][t] = [])).push([r, e, o])
36599 function u(e, t, n) {
36600 var r, i = E.imageType;
36601 r = "svg" == i ? E.imagePathSVG : E.imagePathPNG;
36603 n && (o = n.substr(1, n.length - 2).replace(/_/g, " ").replace(/\w\S*/g, function(e) {
36604 return e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()
36607 return t.uc_base && 4 < M ? (a = t.uc_base, t = t.uc_output.toUpperCase()) : a = t, e.replace("{name}", n || "").replace("{friendlyName}", o).replace("{img}", r + (M < 2 ? a.toUpperCase() : a) + "." + i).replace("{uni}", t).replace("{alt}", E.convert(t))
36610 function O(e, n, r) {
36611 return e.replace(/:?\+?[\w_\-]+:?/g, function(e) {
36612 e = ":" + e.replace(/:$/, "").replace(/^:/, "") + ":";
36613 var t = E.emojioneList[e];
36614 return t ? 4 < M ? u(n, t, e) : (3 < M && (t = t.unicode), u(n, t[t.length - 1], e)) : r ? "" : e
36620 if (window.getSelection) {
36621 if ((t = window.getSelection()).getRangeAt && t.rangeCount) {
36622 (n = t.getRangeAt(0)).deleteContents();
36623 var r = document.createElement("div");
36625 for (var i, o, a = document.createDocumentFragment(); i = r.firstChild;) o = a.appendChild(i);
36626 n.insertNode(a), o && ((n = n.cloneRange()).setStartAfter(o), n.collapse(!0), t.removeAllRanges(), t.addRange(n))
36628 } else document.selection && "Control" != document.selection.type && document.selection.createRange().pasteHTML(e)
36632 return window.emojioneVersion || "3.1.2"
36636 return "object" == typeof e
36641 return e.cacheBustParam ? (t = e.cacheBustParam, I(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
36674 if (w.fn.emojioneArea && w.fn.emojioneArea.defaults) return w.fn.emojioneArea.defaults;
36679 autocomplete: "off",
36680 autocorrect: "off",
36681 autocapitalize: "off"
36685 emojiPlaceholder: ":smiley:",
36686 searchPlaceholder: "SEARCH",
36691 pickerPosition: "top",
36692 filtersPosition: "top",
36693 searchPosition: "top",
36694 hidePickerOnBlur: !0,
36695 buttonTitle: "Use the TAB key to insert emoji faster",
36697 tonesStyle: "bullet",
36699 saveEmojisAs: "unicode",
36702 autocompleteTones: !1,
36704 useInternalCDN: !0,
36712 t = h(E ? f(E) : d());
36713 return e.filters = 4 < t ? {
36715 title: "Diversity",
36716 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"
36725 title: "Smileys & People",
36726 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"
36730 title: "Animals & Nature",
36731 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"
36735 title: "Food & Drink",
36736 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"
36739 icon: "basketball",
36741 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"
36745 title: "Travel & Places",
36746 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"
36751 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"
36754 icon: "heartpulse",
36756 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"
36761 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"
36765 title: "Diversity",
36766 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"
36775 title: "Smileys & People",
36776 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"
36780 title: "Animals & Nature",
36781 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"
36785 title: "Food & Drink",
36786 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"
36789 icon: "basketball",
36791 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"
36795 title: "Travel & Places",
36796 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"
36801 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"
36804 icon: "heartpulse",
36806 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"
36811 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 "
36818 if (e && e.filters) {
36820 w.each(e.filters, function(n, e) {
36821 return !I(e) || w.isEmptyObject(e) ? void delete r[n] : void w.each(e, function(e, t) {
36826 return w.extend({}, t, e)
36830 return e.replace(l, function(e) {
36831 var t = E[0 === M ? "jsecapeMap" : "jsEscapeMap"];
36832 return void 0 !== e && e in t ? u(n, t[e]) : e
36837 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 = E.shortnameToUnicode(e)), p(e, t.emojiTemplate).replace(/\t/g, " ").replace(/ /g, " ")
36841 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(A, "g"), "").replace(/ /g, " ").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/`/g, "`").replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"), t.saveEmojisAs) {
36843 e = p(e, t.emojiTemplate);
36852 var e = this.editor[0].offsetWidth - this.editor[0].clientWidth,
36853 t = parseInt(this.button.css("marginRight"));
36854 t !== e && (this.button.css({
36856 }), this.floatingPicker && this.picker.css({
36857 right: parseInt(this.picker.css("right")) - t + e
36862 if (!this.sprite && this.lasyEmoji[0]) {
36863 var n = this.picker.offset().top,
36864 r = n + this.picker.height() + 20;
36865 this.lasyEmoji.each(function() {
36867 t = e.offset().top;
36868 n < t && t < r && e.attr("src", e.data("src")).removeClass("lazy-emoji")
36869 }), this.lasyEmoji = this.lasyEmoji.filter(".lazy-emoji")
36874 return (t ? "" : ".") + T + (e ? "-" + e : "")
36878 var n = w("<div/>", I(e) ? e : {
36881 return w.each(c.call(arguments).slice(1), function(e, t) {
36882 w.isFunction(t) && (t = t.call(n)), t && w(t).appendTo(n)
36887 return localStorage.getItem("recent_emojis") || ""
36892 if (!e.recent || e.recent !== n || t) {
36894 var r, i, o = e.scrollArea.is(".skinnable");
36895 o || (r = e.scrollArea.scrollTop(), t && e.recentCategory.show(), i = e.recentCategory.is(":visible") ? e.recentCategory.height() : 0);
36896 var a = O(n, e.emojiBtnTemplate, !0).split("|").join("");
36897 if (e.recentCategory.children(".emojibtn").remove(), w(a).insertAfter(e.recentCategory.children(".emojionearea-category-title")), e.recentCategory.children(".emojibtn").on("click", function() {
36898 e.trigger("emojibtn.click", w(this))
36899 }), e.recentFilter.show(), !o) {
36900 e.recentCategory.show();
36901 var s = e.recentCategory.height();
36902 i !== s && e.scrollArea.scrollTop(r + s - i)
36904 } else e.recentFilter.hasClass("active") && e.recentFilter.removeClass("active").next().addClass("active"), e.recentCategory.hide(), e.recentFilter.hide();
36909 function m(l, t, o) {
36910 l.options = o = R(o), l.sprite = o.sprite && M < 3, l.inline = null === o.inline ? t.is("INPUT") : o.inline, l.shortnames = o.shortnames, l.saveEmojisAs = o.saveEmojisAs, l.standalone = o.standalone, l.emojiTemplate = '<img alt="{alt}" class="emojione' + (l.sprite ? '-{uni}" src="' + x + '"/>' : 'emoji" src="{img}"/>'), l.emojiTemplateAlt = l.sprite ? '<i class="emojione-{uni}"/>' : '<img class="emojioneemoji" src="{img}"/>', l.emojiBtnTemplate = '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}">' + l.emojiTemplateAlt + "</i>", l.recentEmojis = o.recentEmojis && function() {
36912 return localStorage.setItem("test", "test"), localStorage.removeItem("test"), !0
36917 var e = o.pickerPosition;
36918 l.floatingPicker = "top" === e || "bottom" === e, ((l.source = t).is(":disabled") || t.is(".disabled")) && l.disable();
36919 var a, n, s, c, u, r, d, f, h, p, i = t.is("TEXTAREA") || t.is("INPUT") ? "val" : "text",
36920 m = q("tones", o.tones ? function() {
36921 this.addClass(F("tones-" + o.tonesStyle, !0));
36922 for (var e = 0; e <= 5; e++) this.append(w("<i/>", {
36923 class: "btn-tone btn-tone-" + e + (e ? "" : " active"),
36929 class: T + (l.standalone ? " " + T + "-standalone " : " ") + (t.attr("class") || ""),
36930 role: "application"
36931 }, a = l.editor = q("editor").attr({
36932 contenteditable: !l.standalone,
36933 placeholder: o.placeholder || t.data("placeholder") || t.attr("placeholder") || "",
36935 }), n = l.button = q("button", q("button-open"), q("button-close")).attr("title", o.buttonTitle), s = l.picker = q("picker", q("wrapper", c = q("filters"), o.search ? r = q("search-panel", q("search", o.search ? function() {
36936 l.search = w("<input/>", {
36937 placeholder: o.searchPlaceholder || "",
36940 }), this.append(l.search)
36941 } : null), m) : null, p = q("scroll-area", o.tones && !o.search ? q("tones-panel", m) : null, d = q("emojis-list")))).addClass(F("picker-position-" + o.pickerPosition, !0)).addClass(F("filters-position-" + o.filtersPosition, !0)).addClass(F("search-position-" + o.searchPosition, !0)).addClass("hidden"));
36942 o.search && r.addClass(F("with-search", !0)), l.searchSel = null, a.data(t.data()), w.each(o.attributes, function(e, t) {
36945 var v = q("category-block").attr({
36948 if (w.each(o.filters, function(e, t) {
36950 if ("recent" !== e || l.recentEmojis) {
36951 if ("tones" !== e) w("<i/>", {
36952 class: F("filter", !0) + " " + F("filter-" + e, !0),
36955 }).wrapInner(O(t.icon, l.emojiTemplateAlt)).appendTo(c);
36957 if (!o.tones) return;
36961 var r, i = t.emoji.replace(/[\s,;]+/g, "|");
36962 r = 0 === n ? q("category").attr({
36965 }).appendTo(v) : q("category-block").attr({
36968 }).appendTo(d), 0 < n && (r.hide(), i = i.split("|").join("_tone" + n + "|") + "_tone" + n), "recent" === e && (i = U()), i = O(i, l.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(""), r.html(i), w('<div class="emojionearea-category-title"/>').text(t.title).prependTo(r)
36971 }), o.filters = null, l.sprite || (l.lasyEmoji = d.find(".lazy-emoji")), (u = c.find(F("filter"))).eq(0).addClass("active"), h = d.find(F("category-block")), f = d.find(F("category")), l.recentFilter = u.filter('[data-filter="recent"]'), l.recentCategory = f.filter("[name=recent]"), l.scrollArea = p, o.container ? w(o.container).wrapInner(g) : g.insertAfter(t), o.hideSource && t.hide(), l.setText(t[i]()), t[i](l.getText()), j.apply(l), l.standalone && !l.getText().length) {
36972 var b = w(t).data("emoji-placeholder") || o.emojiPlaceholder;
36973 l.setText(b), a.addClass("has-placeholder")
36975 D(l, d.find(".emojibtn"), {
36976 click: "emojibtn.click"
36979 }), D(l, m.children(), {
36980 click: "tone.click"
36982 mousedown: "!mousedown"
36984 click: "button.click"
36987 }, a), D(l, a, ["focus", "blur"], function() {
36988 return !l.stayFocused && a
36990 mousedown: "picker.mousedown",
36991 mouseup: "picker.mouseup",
36992 click: "picker.click",
36993 keyup: "picker.keyup",
36994 keydown: "picker.keydown",
36995 keypress: "picker.keypress"
36996 }), D(l, a, ["mousedown", "mouseup", "click", "keyup", "keydown", "keypress"]), D(l, s.find(".emojionearea-filter"), {
36997 click: "filter.click"
36999 change: "source.change"
37000 }), o.search && D(l, l.search, {
37001 keyup: "search.keypress",
37002 focus: "search.focus",
37003 blur: "search.blur"
37006 if (p.on("scroll", function() {
37007 if (!y && (L.call(l), p.is(":not(.skinnable)"))) {
37009 r = p.offset().top;
37010 f.each(function(e, t) {
37011 return !(10 <= w(t).offset().top - r) && void(n = w(t))
37013 var e = u.filter('[data-filter="' + n.attr("name") + '"]');
37014 e[0] && !e.is(".active") && (u.removeClass("active"), e.addClass("active"))
37016 }), l.on("@filter.click", function(e) {
37017 var t = e.is(".active");
37018 if (p.is(".skinnable")) {
37020 m.children().eq(0).click()
37022 y = !0, t || (u.filter(".active").removeClass("active"), e.addClass("active"));
37023 var n = f.filter('[name="' + e.data("filter") + '"]').offset().top,
37025 i = p.offset().top;
37027 scrollTop: n + r - i - 2
37028 }, 200, "swing", function() {
37031 }).on("@picker.show", function() {
37032 l.recentEmojis && V(l), L.call(l)
37033 }).on("@tone.click", function(e) {
37034 m.children().removeClass("active");
37035 var t = e.addClass("active").data("skin");
37036 t ? (p.addClass("skinnable"), h.hide().filter("[data-tone=" + t + "]").show(), u.removeClass("active")) : (p.removeClass("skinnable"), h.hide().filter("[data-tone=0]").show(), u.eq(0).click()), L.call(l), o.search && l.trigger("search.keypress")
37037 }).on("@button.click", function(e) {
37038 e.is(".active") ? l.hidePicker() : (l.showPicker(), l.searchSel = null)
37039 }).on("@!paste", function(a, e) {
37040 var t = function(e) {
37041 var t = "caret-" + (new Date).getTime(),
37043 N(n), N('<i id="' + t + '"></i>'), a.scrollTop(s);
37044 var r = w("#" + t),
37045 i = r.offset().top - a.offset().top,
37047 (o <= s + i || i < s) && a.scrollTop(s + i - 2 * o / 3), r.remove(), l.stayFocused = !1, j.apply(l), S(l, "paste", [a, e, n])
37049 if (e.originalEvent.clipboardData) {
37050 var n = e.originalEvent.clipboardData.getData("text/plain");
37051 return t(n), e.preventDefault ? e.preventDefault() : e.stop(), e.returnValue = !1, e.stopPropagation(), !1
37053 l.stayFocused = !0, N("<span>" + A + "</span>");
37057 contenteditable: !0
37065 }).appendTo(w("BODY")).focus();
37066 window.setTimeout(function() {
37067 a.focus(), k(a[0], r);
37068 var e = H(i.html().replace(/\r\n|\n|\r/g, "<br>"), l);
37071 }).on("@emojibtn.click", function(e) {
37073 a.removeClass("has-placeholder"), null !== l.searchSel && (a.focus(), k(a[0], l.searchSel), l.searchSel = null), l.standalone ? (a.html(O(e.data("name"), l.emojiTemplate)), l.trigger("blur")) : (C(a[0]), N(O(e.data("name"), l.emojiTemplate))), l.recentEmojis && (t = l, n = e.data("name"), r = U().split("|"), -1 !== (i = r.indexOf(n)) && r.splice(i, 1), r.unshift(n), 9 < r.length && r.pop(), localStorage.setItem("recent_emojis", r.join("|")), V(t)), l.trigger("search.keypress")
37074 }).on("@!resize @keyup @emojibtn.click", j).on("@!mousedown", function(e, t) {
37075 return w(t.target).hasClass("search") ? (l.stayFocused = !0, null === l.searchSel && (l.searchSel = C(e[0]))) : (g.is(".focused") || e.focus(), t.preventDefault()), !1
37076 }).on("@change", function() {
37077 var e = l.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi, "");
37078 e.length && !/^<br[^>]*>$/i.test(e) || l.editor.html(l.content = ""), t[i](l.getText())
37079 }).on("@source.change", function() {
37080 l.setText(t[i]()), S("change")
37081 }).on("@focus", function() {
37082 g.addClass("focused")
37083 }).on("@blur", function() {
37084 g.removeClass("focused"), o.hidePickerOnBlur && l.hidePicker();
37085 var e = l.editor.html();
37086 l.content !== e ? (l.content = e, S(l, "change", [l.editor]), t.blur().trigger("change")) : t.blur(), o.search && (l.search.val(""), l.trigger("search.keypress", !0))
37087 }), o.search && l.on("@search.focus", function() {
37088 l.stayFocused = !0, l.search.addClass("focused")
37089 }).on("@search.keypress", function(e) {
37090 var r = s.find(".emojionearea-filter"),
37091 n = o.tones ? m.find("i.active").data("skin") : 0,
37092 i = l.search.val().replace(/ /g, "_").replace(/"/g, '\\"');
37093 i && i.length ? (l.recentFilter.hasClass("active") && l.recentFilter.removeClass("active").next().addClass("active"), l.recentCategory.hide(), l.recentFilter.hide(), h.each(function() {
37094 var e = function(e, t) {
37095 var n = e.find('.emojibtn[data-name*="' + i + '"]');
37096 0 === n.length ? (e.data("tone") === t && e.hide(), r.filter('[data-filter="' + e.attr("name") + '"]').hide()) : (e.find('.emojibtn:not([data-name*="' + i + '"])').hide(), n.show(), e.data("tone") === t && e.show(), r.filter('[data-filter="' + e.attr("name") + '"]').show())
37099 0 === t.data("tone") ? f.filter(':not([name="recent"])').each(function() {
37102 }), y ? L.call(l) : p.trigger("scroll")) : (V(l, !0), h.filter('[data-tone="' + m.find("i.active").data("skin") + '"]:not([name="recent"])').show(), w(".emojibtn", h).show(), r.show(), e || L.call(l))
37103 }).on("@search.blur", function() {
37104 l.stayFocused = !1, l.search.removeClass("focused"), l.trigger("blur")
37105 }), o.shortcuts && l.on("@keydown", function(e, t) {
37106 t.ctrlKey || (9 == t.which ? (t.preventDefault(), n.click()) : 27 == t.which && (t.preventDefault(), n.is(".active") && l.hidePicker()))
37107 }), I(o.events) && !w.isEmptyObject(o.events) && w.each(o.events, function(e, t) {
37108 l.on(e.replace(/_/g, "."), t)
37109 }), o.autocomplete) {
37110 var _ = function() {
37112 maxCount: o.textcomplete.maxCount,
37113 placement: o.textcomplete.placement
37115 o.shortcuts && (e.onKeydown = function(e, t) {
37116 return e.ctrlKey || 13 != e.which ? void 0 : t.KEY_ENTER
37118 var n = w.map(E.emojioneList, function(e, t) {
37119 return o.autocompleteTones ? t : /_tone[12345]/.test(t) ? null : t
37121 n.sort(), a.textcomplete([{
37123 match: /\B(:[\-+\w]*)$/,
37124 search: function(t, e) {
37125 e(w.map(n, function(e) {
37126 return 0 === e.indexOf(t) ? e : null
37129 template: function(e) {
37130 return O(e, l.emojiTemplate) + " " + e.replace(/:/g, "")
37132 replace: function(e) {
37133 return O(e, l.emojiTemplate)
37137 }], e), o.textcomplete.placement && "static" == w(a.data("textComplete").option.appendTo).css("position") && w(a.data("textComplete").option.appendTo).css("position", "relative")
37141 var e = function() {
37142 l.off("enabled", e), _()
37147 w.fn.textcomplete ? $() : w.ajax({
37148 url: "https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",
37149 dataType: "script",
37154 l.inline && (g.addClass(F("inline", !0)), l.on("@keydown", function(e, t) {
37155 13 == t.which && t.preventDefault()
37156 })), /firefox/i.test(navigator.userAgent) && document.execCommand("enableObjectResizing", !1, !1), l.isReady = !0, l.trigger("onLoad", a), l.trigger("ready", a)
37158 window.getSelection && document.createRange ? (C = function(e) {
37159 var t = window.getSelection && window.getSelection();
37160 return t && 0 < t.rangeCount ? t.getRangeAt(0) : void 0
37161 }, k = function(e, t) {
37162 var n = document.createRange();
37163 n.setStart(t.startContainer, t.startOffset), n.setEnd(t.endContainer, t.endOffset), (t = window.getSelection()).removeAllRanges(), t.addRange(n)
37164 }) : document.selection && document.body.createTextRange && (C = function(e) {
37165 return document.selection.createRange()
37166 }, k = function(e, t) {
37167 var n = document.body.createTextRange();
37168 n.moveToElementText(e), n.setStart(t.startContanier, t.startOffset), n.setEnd(t.endContainer, t.endOffset), n.select()
37171 defaultBase: "https://cdnjs.cloudflare.com/ajax/libs/emojione/",
37172 defaultBase3: "https://cdn.jsdelivr.net/",
37179 if (t = R(t), !g.isLoading)
37180 if (!E || h(f(E)) < 2) {
37182 g.isLoading = !0, e = 5 < h(n) ? g.defaultBase3 + "npm/emojione@" + n : 4 < h(n) ? g.defaultBase3 + "emojione/" + n : g.defaultBase + "/" + n, w.ajax({
37183 url: e + "/lib/js/emojione.min.js",
37184 dataType: "script",
37186 success: function() {
37188 for (E = window.emojione, n = f(E), e = 4 < (M = h(n)) ? (g.base = g.defaultBase3 + "emojione/assets/" + n, g.base + "/sprites/emojione-sprite-" + E.emojiSize + ".css") : (g.base = g.defaultBase + n + "/assets", g.base + "/sprites/emojione.sprites.css"), t.sprite && (document.createStyleSheet ? document.createStyleSheet(e) : w("<link/>", {
37191 }).appendTo("head")); i.length;) i.shift().call();
37195 } else n = f(E), M = h(n), g.base = 4 < M ? g.defaultBase3 + "emojione/assets/" + n : g.defaultBase + n + "/assets";
37198 t.useInternalCDN && (4 < M && (e = E.emojiSize + "/"), E.imagePathPNG = g.base + "/png/" + e, E.imagePathSVG = g.base + "/svg/" + e, E.imagePathSVGSprites = g.base + "/sprites/emojione.sprites.svg", E.imageType = t.imageType), 4 < h(n) ? (l = E.regUnicode, E.imageType = t.imageType || "png") : l = new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(" + E.unicodeRegexp + ")", "gi")
37201 var t = function(e, t) {
37203 v(t), a[n.id = ++r] = {}, s[n.id] = {}, o(function() {
37207 t.prototype.on = function(e, n) {
37208 if (e && w.isFunction(n)) {
37210 w.each(e.toLowerCase().split(" "), function(e, t) {
37212 i = i.replace(/^@/, "");
37214 s[e][i] && (w.each(s[e][i], function(e, n) {
37215 w.each(w.isArray(n[0]) ? n[0] : [n[0]], function(e, t) {
37216 w(t).on(n[1], function() {
37217 var e = c.call(arguments),
37218 t = w.isFunction(n[2]) ? n[2].apply(r, [i].concat(e)) : n[2];
37219 t && S(r, i, [t].concat(e))
37222 }), s[e][i] = null)
37223 })(r, t), (a[r.id][t] || (a[r.id][t] = [])).push(n)
37227 }, t.prototype.off = function(e, r) {
37230 w.each(e.toLowerCase().replace(/_/g, ".").split(" "), function(e, n) {
37231 a[i][n] && !/^@/.test(n) && (r ? w.each(a[i][n], function(e, t) {
37232 t === r && (a[i][n] = a[i][n].splice(e, 1))
37237 }, t.prototype.trigger = function() {
37238 var e = c.call(arguments),
37239 t = [this].concat(e.slice(0, 1));
37240 return t.push(e.slice(1)), S.apply(this, t)
37241 }, t.prototype.setFocus = function() {
37243 return o(function() {
37246 }, t.prototype.setText = function(e) {
37248 return o(function() {
37249 t.editor.html(P(e, t)), t.content = t.editor.html(), S(t, "change", [t.editor]), j.apply(t)
37251 }, t.prototype.getText = function() {
37252 return H(this.editor.html(), this)
37253 }, t.prototype.showPicker = function() {
37255 return e._sh_timer && window.clearTimeout(e._sh_timer), e.picker.removeClass("hidden"), e._sh_timer = window.setTimeout(function() {
37256 e.button.addClass("active")
37257 }, 50), S(e, "picker.show", [e.picker]), e
37258 }, t.prototype.hidePicker = function() {
37260 return e._sh_timer && window.clearTimeout(e._sh_timer), e.button.removeClass("active"), e._sh_timer = window.setTimeout(function() {
37261 e.picker.addClass("hidden")
37262 }, 500), S(e, "picker.hide", [e.picker]), e
37263 }, t.prototype.enable = function() {
37266 t.disabled = !1, t.editor.prop("contenteditable", !0), t.button.show();
37267 var e = t[t.standalone ? "button" : "editor"];
37268 e.parent().removeClass("emojionearea-disable"), S(t, "enabled", [e])
37270 return t.isReady ? e() : t.on("ready", e), t
37271 }, t.prototype.disable = function() {
37274 var e = function() {
37275 t.editor.prop("contenteditable", !1), t.hidePicker(), t.button.hide();
37276 var e = t[t.standalone ? "button" : "editor"];
37277 e.parent().addClass("emojionearea-disable"), S(t, "disabled", [e])
37279 return t.isReady ? e() : t.on("ready", e), t
37280 }, w.fn.emojioneArea = function(e) {
37281 return this.each(function() {
37282 return this.emojioneArea || w.data(this, "emojioneArea", this.emojioneArea = new t(w(this), e)), this.emojioneArea
37284 }, w.fn.emojioneArea.defaults = n(), w.fn.emojioneAreaText = function(e) {
37288 shortnames: !e || void 0 === e.shortnames || e.shortnames,
37289 emojiTemplate: '<img alt="{alt}" class="emojione' + (e && e.sprite && M < 3 ? '-{uni}" src="' + x : 'emoji" src="{img}') + '"/>'
37291 return v(e), o(function() {
37292 t.each(function() {
37294 return e.hasClass("emojionearea-text") || e.addClass("emojionearea-text").html(P(e.is("TEXTAREA") || e.is("INPUT") ? e.val() : e.text(), n)), e