Built motion from commit de2cb856.|2.0.34
[motion2.git] / snippet / scripts / vendor.0350a024.js
1 function buildMap() {
2     var e = [],
3         t = [];
4     for (var n in Config.emoji_data) {
5         for (var r = 0; r < Config.emoji_data[n][0].length; r++) e.push(Config.escape_rx(":" + Config.emoji_data[n][3][0]) + ":"), t.push(Config.emoji_data[n][0][0]), Config.map[Config.emoji_data[n][3][0]] = Config.emoji_data[n][0][0], Config.mapcolon[":" + Config.emoji_data[n][3][0] + ":"] = Config.emoji_data[n][0][0], Config.reversemap[Config.emoji_data[n][0][0]] = Config.emoji_data[n][3][0];
6         Config.rx_colons = new RegExp("(" + e.join("|") + ")", "g"), Config.rx_codes = new RegExp("(" + t.join("|") + ")", "g")
7     }
8 }
9
10 function cancelEvent(e) {
11     return (e = e || window.event) && ((e = e.originalEvent || e).stopPropagation && e.stopPropagation(), e.preventDefault && e.preventDefault()), !1
12 }
13
14 function getGuid() {
15     return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
16         var t = 16 * Math.random() | 0;
17         return ("x" == e ? t : 3 & t | 8).toString(16)
18     })
19 }! function(e) {
20     "use strict";
21
22     function t(e) {
23         if (!_(e)) return Ir;
24         $(e.objectMaxDepth) && (Ir.objectMaxDepth = n(e.objectMaxDepth) ? e.objectMaxDepth : NaN)
25     }
26
27     function n(e) {
28         return C(e) && e > 0
29     }
30
31     function r(e, t) {
32         return t = t || Error,
33             function() {
34                 var n, r, i = arguments[0],
35                     o = arguments[1],
36                     a = "[" + (e ? e + ":" : "") + i + "] ",
37                     s = Y(arguments, 2).map(function(e) {
38                         return Ee(e, Ir.objectMaxDepth)
39                     });
40                 for (a += o.replace(/\{\d+\}/g, function(e) {
41                         var t = +e.slice(1, -1);
42                         return t < s.length ? s[t] : e
43                     }), a += "\nhttp://errors.angularjs.org/1.6.6/" + (e ? e + "/" : "") + i, r = 0, n = "?"; r < s.length; r++, n = "&") a += n + "p" + r + "=" + encodeURIComponent(s[r]);
44                 return new t(a)
45             }
46     }
47
48     function i(e) {
49         if (null == e || S(e)) return !1;
50         if (Jr(e) || E(e) || qr && e instanceof qr) return !0;
51         var t = "length" in Object(e) && e.length;
52         return C(t) && (t >= 0 && (t - 1 in e || e instanceof Array) || "function" == typeof e.item)
53     }
54
55     function o(e, t, n) {
56         var r, a;
57         if (e)
58             if (T(e))
59                 for (r in e) "prototype" !== r && "length" !== r && "name" !== r && e.hasOwnProperty(r) && t.call(n, e[r], r, e);
60             else if (Jr(e) || i(e)) {
61             var s = "object" != typeof e;
62             for (r = 0, a = e.length; r < a; r++)(s || r in e) && t.call(n, e[r], r, e)
63         } else if (e.forEach && e.forEach !== o) e.forEach(t, n, e);
64         else if (w(e))
65             for (r in e) t.call(n, e[r], r, e);
66         else if ("function" == typeof e.hasOwnProperty)
67             for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r, e);
68         else
69             for (r in e) Hr.call(e, r) && t.call(n, e[r], r, e);
70         return e
71     }
72
73     function a(e, t, n) {
74         for (var r = Object.keys(e).sort(), i = 0; i < r.length; i++) t.call(n, e[r[i]], r[i]);
75         return r
76     }
77
78     function s(e) {
79         return function(t, n) {
80             e(n, t)
81         }
82     }
83
84     function c() {
85         return ++Xr
86     }
87
88     function l(e, t) {
89         t ? e.$$hashKey = t : delete e.$$hashKey
90     }
91
92     function u(e, t, n) {
93         for (var r = e.$$hashKey, i = 0, o = t.length; i < o; ++i) {
94             var a = t[i];
95             if (_(a) || T(a))
96                 for (var s = Object.keys(a), c = 0, d = s.length; c < d; c++) {
97                     var f = s[c],
98                         h = a[f];
99                     n && _(h) ? x(h) ? e[f] = new Date(h.valueOf()) : M(h) ? e[f] = new RegExp(h) : h.nodeName ? e[f] = h.cloneNode(!0) : j(h) ? e[f] = h.clone() : (_(e[f]) || (e[f] = Jr(h) ? [] : {}), u(e[f], [h], !0)) : e[f] = h
100                 }
101         }
102         return l(e, r), e
103     }
104
105     function d(e) {
106         return u(e, Br.call(arguments, 1), !1)
107     }
108
109     function f(e) {
110         return u(e, Br.call(arguments, 1), !0)
111     }
112
113     function h(e) {
114         return parseInt(e, 10)
115     }
116
117     function p(e, t) {
118         return d(Object.create(e), t)
119     }
120
121     function m() {}
122
123     function g(e) {
124         return e
125     }
126
127     function v(e) {
128         return function() {
129             return e
130         }
131     }
132
133     function b(e) {
134         return T(e.toString) && e.toString !== Yr
135     }
136
137     function y(e) {
138         return void 0 === e
139     }
140
141     function $(e) {
142         return void 0 !== e
143     }
144
145     function _(e) {
146         return null !== e && "object" == typeof e
147     }
148
149     function w(e) {
150         return null !== e && "object" == typeof e && !Gr(e)
151     }
152
153     function E(e) {
154         return "string" == typeof e
155     }
156
157     function C(e) {
158         return "number" == typeof e
159     }
160
161     function x(e) {
162         return "[object Date]" === Yr.call(e)
163     }
164
165     function k(e) {
166         switch (Yr.call(e)) {
167             case "[object Error]":
168             case "[object Exception]":
169             case "[object DOMException]":
170                 return !0;
171             default:
172                 return e instanceof Error
173         }
174     }
175
176     function T(e) {
177         return "function" == typeof e
178     }
179
180     function M(e) {
181         return "[object RegExp]" === Yr.call(e)
182     }
183
184     function S(e) {
185         return e && e.window === e
186     }
187
188     function A(e) {
189         return e && e.$evalAsync && e.$watch
190     }
191
192     function O(e) {
193         return "[object File]" === Yr.call(e)
194     }
195
196     function D(e) {
197         return "[object FormData]" === Yr.call(e)
198     }
199
200     function N(e) {
201         return "[object Blob]" === Yr.call(e)
202     }
203
204     function I(e) {
205         return "boolean" == typeof e
206     }
207
208     function R(e) {
209         return e && T(e.then)
210     }
211
212     function P(e) {
213         return e && C(e.length) && ei.test(Yr.call(e))
214     }
215
216     function H(e) {
217         return "[object ArrayBuffer]" === Yr.call(e)
218     }
219
220     function j(e) {
221         return !(!e || !(e.nodeName || e.prop && e.attr && e.find))
222     }
223
224     function L(e) {
225         var t, n = {},
226             r = e.split(",");
227         for (t = 0; t < r.length; t++) n[r[t]] = !0;
228         return n
229     }
230
231     function F(e) {
232         return jr(e.nodeName || e[0] && e[0].nodeName)
233     }
234
235     function q(e, t) {
236         return -1 !== Array.prototype.indexOf.call(e, t)
237     }
238
239     function U(e, t) {
240         var n = e.indexOf(t);
241         return n >= 0 && e.splice(n, 1), n
242     }
243
244     function V(e, t, r) {
245         function i(e, t, n) {
246             if (--n < 0) return "...";
247             var r, i = t.$$hashKey;
248             if (Jr(e))
249                 for (var o = 0, s = e.length; o < s; o++) t.push(a(e[o], n));
250             else if (w(e))
251                 for (r in e) t[r] = a(e[r], n);
252             else if (e && "function" == typeof e.hasOwnProperty)
253                 for (r in e) e.hasOwnProperty(r) && (t[r] = a(e[r], n));
254             else
255                 for (r in e) Hr.call(e, r) && (t[r] = a(e[r], n));
256             return l(t, i), t
257         }
258
259         function a(e, t) {
260             if (!_(e)) return e;
261             var n = c.indexOf(e);
262             if (-1 !== n) return u[n];
263             if (S(e) || A(e)) throw Kr("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
264             var r = !1,
265                 o = s(e);
266             return void 0 === o && (o = Jr(e) ? [] : Object.create(Gr(e)), r = !0), c.push(e), u.push(o), r ? i(e, o, t) : o
267         }
268
269         function s(e) {
270             switch (Yr.call(e)) {
271                 case "[object Int8Array]":
272                 case "[object Int16Array]":
273                 case "[object Int32Array]":
274                 case "[object Float32Array]":
275                 case "[object Float64Array]":
276                 case "[object Uint8Array]":
277                 case "[object Uint8ClampedArray]":
278                 case "[object Uint16Array]":
279                 case "[object Uint32Array]":
280                     return new e.constructor(a(e.buffer), e.byteOffset, e.length);
281                 case "[object ArrayBuffer]":
282                     if (!e.slice) {
283                         var t = new ArrayBuffer(e.byteLength);
284                         return new Uint8Array(t).set(new Uint8Array(e)), t
285                     }
286                     return e.slice(0);
287                 case "[object Boolean]":
288                 case "[object Number]":
289                 case "[object String]":
290                 case "[object Date]":
291                     return new e.constructor(e.valueOf());
292                 case "[object RegExp]":
293                     var n = new RegExp(e.source, e.toString().match(/[^/]*$/)[0]);
294                     return n.lastIndex = e.lastIndex, n;
295                 case "[object Blob]":
296                     return new e.constructor([e], {
297                         type: e.type
298                     })
299             }
300             if (T(e.cloneNode)) return e.cloneNode(!0)
301         }
302         var c = [],
303             u = [];
304         if (r = n(r) ? r : NaN, t) {
305             if (P(t) || H(t)) throw Kr("cpta", "Can't copy! TypedArray destination cannot be mutated.");
306             if (e === t) throw Kr("cpi", "Can't copy! Source and destination are identical.");
307             return Jr(t) ? t.length = 0 : o(t, function(e, n) {
308                 "$$hashKey" !== n && delete t[n]
309             }), c.push(e), u.push(t), i(e, t, r)
310         }
311         return a(e, r)
312     }
313
314     function B(e, t) {
315         return e === t || e !== e && t !== t
316     }
317
318     function z(e, t) {
319         if (e === t) return !0;
320         if (null === e || null === t) return !1;
321         if (e !== e && t !== t) return !0;
322         var n, r, i, o = typeof e;
323         if (o === typeof t && "object" === o) {
324             if (!Jr(e)) {
325                 if (x(e)) return !!x(t) && B(e.getTime(), t.getTime());
326                 if (M(e)) return !!M(t) && e.toString() === t.toString();
327                 if (A(e) || A(t) || S(e) || S(t) || Jr(t) || x(t) || M(t)) return !1;
328                 i = be();
329                 for (r in e)
330                     if ("$" !== r.charAt(0) && !T(e[r])) {
331                         if (!z(e[r], t[r])) return !1;
332                         i[r] = !0
333                     }
334                 for (r in t)
335                     if (!(r in i) && "$" !== r.charAt(0) && $(t[r]) && !T(t[r])) return !1;
336                 return !0
337             }
338             if (!Jr(t)) return !1;
339             if ((n = e.length) === t.length) {
340                 for (r = 0; r < n; r++)
341                     if (!z(e[r], t[r])) return !1;
342                 return !0
343             }
344         }
345         return !1
346     }
347
348     function W(e, t, n) {
349         return e.concat(Br.call(t, n))
350     }
351
352     function Y(e, t) {
353         return Br.call(e, t || 0)
354     }
355
356     function G(e, t) {
357         var n = arguments.length > 2 ? Y(arguments, 2) : [];
358         return !T(t) || t instanceof RegExp ? t : n.length ? function() {
359             return arguments.length ? t.apply(e, W(n, arguments, 0)) : t.apply(e, n)
360         } : function() {
361             return arguments.length ? t.apply(e, arguments) : t.call(e)
362         }
363     }
364
365     function K(t, n) {
366         var r = n;
367         return "string" == typeof t && "$" === t.charAt(0) && "$" === t.charAt(1) ? r = void 0 : S(n) ? r = "$WINDOW" : n && e.document === n ? r = "$DOCUMENT" : A(n) && (r = "$SCOPE"), r
368     }
369
370     function Z(e, t) {
371         if (!y(e)) return C(t) || (t = t ? 2 : null), JSON.stringify(e, K, t)
372     }
373
374     function X(e) {
375         return E(e) ? JSON.parse(e) : e
376     }
377
378     function Q(e, t) {
379         e = e.replace(oi, "");
380         var n = Date.parse("Jan 01, 1970 00:00:00 " + e) / 6e4;
381         return Qr(n) ? t : n
382     }
383
384     function J(e, t) {
385         return (e = new Date(e.getTime())).setMinutes(e.getMinutes() + t), e
386     }
387
388     function ee(e, t, n) {
389         n = n ? -1 : 1;
390         var r = e.getTimezoneOffset();
391         return J(e, n * (Q(t, r) - r))
392     }
393
394     function te(e) {
395         e = qr(e).clone().empty();
396         var t = qr("<div>").append(e).html();
397         try {
398             return e[0].nodeType === di ? jr(t) : t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(e, t) {
399                 return "<" + jr(t)
400             })
401         } catch (e) {
402             return jr(t)
403         }
404     }
405
406     function ne(e) {
407         try {
408             return decodeURIComponent(e)
409         } catch (e) {}
410     }
411
412     function re(e) {
413         var t = {};
414         return o((e || "").split("&"), function(e) {
415             var n, r, i;
416             e && (r = e = e.replace(/\+/g, "%20"), -1 !== (n = e.indexOf("=")) && (r = e.substring(0, n), i = e.substring(n + 1)), $(r = ne(r)) && (i = !$(i) || ne(i), Hr.call(t, r) ? Jr(t[r]) ? t[r].push(i) : t[r] = [t[r], i] : t[r] = i))
417         }), t
418     }
419
420     function ie(e) {
421         var t = [];
422         return o(e, function(e, n) {
423             Jr(e) ? o(e, function(e) {
424                 t.push(ae(n, !0) + (!0 === e ? "" : "=" + ae(e, !0)))
425             }) : t.push(ae(n, !0) + (!0 === e ? "" : "=" + ae(e, !0)))
426         }), t.length ? t.join("&") : ""
427     }
428
429     function oe(e) {
430         return ae(e, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
431     }
432
433     function ae(e, t) {
434         return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, t ? "%20" : "+")
435     }
436
437     function se(e, t) {
438         var n, r, i = ai.length;
439         for (r = 0; r < i; ++r)
440             if (n = ai[r] + t, E(n = e.getAttribute(n))) return n;
441         return null
442     }
443
444     function ce(t, n) {
445         var r, i, a = {};
446         if (o(ai, function(e) {
447                 var n = e + "app";
448                 !r && t.hasAttribute && t.hasAttribute(n) && (r = t, i = t.getAttribute(n))
449             }), o(ai, function(e) {
450                 var n, o = e + "app";
451                 !r && (n = t.querySelector("[" + o.replace(":", "\\:") + "]")) && (r = n, i = n.getAttribute(o))
452             }), r) {
453             if (!si) return void e.console.error("Angular: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
454             a.strictDi = null !== se(r, "strict-di"), n(r, i ? [i] : [], a)
455         }
456     }
457
458     function le(t, n, r) {
459         _(r) || (r = {}), r = d({
460             strictDi: !1
461         }, r);
462         var i = function() {
463                 if ((t = qr(t)).injector()) {
464                     var i = t[0] === e.document ? "document" : te(t);
465                     throw Kr("btstrpd", "App already bootstrapped with this element '{0}'", i.replace(/</, "&lt;").replace(/>/, "&gt;"))
466                 }(n = n || []).unshift(["$provide", function(e) {
467                     e.value("$rootElement", t)
468                 }]), r.debugInfoEnabled && n.push(["$compileProvider", function(e) {
469                     e.debugInfoEnabled(!0)
470                 }]), n.unshift("ng");
471                 var o = st(n, r.strictDi);
472                 return o.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(e, t, n, r) {
473                     e.$apply(function() {
474                         t.data("$injector", r), n(t)(e)
475                     })
476                 }]), o
477             },
478             a = /^NG_ENABLE_DEBUG_INFO!/,
479             s = /^NG_DEFER_BOOTSTRAP!/;
480         if (e && a.test(e.name) && (r.debugInfoEnabled = !0, e.name = e.name.replace(a, "")), e && !s.test(e.name)) return i();
481         e.name = e.name.replace(s, ""), Zr.resumeBootstrap = function(e) {
482             return o(e, function(e) {
483                 n.push(e)
484             }), i()
485         }, T(Zr.resumeDeferredBootstrap) && Zr.resumeDeferredBootstrap()
486     }
487
488     function ue() {
489         e.name = "NG_ENABLE_DEBUG_INFO!" + e.name, e.location.reload()
490     }
491
492     function de(e) {
493         var t = Zr.element(e).injector();
494         if (!t) throw Kr("test", "no injector found for element argument to getTestability");
495         return t.get("$$testability")
496     }
497
498     function fe(e, t) {
499         return t = t || "_", e.replace(ci, function(e, n) {
500             return (n ? t : "") + e.toLowerCase()
501         })
502     }
503
504     function he(e, t, n) {
505         if (!e) throw Kr("areq", "Argument '{0}' is {1}", t || "?", n || "required");
506         return e
507     }
508
509     function pe(e, t, n) {
510         return n && Jr(e) && (e = e[e.length - 1]), he(T(e), t, "not a function, got " + (e && "object" == typeof e ? e.constructor.name || "Object" : typeof e)), e
511     }
512
513     function me(e, t) {
514         if ("hasOwnProperty" === e) throw Kr("badname", "hasOwnProperty is not a valid {0} name", t)
515     }
516
517     function ge(e, t, n) {
518         if (!t) return e;
519         for (var r, i = t.split("."), o = e, a = i.length, s = 0; s < a; s++) r = i[s], e && (e = (o = e)[r]);
520         return !n && T(e) ? G(o, e) : e
521     }
522
523     function ve(e) {
524         for (var t, n = e[0], r = e[e.length - 1], i = 1; n !== r && (n = n.nextSibling); i++)(t || e[i] !== n) && (t || (t = qr(Br.call(e, 0, i))), t.push(n));
525         return t || e
526     }
527
528     function be() {
529         return Object.create(null)
530     }
531
532     function ye(e) {
533         if (null == e) return "";
534         switch (typeof e) {
535             case "string":
536                 break;
537             case "number":
538                 e = "" + e;
539                 break;
540             default:
541                 e = !b(e) || Jr(e) || x(e) ? Z(e) : e.toString()
542         }
543         return e
544     }
545
546     function $e(e) {
547         function t(e, t, n) {
548             return e[t] || (e[t] = n())
549         }
550         var n = r("$injector"),
551             i = r("ng"),
552             o = t(e, "angular", Object);
553         return o.$$minErr = o.$$minErr || r, t(o, "module", function() {
554             var e = {};
555             return function(r, o, a) {
556                 var s = {};
557                 return function(e, t) {
558                     if ("hasOwnProperty" === e) throw i("badname", "hasOwnProperty is not a valid {0} name", t)
559                 }(r, "module"), o && e.hasOwnProperty(r) && (e[r] = null), t(e, r, function() {
560                     function e(e, t, n, r) {
561                         return r || (r = c),
562                             function() {
563                                 return r[n || "push"]([e, t, arguments]), f
564                             }
565                     }
566
567                     function t(e, t, n) {
568                         return n || (n = c),
569                             function(i, o) {
570                                 return o && T(o) && (o.$$moduleName = r), n.push([e, t, arguments]), f
571                             }
572                     }
573                     if (!o) throw n("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
574                     var c = [],
575                         l = [],
576                         u = [],
577                         d = e("$injector", "invoke", "push", l),
578                         f = {
579                             _invokeQueue: c,
580                             _configBlocks: l,
581                             _runBlocks: u,
582                             info: function(e) {
583                                 if ($(e)) {
584                                     if (!_(e)) throw i("aobj", "Argument '{0}' must be an object", "value");
585                                     return s = e, this
586                                 }
587                                 return s
588                             },
589                             requires: o,
590                             name: r,
591                             provider: t("$provide", "provider"),
592                             factory: t("$provide", "factory"),
593                             service: t("$provide", "service"),
594                             value: e("$provide", "value"),
595                             constant: e("$provide", "constant", "unshift"),
596                             decorator: t("$provide", "decorator", l),
597                             animation: t("$animateProvider", "register"),
598                             filter: t("$filterProvider", "register"),
599                             controller: t("$controllerProvider", "register"),
600                             directive: t("$compileProvider", "directive"),
601                             component: t("$compileProvider", "component"),
602                             config: d,
603                             run: function(e) {
604                                 return u.push(e), this
605                             }
606                         };
607                     return a && d(a), f
608                 })
609             }
610         })
611     }
612
613     function _e(e, t) {
614         if (Jr(e)) {
615             t = t || [];
616             for (var n = 0, r = e.length; n < r; n++) t[n] = e[n]
617         } else if (_(e)) {
618             t = t || {};
619             for (var i in e) "$" === i.charAt(0) && "$" === i.charAt(1) || (t[i] = e[i])
620         }
621         return t || e
622     }
623
624     function we(e, t) {
625         var r = [];
626         return n(t) && (e = Zr.copy(e, null, t)), JSON.stringify(e, function(e, t) {
627             if (t = K(e, t), _(t)) {
628                 if (r.indexOf(t) >= 0) return "...";
629                 r.push(t)
630             }
631             return t
632         })
633     }
634
635     function Ee(e, t) {
636         return "function" == typeof e ? e.toString().replace(/ \{[\s\S]*$/, "") : y(e) ? "undefined" : "string" != typeof e ? we(e, t) : e
637     }
638
639     function Ce() {
640         return ++vi
641     }
642
643     function xe(e) {
644         return Te(e.replace(yi, "ms-"))
645     }
646
647     function ke(e, t) {
648         return t.toUpperCase()
649     }
650
651     function Te(e) {
652         return e.replace(bi, ke)
653     }
654
655     function Me(e) {
656         return !Ei.test(e)
657     }
658
659     function Se(e) {
660         var t = e.nodeType;
661         return t === ui || !t || t === hi
662     }
663
664     function Ae(e, t) {
665         var n, r, i, a, s = t.createDocumentFragment(),
666             c = [];
667         if (Me(e)) c.push(t.createTextNode(e));
668         else {
669             for (n = s.appendChild(t.createElement("div")), r = (Ci.exec(e) || ["", ""])[1].toLowerCase(), i = ki[r] || ki._default, n.innerHTML = i[1] + e.replace(xi, "<$1></$2>") + i[2], a = i[0]; a--;) n = n.lastChild;
670             c = W(c, n.childNodes), (n = s.firstChild).textContent = ""
671         }
672         return s.textContent = "", s.innerHTML = "", o(c, function(e) {
673             s.appendChild(e)
674         }), s
675     }
676
677     function Oe(t, n) {
678         n = n || e.document;
679         var r;
680         return (r = wi.exec(t)) ? [n.createElement(r[1])] : (r = Ae(t, n)) ? r.childNodes : []
681     }
682
683     function De(e, t) {
684         var n = e.parentNode;
685         n && n.replaceChild(t, e), t.appendChild(e)
686     }
687
688     function Ne(e) {
689         if (e instanceof Ne) return e;
690         var t;
691         if (E(e) && (e = ti(e), t = !0), !(this instanceof Ne)) {
692             if (t && "<" !== e.charAt(0)) throw _i("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
693             return new Ne(e)
694         }
695         t ? Ve(this, Oe(e)) : T(e) ? Ke(e) : Ve(this, e)
696     }
697
698     function Ie(e) {
699         return e.cloneNode(!0)
700     }
701
702     function Re(e, t) {
703         !t && Se(e) && qr.cleanData([e]), e.querySelectorAll && qr.cleanData(e.querySelectorAll("*"))
704     }
705
706     function Pe(e, t, n, r) {
707         if ($(r)) throw _i("offargs", "jqLite#off() does not support the `selector` argument");
708         var i = je(e),
709             a = i && i.events,
710             s = i && i.handle;
711         if (s)
712             if (t) {
713                 var c = function(t) {
714                     var r = a[t];
715                     $(n) && U(r || [], n), $(n) && r && r.length > 0 || (e.removeEventListener(t, s), delete a[t])
716                 };
717                 o(t.split(" "), function(e) {
718                     c(e), $i[e] && c($i[e])
719                 })
720             } else
721                 for (t in a) "$destroy" !== t && e.removeEventListener(t, s), delete a[t]
722     }
723
724     function He(e, t) {
725         var n = e.ng339,
726             r = n && gi[n];
727         if (r) {
728             if (t) return void delete r.data[t];
729             r.handle && (r.events.$destroy && r.handle({}, "$destroy"), Pe(e)), delete gi[n], e.ng339 = void 0
730         }
731     }
732
733     function je(e, t) {
734         var n = e.ng339,
735             r = n && gi[n];
736         return t && !r && (e.ng339 = n = Ce(), r = gi[n] = {
737             events: {},
738             data: {},
739             handle: void 0
740         }), r
741     }
742
743     function Le(e, t, n) {
744         if (Se(e)) {
745             var r, i = $(n),
746                 o = !i && t && !_(t),
747                 a = !t,
748                 s = je(e, !o),
749                 c = s && s.data;
750             if (i) c[Te(t)] = n;
751             else {
752                 if (a) return c;
753                 if (o) return c && c[Te(t)];
754                 for (r in t) c[Te(r)] = t[r]
755             }
756         }
757     }
758
759     function Fe(e, t) {
760         return !!e.getAttribute && (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ") > -1
761     }
762
763     function qe(e, t) {
764         t && e.setAttribute && o(t.split(" "), function(t) {
765             e.setAttribute("class", ti((" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + ti(t) + " ", " ")))
766         })
767     }
768
769     function Ue(e, t) {
770         if (t && e.setAttribute) {
771             var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
772             o(t.split(" "), function(e) {
773                 e = ti(e), -1 === n.indexOf(" " + e + " ") && (n += e + " ")
774             }), e.setAttribute("class", ti(n))
775         }
776     }
777
778     function Ve(e, t) {
779         if (t)
780             if (t.nodeType) e[e.length++] = t;
781             else {
782                 var n = t.length;
783                 if ("number" == typeof n && t.window !== t) {
784                     if (n)
785                         for (var r = 0; r < n; r++) e[e.length++] = t[r]
786                 } else e[e.length++] = t
787             }
788     }
789
790     function Be(e, t) {
791         return ze(e, "$" + (t || "ngController") + "Controller")
792     }
793
794     function ze(e, t, n) {
795         e.nodeType === hi && (e = e.documentElement);
796         for (var r = Jr(t) ? t : [t]; e;) {
797             for (var i = 0, o = r.length; i < o; i++)
798                 if ($(n = qr.data(e, r[i]))) return n;
799             e = e.parentNode || e.nodeType === pi && e.host
800         }
801     }
802
803     function We(e) {
804         for (Re(e, !0); e.firstChild;) e.removeChild(e.firstChild)
805     }
806
807     function Ye(e, t) {
808         t || Re(e);
809         var n = e.parentNode;
810         n && n.removeChild(e)
811     }
812
813     function Ge(t, n) {
814         "complete" === (n = n || e).document.readyState ? n.setTimeout(t) : qr(n).on("load", t)
815     }
816
817     function Ke(t) {
818         function n() {
819             e.document.removeEventListener("DOMContentLoaded", n), e.removeEventListener("load", n), t()
820         }
821         "complete" === e.document.readyState ? e.setTimeout(t) : (e.document.addEventListener("DOMContentLoaded", n), e.addEventListener("load", n))
822     }
823
824     function Ze(e, t) {
825         var n = Si[t.toLowerCase()];
826         return n && Ai[F(e)] && n
827     }
828
829     function Xe(e) {
830         return Oi[e]
831     }
832
833     function Qe(e, t) {
834         var n = function(n, r) {
835             n.isDefaultPrevented = function() {
836                 return n.defaultPrevented
837             };
838             var i = t[r || n.type],
839                 o = i ? i.length : 0;
840             if (o) {
841                 if (y(n.immediatePropagationStopped)) {
842                     var a = n.stopImmediatePropagation;
843                     n.stopImmediatePropagation = function() {
844                         n.immediatePropagationStopped = !0, n.stopPropagation && n.stopPropagation(), a && a.call(n)
845                     }
846                 }
847                 n.isImmediatePropagationStopped = function() {
848                     return !0 === n.immediatePropagationStopped
849                 };
850                 var s = i.specialHandlerWrapper || Je;
851                 o > 1 && (i = _e(i));
852                 for (var c = 0; c < o; c++) n.isImmediatePropagationStopped() || s(e, n, i[c])
853             }
854         };
855         return n.elem = e, n
856     }
857
858     function Je(e, t, n) {
859         n.call(e, t)
860     }
861
862     function et(e, t, n) {
863         var r = t.relatedTarget;
864         r && (r === e || Ti.call(e, r)) || n.call(e, t)
865     }
866
867     function tt() {
868         this.$get = function() {
869             return d(Ne, {
870                 hasClass: function(e, t) {
871                     return e.attr && (e = e[0]), Fe(e, t)
872                 },
873                 addClass: function(e, t) {
874                     return e.attr && (e = e[0]), Ue(e, t)
875                 },
876                 removeClass: function(e, t) {
877                     return e.attr && (e = e[0]), qe(e, t)
878                 }
879             })
880         }
881     }
882
883     function nt(e, t) {
884         var n = e && e.$$hashKey;
885         if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
886         var r = typeof e;
887         return n = "function" === r || "object" === r && null !== e ? e.$$hashKey = r + ":" + (t || c)() : r + ":" + e
888     }
889
890     function rt() {
891         this._keys = [], this._values = [], this._lastKey = NaN, this._lastIndex = -1
892     }
893
894     function it(e) {
895         return Function.prototype.toString.call(e)
896     }
897
898     function ot(e) {
899         var t = it(e).replace(Li, "");
900         return t.match(Ri) || t.match(Pi)
901     }
902
903     function at(e) {
904         var t = ot(e);
905         return t ? "function(" + (t[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
906     }
907
908     function st(e, t) {
909         function n(e) {
910             return function(t, n) {
911                 if (!_(t)) return e(t, n);
912                 o(t, s(e))
913             }
914         }
915
916         function r(e, t) {
917             if (me(e, "service"), (T(t) || Jr(t)) && (t = m.instantiate(t)), !t.$get) throw Fi("pget", "Provider '{0}' must define $get factory method.", e);
918             return p[e + d] = t
919         }
920
921         function i(e, t) {
922             return function() {
923                 var n = $.invoke(t, this);
924                 if (y(n)) throw Fi("undef", "Provider '{0}' must return a value from $get factory method.", e);
925                 return n
926             }
927         }
928
929         function a(e, t, n) {
930             return r(e, {
931                 $get: !1 !== n ? i(e, t) : t
932             })
933         }
934
935         function c(e) {
936             he(y(e) || Jr(e), "modulesToLoad", "not an array");
937             var t, n = [];
938             return o(e, function(e) {
939                 function r(e) {
940                     var t, n;
941                     for (t = 0, n = e.length; t < n; t++) {
942                         var r = e[t],
943                             i = m.get(r[0]);
944                         i[r[1]].apply(i, r[2])
945                     }
946                 }
947                 if (!h.get(e)) {
948                     h.set(e, !0);
949                     try {
950                         E(e) ? (t = Vr(e), $.modules[e] = t, n = n.concat(c(t.requires)).concat(t._runBlocks), r(t._invokeQueue), r(t._configBlocks)) : T(e) ? n.push(m.invoke(e)) : Jr(e) ? n.push(m.invoke(e)) : pe(e, "module")
951                     } catch (t) {
952                         throw Jr(e) && (e = e[e.length - 1]), t.message && t.stack && -1 === t.stack.indexOf(t.message) && (t = t.message + "\n" + t.stack), Fi("modulerr", "Failed to instantiate module {0} due to:\n{1}", e, t.stack || t.message || t)
953                     }
954                 }
955             }), n
956         }
957
958         function l(e, n) {
959             function r(t, r) {
960                 if (e.hasOwnProperty(t)) {
961                     if (e[t] === u) throw Fi("cdep", "Circular dependency found: {0}", t + " <- " + f.join(" <- "));
962                     return e[t]
963                 }
964                 try {
965                     return f.unshift(t), e[t] = u, e[t] = n(t, r), e[t]
966                 } catch (n) {
967                     throw e[t] === u && delete e[t], n
968                 } finally {
969                     f.shift()
970                 }
971             }
972
973             function i(e, n, i) {
974                 for (var o = [], a = st.$$annotate(e, t, i), s = 0, c = a.length; s < c; s++) {
975                     var l = a[s];
976                     if ("string" != typeof l) throw Fi("itkn", "Incorrect injection token! Expected service name as string, got {0}", l);
977                     o.push(n && n.hasOwnProperty(l) ? n[l] : r(l, i))
978                 }
979                 return o
980             }
981
982             function o(e) {
983                 if (Fr || "function" != typeof e) return !1;
984                 var t = e.$$ngIsClass;
985                 return I(t) || (t = e.$$ngIsClass = /^(?:class\b|constructor\()/.test(it(e))), t
986             }
987             return {
988                 invoke: function(e, t, n, r) {
989                     "string" == typeof n && (r = n, n = null);
990                     var a = i(e, n, r);
991                     return Jr(e) && (e = e[e.length - 1]), o(e) ? (a.unshift(null), new(Function.prototype.bind.apply(e, a))) : e.apply(t, a)
992                 },
993                 instantiate: function(e, t, n) {
994                     var r = Jr(e) ? e[e.length - 1] : e,
995                         o = i(e, t, n);
996                     return o.unshift(null), new(Function.prototype.bind.apply(r, o))
997                 },
998                 get: r,
999                 annotate: st.$$annotate,
1000                 has: function(t) {
1001                     return p.hasOwnProperty(t + d) || e.hasOwnProperty(t)
1002                 }
1003             }
1004         }
1005         t = !0 === t;
1006         var u = {},
1007             d = "Provider",
1008             f = [],
1009             h = new Ni,
1010             p = {
1011                 $provide: {
1012                     provider: n(r),
1013                     factory: n(a),
1014                     service: n(function(e, t) {
1015                         return a(e, ["$injector", function(e) {
1016                             return e.instantiate(t)
1017                         }])
1018                     }),
1019                     value: n(function(e, t) {
1020                         return a(e, v(t), !1)
1021                     }),
1022                     constant: n(function(e, t) {
1023                         me(e, "constant"), p[e] = t, g[e] = t
1024                     }),
1025                     decorator: function(e, t) {
1026                         var n = m.get(e + d),
1027                             r = n.$get;
1028                         n.$get = function() {
1029                             var e = $.invoke(r, n);
1030                             return $.invoke(t, null, {
1031                                 $delegate: e
1032                             })
1033                         }
1034                     }
1035                 }
1036             },
1037             m = p.$injector = l(p, function(e, t) {
1038                 throw Zr.isString(t) && f.push(t), Fi("unpr", "Unknown provider: {0}", f.join(" <- "))
1039             }),
1040             g = {},
1041             b = l(g, function(e, t) {
1042                 var n = m.get(e + d, t);
1043                 return $.invoke(n.$get, n, void 0, e)
1044             }),
1045             $ = b;
1046         p["$injector" + d] = {
1047             $get: v(b)
1048         }, $.modules = m.modules = be();
1049         var w = c(e);
1050         return $ = b.get("$injector"), $.strictDi = t, o(w, function(e) {
1051             e && $.invoke(e)
1052         }), $
1053     }
1054
1055     function ct() {
1056         var e = !0;
1057         this.disableAutoScrolling = function() {
1058             e = !1
1059         }, this.$get = ["$window", "$location", "$rootScope", function(t, n, r) {
1060             function i(e) {
1061                 var t = null;
1062                 return Array.prototype.some.call(e, function(e) {
1063                     if ("a" === F(e)) return t = e, !0
1064                 }), t
1065             }
1066
1067             function o() {
1068                 var e = s.yOffset;
1069                 if (T(e)) e = e();
1070                 else if (j(e)) {
1071                     var n = e[0];
1072                     e = "fixed" !== t.getComputedStyle(n).position ? 0 : n.getBoundingClientRect().bottom
1073                 } else C(e) || (e = 0);
1074                 return e
1075             }
1076
1077             function a(e) {
1078                 if (e) {
1079                     e.scrollIntoView();
1080                     var n = o();
1081                     if (n) {
1082                         var r = e.getBoundingClientRect().top;
1083                         t.scrollBy(0, r - n)
1084                     }
1085                 } else t.scrollTo(0, 0)
1086             }
1087
1088             function s(e) {
1089                 var t;
1090                 (e = E(e) ? e : C(e) ? e.toString() : n.hash()) ? (t = c.getElementById(e)) ? a(t): (t = i(c.getElementsByName(e))) ? a(t) : "top" === e && a(null): a(null)
1091             }
1092             var c = t.document;
1093             return e && r.$watch(function() {
1094                 return n.hash()
1095             }, function(e, t) {
1096                 e === t && "" === e || Ge(function() {
1097                     r.$evalAsync(s)
1098                 })
1099             }), s
1100         }]
1101     }
1102
1103     function lt(e, t) {
1104         return e || t ? e ? t ? (Jr(e) && (e = e.join(" ")), Jr(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
1105     }
1106
1107     function ut(e) {
1108         for (var t = 0; t < e.length; t++) {
1109             var n = e[t];
1110             if (n.nodeType === Ui) return n
1111         }
1112     }
1113
1114     function dt(e) {
1115         E(e) && (e = e.split(" "));
1116         var t = be();
1117         return o(e, function(e) {
1118             e.length && (t[e] = !0)
1119         }), t
1120     }
1121
1122     function ft(e) {
1123         return _(e) ? e : {}
1124     }
1125
1126     function ht(e, t, n, r) {
1127         function i(e) {
1128             try {
1129                 e.apply(null, Y(arguments, 1))
1130             } finally {
1131                 if (0 == --v)
1132                     for (; b.length;) try {
1133                         b.pop()()
1134                     } catch (e) {
1135                         n.error(e)
1136                     }
1137             }
1138         }
1139
1140         function a(e) {
1141             var t = e.indexOf("#");
1142             return -1 === t ? "" : e.substr(t)
1143         }
1144
1145         function s() {
1146             C = null, l()
1147         }
1148
1149         function c() {
1150             $ = x(), z($ = y($) ? null : $, M) && ($ = M), M = $, _ = $
1151         }
1152
1153         function l() {
1154             var e = _;
1155             c(), w === u.url() && e === $ || (w = u.url(), _ = $, o(k, function(e) {
1156                 e(u.url(), $)
1157             }))
1158         }
1159         var u = this,
1160             d = e.location,
1161             f = e.history,
1162             h = e.setTimeout,
1163             p = e.clearTimeout,
1164             g = {};
1165         u.isMock = !1;
1166         var v = 0,
1167             b = [];
1168         u.$$completeOutstandingRequest = i, u.$$incOutstandingRequestCount = function() {
1169             v++
1170         }, u.notifyWhenNoOutstandingRequests = function(e) {
1171             0 === v ? e() : b.push(e)
1172         };
1173         var $, _, w = d.href,
1174             E = t.find("base"),
1175             C = null,
1176             x = r.history ? function() {
1177                 try {
1178                     return f.state
1179                 } catch (e) {}
1180             } : m;
1181         c(), u.url = function(t, n, i) {
1182             if (y(i) && (i = null), d !== e.location && (d = e.location), f !== e.history && (f = e.history), t) {
1183                 var o = _ === i;
1184                 if (w === t && (!r.history || o)) return u;
1185                 var s = w && Yt(w) === Yt(t);
1186                 return w = t, _ = i, !r.history || s && o ? (s || (C = t), n ? d.replace(t) : s ? d.hash = a(t) : d.href = t, d.href !== t && (C = t)) : (f[n ? "replaceState" : "pushState"](i, "", t), c()), C && (C = t), u
1187             }
1188             return C || d.href.replace(/%27/g, "'")
1189         }, u.state = function() {
1190             return $
1191         };
1192         var k = [],
1193             T = !1,
1194             M = null;
1195         u.onUrlChange = function(t) {
1196             return T || (r.history && qr(e).on("popstate", s), qr(e).on("hashchange", s), T = !0), k.push(t), t
1197         }, u.$$applicationDestroyed = function() {
1198             qr(e).off("hashchange popstate", s)
1199         }, u.$$checkUrlChange = l, u.baseHref = function() {
1200             var e = E.attr("href");
1201             return e ? e.replace(/^(https?:)?\/\/[^/]*/, "") : ""
1202         }, u.defer = function(e, t) {
1203             var n;
1204             return v++, n = h(function() {
1205                 delete g[n], i(e)
1206             }, t || 0), g[n] = !0, n
1207         }, u.defer.cancel = function(e) {
1208             return !!g[e] && (delete g[e], p(e), i(m), !0)
1209         }
1210     }
1211
1212     function pt() {
1213         this.$get = ["$window", "$log", "$sniffer", "$document", function(e, t, n, r) {
1214             return new ht(e, r, t, n)
1215         }]
1216     }
1217
1218     function mt() {
1219         this.$get = function() {
1220             function e(e, n) {
1221                 function i(e) {
1222                     e !== f && (h ? h === e && (h = e.n) : h = e, o(e.n, e.p), o(e, f), (f = e).n = null)
1223                 }
1224
1225                 function o(e, t) {
1226                     e !== t && (e && (e.p = t), t && (t.n = e))
1227                 }
1228                 if (e in t) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
1229                 var a = 0,
1230                     s = d({}, n, {
1231                         id: e
1232                     }),
1233                     c = be(),
1234                     l = n && n.capacity || Number.MAX_VALUE,
1235                     u = be(),
1236                     f = null,
1237                     h = null;
1238                 return t[e] = {
1239                     put: function(e, t) {
1240                         if (!y(t)) return l < Number.MAX_VALUE && i(u[e] || (u[e] = {
1241                             key: e
1242                         })), e in c || a++, c[e] = t, a > l && this.remove(h.key), t
1243                     },
1244                     get: function(e) {
1245                         if (l < Number.MAX_VALUE) {
1246                             var t = u[e];
1247                             if (!t) return;
1248                             i(t)
1249                         }
1250                         return c[e]
1251                     },
1252                     remove: function(e) {
1253                         if (l < Number.MAX_VALUE) {
1254                             var t = u[e];
1255                             if (!t) return;
1256                             t === f && (f = t.p), t === h && (h = t.n), o(t.n, t.p), delete u[e]
1257                         }
1258                         e in c && (delete c[e], a--)
1259                     },
1260                     removeAll: function() {
1261                         c = be(), a = 0, u = be(), f = h = null
1262                     },
1263                     destroy: function() {
1264                         c = null, s = null, u = null, delete t[e]
1265                     },
1266                     info: function() {
1267                         return d({}, s, {
1268                             size: a
1269                         })
1270                     }
1271                 }
1272             }
1273             var t = {};
1274             return e.info = function() {
1275                 var e = {};
1276                 return o(t, function(t, n) {
1277                     e[n] = t.info()
1278                 }), e
1279             }, e.get = function(e) {
1280                 return t[e]
1281             }, e
1282         }
1283     }
1284
1285     function gt() {
1286         this.$get = ["$cacheFactory", function(e) {
1287             return e("templates")
1288         }]
1289     }
1290
1291     function vt(t, n) {
1292         function r(e, t, n) {
1293             var r = /^\s*([@&<]|=(\*?))(\??)\s*([\w$]*)\s*$/,
1294                 i = be();
1295             return o(e, function(e, o) {
1296                 if (e in M) i[o] = M[e];
1297                 else {
1298                     var a = e.match(r);
1299                     if (!a) throw Ki("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", t, o, e, n ? "controller bindings definition" : "isolate scope definition");
1300                     i[o] = {
1301                         mode: a[1][0],
1302                         collection: "*" === a[2],
1303                         optional: "?" === a[3],
1304                         attrName: a[4] || o
1305                     }, a[4] && (M[e] = i[o])
1306                 }
1307             }), i
1308         }
1309
1310         function i(e, t) {
1311             var n = {
1312                 isolateScope: null,
1313                 bindToController: null
1314             };
1315             if (_(e.scope) && (!0 === e.bindToController ? (n.bindToController = r(e.scope, t, !0), n.isolateScope = {}) : n.isolateScope = r(e.scope, t, !1)), _(e.bindToController) && (n.bindToController = r(e.bindToController, t, !0)), n.bindToController && !e.controller) throw Ki("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
1316             return n
1317         }
1318
1319         function a(e) {
1320             var t = e.charAt(0);
1321             if (!t || t !== jr(t)) throw Ki("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", e);
1322             if (e !== e.trim()) throw Ki("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
1323         }
1324
1325         function c(e) {
1326             var t = e.require || e.controller && e.name;
1327             return !Jr(t) && _(t) && o(t, function(e, n) {
1328                 var r = e.match(C);
1329                 e.substring(r[0].length) || (t[n] = r[0] + n)
1330             }), t
1331         }
1332
1333         function l(e, t) {
1334             if (e && (!E(e) || !/[EACM]/.test(e))) throw Ki("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", e, t);
1335             return e || "EA"
1336         }
1337         var u = {},
1338             f = "Directive",
1339             h = /^\s*directive:\s*([\w-]+)\s+(.*)$/,
1340             b = /(([\w-]+)(?::([^;]+))?;?)/,
1341             w = L("ngSrc,ngSrcset,src,srcset"),
1342             C = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
1343             x = /^(on[a-z]+|formaction)$/,
1344             M = be();
1345         this.directive = function e(n, r) {
1346             return he(n, "name"), me(n, "directive"), E(n) ? (a(n), he(r, "directiveFactory"), u.hasOwnProperty(n) || (u[n] = [], t.factory(n + f, ["$injector", "$exceptionHandler", function(e, t) {
1347                 var r = [];
1348                 return o(u[n], function(i, o) {
1349                     try {
1350                         var a = e.invoke(i);
1351                         T(a) ? a = {
1352                             compile: v(a)
1353                         } : !a.compile && a.link && (a.compile = v(a.link)), a.priority = a.priority || 0, a.index = o, a.name = a.name || n, a.require = c(a), a.restrict = l(a.restrict, n), a.$$moduleName = i.$$moduleName, r.push(a)
1354                     } catch (e) {
1355                         t(e)
1356                     }
1357                 }), r
1358             }])), u[n].push(r)) : o(n, s(e)), this
1359         }, this.component = function e(t, n) {
1360             function r(e) {
1361                 function t(t) {
1362                     return T(t) || Jr(t) ? function(n, r) {
1363                         return e.invoke(t, this, {
1364                             $element: n,
1365                             $attrs: r
1366                         })
1367                     } : t
1368                 }
1369                 var r = n.template || n.templateUrl ? n.template : "",
1370                     a = {
1371                         controller: i,
1372                         controllerAs: wt(n.controller) || n.controllerAs || "$ctrl",
1373                         template: t(r),
1374                         templateUrl: t(n.templateUrl),
1375                         transclude: n.transclude,
1376                         scope: {},
1377                         bindToController: n.bindings || {},
1378                         restrict: "E",
1379                         require: n.require
1380                     };
1381                 return o(n, function(e, t) {
1382                     "$" === t.charAt(0) && (a[t] = e)
1383                 }), a
1384             }
1385             if (!E(t)) return o(t, s(G(this, e))), this;
1386             var i = n.controller || function() {};
1387             return o(n, function(e, t) {
1388                 "$" === t.charAt(0) && (r[t] = e, T(i) && (i[t] = e))
1389             }), r.$inject = ["$injector"], this.directive(t, r)
1390         }, this.aHrefSanitizationWhitelist = function(e) {
1391             return $(e) ? (n.aHrefSanitizationWhitelist(e), this) : n.aHrefSanitizationWhitelist()
1392         }, this.imgSrcSanitizationWhitelist = function(e) {
1393             return $(e) ? (n.imgSrcSanitizationWhitelist(e), this) : n.imgSrcSanitizationWhitelist()
1394         };
1395         var S = !0;
1396         this.debugInfoEnabled = function(e) {
1397             return $(e) ? (S = e, this) : S
1398         };
1399         var O = !1;
1400         this.preAssignBindingsEnabled = function(e) {
1401             return $(e) ? (O = e, this) : O
1402         };
1403         var D = !1;
1404         this.strictComponentBindingsEnabled = function(e) {
1405             return $(e) ? (D = e, this) : D
1406         };
1407         var N = 10;
1408         this.onChangesTtl = function(e) {
1409             return arguments.length ? (N = e, this) : N
1410         };
1411         var R = !0;
1412         this.commentDirectivesEnabled = function(e) {
1413             return arguments.length ? (R = e, this) : R
1414         };
1415         var P = !0;
1416         this.cssClassDirectivesEnabled = function(e) {
1417             return arguments.length ? (P = e, this) : P
1418         }, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", "$$sanitizeUri", function(t, n, r, a, s, c, l, v, M, H) {
1419             function j() {
1420                 try {
1421                     if (!--Ne) throw Te = void 0, Ki("infchng", "{0} $onChanges() iterations reached. Aborting!\n", N);
1422                     l.$apply(function() {
1423                         for (var e = [], t = 0, n = Te.length; t < n; ++t) try {
1424                             Te[t]()
1425                         } catch (t) {
1426                             e.push(t)
1427                         }
1428                         if (Te = void 0, e.length) throw e
1429                     })
1430                 } finally {
1431                     Ne++
1432                 }
1433             }
1434
1435             function L(e, t) {
1436                 if (t) {
1437                     var n, r, i, o = Object.keys(t);
1438                     for (n = 0, r = o.length; n < r; n++) this[i = o[n]] = t[i]
1439                 } else this.$attr = {};
1440                 this.$$element = e
1441             }
1442
1443             function q(e, t, n) {
1444                 Ae.innerHTML = "<span " + t + ">";
1445                 var r = Ae.firstChild.attributes,
1446                     i = r[0];
1447                 r.removeNamedItem(i.name), i.value = n, e.attributes.setNamedItem(i)
1448             }
1449
1450             function V(e, t) {
1451                 try {
1452                     e.addClass(t)
1453                 } catch (e) {}
1454             }
1455
1456             function W(e, t, n, r, i) {
1457                 e instanceof qr || (e = qr(e));
1458                 var o = Z(e, t, e, n, r, i);
1459                 W.$$addScopeClass(e);
1460                 var a = null;
1461                 return function(t, n, r) {
1462                     if (!e) throw Ki("multilink", "This element has already been linked.");
1463                     he(t, "scope"), i && i.needsNewScope && (t = t.$parent.$new());
1464                     var s = (r = r || {}).parentBoundTranscludeFn,
1465                         c = r.transcludeControllers,
1466                         l = r.futureParentElement;
1467                     s && s.$$boundTransclude && (s = s.$$boundTransclude), a || (a = K(l));
1468                     var u;
1469                     if (u = "html" !== a ? qr(ye(a, qr("<div>").append(e).html())) : n ? Mi.clone.call(e) : e, c)
1470                         for (var d in c) u.data("$" + d + "Controller", c[d].instance);
1471                     return W.$$addScopeInfo(u, t), n && n(u, t), o && o(t, u, u, s), n || (e = o = null), u
1472                 }
1473             }
1474
1475             function K(e) {
1476                 var t = e && e[0];
1477                 return t && "foreignobject" !== F(t) && Yr.call(t).match(/SVG/) ? "svg" : "html"
1478             }
1479
1480             function Z(e, t, n, r, i, o) {
1481                 for (var a, s, c, l, u, d, f, h = [], p = Jr(e) || e instanceof qr, m = 0; m < e.length; m++) a = new L, 11 === Fr && X(e, m, p), (c = (s = J(e[m], [], a, 0 === m ? r : void 0, i)).length ? oe(s, e[m], a, t, n, null, [], [], o) : null) && c.scope && W.$$addScopeClass(a.$$element), u = c && c.terminal || !(l = e[m].childNodes) || !l.length ? null : Z(l, c ? (c.transcludeOnThisElement || !c.templateOnThisElement) && c.transclude : t), (c || u) && (h.push(m, c, u), d = !0, f = f || c), o = null;
1482                 return d ? function(e, n, r, i) {
1483                     var o, a, s, c, l, u, d, p;
1484                     if (f) {
1485                         var m = n.length;
1486                         for (p = new Array(m), l = 0; l < h.length; l += 3) p[d = h[l]] = n[d]
1487                     } else p = n;
1488                     for (l = 0, u = h.length; l < u;) s = p[h[l++]], o = h[l++], a = h[l++], o ? (o.scope ? (c = e.$new(), W.$$addScopeInfo(qr(s), c)) : c = e, o(a, c, s, r, o.transcludeOnThisElement ? Q(e, o.transclude, i) : !o.templateOnThisElement && i ? i : !i && t ? Q(e, t) : null)) : a && a(e, s.childNodes, void 0, i)
1489                 } : null
1490             }
1491
1492             function X(e, t, n) {
1493                 var r, i = e[t],
1494                     o = i.parentNode;
1495                 if (i.nodeType === di)
1496                     for (;;) {
1497                         if (!(r = o ? i.nextSibling : e[t + 1]) || r.nodeType !== di) break;
1498                         i.nodeValue = i.nodeValue + r.nodeValue, r.parentNode && r.parentNode.removeChild(r), n && r === e[t + 1] && e.splice(t + 1, 1)
1499                     }
1500             }
1501
1502             function Q(e, t, n) {
1503                 function r(r, i, o, a, s) {
1504                     return r || ((r = e.$new(!1, s)).$$transcluded = !0), t(r, i, {
1505                         parentBoundTranscludeFn: n,
1506                         transcludeControllers: o,
1507                         futureParentElement: a
1508                     })
1509                 }
1510                 var i = r.$$slots = be();
1511                 for (var o in t.$$slots) t.$$slots[o] ? i[o] = Q(e, t.$$slots[o], n) : i[o] = null;
1512                 return r
1513             }
1514
1515             function J(e, t, n, r, i) {
1516                 var o, a, s, c = e.nodeType,
1517                     l = n.$attr;
1518                 switch (c) {
1519                     case ui:
1520                         le(t, yt(a = F(e)), "E", r, i);
1521                         for (var u, d, f, h, p, m, g = e.attributes, v = 0, y = g && g.length; v < y; v++) {
1522                             var $ = !1,
1523                                 w = !1;
1524                             d = (u = g[v]).name, p = u.value, h = yt(d), (m = je.test(h)) && (d = d.replace(Xi, "").substr(8).replace(/_(.)/g, function(e, t) {
1525                                 return t.toUpperCase()
1526                             }));
1527                             var C = h.match(Le);
1528                             C && ue(C[1]) && ($ = d, w = d.substr(0, d.length - 5) + "end", d = d.substr(0, d.length - 6)), l[f = yt(d.toLowerCase())] = d, !m && n.hasOwnProperty(f) || (n[f] = p, Ze(e, f) && (n[f] = !0)), _e(e, t, p, f, m), le(t, f, "A", r, i, $, w)
1529                         }
1530                         if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), !De) break;
1531                         if (s = e.className, _(s) && (s = s.animVal), E(s) && "" !== s)
1532                             for (; o = b.exec(s);) le(t, f = yt(o[2]), "C", r, i) && (n[f] = ti(o[3])), s = s.substr(o.index + o[0].length);
1533                         break;
1534                     case di:
1535                         ve(t, e.nodeValue);
1536                         break;
1537                     case fi:
1538                         if (!Oe) break;
1539                         ee(e, t, n, r, i)
1540                 }
1541                 return t.sort(me), t
1542             }
1543
1544             function ee(e, t, n, r, i) {
1545                 try {
1546                     var o = h.exec(e.nodeValue);
1547                     if (o) {
1548                         var a = yt(o[1]);
1549                         le(t, a, "M", r, i) && (n[a] = ti(o[2]))
1550                     }
1551                 } catch (e) {}
1552             }
1553
1554             function ne(e, t, n) {
1555                 var r = [],
1556                     i = 0;
1557                 if (t && e.hasAttribute && e.hasAttribute(t))
1558                     do {
1559                         if (!e) throw Ki("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
1560                         e.nodeType === ui && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
1561                     } while (i > 0);
1562                 else r.push(e);
1563                 return qr(r)
1564             }
1565
1566             function re(e, t, n) {
1567                 return function(r, i, o, a, s) {
1568                     return i = ne(i[0], t, n), e(r, i, o, a, s)
1569                 }
1570             }
1571
1572             function ie(e, t, n, r, i, o) {
1573                 var a;
1574                 return e ? W(t, n, r, i, o) : function() {
1575                     return a || (a = W(t, n, r, i, o), t = n = o = null), a.apply(this, arguments)
1576                 }
1577             }
1578
1579             function oe(e, t, n, i, a, s, c, l, u) {
1580                 function f(e, t, n, r) {
1581                     e && (n && (e = re(e, n, r)), e.require = p.require, e.directiveName = m, (C === p || p.$$isolateScope) && (e = Ee(e, {
1582                         isolateScope: !0
1583                     })), c.push(e)), t && (n && (t = re(t, n, r)), t.require = p.require, t.directiveName = m, (C === p || p.$$isolateScope) && (t = Ee(t, {
1584                         isolateScope: !0
1585                     })), l.push(t))
1586                 }
1587
1588                 function h(e, i, a, s, u) {
1589                     var f, h, p, m, g, v, b, $, k, M;
1590                     t === a ? (k = n, $ = n.$$element) : k = new L($ = qr(a), n), g = i, C ? m = i.$new(!0) : w && (g = i.$parent), u && ((b = function(e, t, n, r) {
1591                         var i;
1592                         if (A(e) || (r = n, n = t, t = e, e = void 0), D && (i = v), n || (n = D ? $.parent() : $), !r) return u(e, t, i, n, H);
1593                         var o = u.$$slots[r];
1594                         if (o) return o(e, t, i, n, H);
1595                         if (y(o)) throw Ki("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', r, te($))
1596                     }).$$boundTransclude = u, b.isSlotFilled = function(e) {
1597                         return !!u.$$slots[e]
1598                     }), E && (v = se($, k, b, E, m, i, C)), C && (W.$$addScopeInfo($, m, !0, !(x && (x === C || x === C.$$originalDirective))), W.$$addScopeClass($, !0), m.$$isolateBindings = C.$$isolateBindings, (M = ke(i, k, m, m.$$isolateBindings, C)).removeWatches && m.$on("$destroy", M.removeWatches));
1599                     for (var S in v) {
1600                         var N = E[S],
1601                             I = v[S],
1602                             R = N.$$bindings.bindToController;
1603                         if (O) {
1604                             I.bindingInfo = R ? ke(g, k, I.instance, R, N) : {};
1605                             var P = I();
1606                             P !== I.instance && (I.instance = P, $.data("$" + N.name + "Controller", P), I.bindingInfo.removeWatches && I.bindingInfo.removeWatches(), I.bindingInfo = ke(g, k, I.instance, R, N))
1607                         } else I.instance = I(), $.data("$" + N.name + "Controller", I.instance), I.bindingInfo = ke(g, k, I.instance, R, N)
1608                     }
1609                     for (o(E, function(e, t) {
1610                             var n = e.require;
1611                             e.bindToController && !Jr(n) && _(n) && d(v[t].instance, ae(t, n, $, v))
1612                         }), o(v, function(e) {
1613                             var t = e.instance;
1614                             if (T(t.$onChanges)) try {
1615                                 t.$onChanges(e.bindingInfo.initialChanges)
1616                             } catch (e) {
1617                                 r(e)
1618                             }
1619                             if (T(t.$onInit)) try {
1620                                 t.$onInit()
1621                             } catch (e) {
1622                                 r(e)
1623                             }
1624                             T(t.$doCheck) && (g.$watch(function() {
1625                                 t.$doCheck()
1626                             }), t.$doCheck()), T(t.$onDestroy) && g.$on("$destroy", function() {
1627                                 t.$onDestroy()
1628                             })
1629                         }), f = 0, h = c.length; f < h; f++) Ce(p = c[f], p.isolateScope ? m : i, $, k, p.require && ae(p.directiveName, p.require, $, v), b);
1630                     var H = i;
1631                     for (C && (C.template || null === C.templateUrl) && (H = m), e && e(H, a.childNodes, void 0, u), f = l.length - 1; f >= 0; f--) Ce(p = l[f], p.isolateScope ? m : i, $, k, p.require && ae(p.directiveName, p.require, $, v), b);
1632                     o(v, function(e) {
1633                         var t = e.instance;
1634                         T(t.$postLink) && t.$postLink()
1635                     })
1636                 }
1637                 u = u || {};
1638                 for (var p, m, g, v, b, $ = -Number.MAX_VALUE, w = u.newScopeDirective, E = u.controllerDirectives, C = u.newIsolateScopeDirective, x = u.templateDirective, k = u.nonTlbTranscludeDirective, M = !1, S = !1, D = u.hasElementTranscludeDirective, N = n.$$element = qr(t), I = s, R = i, P = !1, H = !1, j = 0, q = e.length; j < q; j++) {
1639                     var U = (p = e[j]).$$start,
1640                         V = p.$$end;
1641                     if (U && (N = ne(t, U, V)), g = void 0, $ > p.priority) break;
1642                     if ((b = p.scope) && (p.templateUrl || (_(b) ? (ge("new/isolated scope", C || w, p, N), C = p) : ge("new/isolated scope", C, p, N)), w = w || p), m = p.name, !P && (p.replace && (p.templateUrl || p.template) || p.transclude && !p.$$tlb)) {
1643                         for (var B, z = j + 1; B = e[z++];)
1644                             if (B.transclude && !B.$$tlb || B.replace && (B.templateUrl || B.template)) {
1645                                 H = !0;
1646                                 break
1647                             }
1648                         P = !0
1649                     }
1650                     if (!p.templateUrl && p.controller && (E = E || be(), ge("'" + m + "' controller", E[m], p, N), E[m] = p), b = p.transclude)
1651                         if (M = !0, p.$$tlb || (ge("transclusion", k, p, N), k = p), "element" === b) D = !0, $ = p.priority, g = N, N = n.$$element = qr(W.$$createComment(m, n[m])), t = N[0], we(a, Y(g), t), g[0].$$parentNode = g[0].parentNode, R = ie(H, g, i, $, I && I.name, {
1652                             nonTlbTranscludeDirective: k
1653                         });
1654                         else {
1655                             var K = be();
1656                             if (_(b)) {
1657                                 g = [];
1658                                 var Z = be(),
1659                                     X = be();
1660                                 o(b, function(e, t) {
1661                                     var n = "?" === e.charAt(0);
1662                                     e = n ? e.substring(1) : e, Z[e] = t, K[t] = null, X[t] = n
1663                                 }), o(N.contents(), function(e) {
1664                                     var t = Z[yt(F(e))];
1665                                     t ? (X[t] = !0, K[t] = K[t] || [], K[t].push(e)) : g.push(e)
1666                                 }), o(X, function(e, t) {
1667                                     if (!e) throw Ki("reqslot", "Required transclusion slot `{0}` was not filled.", t)
1668                                 });
1669                                 for (var Q in K) K[Q] && (K[Q] = ie(H, K[Q], i))
1670                             } else g = qr(Ie(t)).contents();
1671                             N.empty(), (R = ie(H, g, i, void 0, void 0, {
1672                                 needsNewScope: p.$$isolateScope || p.$$newScope
1673                             })).$$slots = K
1674                         }
1675                     if (p.template)
1676                         if (S = !0, ge("template", x, p, N), x = p, b = T(p.template) ? p.template(N, n) : p.template, b = He(b), p.replace) {
1677                             if (I = p, g = Me(b) ? [] : _t(ye(p.templateNamespace, ti(b))), t = g[0], 1 !== g.length || t.nodeType !== ui) throw Ki("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", m, "");
1678                             we(a, N, t);
1679                             var ee = {
1680                                     $attr: {}
1681                                 },
1682                                 oe = J(t, [], ee),
1683                                 le = e.splice(j + 1, e.length - (j + 1));
1684                             (C || w) && ce(oe, C, w), e = e.concat(oe).concat(le), de(n, ee), q = e.length
1685                         } else N.html(b);
1686                     if (p.templateUrl) S = !0, ge("template", x, p, N), x = p, p.replace && (I = p), h = pe(e.splice(j, e.length - j), N, n, a, M && R, c, l, {
1687                         controllerDirectives: E,
1688                         newScopeDirective: w !== p && w,
1689                         newIsolateScopeDirective: C,
1690                         templateDirective: x,
1691                         nonTlbTranscludeDirective: k
1692                     }), q = e.length;
1693                     else if (p.compile) try {
1694                         v = p.compile(N, n, R);
1695                         var ue = p.$$originalDirective || p;
1696                         T(v) ? f(null, G(ue, v), U, V) : v && f(G(ue, v.pre), G(ue, v.post), U, V)
1697                     } catch (e) {
1698                         r(e, te(N))
1699                     }
1700                     p.terminal && (h.terminal = !0, $ = Math.max($, p.priority))
1701                 }
1702                 return h.scope = w && !0 === w.scope, h.transcludeOnThisElement = M, h.templateOnThisElement = S, h.transclude = R, u.hasElementTranscludeDirective = D, h
1703             }
1704
1705             function ae(e, t, n, r) {
1706                 var i;
1707                 if (E(t)) {
1708                     var a = t.match(C),
1709                         s = t.substring(a[0].length),
1710                         c = a[1] || a[3],
1711                         l = "?" === a[2];
1712                     if ("^^" === c ? n = n.parent() : (i = r && r[s], i = i && i.instance), !i) {
1713                         var u = "$" + s + "Controller";
1714                         i = c ? n.inheritedData(u) : n.data(u)
1715                     }
1716                     if (!i && !l) throw Ki("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", s, e)
1717                 } else if (Jr(t)) {
1718                     i = [];
1719                     for (var d = 0, f = t.length; d < f; d++) i[d] = ae(e, t[d], n, r)
1720                 } else _(t) && (i = {}, o(t, function(t, o) {
1721                     i[o] = ae(e, t, n, r)
1722                 }));
1723                 return i || null
1724             }
1725
1726             function se(e, t, n, r, i, o, a) {
1727                 var s = be();
1728                 for (var l in r) {
1729                     var u = r[l],
1730                         d = {
1731                             $scope: u === a || u.$$isolateScope ? i : o,
1732                             $element: e,
1733                             $attrs: t,
1734                             $transclude: n
1735                         },
1736                         f = u.controller;
1737                     "@" === f && (f = t[u.name]);
1738                     var h = c(f, d, !0, u.controllerAs);
1739                     s[u.name] = h, e.data("$" + u.name + "Controller", h.instance)
1740                 }
1741                 return s
1742             }
1743
1744             function ce(e, t, n) {
1745                 for (var r = 0, i = e.length; r < i; r++) e[r] = p(e[r], {
1746                     $$isolateScope: t,
1747                     $$newScope: n
1748                 })
1749             }
1750
1751             function le(e, n, r, o, a, s, c) {
1752                 if (n === a) return null;
1753                 var l = null;
1754                 if (u.hasOwnProperty(n))
1755                     for (var d, h = t.get(n + f), m = 0, g = h.length; m < g; m++)
1756                         if (d = h[m], (y(o) || o > d.priority) && -1 !== d.restrict.indexOf(r)) {
1757                             if (s && (d = p(d, {
1758                                     $$start: s,
1759                                     $$end: c
1760                                 })), !d.$$bindings) {
1761                                 var v = d.$$bindings = i(d, d.name);
1762                                 _(v.isolateScope) && (d.$$isolateBindings = v.isolateScope)
1763                             }
1764                             e.push(d), l = d
1765                         }
1766                 return l
1767             }
1768
1769             function ue(e) {
1770                 if (u.hasOwnProperty(e))
1771                     for (var n = t.get(e + f), r = 0, i = n.length; r < i; r++)
1772                         if (n[r].multiElement) return !0;
1773                 return !1
1774             }
1775
1776             function de(e, t) {
1777                 var n = t.$attr,
1778                     r = e.$attr;
1779                 o(e, function(r, i) {
1780                     "$" !== i.charAt(0) && (t[i] && t[i] !== r && (r.length ? r += ("style" === i ? ";" : " ") + t[i] : r = t[i]), e.$set(i, r, !0, n[i]))
1781                 }), o(t, function(t, i) {
1782                     e.hasOwnProperty(i) || "$" === i.charAt(0) || (e[i] = t, "class" !== i && "style" !== i && (r[i] = n[i]))
1783                 })
1784             }
1785
1786             function pe(e, t, n, i, s, c, l, u) {
1787                 var d, f, h = [],
1788                     m = t[0],
1789                     g = e.shift(),
1790                     v = p(g, {
1791                         templateUrl: null,
1792                         transclude: null,
1793                         replace: null,
1794                         $$originalDirective: g
1795                     }),
1796                     b = T(g.templateUrl) ? g.templateUrl(t, n) : g.templateUrl,
1797                     y = g.templateNamespace;
1798                 return t.empty(), a(b).then(function(r) {
1799                         var a, p, $, w;
1800                         if (r = He(r), g.replace) {
1801                             if ($ = Me(r) ? [] : _t(ye(y, ti(r))), a = $[0], 1 !== $.length || a.nodeType !== ui) throw Ki("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", g.name, b);
1802                             p = {
1803                                 $attr: {}
1804                             }, we(i, t, a);
1805                             var E = J(a, [], p);
1806                             _(g.scope) && ce(E, !0), e = E.concat(e), de(n, p)
1807                         } else a = m, t.html(r);
1808                         for (e.unshift(v), d = oe(e, a, n, s, t, g, c, l, u), o(i, function(e, n) {
1809                                 e === a && (i[n] = t[0])
1810                             }), f = Z(t[0].childNodes, s); h.length;) {
1811                             var C = h.shift(),
1812                                 x = h.shift(),
1813                                 k = h.shift(),
1814                                 T = h.shift(),
1815                                 M = t[0];
1816                             if (!C.$$destroyed) {
1817                                 if (x !== m) {
1818                                     var S = x.className;
1819                                     u.hasElementTranscludeDirective && g.replace || (M = Ie(a)), we(k, qr(x), M), V(qr(M), S)
1820                                 }
1821                                 w = d.transcludeOnThisElement ? Q(C, d.transclude, T) : T, d(f, C, M, i, w)
1822                             }
1823                         }
1824                         h = null
1825                     }).catch(function(e) {
1826                         k(e) && r(e)
1827                     }),
1828                     function(e, t, n, r, i) {
1829                         var o = i;
1830                         t.$$destroyed || (h ? h.push(t, n, r, o) : (d.transcludeOnThisElement && (o = Q(t, d.transclude, i)), d(f, t, n, r, o)))
1831                     }
1832             }
1833
1834             function me(e, t) {
1835                 var n = t.priority - e.priority;
1836                 return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
1837             }
1838
1839             function ge(e, t, n, r) {
1840                 function i(e) {
1841                     return e ? " (module: " + e + ")" : ""
1842                 }
1843                 if (t) throw Ki("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", t.name, i(t.$$moduleName), n.name, i(n.$$moduleName), e, te(r))
1844             }
1845
1846             function ve(e, t) {
1847                 var r = n(t, !0);
1848                 r && e.push({
1849                     priority: 0,
1850                     compile: function(e) {
1851                         var t = e.parent(),
1852                             n = !!t.length;
1853                         return n && W.$$addBindingClass(t),
1854                             function(e, t) {
1855                                 var i = t.parent();
1856                                 n || W.$$addBindingClass(i), W.$$addBindingInfo(i, r.expressions), e.$watch(r, function(e) {
1857                                     t[0].nodeValue = e
1858                                 })
1859                             }
1860                     }
1861                 })
1862             }
1863
1864             function ye(t, n) {
1865                 switch (t = jr(t || "html")) {
1866                     case "svg":
1867                     case "math":
1868                         var r = e.document.createElement("div");
1869                         return r.innerHTML = "<" + t + ">" + n + "</" + t + ">", r.childNodes[0].childNodes;
1870                     default:
1871                         return n
1872                 }
1873             }
1874
1875             function $e(e, t) {
1876                 if ("srcdoc" === t) return v.HTML;
1877                 var n = F(e);
1878                 if ("src" === t || "ngSrc" === t) {
1879                     if (-1 === ["img", "video", "audio", "source", "track"].indexOf(n)) return v.RESOURCE_URL
1880                 } else if ("xlinkHref" === t || "form" === n && "action" === t || "link" === n && "href" === t) return v.RESOURCE_URL
1881             }
1882
1883             function _e(e, t, r, i, o) {
1884                 var a = $e(e, i),
1885                     s = !o,
1886                     c = w[i] || o,
1887                     l = n(r, s, a, c);
1888                 if (l) {
1889                     if ("multiple" === i && "select" === F(e)) throw Ki("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", te(e));
1890                     if (x.test(i)) throw Ki("nodomevents", "Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");
1891                     t.push({
1892                         priority: 100,
1893                         compile: function() {
1894                             return {
1895                                 pre: function(e, t, o) {
1896                                     var s = o.$$observers || (o.$$observers = be()),
1897                                         u = o[i];
1898                                     u !== r && (l = u && n(u, !0, a, c), r = u), l && (o[i] = l(e), (s[i] || (s[i] = [])).$$inter = !0, (o.$$observers && o.$$observers[i].$$scope || e).$watch(l, function(e, t) {
1899                                         "class" === i && e !== t ? o.$updateClass(e, t) : o.$set(i, e)
1900                                     }))
1901                                 }
1902                             }
1903                         }
1904                     })
1905                 }
1906             }
1907
1908             function we(t, n, r) {
1909                 var i, o, a = n[0],
1910                     s = n.length,
1911                     c = a.parentNode;
1912                 if (t)
1913                     for (i = 0, o = t.length; i < o; i++)
1914                         if (t[i] === a) {
1915                             t[i++] = r;
1916                             for (var l = i, u = l + s - 1, d = t.length; l < d; l++, u++) u < d ? t[l] = t[u] : delete t[l];
1917                             t.length -= s - 1, t.context === a && (t.context = r);
1918                             break
1919                         }
1920                 c && c.replaceChild(r, a);
1921                 var f = e.document.createDocumentFragment();
1922                 for (i = 0; i < s; i++) f.appendChild(n[i]);
1923                 for (qr.hasData(a) && (qr.data(r, qr.data(a)), qr(a).off("$destroy")), qr.cleanData(f.querySelectorAll("*")), i = 1; i < s; i++) delete n[i];
1924                 n[0] = r, n.length = 1
1925             }
1926
1927             function Ee(e, t) {
1928                 return d(function() {
1929                     return e.apply(null, arguments)
1930                 }, e, t)
1931             }
1932
1933             function Ce(e, t, n, i, o, a) {
1934                 try {
1935                     e(t, n, i, o, a)
1936                 } catch (e) {
1937                     r(e, te(n))
1938                 }
1939             }
1940
1941             function xe(e, t) {
1942                 if (D) throw Ki("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", e, t)
1943             }
1944
1945             function ke(e, t, r, i, a) {
1946                 function c(t, n, i) {
1947                     T(r.$onChanges) && !B(n, i) && (Te || (e.$$postDigest(j), Te = []), u || (u = {}, Te.push(l)), u[t] && (i = u[t].previousValue), u[t] = new bt(i, n))
1948                 }
1949
1950                 function l() {
1951                     r.$onChanges(u), u = void 0
1952                 }
1953                 var u, d = [],
1954                     f = {};
1955                 return o(i, function(i, o) {
1956                     var l, u, h, p, g, v = i.attrName,
1957                         b = i.optional;
1958                     switch (i.mode) {
1959                         case "@":
1960                             b || Hr.call(t, v) || (xe(v, a.name), r[o] = t[v] = void 0), g = t.$observe(v, function(e) {
1961                                 if (E(e) || I(e)) {
1962                                     var t = r[o];
1963                                     c(o, e, t), r[o] = e
1964                                 }
1965                             }), t.$$observers[v].$$scope = e, E(l = t[v]) ? r[o] = n(l)(e) : I(l) && (r[o] = l), f[o] = new bt(Zi, r[o]), d.push(g);
1966                             break;
1967                         case "=":
1968                             if (!Hr.call(t, v)) {
1969                                 if (b) break;
1970                                 xe(v, a.name), t[v] = void 0
1971                             }
1972                             if (b && !t[v]) break;
1973                             u = s(t[v]), p = u.literal ? z : B, h = u.assign || function() {
1974                                 throw l = r[o] = u(e), Ki("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", t[v], v, a.name)
1975                             }, l = r[o] = u(e);
1976                             var y = function(t) {
1977                                 return p(t, r[o]) || (p(t, l) ? h(e, t = r[o]) : r[o] = t), l = t
1978                             };
1979                             y.$stateful = !0, g = i.collection ? e.$watchCollection(t[v], y) : e.$watch(s(t[v], y), null, u.literal), d.push(g);
1980                             break;
1981                         case "<":
1982                             if (!Hr.call(t, v)) {
1983                                 if (b) break;
1984                                 xe(v, a.name), t[v] = void 0
1985                             }
1986                             if (b && !t[v]) break;
1987                             var $ = (u = s(t[v])).literal,
1988                                 _ = r[o] = u(e);
1989                             f[o] = new bt(Zi, r[o]), g = e.$watch(u, function(e, t) {
1990                                 if (t === e) {
1991                                     if (t === _ || $ && z(t, _)) return;
1992                                     t = _
1993                                 }
1994                                 c(o, e, t), r[o] = e
1995                             }, $), d.push(g);
1996                             break;
1997                         case "&":
1998                             if (b || Hr.call(t, v) || xe(v, a.name), (u = t.hasOwnProperty(v) ? s(t[v]) : m) === m && b) break;
1999                             r[o] = function(t) {
2000                                 return u(e, t)
2001                             }
2002                     }
2003                 }), {
2004                     initialChanges: f,
2005                     removeWatches: d.length && function() {
2006                         for (var e = 0, t = d.length; e < t; ++e) d[e]()
2007                     }
2008                 }
2009             }
2010             var Te, Se = /^\w/,
2011                 Ae = e.document.createElement("div"),
2012                 Oe = R,
2013                 De = P,
2014                 Ne = N;
2015             L.prototype = {
2016                 $normalize: yt,
2017                 $addClass: function(e) {
2018                     e && e.length > 0 && M.addClass(this.$$element, e)
2019                 },
2020                 $removeClass: function(e) {
2021                     e && e.length > 0 && M.removeClass(this.$$element, e)
2022                 },
2023                 $updateClass: function(e, t) {
2024                     var n = $t(e, t);
2025                     n && n.length && M.addClass(this.$$element, n);
2026                     var r = $t(t, e);
2027                     r && r.length && M.removeClass(this.$$element, r)
2028                 },
2029                 $set: function(e, t, n, i) {
2030                     var a, s = Ze(this.$$element[0], e),
2031                         c = Xe(e),
2032                         l = e;
2033                     if (s ? (this.$$element.prop(e, t), i = s) : c && (this[c] = t, l = c), this[e] = t, i ? this.$attr[e] = i : (i = this.$attr[e]) || (this.$attr[e] = i = fe(e, "-")), "a" === (a = F(this.$$element)) && ("href" === e || "xlinkHref" === e) || "img" === a && "src" === e) this[e] = t = H(t, "src" === e);
2034                     else if ("img" === a && "srcset" === e && $(t)) {
2035                         for (var u = "", d = ti(t), f = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/, h = /\s/.test(d) ? f : /(,)/, p = d.split(h), m = Math.floor(p.length / 2), g = 0; g < m; g++) {
2036                             var v = 2 * g;
2037                             u += H(ti(p[v]), !0), u += " " + ti(p[v + 1])
2038                         }
2039                         var b = ti(p[2 * g]).split(/\s/);
2040                         u += H(ti(b[0]), !0), 2 === b.length && (u += " " + ti(b[1])), this[e] = t = u
2041                     }!1 !== n && (null === t || y(t) ? this.$$element.removeAttr(i) : Se.test(i) ? this.$$element.attr(i, t) : q(this.$$element[0], i, t));
2042                     var _ = this.$$observers;
2043                     _ && o(_[l], function(e) {
2044                         try {
2045                             e(t)
2046                         } catch (e) {
2047                             r(e)
2048                         }
2049                     })
2050                 },
2051                 $observe: function(e, t) {
2052                     var n = this,
2053                         r = n.$$observers || (n.$$observers = be()),
2054                         i = r[e] || (r[e] = []);
2055                     return i.push(t), l.$evalAsync(function() {
2056                             i.$$inter || !n.hasOwnProperty(e) || y(n[e]) || t(n[e])
2057                         }),
2058                         function() {
2059                             U(i, t)
2060                         }
2061                 }
2062             };
2063             var Re = n.startSymbol(),
2064                 Pe = n.endSymbol(),
2065                 He = "{{" === Re && "}}" === Pe ? g : function(e) {
2066                     return e.replace(/\{\{/g, Re).replace(/}}/g, Pe)
2067                 },
2068                 je = /^ngAttr[A-Z]/,
2069                 Le = /^(.+)Start$/;
2070             return W.$$addBindingInfo = S ? function(e, t) {
2071                 var n = e.data("$binding") || [];
2072                 Jr(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
2073             } : m, W.$$addBindingClass = S ? function(e) {
2074                 V(e, "ng-binding")
2075             } : m, W.$$addScopeInfo = S ? function(e, t, n, r) {
2076                 var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
2077                 e.data(i, t)
2078             } : m, W.$$addScopeClass = S ? function(e, t) {
2079                 V(e, t ? "ng-isolate-scope" : "ng-scope")
2080             } : m, W.$$createComment = function(t, n) {
2081                 var r = "";
2082                 return S && (r = " " + (t || "") + ": ", n && (r += n + " ")), e.document.createComment(r)
2083             }, W
2084         }]
2085     }
2086
2087     function bt(e, t) {
2088         this.previousValue = e, this.currentValue = t
2089     }
2090
2091     function yt(e) {
2092         return e.replace(Xi, "").replace(Qi, ke)
2093     }
2094
2095     function $t(e, t) {
2096         var n = "",
2097             r = e.split(/\s+/),
2098             i = t.split(/\s+/);
2099         e: for (var o = 0; o < r.length; o++) {
2100             for (var a = r[o], s = 0; s < i.length; s++)
2101                 if (a === i[s]) continue e;
2102             n += (n.length > 0 ? " " : "") + a
2103         }
2104         return n
2105     }
2106
2107     function _t(e) {
2108         var t = (e = qr(e)).length;
2109         if (t <= 1) return e;
2110         for (; t--;) {
2111             var n = e[t];
2112             (n.nodeType === fi || n.nodeType === di && "" === n.nodeValue.trim()) && zr.call(e, t, 1)
2113         }
2114         return e
2115     }
2116
2117     function wt(e, t) {
2118         if (t && E(t)) return t;
2119         if (E(e)) {
2120             var n = eo.exec(e);
2121             if (n) return n[3]
2122         }
2123     }
2124
2125     function Et() {
2126         var e = {},
2127             t = !1;
2128         this.has = function(t) {
2129             return e.hasOwnProperty(t)
2130         }, this.register = function(t, n) {
2131             me(t, "controller"), _(t) ? d(e, t) : e[t] = n
2132         }, this.allowGlobals = function() {
2133             t = !0
2134         }, this.$get = ["$injector", "$window", function(n, i) {
2135             function o(e, t, n, i) {
2136                 if (!e || !_(e.$scope)) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, t);
2137                 e.$scope[t] = n
2138             }
2139             return function(r, a, s, c) {
2140                 var l, u, f, h;
2141                 if (s = !0 === s, c && E(c) && (h = c), E(r)) {
2142                     if (!(u = r.match(eo))) throw Ji("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", r);
2143                     if (f = u[1], h = h || u[3], !(r = e.hasOwnProperty(f) ? e[f] : ge(a.$scope, f, !0) || (t ? ge(i, f, !0) : void 0))) throw Ji("ctrlreg", "The controller with the name '{0}' is not registered.", f);
2144                     pe(r, f, !0)
2145                 }
2146                 if (s) {
2147                     var p = (Jr(r) ? r[r.length - 1] : r).prototype;
2148                     return l = Object.create(p || null), h && o(a, h, l, f || r.name), d(function() {
2149                         var e = n.invoke(r, l, a, f);
2150                         return e !== l && (_(e) || T(e)) && (l = e, h && o(a, h, l, f || r.name)), l
2151                     }, {
2152                         instance: l,
2153                         identifier: h
2154                     })
2155                 }
2156                 return l = n.instantiate(r, a, f), h && o(a, h, l, f || r.name), l
2157             }
2158         }]
2159     }
2160
2161     function Ct() {
2162         this.$get = ["$window", function(e) {
2163             return qr(e.document)
2164         }]
2165     }
2166
2167     function xt() {
2168         this.$get = ["$document", "$rootScope", function(e, t) {
2169             function n() {
2170                 i = r.hidden
2171             }
2172             var r = e[0],
2173                 i = r && r.hidden;
2174             return e.on("visibilitychange", n), t.$on("$destroy", function() {
2175                     e.off("visibilitychange", n)
2176                 }),
2177                 function() {
2178                     return i
2179                 }
2180         }]
2181     }
2182
2183     function kt() {
2184         this.$get = ["$log", function(e) {
2185             return function(t, n) {
2186                 e.error.apply(e, arguments)
2187             }
2188         }]
2189     }
2190
2191     function Tt(e) {
2192         return _(e) ? x(e) ? e.toISOString() : Z(e) : e
2193     }
2194
2195     function Mt() {
2196         this.$get = function() {
2197             return function(e) {
2198                 if (!e) return "";
2199                 var t = [];
2200                 return a(e, function(e, n) {
2201                     null === e || y(e) || T(e) || (Jr(e) ? o(e, function(e) {
2202                         t.push(ae(n) + "=" + ae(Tt(e)))
2203                     }) : t.push(ae(n) + "=" + ae(Tt(e))))
2204                 }), t.join("&")
2205             }
2206         }
2207     }
2208
2209     function St() {
2210         this.$get = function() {
2211             return function(e) {
2212                 function t(e, r, i) {
2213                     null === e || y(e) || (Jr(e) ? o(e, function(e, n) {
2214                         t(e, r + "[" + (_(e) ? n : "") + "]")
2215                     }) : _(e) && !x(e) ? a(e, function(e, n) {
2216                         t(e, r + (i ? "" : "[") + n + (i ? "" : "]"))
2217                     }) : n.push(ae(r) + "=" + ae(Tt(e))))
2218                 }
2219                 if (!e) return "";
2220                 var n = [];
2221                 return t(e, "", !0), n.join("&")
2222             }
2223         }
2224     }
2225
2226     function At(e, t) {
2227         if (E(e)) {
2228             var n = e.replace(ao, "").trim();
2229             if (n) {
2230                 var r = t("Content-Type"),
2231                     i = r && 0 === r.indexOf(no);
2232                 if (i || Ot(n)) try {
2233                     e = X(n)
2234                 } catch (t) {
2235                     if (!i) return e;
2236                     throw so("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', e, t)
2237                 }
2238             }
2239         }
2240         return e
2241     }
2242
2243     function Ot(e) {
2244         var t = e.match(io);
2245         return t && oo[t[0]].test(e)
2246     }
2247
2248     function Dt(e) {
2249         function t(e, t) {
2250             e && (r[e] = r[e] ? r[e] + ", " + t : t)
2251         }
2252         var n, r = be();
2253         return E(e) ? o(e.split("\n"), function(e) {
2254             n = e.indexOf(":"), t(jr(ti(e.substr(0, n))), ti(e.substr(n + 1)))
2255         }) : _(e) && o(e, function(e, n) {
2256             t(jr(n), ti(e))
2257         }), r
2258     }
2259
2260     function Nt(e) {
2261         var t;
2262         return function(n) {
2263             if (t || (t = Dt(e)), n) {
2264                 var r = t[jr(n)];
2265                 return void 0 === r && (r = null), r
2266             }
2267             return t
2268         }
2269     }
2270
2271     function It(e, t, n, r) {
2272         return T(r) ? r(e, t, n) : (o(r, function(r) {
2273             e = r(e, t, n)
2274         }), e)
2275     }
2276
2277     function Rt(e) {
2278         return 200 <= e && e < 300
2279     }
2280
2281     function Pt() {
2282         var e = this.defaults = {
2283                 transformResponse: [At],
2284                 transformRequest: [function(e) {
2285                     return !_(e) || O(e) || N(e) || D(e) ? e : Z(e)
2286                 }],
2287                 headers: {
2288                     common: {
2289                         Accept: "application/json, text/plain, */*"
2290                     },
2291                     post: _e(ro),
2292                     put: _e(ro),
2293                     patch: _e(ro)
2294                 },
2295                 xsrfCookieName: "XSRF-TOKEN",
2296                 xsrfHeaderName: "X-XSRF-TOKEN",
2297                 paramSerializer: "$httpParamSerializer",
2298                 jsonpCallbackParam: "callback"
2299             },
2300             t = !1;
2301         this.useApplyAsync = function(e) {
2302             return $(e) ? (t = !!e, this) : t
2303         };
2304         var n = this.interceptors = [];
2305         this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(i, a, s, c, l, u, f, h) {
2306             function p(t) {
2307                 function n(e, t) {
2308                     for (var n = 0, r = t.length; n < r;) {
2309                         var i = t[n++],
2310                             o = t[n++];
2311                         e = e.then(i, o)
2312                     }
2313                     return t.length = 0, e
2314                 }
2315
2316                 function a(e, t) {
2317                     var n, r = {};
2318                     return o(e, function(e, i) {
2319                         T(e) ? null != (n = e(t)) && (r[i] = n) : r[i] = e
2320                     }), r
2321                 }
2322
2323                 function s(e) {
2324                     var t = d({}, e);
2325                     return t.data = It(e.data, e.headers, e.status, c.transformResponse), Rt(e.status) ? t : u.reject(t)
2326                 }
2327                 if (!_(t)) throw r("$http")("badreq", "Http request configuration must be an object.  Received: {0}", t);
2328                 if (!E(h.valueOf(t.url))) throw r("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object.  Received: {0}", t.url);
2329                 var c = d({
2330                     method: "get",
2331                     transformRequest: e.transformRequest,
2332                     transformResponse: e.transformResponse,
2333                     paramSerializer: e.paramSerializer,
2334                     jsonpCallbackParam: e.jsonpCallbackParam
2335                 }, t);
2336                 c.headers = function(t) {
2337                     var n, r, i, o = e.headers,
2338                         s = d({}, t.headers);
2339                     o = d({}, o.common, o[jr(t.method)]);
2340                     e: for (n in o) {
2341                         r = jr(n);
2342                         for (i in s)
2343                             if (jr(i) === r) continue e;
2344                         s[n] = o[n]
2345                     }
2346                     return a(s, _e(t))
2347                 }(t), c.method = Lr(c.method), c.paramSerializer = E(c.paramSerializer) ? f.get(c.paramSerializer) : c.paramSerializer, i.$$incOutstandingRequestCount();
2348                 var l = [],
2349                     p = [],
2350                     v = u.resolve(c);
2351                 return o(C, function(e) {
2352                     (e.request || e.requestError) && l.unshift(e.request, e.requestError), (e.response || e.responseError) && p.push(e.response, e.responseError)
2353                 }), v = n(v, l), v = v.then(function(t) {
2354                     var n = t.headers,
2355                         r = It(t.data, Nt(n), void 0, t.transformRequest);
2356                     return y(r) && o(n, function(e, t) {
2357                         "content-type" === jr(t) && delete n[t]
2358                     }), y(t.withCredentials) && !y(e.withCredentials) && (t.withCredentials = e.withCredentials), g(t, r).then(s, s)
2359                 }), v = n(v, p), v = v.finally(function() {
2360                     i.$$completeOutstandingRequest(m)
2361                 })
2362             }
2363
2364             function g(n, r) {
2365                 function i(e) {
2366                     if (e) {
2367                         var n = {};
2368                         return o(e, function(e, r) {
2369                             n[r] = function(n) {
2370                                 function r() {
2371                                     e(n)
2372                                 }
2373                                 t ? l.$applyAsync(r) : l.$$phase ? r() : l.$apply(r)
2374                             }
2375                         }), n
2376                     }
2377                 }
2378
2379                 function c(e, t, r, i, o) {
2380                     (Rt(t = t >= -1 ? t : 0) ? C.resolve : C.reject)({
2381                         data: e,
2382                         status: t,
2383                         headers: Nt(r),
2384                         config: n,
2385                         statusText: i,
2386                         xhrStatus: o
2387                     })
2388                 }
2389
2390                 function d(e) {
2391                     c(e.data, e.status, _e(e.headers()), e.statusText, e.xhrStatus)
2392                 }
2393
2394                 function f() {
2395                     var e = p.pendingRequests.indexOf(n); - 1 !== e && p.pendingRequests.splice(e, 1)
2396                 }
2397                 var m, g, C = u.defer(),
2398                     x = C.promise,
2399                     k = n.headers,
2400                     T = "jsonp" === jr(n.method),
2401                     M = n.url;
2402                 if (T ? M = h.getTrustedResourceUrl(M) : E(M) || (M = h.valueOf(M)), M = v(M, n.paramSerializer(n.params)), T && (M = b(M, n.jsonpCallbackParam)), p.pendingRequests.push(n), x.then(f, f), !n.cache && !e.cache || !1 === n.cache || "GET" !== n.method && "JSONP" !== n.method || (m = _(n.cache) ? n.cache : _(e.cache) ? e.cache : w), m && ($(g = m.get(M)) ? R(g) ? g.then(d, d) : Jr(g) ? c(g[1], g[0], _e(g[2]), g[3], g[4]) : c(g, 200, {}, "OK", "complete") : m.put(M, x)), y(g)) {
2403                     var S = Fn(n.url) ? s()[n.xsrfCookieName || e.xsrfCookieName] : void 0;
2404                     S && (k[n.xsrfHeaderName || e.xsrfHeaderName] = S), a(n.method, M, r, function(e, n, r, i, o) {
2405                         function a() {
2406                             c(n, e, r, i, o)
2407                         }
2408                         m && (Rt(e) ? m.put(M, [e, n, Dt(r), i, o]) : m.remove(M)), t ? l.$applyAsync(a) : (a(), l.$$phase || l.$apply())
2409                     }, k, n.timeout, n.withCredentials, n.responseType, i(n.eventHandlers), i(n.uploadEventHandlers))
2410                 }
2411                 return x
2412             }
2413
2414             function v(e, t) {
2415                 return t.length > 0 && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
2416             }
2417
2418             function b(e, t) {
2419                 if (/[&?][^=]+=JSON_CALLBACK/.test(e)) throw so("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', e);
2420                 if (new RegExp("[&?]" + t + "=").test(e)) throw so("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', t, e);
2421                 return e += (-1 === e.indexOf("?") ? "?" : "&") + t + "=JSON_CALLBACK"
2422             }
2423             var w = c("$http");
2424             e.paramSerializer = E(e.paramSerializer) ? f.get(e.paramSerializer) : e.paramSerializer;
2425             var C = [];
2426             return o(n, function(e) {
2427                     C.unshift(E(e) ? f.get(e) : f.invoke(e))
2428                 }), p.pendingRequests = [],
2429                 function(e) {
2430                     o(arguments, function(e) {
2431                         p[e] = function(t, n) {
2432                             return p(d({}, n || {}, {
2433                                 method: e,
2434                                 url: t
2435                             }))
2436                         }
2437                     })
2438                 }("get", "delete", "head", "jsonp"),
2439                 function(e) {
2440                     o(arguments, function(e) {
2441                         p[e] = function(t, n, r) {
2442                             return p(d({}, r || {}, {
2443                                 method: e,
2444                                 url: t,
2445                                 data: n
2446                             }))
2447                         }
2448                     })
2449                 }("post", "put", "patch"), p.defaults = e, p
2450         }]
2451     }
2452
2453     function Ht() {
2454         this.$get = function() {
2455             return function() {
2456                 return new e.XMLHttpRequest
2457             }
2458         }
2459     }
2460
2461     function jt() {
2462         this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(e, t, n, r) {
2463             return Lt(e, r, e.defer, t, n[0])
2464         }]
2465     }
2466
2467     function Lt(e, t, n, r, i) {
2468         function a(e, t, n) {
2469             e = e.replace("JSON_CALLBACK", t);
2470             var o = i.createElement("script"),
2471                 a = null;
2472             return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
2473                 o.removeEventListener("load", a), o.removeEventListener("error", a), i.body.removeChild(o), o = null;
2474                 var s = -1,
2475                     c = "unknown";
2476                 e && ("load" !== e.type || r.wasCalled(t) || (e = {
2477                     type: "error"
2478                 }), c = e.type, s = "error" === e.type ? 404 : 200), n && n(s, c)
2479             }, o.addEventListener("load", a), o.addEventListener("error", a), i.body.appendChild(o), a
2480         }
2481         return function(i, s, c, l, u, d, f, h, p, m) {
2482             function g() {
2483                 _ && _(), w && w.abort()
2484             }
2485
2486             function v(e, t, r, i, o, a) {
2487                 $(E) && n.cancel(E), _ = w = null, e(t, r, i, o, a)
2488             }
2489             if (s = s || e.url(), "jsonp" === jr(i)) var b = r.createCallback(s),
2490                 _ = a(s, b, function(e, t) {
2491                     var n = 200 === e && r.getResponse(b);
2492                     v(l, e, n, "", t, "complete"), r.removeCallback(b)
2493                 });
2494             else {
2495                 var w = t(i, s);
2496                 w.open(i, s, !0), o(u, function(e, t) {
2497                     $(e) && w.setRequestHeader(t, e)
2498                 }), w.onload = function() {
2499                     var e = w.statusText || "",
2500                         t = "response" in w ? w.response : w.responseText,
2501                         n = 1223 === w.status ? 204 : w.status;
2502                     0 === n && (n = t ? 200 : "file" === Ln(s).protocol ? 404 : 0), v(l, n, t, w.getAllResponseHeaders(), e, "complete")
2503                 };
2504                 if (w.onerror = function() {
2505                         v(l, -1, null, null, "", "error")
2506                     }, w.onabort = function() {
2507                         v(l, -1, null, null, "", "abort")
2508                     }, w.ontimeout = function() {
2509                         v(l, -1, null, null, "", "timeout")
2510                     }, o(p, function(e, t) {
2511                         w.addEventListener(t, e)
2512                     }), o(m, function(e, t) {
2513                         w.upload.addEventListener(t, e)
2514                     }), f && (w.withCredentials = !0), h) try {
2515                     w.responseType = h
2516                 } catch (e) {
2517                     if ("json" !== h) throw e
2518                 }
2519                 w.send(y(c) ? null : c)
2520             }
2521             if (d > 0) var E = n(g, d);
2522             else R(d) && d.then(g)
2523         }
2524     }
2525
2526     function Ft() {
2527         var e = "{{",
2528             t = "}}";
2529         this.startSymbol = function(t) {
2530             return t ? (e = t, this) : e
2531         }, this.endSymbol = function(e) {
2532             return e ? (t = e, this) : t
2533         }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
2534             function o(e) {
2535                 return "\\\\\\" + e
2536             }
2537
2538             function a(n) {
2539                 return n.replace(f, e).replace(h, t)
2540             }
2541
2542             function s(e, t, n, r) {
2543                 var i = e.$watch(function(e) {
2544                     return i(), r(e)
2545                 }, t, n);
2546                 return i
2547             }
2548
2549             function c(o, c, f, h) {
2550                 if (!o.length || -1 === o.indexOf(e)) {
2551                     var p;
2552                     return c || ((p = v(a(o))).exp = o, p.expressions = [], p.$$watchDelegate = s), p
2553                 }
2554                 h = !!h;
2555                 for (var m, g, b, _ = 0, w = [], E = [], C = o.length, x = [], k = []; _ < C;) {
2556                     if (-1 === (m = o.indexOf(e, _)) || -1 === (g = o.indexOf(t, m + l))) {
2557                         _ !== C && x.push(a(o.substring(_)));
2558                         break
2559                     }
2560                     _ !== m && x.push(a(o.substring(_, m))), b = o.substring(m + l, g), w.push(b), E.push(n(b, function(e) {
2561                         try {
2562                             return e = S(e), h && !$(e) ? e : ye(e)
2563                         } catch (e) {
2564                             r(co.interr(o, e))
2565                         }
2566                     })), _ = g + u, k.push(x.length), x.push("")
2567                 }
2568                 if (f && x.length > 1 && co.throwNoconcat(o), !c || w.length) {
2569                     var M = function(e) {
2570                             for (var t = 0, n = w.length; t < n; t++) {
2571                                 if (h && y(e[t])) return;
2572                                 x[k[t]] = e[t]
2573                             }
2574                             return x.join("")
2575                         },
2576                         S = function(e) {
2577                             return f ? i.getTrusted(f, e) : i.valueOf(e)
2578                         };
2579                     return d(function(e) {
2580                         var t = 0,
2581                             n = w.length,
2582                             i = new Array(n);
2583                         try {
2584                             for (; t < n; t++) i[t] = E[t](e);
2585                             return M(i)
2586                         } catch (e) {
2587                             r(co.interr(o, e))
2588                         }
2589                     }, {
2590                         exp: o,
2591                         expressions: w,
2592                         $$watchDelegate: function(e, t) {
2593                             var n;
2594                             return e.$watchGroup(E, function(r, i) {
2595                                 var o = M(r);
2596                                 T(t) && t.call(this, o, r !== i ? n : o, e), n = o
2597                             })
2598                         }
2599                     })
2600                 }
2601             }
2602             var l = e.length,
2603                 u = t.length,
2604                 f = new RegExp(e.replace(/./g, o), "g"),
2605                 h = new RegExp(t.replace(/./g, o), "g");
2606             return c.startSymbol = function() {
2607                 return e
2608             }, c.endSymbol = function() {
2609                 return t
2610             }, c
2611         }]
2612     }
2613
2614     function qt() {
2615         this.$get = ["$rootScope", "$window", "$q", "$$q", "$browser", function(e, t, n, r, i) {
2616             function o(o, s, c, l) {
2617                 function u() {
2618                     d ? o.apply(null, f) : o(m)
2619                 }
2620                 var d = arguments.length > 4,
2621                     f = d ? Y(arguments, 4) : [],
2622                     h = t.setInterval,
2623                     p = t.clearInterval,
2624                     m = 0,
2625                     g = $(l) && !l,
2626                     v = (g ? r : n).defer(),
2627                     b = v.promise;
2628                 return c = $(c) ? c : 0, b.$$intervalId = h(function() {
2629                     g ? i.defer(u) : e.$evalAsync(u), v.notify(m++), c > 0 && m >= c && (v.resolve(m), p(b.$$intervalId), delete a[b.$$intervalId]), g || e.$apply()
2630                 }, s), a[b.$$intervalId] = v, b
2631             }
2632             var a = {};
2633             return o.cancel = function(e) {
2634                 return !!(e && e.$$intervalId in a) && (kn(a[e.$$intervalId].promise), a[e.$$intervalId].reject("canceled"), t.clearInterval(e.$$intervalId), delete a[e.$$intervalId], !0)
2635             }, o
2636         }]
2637     }
2638
2639     function Ut(e) {
2640         for (var t = e.split("/"), n = t.length; n--;) t[n] = oe(t[n]);
2641         return t.join("/")
2642     }
2643
2644     function Vt(e, t) {
2645         var n = Ln(e);
2646         t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = h(n.port) || fo[n.protocol] || null
2647     }
2648
2649     function Bt(e, t) {
2650         if (po.test(e)) throw ho("badpath", 'Invalid url "{0}".', e);
2651         var n = "/" !== e.charAt(0);
2652         n && (e = "/" + e);
2653         var r = Ln(e);
2654         t.$$path = decodeURIComponent(n && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname), t.$$search = re(r.search), t.$$hash = decodeURIComponent(r.hash), t.$$path && "/" !== t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
2655     }
2656
2657     function zt(e, t) {
2658         return e.slice(0, t.length) === t
2659     }
2660
2661     function Wt(e, t) {
2662         if (zt(t, e)) return t.substr(e.length)
2663     }
2664
2665     function Yt(e) {
2666         var t = e.indexOf("#");
2667         return -1 === t ? e : e.substr(0, t)
2668     }
2669
2670     function Gt(e) {
2671         return e.replace(/(#.+)|#$/, "$1")
2672     }
2673
2674     function Kt(e) {
2675         return e.substr(0, Yt(e).lastIndexOf("/") + 1)
2676     }
2677
2678     function Zt(e) {
2679         return e.substring(0, e.indexOf("/", e.indexOf("//") + 2))
2680     }
2681
2682     function Xt(e, t, n) {
2683         this.$$html5 = !0, n = n || "", Vt(e, this), this.$$parse = function(e) {
2684             var n = Wt(t, e);
2685             if (!E(n)) throw ho("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, t);
2686             Bt(n, this), this.$$path || (this.$$path = "/"), this.$$compose()
2687         }, this.$$compose = function() {
2688             var e = ie(this.$$search),
2689                 n = this.$$hash ? "#" + oe(this.$$hash) : "";
2690             this.$$url = Ut(this.$$path) + (e ? "?" + e : "") + n, this.$$absUrl = t + this.$$url.substr(1), this.$$urlUpdatedByLocation = !0
2691         }, this.$$parseLinkUrl = function(r, i) {
2692             if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2693             var o, a, s;
2694             return $(o = Wt(e, r)) ? (a = o, s = n && $(o = Wt(n, o)) ? t + (Wt("/", o) || o) : e + a) : $(o = Wt(t, r)) ? s = t + o : t === r + "/" && (s = t), s && this.$$parse(s), !!s
2695         }
2696     }
2697
2698     function Qt(e, t, n) {
2699         Vt(e, this), this.$$parse = function(r) {
2700             var i, o = Wt(e, r) || Wt(t, r);
2701             y(o) || "#" !== o.charAt(0) ? this.$$html5 ? i = o : (i = "", y(o) && (e = r, this.replace())) : y(i = Wt(n, o)) && (i = o), Bt(i, this), this.$$path = function(e, t, n) {
2702                 var r, i = /^\/[A-Z]:(\/.*)/;
2703                 return zt(t, n) && (t = t.replace(n, "")), i.exec(t) ? e : (r = i.exec(e)) ? r[1] : e
2704             }(this.$$path, i, e), this.$$compose()
2705         }, this.$$compose = function() {
2706             var t = ie(this.$$search),
2707                 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2708             this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + (this.$$url ? n + this.$$url : ""), this.$$urlUpdatedByLocation = !0
2709         }, this.$$parseLinkUrl = function(t, n) {
2710             return Yt(e) === Yt(t) && (this.$$parse(t), !0)
2711         }
2712     }
2713
2714     function Jt(e, t, n) {
2715         this.$$html5 = !0, Qt.apply(this, arguments), this.$$parseLinkUrl = function(r, i) {
2716             if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2717             var o, a;
2718             return e === Yt(r) ? o = r : (a = Wt(t, r)) ? o = e + n + a : t === r + "/" && (o = t), o && this.$$parse(o), !!o
2719         }, this.$$compose = function() {
2720             var t = ie(this.$$search),
2721                 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2722             this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + n + this.$$url, this.$$urlUpdatedByLocation = !0
2723         }
2724     }
2725
2726     function en(e) {
2727         return function() {
2728             return this[e]
2729         }
2730     }
2731
2732     function tn(e, t) {
2733         return function(n) {
2734             return y(n) ? this[e] : (this[e] = t(n), this.$$compose(), this)
2735         }
2736     }
2737
2738     function nn() {
2739         var e = "!",
2740             t = {
2741                 enabled: !1,
2742                 requireBase: !0,
2743                 rewriteLinks: !0
2744             };
2745         this.hashPrefix = function(t) {
2746             return $(t) ? (e = t, this) : e
2747         }, this.html5Mode = function(e) {
2748             return I(e) ? (t.enabled = e, this) : _(e) ? (I(e.enabled) && (t.enabled = e.enabled), I(e.requireBase) && (t.requireBase = e.requireBase), (I(e.rewriteLinks) || E(e.rewriteLinks)) && (t.rewriteLinks = e.rewriteLinks), this) : t
2749         }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, r, i, o, a) {
2750             function s(e, t, n) {
2751                 var i = l.url(),
2752                     o = l.$$state;
2753                 try {
2754                     r.url(e, t, n), l.$$state = r.state()
2755                 } catch (e) {
2756                     throw l.url(i), l.$$state = o, e
2757                 }
2758             }
2759
2760             function c(e, t) {
2761                 n.$broadcast("$locationChangeSuccess", l.absUrl(), e, l.$$state, t)
2762             }
2763             var l, u, d, f = r.baseHref(),
2764                 h = r.url();
2765             if (t.enabled) {
2766                 if (!f && t.requireBase) throw ho("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
2767                 d = Zt(h) + (f || "/"), u = i.history ? Xt : Jt
2768             } else d = Yt(h), u = Qt;
2769             var p = Kt(d);
2770             (l = new u(d, p, "#" + e)).$$parseLinkUrl(h, h), l.$$state = r.state();
2771             var m = /^\s*(javascript|mailto):/i;
2772             o.on("click", function(e) {
2773                 var i = t.rewriteLinks;
2774                 if (i && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 !== e.which && 2 !== e.button) {
2775                     for (var s = qr(e.target);
2776                         "a" !== F(s[0]);)
2777                         if (s[0] === o[0] || !(s = s.parent())[0]) return;
2778                     if (!E(i) || !y(s.attr(i))) {
2779                         var c = s.prop("href"),
2780                             u = s.attr("href") || s.attr("xlink:href");
2781                         _(c) && "[object SVGAnimatedString]" === c.toString() && (c = Ln(c.animVal).href), m.test(c) || !c || s.attr("target") || e.isDefaultPrevented() || l.$$parseLinkUrl(c, u) && (e.preventDefault(), l.absUrl() !== r.url() && (n.$apply(), a.angular["ff-684208-preventDefault"] = !0))
2782                     }
2783                 }
2784             }), Gt(l.absUrl()) !== Gt(h) && r.url(l.absUrl(), !0);
2785             var g = !0;
2786             return r.onUrlChange(function(e, t) {
2787                 zt(e, p) ? (n.$evalAsync(function() {
2788                     var r, i = l.absUrl(),
2789                         o = l.$$state;
2790                     e = Gt(e), l.$$parse(e), l.$$state = t, r = n.$broadcast("$locationChangeStart", e, i, t, o).defaultPrevented, l.absUrl() === e && (r ? (l.$$parse(i), l.$$state = o, s(i, !1, o)) : (g = !1, c(i, o)))
2791                 }), n.$$phase || n.$digest()) : a.location.href = e
2792             }), n.$watch(function() {
2793                 if (g || l.$$urlUpdatedByLocation) {
2794                     l.$$urlUpdatedByLocation = !1;
2795                     var e = Gt(r.url()),
2796                         t = Gt(l.absUrl()),
2797                         o = r.state(),
2798                         a = l.$$replace,
2799                         u = e !== t || l.$$html5 && i.history && o !== l.$$state;
2800                     (g || u) && (g = !1, n.$evalAsync(function() {
2801                         var t = l.absUrl(),
2802                             r = n.$broadcast("$locationChangeStart", t, e, l.$$state, o).defaultPrevented;
2803                         l.absUrl() === t && (r ? (l.$$parse(e), l.$$state = o) : (u && s(t, a, o === l.$$state ? null : l.$$state), c(e, o)))
2804                     }))
2805                 }
2806                 l.$$replace = !1
2807             }), l
2808         }]
2809     }
2810
2811     function rn() {
2812         var e = !0,
2813             t = this;
2814         this.debugEnabled = function(t) {
2815             return $(t) ? (e = t, this) : e
2816         }, this.$get = ["$window", function(n) {
2817             function r(e) {
2818                 return k(e) && (e.stack && a ? e = e.message && -1 === e.stack.indexOf(e.message) ? "Error: " + e.message + "\n" + e.stack : e.stack : e.sourceURL && (e = e.message + "\n" + e.sourceURL + ":" + e.line)), e
2819             }
2820
2821             function i(e) {
2822                 var t = n.console || {},
2823                     i = t[e] || t.log || m;
2824                 return function() {
2825                     var e = [];
2826                     return o(arguments, function(t) {
2827                         e.push(r(t))
2828                     }), Function.prototype.apply.call(i, t, e)
2829                 }
2830             }
2831             var a = Fr || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
2832             return {
2833                 log: i("log"),
2834                 info: i("info"),
2835                 warn: i("warn"),
2836                 error: i("error"),
2837                 debug: function() {
2838                     var n = i("debug");
2839                     return function() {
2840                         e && n.apply(t, arguments)
2841                     }
2842                 }()
2843             }
2844         }]
2845     }
2846
2847     function on(e) {
2848         return e + ""
2849     }
2850
2851     function an(e, t) {
2852         return void 0 !== e ? e : t
2853     }
2854
2855     function sn(e, t) {
2856         return void 0 === e ? t : void 0 === t ? e : e + t
2857     }
2858
2859     function cn(e, t) {
2860         return !e(t).$stateful
2861     }
2862
2863     function ln(e, t) {
2864         switch (e.type) {
2865             case _o.MemberExpression:
2866                 if (e.computed) return !1;
2867                 break;
2868             case _o.UnaryExpression:
2869                 return wo;
2870             case _o.BinaryExpression:
2871                 return "+" !== e.operator && wo;
2872             case _o.CallExpression:
2873                 return !1
2874         }
2875         return void 0 === t ? Eo : t
2876     }
2877
2878     function un(e, t, n) {
2879         var r, i, a, s = e.isPure = ln(e, n);
2880         switch (e.type) {
2881             case _o.Program:
2882                 r = !0, o(e.body, function(e) {
2883                     un(e.expression, t, s), r = r && e.expression.constant
2884                 }), e.constant = r;
2885                 break;
2886             case _o.Literal:
2887                 e.constant = !0, e.toWatch = [];
2888                 break;
2889             case _o.UnaryExpression:
2890                 un(e.argument, t, s), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
2891                 break;
2892             case _o.BinaryExpression:
2893                 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
2894                 break;
2895             case _o.LogicalExpression:
2896                 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
2897                 break;
2898             case _o.ConditionalExpression:
2899                 un(e.test, t, s), un(e.alternate, t, s), un(e.consequent, t, s), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
2900                 break;
2901             case _o.Identifier:
2902                 e.constant = !1, e.toWatch = [e];
2903                 break;
2904             case _o.MemberExpression:
2905                 un(e.object, t, s), e.computed && un(e.property, t, s), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = e.constant ? [] : [e];
2906                 break;
2907             case _o.CallExpression:
2908                 a = !!e.filter && cn(t, e.callee.name), r = a, i = [], o(e.arguments, function(e) {
2909                     un(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2910                 }), e.constant = r, e.toWatch = a ? i : [e];
2911                 break;
2912             case _o.AssignmentExpression:
2913                 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
2914                 break;
2915             case _o.ArrayExpression:
2916                 r = !0, i = [], o(e.elements, function(e) {
2917                     un(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2918                 }), e.constant = r, e.toWatch = i;
2919                 break;
2920             case _o.ObjectExpression:
2921                 r = !0, i = [], o(e.properties, function(e) {
2922                     un(e.value, t, s), r = r && e.value.constant, i.push.apply(i, e.value.toWatch), e.computed && (un(e.key, t, !1), r = r && e.key.constant, i.push.apply(i, e.key.toWatch))
2923                 }), e.constant = r, e.toWatch = i;
2924                 break;
2925             case _o.ThisExpression:
2926             case _o.LocalsExpression:
2927                 e.constant = !1, e.toWatch = []
2928         }
2929     }
2930
2931     function dn(e) {
2932         if (1 === e.length) {
2933             var t = e[0].expression,
2934                 n = t.toWatch;
2935             return 1 !== n.length ? n : n[0] !== t ? n : void 0
2936         }
2937     }
2938
2939     function fn(e) {
2940         return e.type === _o.Identifier || e.type === _o.MemberExpression
2941     }
2942
2943     function hn(e) {
2944         if (1 === e.body.length && fn(e.body[0].expression)) return {
2945             type: _o.AssignmentExpression,
2946             left: e.body[0].expression,
2947             right: {
2948                 type: _o.NGValueParameter
2949             },
2950             operator: "="
2951         }
2952     }
2953
2954     function pn(e) {
2955         return 0 === e.body.length || 1 === e.body.length && (e.body[0].expression.type === _o.Literal || e.body[0].expression.type === _o.ArrayExpression || e.body[0].expression.type === _o.ObjectExpression)
2956     }
2957
2958     function mn(e) {
2959         return e.constant
2960     }
2961
2962     function gn(e) {
2963         this.$filter = e
2964     }
2965
2966     function vn(e) {
2967         this.$filter = e
2968     }
2969
2970     function bn(e, t, n) {
2971         this.ast = new _o(e, n), this.astCompiler = n.csp ? new vn(t) : new gn(t)
2972     }
2973
2974     function yn(e) {
2975         return T(e.valueOf) ? e.valueOf() : vo.call(e)
2976     }
2977
2978     function $n() {
2979         var e, t, n = be(),
2980             r = {
2981                 true: !0,
2982                 false: !1,
2983                 null: null,
2984                 undefined: void 0
2985             };
2986         this.addLiteral = function(e, t) {
2987             r[e] = t
2988         }, this.setIdentifierFns = function(n, r) {
2989             return e = n, t = r, this
2990         }, this.$get = ["$filter", function(i) {
2991             function a(e, t, n) {
2992                 return null == e || null == t ? e === t : !("object" == typeof e && "object" == typeof(e = yn(e)) && !n) && (e === t || e !== e && t !== t)
2993             }
2994
2995             function s(e, t, n, r, i) {
2996                 var o, s = r.inputs;
2997                 if (1 === s.length) {
2998                     var c = a;
2999                     return s = s[0], e.$watch(function(e) {
3000                         var t = s(e);
3001                         return a(t, c, s.isPure) || (o = r(e, void 0, void 0, [t]), c = t && yn(t)), o
3002                     }, t, n, i)
3003                 }
3004                 for (var l = [], u = [], d = 0, f = s.length; d < f; d++) l[d] = a, u[d] = null;
3005                 return e.$watch(function(e) {
3006                     for (var t = !1, n = 0, i = s.length; n < i; n++) {
3007                         var c = s[n](e);
3008                         (t || (t = !a(c, l[n], s[n].isPure))) && (u[n] = c, l[n] = c && yn(c))
3009                     }
3010                     return t && (o = r(e, void 0, void 0, u)), o
3011                 }, t, n, i)
3012             }
3013
3014             function c(e, t, n, r, i) {
3015                 function o(e, n, r) {
3016                     c = e, T(t) && t(e, n, r), $(e) && r.$$postDigest(function() {
3017                         $(c) && a()
3018                     })
3019                 }
3020                 var a, c;
3021                 return a = r.inputs ? s(e, o, n, r, i) : e.$watch(function(e) {
3022                     return r(e)
3023                 }, o, n)
3024             }
3025
3026             function l(e, t, n, r) {
3027                 function i(e) {
3028                     var t = !0;
3029                     return o(e, function(e) {
3030                         $(e) || (t = !1)
3031                     }), t
3032                 }
3033                 var a, s;
3034                 return a = e.$watch(function(e) {
3035                     return r(e)
3036                 }, function(e, n, r) {
3037                     s = e, T(t) && t(e, n, r), i(e) && r.$$postDigest(function() {
3038                         i(s) && a()
3039                     })
3040                 }, n)
3041             }
3042
3043             function u(e, t, n, r) {
3044                 var i = e.$watch(function(e) {
3045                     return i(), r(e)
3046                 }, t, n);
3047                 return i
3048             }
3049
3050             function d(e, t) {
3051                 if (!t) return e;
3052                 var n = e.$$watchDelegate,
3053                     r = !1,
3054                     i = n !== l && n !== c ? function(n, i, o, a) {
3055                         var s = r && a ? a[0] : e(n, i, o, a);
3056                         return t(s, n, i)
3057                     } : function(n, r, i, o) {
3058                         var a = e(n, r, i, o),
3059                             s = t(a, n, r);
3060                         return $(a) ? s : a
3061                     };
3062                 return r = !e.inputs, n && n !== s ? (i.$$watchDelegate = n, i.inputs = e.inputs) : t.$stateful || (i.$$watchDelegate = s, i.inputs = e.inputs ? e.inputs : [e]), i.inputs && (i.inputs = i.inputs.map(function(e) {
3063                     return e.isPure === Eo ? function(t) {
3064                         return e(t)
3065                     } : e
3066                 })), i
3067             }
3068             var f = {
3069                 csp: ri().noUnsafeEval,
3070                 literals: V(r),
3071                 isIdentifierStart: T(e) && e,
3072                 isIdentifierContinue: T(t) && t
3073             };
3074             return function(e, t) {
3075                 var r, o, a;
3076                 switch (typeof e) {
3077                     case "string":
3078                         return e = e.trim(), a = e, (r = n[a]) || (":" === e.charAt(0) && ":" === e.charAt(1) && (o = !0, e = e.substring(2)), (r = new bn(new $o(f), i, f).parse(e)).constant ? r.$$watchDelegate = u : o ? r.$$watchDelegate = r.literal ? l : c : r.inputs && (r.$$watchDelegate = s), n[a] = r), d(r, t);
3079                     case "function":
3080                         return d(e, t);
3081                     default:
3082                         return d(m, t)
3083                 }
3084             }
3085         }]
3086     }
3087
3088     function _n() {
3089         var e = !0;
3090         this.$get = ["$rootScope", "$exceptionHandler", function(t, n) {
3091             return En(function(e) {
3092                 t.$evalAsync(e)
3093             }, n, e)
3094         }], this.errorOnUnhandledRejections = function(t) {
3095             return $(t) ? (e = t, this) : e
3096         }
3097     }
3098
3099     function wn() {
3100         var e = !0;
3101         this.$get = ["$browser", "$exceptionHandler", function(t, n) {
3102             return En(function(e) {
3103                 t.defer(e)
3104             }, n, e)
3105         }], this.errorOnUnhandledRejections = function(t) {
3106             return $(t) ? (e = t, this) : e
3107         }
3108     }
3109
3110     function En(e, t, n) {
3111         function i() {
3112             return new a
3113         }
3114
3115         function a() {
3116             var e = this.promise = new s;
3117             this.resolve = function(t) {
3118                 f(e, t)
3119             }, this.reject = function(t) {
3120                 p(e, t)
3121             }, this.notify = function(t) {
3122                 g(e, t)
3123             }
3124         }
3125
3126         function s() {
3127             this.$$state = {
3128                 status: 0
3129             }
3130         }
3131
3132         function c(t) {
3133             var r, i, o;
3134             o = t.pending, t.processScheduled = !1, t.pending = void 0;
3135             try {
3136                 for (var a = 0, s = o.length; a < s; ++a) {
3137                     xn(t), i = o[a][0], r = o[a][t.status];
3138                     try {
3139                         T(r) ? f(i, r(t.value)) : 1 === t.status ? f(i, t.value) : p(i, t.value)
3140                     } catch (e) {
3141                         p(i, e)
3142                     }
3143                 }
3144             } finally {
3145                 --C, n && 0 === C && e(l)
3146             }
3147         }
3148
3149         function l() {
3150             for (; !C && x.length;) {
3151                 var e = x.shift();
3152                 if (!Cn(e)) {
3153                     xn(e);
3154                     var n = "Possibly unhandled rejection: " + Ee(e.value);
3155                     k(e.value) ? t(e.value, n) : t(n)
3156                 }
3157             }
3158         }
3159
3160         function u(t) {
3161             !n || t.pending || 2 !== t.status || Cn(t) || (0 === C && 0 === x.length && e(l), x.push(t)), !t.processScheduled && t.pending && (t.processScheduled = !0, ++C, e(function() {
3162                 c(t)
3163             }))
3164         }
3165
3166         function f(e, t) {
3167             e.$$state.status || (t === e ? m(e, E("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : h(e, t))
3168         }
3169
3170         function h(e, t) {
3171             function n(t) {
3172                 i || (i = !0, m(e, t))
3173             }
3174             var r, i = !1;
3175             try {
3176                 (_(t) || T(t)) && (r = t.then), T(r) ? (e.$$state.status = -1, r.call(t, function(t) {
3177                     i || (i = !0, h(e, t))
3178                 }, n, function(t) {
3179                     g(e, t)
3180                 })) : (e.$$state.value = t, e.$$state.status = 1, u(e.$$state))
3181             } catch (e) {
3182                 n(e)
3183             }
3184         }
3185
3186         function p(e, t) {
3187             e.$$state.status || m(e, t)
3188         }
3189
3190         function m(e, t) {
3191             e.$$state.value = t, e.$$state.status = 2, u(e.$$state)
3192         }
3193
3194         function g(n, r) {
3195             var i = n.$$state.pending;
3196             n.$$state.status <= 0 && i && i.length && e(function() {
3197                 for (var e, n, o = 0, a = i.length; o < a; o++) {
3198                     n = i[o][0], e = i[o][3];
3199                     try {
3200                         g(n, T(e) ? e(r) : r)
3201                     } catch (e) {
3202                         t(e)
3203                     }
3204                 }
3205             })
3206         }
3207
3208         function v(e) {
3209             var t = new s;
3210             return p(t, e), t
3211         }
3212
3213         function b(e, t, n) {
3214             var r = null;
3215             try {
3216                 T(n) && (r = n())
3217             } catch (e) {
3218                 return v(e)
3219             }
3220             return R(r) ? r.then(function() {
3221                 return t(e)
3222             }, v) : t(e)
3223         }
3224
3225         function $(e, t, n, r) {
3226             var i = new s;
3227             return f(i, e), i.then(t, n, r)
3228         }
3229
3230         function w(e) {
3231             if (!T(e)) throw E("norslvr", "Expected resolverFn, got '{0}'", e);
3232             var t = new s;
3233             return e(function(e) {
3234                 f(t, e)
3235             }, function(e) {
3236                 p(t, e)
3237             }), t
3238         }
3239         var E = r("$q", TypeError),
3240             C = 0,
3241             x = [];
3242         d(s.prototype, {
3243             then: function(e, t, n) {
3244                 if (y(e) && y(t) && y(n)) return this;
3245                 var r = new s;
3246                 return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), this.$$state.status > 0 && u(this.$$state), r
3247             },
3248             catch: function(e) {
3249                 return this.then(null, e)
3250             },
3251             finally: function(e, t) {
3252                 return this.then(function(t) {
3253                     return b(t, M, e)
3254                 }, function(t) {
3255                     return b(t, v, e)
3256                 }, t)
3257             }
3258         });
3259         var M = $;
3260         return w.prototype = s.prototype, w.defer = i, w.reject = v, w.when = $, w.resolve = M, w.all = function(e) {
3261             var t = new s,
3262                 n = 0,
3263                 r = Jr(e) ? [] : {};
3264             return o(e, function(e, i) {
3265                 n++, $(e).then(function(e) {
3266                     r[i] = e, --n || f(t, r)
3267                 }, function(e) {
3268                     p(t, e)
3269                 })
3270             }), 0 === n && f(t, r), t
3271         }, w.race = function(e) {
3272             var t = i();
3273             return o(e, function(e) {
3274                 $(e).then(t.resolve, t.reject)
3275             }), t.promise
3276         }, w
3277     }
3278
3279     function Cn(e) {
3280         return !!e.pur
3281     }
3282
3283     function xn(e) {
3284         e.pur = !0
3285     }
3286
3287     function kn(e) {
3288         xn(e.$$state)
3289     }
3290
3291     function Tn() {
3292         this.$get = ["$window", "$timeout", function(e, t) {
3293             var n = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
3294                 r = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
3295                 i = !!n,
3296                 o = i ? function(e) {
3297                     var t = n(e);
3298                     return function() {
3299                         r(t)
3300                     }
3301                 } : function(e) {
3302                     var n = t(e, 16.66, !1);
3303                     return function() {
3304                         t.cancel(n)
3305                     }
3306                 };
3307             return o.supported = i, o
3308         }]
3309     }
3310
3311     function Mn() {
3312         function e(e) {
3313             function t() {
3314                 this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = c(), this.$$ChildScope = null
3315             }
3316             return t.prototype = e, t
3317         }
3318         var t = 10,
3319             n = r("$rootScope"),
3320             a = null,
3321             s = null;
3322         this.digestTtl = function(e) {
3323             return arguments.length && (t = e), t
3324         }, this.$get = ["$exceptionHandler", "$parse", "$browser", function(r, l, u) {
3325             function d(e) {
3326                 e.currentScope.$$destroyed = !0
3327             }
3328
3329             function f(e) {
3330                 9 === Fr && (e.$$childHead && f(e.$$childHead), e.$$nextSibling && f(e.$$nextSibling)), e.$parent = e.$$nextSibling = e.$$prevSibling = e.$$childHead = e.$$childTail = e.$root = e.$$watchers = null
3331             }
3332
3333             function h() {
3334                 this.$id = c(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, this.$root = this, this.$$destroyed = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$$isolateBindings = null
3335             }
3336
3337             function p(e) {
3338                 if (C.$$phase) throw n("inprog", "{0} already in progress", C.$$phase);
3339                 C.$$phase = e
3340             }
3341
3342             function g() {
3343                 C.$$phase = null
3344             }
3345
3346             function v(e, t) {
3347                 do {
3348                     e.$$watchersCount += t
3349                 } while (e = e.$parent)
3350             }
3351
3352             function b(e, t, n) {
3353                 do {
3354                     e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n]
3355                 } while (e = e.$parent)
3356             }
3357
3358             function $() {}
3359
3360             function w() {
3361                 for (; M.length;) try {
3362                     M.shift()()
3363                 } catch (e) {
3364                     r(e)
3365                 }
3366                 s = null
3367             }
3368
3369             function E() {
3370                 null === s && (s = u.defer(function() {
3371                     C.$apply(w)
3372                 }))
3373             }
3374             h.prototype = {
3375                 constructor: h,
3376                 $new: function(t, n) {
3377                     var r;
3378                     return n = n || this, t ? (r = new h).$root = this.$root : (this.$$ChildScope || (this.$$ChildScope = e(this)), r = new this.$$ChildScope), r.$parent = n, r.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = r, n.$$childTail = r) : n.$$childHead = n.$$childTail = r, (t || n !== this) && r.$on("$destroy", d), r
3379                 },
3380                 $watch: function(e, t, n, r) {
3381                     var i = l(e);
3382                     if (i.$$watchDelegate) return i.$$watchDelegate(this, t, n, i, e);
3383                     var o = this,
3384                         s = o.$$watchers,
3385                         c = {
3386                             fn: t,
3387                             last: $,
3388                             get: i,
3389                             exp: r || e,
3390                             eq: !!n
3391                         };
3392                     return a = null, T(t) || (c.fn = m), s || ((s = o.$$watchers = []).$$digestWatchIndex = -1), s.unshift(c), s.$$digestWatchIndex++, v(this, 1),
3393                         function() {
3394                             var e = U(s, c);
3395                             e >= 0 && (v(o, -1), e < s.$$digestWatchIndex && s.$$digestWatchIndex--), a = null
3396                         }
3397                 },
3398                 $watchGroup: function(e, t) {
3399                     function n() {
3400                         c = !1, l ? (l = !1, t(i, i, s)) : t(i, r, s)
3401                     }
3402                     var r = new Array(e.length),
3403                         i = new Array(e.length),
3404                         a = [],
3405                         s = this,
3406                         c = !1,
3407                         l = !0;
3408                     if (!e.length) {
3409                         var u = !0;
3410                         return s.$evalAsync(function() {
3411                                 u && t(i, i, s)
3412                             }),
3413                             function() {
3414                                 u = !1
3415                             }
3416                     }
3417                     return 1 === e.length ? this.$watch(e[0], function(e, n, o) {
3418                         i[0] = e, r[0] = n, t(i, e === n ? i : r, o)
3419                     }) : (o(e, function(e, t) {
3420                         var o = s.$watch(e, function(e, o) {
3421                             i[t] = e, r[t] = o, c || (c = !0, s.$evalAsync(n))
3422                         });
3423                         a.push(o)
3424                     }), function() {
3425                         for (; a.length;) a.shift()()
3426                     })
3427                 },
3428                 $watchCollection: function(e, t) {
3429                     function n(e) {
3430                         var t, n, a, s;
3431                         if (!y(r = e)) {
3432                             if (_(r))
3433                                 if (i(r)) {
3434                                     o !== f && (m = (o = f).length = 0, u++), t = r.length, m !== t && (u++, o.length = m = t);
3435                                     for (var c = 0; c < t; c++) s = o[c], a = r[c], s !== s && a !== a || s === a || (u++, o[c] = a)
3436                                 } else {
3437                                     o !== h && (o = h = {}, m = 0, u++), t = 0;
3438                                     for (n in r) Hr.call(r, n) && (t++, a = r[n], s = o[n], n in o ? s !== s && a !== a || s === a || (u++, o[n] = a) : (m++, o[n] = a, u++));
3439                                     if (m > t) {
3440                                         u++;
3441                                         for (n in o) Hr.call(r, n) || (m--, delete o[n])
3442                                     }
3443                                 }
3444                             else o !== r && (o = r, u++);
3445                             return u
3446                         }
3447                     }
3448                     n.$stateful = !0;
3449                     var r, o, a, s = this,
3450                         c = t.length > 1,
3451                         u = 0,
3452                         d = l(e, n),
3453                         f = [],
3454                         h = {},
3455                         p = !0,
3456                         m = 0;
3457                     return this.$watch(d, function() {
3458                         if (p ? (p = !1, t(r, r, s)) : t(r, a, s), c)
3459                             if (_(r))
3460                                 if (i(r)) {
3461                                     a = new Array(r.length);
3462                                     for (var e = 0; e < r.length; e++) a[e] = r[e]
3463                                 } else {
3464                                     a = {};
3465                                     for (var n in r) Hr.call(r, n) && (a[n] = r[n])
3466                                 }
3467                         else a = r
3468                     })
3469                 },
3470                 $digest: function() {
3471                     var e, i, o, c, l, d, f, h, m, v, b = t,
3472                         y = this,
3473                         _ = [];
3474                     p("$digest"), u.$$checkUrlChange(), this === C && null !== s && (u.defer.cancel(s), w()), a = null;
3475                     do {
3476                         d = !1, h = y;
3477                         for (var E = 0; E < x.length; E++) {
3478                             try {
3479                                 (0, (v = x[E]).fn)(v.scope, v.locals)
3480                             } catch (e) {
3481                                 r(e)
3482                             }
3483                             a = null
3484                         }
3485                         x.length = 0;
3486                         e: do {
3487                             if (l = h.$$watchers)
3488                                 for (l.$$digestWatchIndex = l.length; l.$$digestWatchIndex--;) try {
3489                                     if (e = l[l.$$digestWatchIndex])
3490                                         if (c = e.get, (i = c(h)) === (o = e.last) || (e.eq ? z(i, o) : Qr(i) && Qr(o))) {
3491                                             if (e === a) {
3492                                                 d = !1;
3493                                                 break e
3494                                             }
3495                                         } else d = !0, a = e, e.last = e.eq ? V(i, null) : i, (0, e.fn)(i, o === $ ? i : o, h), b < 5 && (_[m = 4 - b] || (_[m] = []), _[m].push({
3496                                             msg: T(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
3497                                             newVal: i,
3498                                             oldVal: o
3499                                         }))
3500                                 } catch (e) {
3501                                     r(e)
3502                                 }
3503                             if (!(f = h.$$watchersCount && h.$$childHead || h !== y && h.$$nextSibling))
3504                                 for (; h !== y && !(f = h.$$nextSibling);) h = h.$parent
3505                         } while (h = f);
3506                         if ((d || x.length) && !b--) throw g(), n("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, _)
3507                     } while (d || x.length);
3508                     for (g(); S < k.length;) try {
3509                         k[S++]()
3510                     } catch (e) {
3511                         r(e)
3512                     }
3513                     k.length = S = 0, u.$$checkUrlChange()
3514                 },
3515                 $destroy: function() {
3516                     if (!this.$$destroyed) {
3517                         var e = this.$parent;
3518                         this.$broadcast("$destroy"), this.$$destroyed = !0, this === C && u.$$applicationDestroyed(), v(this, -this.$$watchersCount);
3519                         for (var t in this.$$listenerCount) b(this, this.$$listenerCount[t], t);
3520                         e && e.$$childHead === this && (e.$$childHead = this.$$nextSibling), e && e.$$childTail === this && (e.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = m, this.$on = this.$watch = this.$watchGroup = function() {
3521                             return m
3522                         }, this.$$listeners = {}, this.$$nextSibling = null, f(this)
3523                     }
3524                 },
3525                 $eval: function(e, t) {
3526                     return l(e)(this, t)
3527                 },
3528                 $evalAsync: function(e, t) {
3529                     C.$$phase || x.length || u.defer(function() {
3530                         x.length && C.$digest()
3531                     }), x.push({
3532                         scope: this,
3533                         fn: l(e),
3534                         locals: t
3535                     })
3536                 },
3537                 $$postDigest: function(e) {
3538                     k.push(e)
3539                 },
3540                 $apply: function(e) {
3541                     try {
3542                         p("$apply");
3543                         try {
3544                             return this.$eval(e)
3545                         } finally {
3546                             g()
3547                         }
3548                     } catch (e) {
3549                         r(e)
3550                     } finally {
3551                         try {
3552                             C.$digest()
3553                         } catch (e) {
3554                             throw r(e), e
3555                         }
3556                     }
3557                 },
3558                 $applyAsync: function(e) {
3559                     var t = this;
3560                     e && M.push(function() {
3561                         t.$eval(e)
3562                     }), e = l(e), E()
3563                 },
3564                 $on: function(e, t) {
3565                     var n = this.$$listeners[e];
3566                     n || (this.$$listeners[e] = n = []), n.push(t);
3567                     var r = this;
3568                     do {
3569                         r.$$listenerCount[e] || (r.$$listenerCount[e] = 0), r.$$listenerCount[e]++
3570                     } while (r = r.$parent);
3571                     var i = this;
3572                     return function() {
3573                         var r = n.indexOf(t); - 1 !== r && (n[r] = null, b(i, 1, e))
3574                     }
3575                 },
3576                 $emit: function(e, t) {
3577                     var n, i, o, a = [],
3578                         s = this,
3579                         c = !1,
3580                         l = {
3581                             name: e,
3582                             targetScope: s,
3583                             stopPropagation: function() {
3584                                 c = !0
3585                             },
3586                             preventDefault: function() {
3587                                 l.defaultPrevented = !0
3588                             },
3589                             defaultPrevented: !1
3590                         },
3591                         u = W([l], arguments, 1);
3592                     do {
3593                         for (n = s.$$listeners[e] || a, l.currentScope = s, i = 0, o = n.length; i < o; i++)
3594                             if (n[i]) try {
3595                                 n[i].apply(null, u)
3596                             } catch (e) {
3597                                 r(e)
3598                             } else n.splice(i, 1), i--, o--;
3599                         if (c) return l.currentScope = null, l;
3600                         s = s.$parent
3601                     } while (s);
3602                     return l.currentScope = null, l
3603                 },
3604                 $broadcast: function(e, t) {
3605                     var n = this,
3606                         i = n,
3607                         o = n,
3608                         a = {
3609                             name: e,
3610                             targetScope: n,
3611                             preventDefault: function() {
3612                                 a.defaultPrevented = !0
3613                             },
3614                             defaultPrevented: !1
3615                         };
3616                     if (!n.$$listenerCount[e]) return a;
3617                     for (var s, c, l, u = W([a], arguments, 1); i = o;) {
3618                         for (a.currentScope = i, c = 0, l = (s = i.$$listeners[e] || []).length; c < l; c++)
3619                             if (s[c]) try {
3620                                 s[c].apply(null, u)
3621                             } catch (e) {
3622                                 r(e)
3623                             } else s.splice(c, 1), c--, l--;
3624                         if (!(o = i.$$listenerCount[e] && i.$$childHead || i !== n && i.$$nextSibling))
3625                             for (; i !== n && !(o = i.$$nextSibling);) i = i.$parent
3626                     }
3627                     return a.currentScope = null, a
3628                 }
3629             };
3630             var C = new h,
3631                 x = C.$$asyncQueue = [],
3632                 k = C.$$postDigestQueue = [],
3633                 M = C.$$applyAsyncQueue = [],
3634                 S = 0;
3635             return C
3636         }]
3637     }
3638
3639     function Sn() {
3640         var e = /^\s*(https?|ftp|mailto|tel|file):/,
3641             t = /^\s*((https?|ftp|file|blob):|data:image\/)/;
3642         this.aHrefSanitizationWhitelist = function(t) {
3643             return $(t) ? (e = t, this) : e
3644         }, this.imgSrcSanitizationWhitelist = function(e) {
3645             return $(e) ? (t = e, this) : t
3646         }, this.$get = function() {
3647             return function(n, r) {
3648                 var i, o = r ? t : e;
3649                 return "" === (i = Ln(n).href) || i.match(o) ? n : "unsafe:" + i
3650             }
3651         }
3652     }
3653
3654     function An(e) {
3655         return e.replace(ko, ke)
3656     }
3657
3658     function On(e) {
3659         if ("self" === e) return e;
3660         if (E(e)) {
3661             if (e.indexOf("***") > -1) throw Co("iwcard", "Illegal sequence *** in string matcher.  String: {0}", e);
3662             return e = ni(e).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"), new RegExp("^" + e + "$")
3663         }
3664         if (M(e)) return new RegExp("^" + e.source + "$");
3665         throw Co("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
3666     }
3667
3668     function Dn(e) {
3669         var t = [];
3670         return $(e) && o(e, function(e) {
3671             t.push(On(e))
3672         }), t
3673     }
3674
3675     function Nn() {
3676         this.SCE_CONTEXTS = xo;
3677         var e = ["self"],
3678             t = [];
3679         this.resourceUrlWhitelist = function(t) {
3680             return arguments.length && (e = Dn(t)), e
3681         }, this.resourceUrlBlacklist = function(e) {
3682             return arguments.length && (t = Dn(e)), t
3683         }, this.$get = ["$injector", function(n) {
3684             function r(e, t) {
3685                 return "self" === e ? Fn(t) : !!e.exec(t.href)
3686             }
3687
3688             function i(n) {
3689                 var i, o, a = Ln(n.toString()),
3690                     s = !1;
3691                 for (i = 0, o = e.length; i < o; i++)
3692                     if (r(e[i], a)) {
3693                         s = !0;
3694                         break
3695                     }
3696                 if (s)
3697                     for (i = 0, o = t.length; i < o; i++)
3698                         if (r(t[i], a)) {
3699                             s = !1;
3700                             break
3701                         }
3702                 return s
3703             }
3704
3705             function o(e) {
3706                 var t = function(e) {
3707                     this.$$unwrapTrustedValue = function() {
3708                         return e
3709                     }
3710                 };
3711                 return e && (t.prototype = new e), t.prototype.valueOf = function() {
3712                     return this.$$unwrapTrustedValue()
3713                 }, t.prototype.toString = function() {
3714                     return this.$$unwrapTrustedValue().toString()
3715                 }, t
3716             }
3717             var a = function(e) {
3718                 throw Co("unsafe", "Attempting to use an unsafe value in a safe context.")
3719             };
3720             n.has("$sanitize") && (a = n.get("$sanitize"));
3721             var s = o(),
3722                 c = {};
3723             return c[xo.HTML] = o(s), c[xo.CSS] = o(s), c[xo.URL] = o(s), c[xo.JS] = o(s), c[xo.RESOURCE_URL] = o(c[xo.URL]), {
3724                 trustAs: function(e, t) {
3725                     var n = c.hasOwnProperty(e) ? c[e] : null;
3726                     if (!n) throw Co("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
3727                     if (null === t || y(t) || "" === t) return t;
3728                     if ("string" != typeof t) throw Co("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
3729                     return new n(t)
3730                 },
3731                 getTrusted: function(e, t) {
3732                     if (null === t || y(t) || "" === t) return t;
3733                     var n = c.hasOwnProperty(e) ? c[e] : null;
3734                     if (n && t instanceof n) return t.$$unwrapTrustedValue();
3735                     if (e === xo.RESOURCE_URL) {
3736                         if (i(t)) return t;
3737                         throw Co("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}", t.toString())
3738                     }
3739                     if (e === xo.HTML) return a(t);
3740                     throw Co("unsafe", "Attempting to use an unsafe value in a safe context.")
3741                 },
3742                 valueOf: function(e) {
3743                     return e instanceof s ? e.$$unwrapTrustedValue() : e
3744                 }
3745             }
3746         }]
3747     }
3748
3749     function In() {
3750         var e = !0;
3751         this.enabled = function(t) {
3752             return arguments.length && (e = !!t), e
3753         }, this.$get = ["$parse", "$sceDelegate", function(t, n) {
3754             if (e && Fr < 8) throw Co("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");
3755             var r = _e(xo);
3756             r.isEnabled = function() {
3757                 return e
3758             }, r.trustAs = n.trustAs, r.getTrusted = n.getTrusted, r.valueOf = n.valueOf, e || (r.trustAs = r.getTrusted = function(e, t) {
3759                 return t
3760             }, r.valueOf = g), r.parseAs = function(e, n) {
3761                 var i = t(n);
3762                 return i.literal && i.constant ? i : t(n, function(t) {
3763                     return r.getTrusted(e, t)
3764                 })
3765             };
3766             var i = r.parseAs,
3767                 a = r.getTrusted,
3768                 s = r.trustAs;
3769             return o(xo, function(e, t) {
3770                 var n = jr(t);
3771                 r[An("parse_as_" + n)] = function(t) {
3772                     return i(e, t)
3773                 }, r[An("get_trusted_" + n)] = function(t) {
3774                     return a(e, t)
3775                 }, r[An("trust_as_" + n)] = function(t) {
3776                     return s(e, t)
3777                 }
3778             }), r
3779         }]
3780     }
3781
3782     function Rn() {
3783         this.$get = ["$window", "$document", function(e, t) {
3784             var n = {},
3785                 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,
3786                 i = h((/android (\d+)/.exec(jr((e.navigator || {}).userAgent)) || [])[1]),
3787                 o = /Boxee/i.test((e.navigator || {}).userAgent),
3788                 a = t[0] || {},
3789                 s = a.body && a.body.style,
3790                 c = !1,
3791                 l = !1;
3792             return s && (c = !!("transition" in s || "webkitTransition" in s), l = !!("animation" in s || "webkitAnimation" in s)), {
3793                 history: !(!r || i < 4 || o),
3794                 hasEvent: function(e) {
3795                     if ("input" === e && Fr) return !1;
3796                     if (y(n[e])) {
3797                         var t = a.createElement("div");
3798                         n[e] = "on" + e in t
3799                     }
3800                     return n[e]
3801                 },
3802                 csp: ri(),
3803                 transitions: c,
3804                 animations: l,
3805                 android: i
3806             }
3807         }]
3808     }
3809
3810     function Pn() {
3811         var e;
3812         this.httpOptions = function(t) {
3813             return t ? (e = t, this) : e
3814         }, this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(t, n, r, i, o) {
3815             function a(s, c) {
3816                 a.totalPendingRequests++, E(s) && !y(n.get(s)) || (s = o.getTrustedResourceUrl(s));
3817                 var l = r.defaults && r.defaults.transformResponse;
3818                 return Jr(l) ? l = l.filter(function(e) {
3819                     return e !== At
3820                 }) : l === At && (l = null), r.get(s, d({
3821                     cache: n,
3822                     transformResponse: l
3823                 }, e)).finally(function() {
3824                     a.totalPendingRequests--
3825                 }).then(function(e) {
3826                     return n.put(s, e.data), e.data
3827                 }, function(e) {
3828                     return c || (e = To("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", s, e.status, e.statusText), t(e)), i.reject(e)
3829                 })
3830             }
3831             return a.totalPendingRequests = 0, a
3832         }]
3833     }
3834
3835     function Hn() {
3836         this.$get = ["$rootScope", "$browser", "$location", function(e, t, n) {
3837             var r = {};
3838             return r.findBindings = function(e, t, n) {
3839                 var r = [];
3840                 return o(e.getElementsByClassName("ng-binding"), function(e) {
3841                     var i = Zr.element(e).data("$binding");
3842                     i && o(i, function(i) {
3843                         n ? new RegExp("(^|\\s)" + ni(t) + "(\\s|\\||$)").test(i) && r.push(e) : -1 !== i.indexOf(t) && r.push(e)
3844                     })
3845                 }), r
3846             }, r.findModels = function(e, t, n) {
3847                 for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
3848                     var o = n ? "=" : "*=",
3849                         a = "[" + r[i] + "model" + o + '"' + t + '"]',
3850                         s = e.querySelectorAll(a);
3851                     if (s.length) return s
3852                 }
3853             }, r.getLocation = function() {
3854                 return n.url()
3855             }, r.setLocation = function(t) {
3856                 t !== n.url() && (n.url(t), e.$digest())
3857             }, r.whenStable = function(e) {
3858                 t.notifyWhenNoOutstandingRequests(e)
3859             }, r
3860         }]
3861     }
3862
3863     function jn() {
3864         this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(e, t, n, r, i) {
3865             function o(o, s, c) {
3866                 T(o) || (c = s, s = o, o = m);
3867                 var l, u = Y(arguments, 3),
3868                     d = $(c) && !c,
3869                     f = (d ? r : n).defer(),
3870                     h = f.promise;
3871                 return l = t.defer(function() {
3872                     try {
3873                         f.resolve(o.apply(null, u))
3874                     } catch (e) {
3875                         f.reject(e), i(e)
3876                     } finally {
3877                         delete a[h.$$timeoutId]
3878                     }
3879                     d || e.$apply()
3880                 }, s), h.$$timeoutId = l, a[l] = f, h
3881             }
3882             var a = {};
3883             return o.cancel = function(e) {
3884                 return !!(e && e.$$timeoutId in a) && (kn(a[e.$$timeoutId].promise), a[e.$$timeoutId].reject("canceled"), delete a[e.$$timeoutId], t.defer.cancel(e.$$timeoutId))
3885             }, o
3886         }]
3887     }
3888
3889     function Ln(e) {
3890         var t = e;
3891         return Fr && (Mo.setAttribute("href", t), t = Mo.href), Mo.setAttribute("href", t), {
3892             href: Mo.href,
3893             protocol: Mo.protocol ? Mo.protocol.replace(/:$/, "") : "",
3894             host: Mo.host,
3895             search: Mo.search ? Mo.search.replace(/^\?/, "") : "",
3896             hash: Mo.hash ? Mo.hash.replace(/^#/, "") : "",
3897             hostname: Mo.hostname,
3898             port: Mo.port,
3899             pathname: "/" === Mo.pathname.charAt(0) ? Mo.pathname : "/" + Mo.pathname
3900         }
3901     }
3902
3903     function Fn(e) {
3904         var t = E(e) ? Ln(e) : e;
3905         return t.protocol === So.protocol && t.host === So.host
3906     }
3907
3908     function qn() {
3909         this.$get = v(e)
3910     }
3911
3912     function Un(e) {
3913         function t(e) {
3914             try {
3915                 return e.cookie || ""
3916             } catch (e) {
3917                 return ""
3918             }
3919         }
3920
3921         function n(e) {
3922             try {
3923                 return decodeURIComponent(e)
3924             } catch (t) {
3925                 return e
3926             }
3927         }
3928         var r = e[0] || {},
3929             i = {},
3930             o = "";
3931         return function() {
3932             var e, a, s, c, l, u = t(r);
3933             if (u !== o)
3934                 for (e = (o = u).split("; "), i = {}, s = 0; s < e.length; s++)(c = (a = e[s]).indexOf("=")) > 0 && (l = n(a.substring(0, c)), y(i[l]) && (i[l] = n(a.substring(c + 1))));
3935             return i
3936         }
3937     }
3938
3939     function Vn() {
3940         this.$get = Un
3941     }
3942
3943     function Bn(e) {
3944         function t(r, i) {
3945             if (_(r)) {
3946                 var a = {};
3947                 return o(r, function(e, n) {
3948                     a[n] = t(n, e)
3949                 }), a
3950             }
3951             return e.factory(r + n, i)
3952         }
3953         var n = "Filter";
3954         this.register = t, this.$get = ["$injector", function(e) {
3955             return function(t) {
3956                 return e.get(t + n)
3957             }
3958         }], t("currency", Kn), t("date", sr), t("filter", zn), t("json", cr), t("limitTo", lr), t("lowercase", Po), t("number", Zn), t("orderBy", dr), t("uppercase", Ho)
3959     }
3960
3961     function zn() {
3962         return function(e, t, n, o) {
3963             if (!i(e)) {
3964                 if (null == e) return e;
3965                 throw r("filter")("notarray", "Expected array but received: {0}", e)
3966             }
3967             o = o || "$";
3968             var a, s;
3969             switch (Gn(t)) {
3970                 case "function":
3971                     a = t;
3972                     break;
3973                 case "boolean":
3974                 case "null":
3975                 case "number":
3976                 case "string":
3977                     s = !0;
3978                 case "object":
3979                     a = Wn(t, n, o, s);
3980                     break;
3981                 default:
3982                     return e
3983             }
3984             return Array.prototype.filter.call(e, a)
3985         }
3986     }
3987
3988     function Wn(e, t, n, r) {
3989         var i = _(e) && n in e;
3990         return !0 === t ? t = z : T(t) || (t = function(e, t) {
3991                 return !y(e) && (null === e || null === t ? e === t : !(_(t) || _(e) && !b(e)) && (e = jr("" + e), t = jr("" + t), -1 !== e.indexOf(t)))
3992             }),
3993             function(o) {
3994                 return i && !_(o) ? Yn(o, e[n], t, n, !1) : Yn(o, e, t, n, r)
3995             }
3996     }
3997
3998     function Yn(e, t, n, r, i, o) {
3999         var a = Gn(e),
4000             s = Gn(t);
4001         if ("string" === s && "!" === t.charAt(0)) return !Yn(e, t.substring(1), n, r, i);
4002         if (Jr(e)) return e.some(function(e) {
4003             return Yn(e, t, n, r, i)
4004         });
4005         switch (a) {
4006             case "object":
4007                 var c;
4008                 if (i) {
4009                     for (c in e)
4010                         if (c.charAt && "$" !== c.charAt(0) && Yn(e[c], t, n, r, !0)) return !0;
4011                     return !o && Yn(e, t, n, r, !1)
4012                 }
4013                 if ("object" === s) {
4014                     for (c in t) {
4015                         var l = t[c];
4016                         if (!T(l) && !y(l)) {
4017                             var u = c === r;
4018                             if (!Yn(u ? e : e[c], l, n, r, u, u)) return !1
4019                         }
4020                     }
4021                     return !0
4022                 }
4023                 return n(e, t);
4024             case "function":
4025                 return !1;
4026             default:
4027                 return n(e, t)
4028         }
4029     }
4030
4031     function Gn(e) {
4032         return null === e ? "null" : typeof e
4033     }
4034
4035     function Kn(e) {
4036         var t = e.NUMBER_FORMATS;
4037         return function(e, n, r) {
4038             return y(n) && (n = t.CURRENCY_SYM), y(r) && (r = t.PATTERNS[1].maxFrac), null == e ? e : Jn(e, t.PATTERNS[1], t.GROUP_SEP, t.DECIMAL_SEP, r).replace(/\u00A4/g, n)
4039         }
4040     }
4041
4042     function Zn(e) {
4043         var t = e.NUMBER_FORMATS;
4044         return function(e, n) {
4045             return null == e ? e : Jn(e, t.PATTERNS[0], t.GROUP_SEP, t.DECIMAL_SEP, n)
4046         }
4047     }
4048
4049     function Xn(e) {
4050         var t, n, r, i, o, a = 0;
4051         for ((n = e.indexOf(Oo)) > -1 && (e = e.replace(Oo, "")), (r = e.search(/e/i)) > 0 ? (n < 0 && (n = r), n += +e.slice(r + 1), e = e.substring(0, r)) : n < 0 && (n = e.length), r = 0; e.charAt(r) === Do; r++);
4052         if (r === (o = e.length)) t = [0], n = 1;
4053         else {
4054             for (o--; e.charAt(o) === Do;) o--;
4055             for (n -= r, t = [], i = 0; r <= o; r++, i++) t[i] = +e.charAt(r)
4056         }
4057         return n > Ao && (t = t.splice(0, Ao - 1), a = n - 1, n = 1), {
4058             d: t,
4059             e: a,
4060             i: n
4061         }
4062     }
4063
4064     function Qn(e, t, n, r) {
4065         var i = e.d,
4066             o = i.length - e.i,
4067             a = (t = y(t) ? Math.min(Math.max(n, o), r) : +t) + e.i,
4068             s = i[a];
4069         if (a > 0) {
4070             i.splice(Math.max(e.i, a));
4071             for (var c = a; c < i.length; c++) i[c] = 0
4072         } else {
4073             o = Math.max(0, o), e.i = 1, i.length = Math.max(1, a = t + 1), i[0] = 0;
4074             for (var l = 1; l < a; l++) i[l] = 0
4075         }
4076         if (s >= 5)
4077             if (a - 1 < 0) {
4078                 for (var u = 0; u > a; u--) i.unshift(0), e.i++;
4079                 i.unshift(1), e.i++
4080             } else i[a - 1]++;
4081         for (; o < Math.max(0, t); o++) i.push(0);
4082         var d = i.reduceRight(function(e, t, n, r) {
4083             return t += e, r[n] = t % 10, Math.floor(t / 10)
4084         }, 0);
4085         d && (i.unshift(d), e.i++)
4086     }
4087
4088     function Jn(e, t, n, r, i) {
4089         if (!E(e) && !C(e) || isNaN(e)) return "";
4090         var o, a = !isFinite(e),
4091             s = !1,
4092             c = Math.abs(e) + "",
4093             l = "";
4094         if (a) l = "∞";
4095         else {
4096             Qn(o = Xn(c), i, t.minFrac, t.maxFrac);
4097             var u = o.d,
4098                 d = o.i,
4099                 f = o.e,
4100                 h = [];
4101             for (s = u.reduce(function(e, t) {
4102                     return e && !t
4103                 }, !0); d < 0;) u.unshift(0), d++;
4104             d > 0 ? h = u.splice(d, u.length) : (h = u, u = [0]);
4105             var p = [];
4106             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(""));
4107             u.length && p.unshift(u.join("")), l = p.join(n), h.length && (l += r + h.join("")), f && (l += "e+" + f)
4108         }
4109         return e < 0 && !s ? t.negPre + l + t.negSuf : t.posPre + l + t.posSuf
4110     }
4111
4112     function er(e, t, n, r) {
4113         var i = "";
4114         for ((e < 0 || r && e <= 0) && (r ? e = 1 - e : (e = -e, i = "-")), e = "" + e; e.length < t;) e = Do + e;
4115         return n && (e = e.substr(e.length - t)), i + e
4116     }
4117
4118     function tr(e, t, n, r, i) {
4119         return n = n || 0,
4120             function(o) {
4121                 var a = o["get" + e]();
4122                 return (n > 0 || a > -n) && (a += n), 0 === a && -12 === n && (a = 12), er(a, t, r, i)
4123             }
4124     }
4125
4126     function nr(e, t, n) {
4127         return function(r, i) {
4128             var o = r["get" + e]();
4129             return i[Lr((n ? "STANDALONE" : "") + (t ? "SHORT" : "") + e)][o]
4130         }
4131     }
4132
4133     function rr(e) {
4134         var t = new Date(e, 0, 1).getDay();
4135         return new Date(e, 0, (t <= 4 ? 5 : 12) - t)
4136     }
4137
4138     function ir(e) {
4139         return new Date(e.getFullYear(), e.getMonth(), e.getDate() + (4 - e.getDay()))
4140     }
4141
4142     function or(e) {
4143         return function(t) {
4144             var n = rr(t.getFullYear()),
4145                 r = +ir(t) - +n;
4146             return er(1 + Math.round(r / 6048e5), e)
4147         }
4148     }
4149
4150     function ar(e, t) {
4151         return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
4152     }
4153
4154     function sr(e) {
4155         function t(e) {
4156             var t;
4157             if (t = e.match(n)) {
4158                 var r = new Date(0),
4159                     i = 0,
4160                     o = 0,
4161                     a = t[8] ? r.setUTCFullYear : r.setFullYear,
4162                     s = t[8] ? r.setUTCHours : r.setHours;
4163                 t[9] && (i = h(t[9] + t[10]), o = h(t[9] + t[11])), a.call(r, h(t[1]), h(t[2]) - 1, h(t[3]));
4164                 var c = h(t[4] || 0) - i,
4165                     l = h(t[5] || 0) - o,
4166                     u = h(t[6] || 0),
4167                     d = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
4168                 return s.call(r, c, l, u, d), r
4169             }
4170             return e
4171         }
4172         var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
4173         return function(n, r, i) {
4174             var a, s, c = "",
4175                 l = [];
4176             if (r = r || "mediumDate", r = e.DATETIME_FORMATS[r] || r, E(n) && (n = Ro.test(n) ? h(n) : t(n)), C(n) && (n = new Date(n)), !x(n) || !isFinite(n.getTime())) return n;
4177             for (; r;)(s = Io.exec(r)) ? r = (l = W(l, s, 1)).pop() : (l.push(r), r = null);
4178             var u = n.getTimezoneOffset();
4179             return i && (u = Q(i, u), n = ee(n, i, !0)), o(l, function(t) {
4180                 a = No[t], c += a ? a(n, e.DATETIME_FORMATS, u) : "''" === t ? "'" : t.replace(/(^'|'$)/g, "").replace(/''/g, "'")
4181             }), c
4182         }
4183     }
4184
4185     function cr() {
4186         return function(e, t) {
4187             return y(t) && (t = 2), Z(e, t)
4188         }
4189     }
4190
4191     function lr() {
4192         return function(e, t, n) {
4193             return t = Math.abs(Number(t)) === 1 / 0 ? Number(t) : h(t), Qr(t) ? e : (C(e) && (e = e.toString()), i(e) ? (n = !n || isNaN(n) ? 0 : h(n), n = n < 0 ? Math.max(0, e.length + n) : n, t >= 0 ? ur(e, n, n + t) : 0 === n ? ur(e, t, e.length) : ur(e, Math.max(0, n + t), n)) : e)
4194         }
4195     }
4196
4197     function ur(e, t, n) {
4198         return E(e) ? e.slice(t, n) : Br.call(e, t, n)
4199     }
4200
4201     function dr(e) {
4202         function t(t) {
4203             return t.map(function(t) {
4204                 var n = 1,
4205                     r = g;
4206                 if (T(t)) r = t;
4207                 else if (E(t) && ("+" !== t.charAt(0) && "-" !== t.charAt(0) || (n = "-" === t.charAt(0) ? -1 : 1, t = t.substring(1)), "" !== t && (r = e(t)).constant)) {
4208                     var i = r();
4209                     r = function(e) {
4210                         return e[i]
4211                     }
4212                 }
4213                 return {
4214                     get: r,
4215                     descending: n
4216                 }
4217             })
4218         }
4219
4220         function n(e) {
4221             switch (typeof e) {
4222                 case "number":
4223                 case "boolean":
4224                 case "string":
4225                     return !0;
4226                 default:
4227                     return !1
4228             }
4229         }
4230
4231         function o(e) {
4232             return T(e.valueOf) && (e = e.valueOf(), n(e)) ? e : (b(e) && (e = e.toString(), n(e)), e)
4233         }
4234
4235         function a(e, t) {
4236             var n = typeof e;
4237             return null === e ? (n = "string", e = "null") : "object" === n && (e = o(e)), {
4238                 value: e,
4239                 type: n,
4240                 index: t
4241             }
4242         }
4243
4244         function s(e, t) {
4245             var n = 0,
4246                 r = e.type,
4247                 i = t.type;
4248             if (r === i) {
4249                 var o = e.value,
4250                     a = t.value;
4251                 "string" === r ? (o = o.toLowerCase(), a = a.toLowerCase()) : "object" === r && (_(o) && (o = e.index), _(a) && (a = t.index)), o !== a && (n = o < a ? -1 : 1)
4252             } else n = r < i ? -1 : 1;
4253             return n
4254         }
4255         return function(e, n, o, c) {
4256             if (null == e) return e;
4257             if (!i(e)) throw r("orderBy")("notarray", "Expected array but received: {0}", e);
4258             Jr(n) || (n = [n]), 0 === n.length && (n = ["+"]);
4259             var l = t(n),
4260                 u = o ? -1 : 1,
4261                 d = T(c) ? c : s,
4262                 f = Array.prototype.map.call(e, function(e, t) {
4263                     return {
4264                         value: e,
4265                         tieBreaker: {
4266                             value: t,
4267                             type: "number",
4268                             index: t
4269                         },
4270                         predicateValues: l.map(function(n) {
4271                             return a(n.get(e), t)
4272                         })
4273                     }
4274                 });
4275             return f.sort(function(e, t) {
4276                 for (var n = 0, r = l.length; n < r; n++) {
4277                     var i = d(e.predicateValues[n], t.predicateValues[n]);
4278                     if (i) return i * l[n].descending * u
4279                 }
4280                 return (d(e.tieBreaker, t.tieBreaker) || s(e.tieBreaker, t.tieBreaker)) * u
4281             }), e = f.map(function(e) {
4282                 return e.value
4283             })
4284         }
4285     }
4286
4287     function fr(e) {
4288         return T(e) && (e = {
4289             link: e
4290         }), e.restrict = e.restrict || "AC", v(e)
4291     }
4292
4293     function hr(e, t, n, r, i) {
4294         this.$$controls = [], this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = i(t.name || t.ngForm || "")(n), this.$dirty = !1, this.$pristine = !0, this.$valid = !0, this.$invalid = !1, this.$submitted = !1, this.$$parentForm = Fo, this.$$element = e, this.$$animate = r, pr(this)
4295     }
4296
4297     function pr(e) {
4298         e.$$classCache = {}, e.$$classCache[Ea] = !(e.$$classCache[wa] = e.$$element.hasClass(wa))
4299     }
4300
4301     function mr(e) {
4302         function t(e, t, n, r) {
4303             e[t] || (e[t] = {}), a(e[t], n, r)
4304         }
4305
4306         function n(e, t, n, r) {
4307             e[t] && s(e[t], n, r), gr(e[t]) && (e[t] = void 0)
4308         }
4309
4310         function r(e, t, n) {
4311             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)
4312         }
4313
4314         function i(e, t, n) {
4315             t = t ? "-" + fe(t, "-") : "", r(e, wa + t, !0 === n), r(e, Ea + t, !1 === n)
4316         }
4317         var o = e.clazz,
4318             a = e.set,
4319             s = e.unset;
4320         o.prototype.$setValidity = function(e, o, c) {
4321             y(o) ? t(this, "$pending", e, c) : n(this, "$pending", e, c), I(o) ? o ? (s(this.$error, e, c), a(this.$$success, e, c)) : (a(this.$error, e, c), s(this.$$success, e, c)) : (s(this.$error, e, c), s(this.$$success, e, c)), this.$pending ? (r(this, qo, !0), this.$valid = this.$invalid = void 0, i(this, "", null)) : (r(this, qo, !1), this.$valid = gr(this.$error), this.$invalid = !this.$valid, i(this, "", this.$valid));
4322             var l;
4323             i(this, e, l = this.$pending && this.$pending[e] ? void 0 : !this.$error[e] && (!!this.$$success[e] || null)), this.$$parentForm.$setValidity(e, l, this)
4324         }
4325     }
4326
4327     function gr(e) {
4328         if (e)
4329             for (var t in e)
4330                 if (e.hasOwnProperty(t)) return !1;
4331         return !0
4332     }
4333
4334     function vr(e) {
4335         e.$formatters.push(function(t) {
4336             return e.$isEmpty(t) ? t : t.toString()
4337         })
4338     }
4339
4340     function br(e, t, n, r, i, o) {
4341         var a = jr(t[0].type);
4342         if (!i.android) {
4343             var s = !1;
4344             t.on("compositionstart", function() {
4345                 s = !0
4346             }), t.on("compositionend", function() {
4347                 s = !1, l()
4348             })
4349         }
4350         var c, l = function(e) {
4351             if (c && (o.defer.cancel(c), c = null), !s) {
4352                 var i = t.val(),
4353                     l = e && e.type;
4354                 "password" === a || n.ngTrim && "false" === n.ngTrim || (i = ti(i)), (r.$viewValue !== i || "" === i && r.$$hasNativeValidators) && r.$setViewValue(i, l)
4355             }
4356         };
4357         if (i.hasEvent("input")) t.on("input", l);
4358         else {
4359             var u = function(e, t, n) {
4360                 c || (c = o.defer(function() {
4361                     c = null, t && t.value === n || l(e)
4362                 }))
4363             };
4364             t.on("keydown", function(e) {
4365                 var t = e.keyCode;
4366                 91 === t || 15 < t && t < 19 || 37 <= t && t <= 40 || u(e, this, this.value)
4367             }), i.hasEvent("paste") && t.on("paste cut", u)
4368         }
4369         t.on("change", l), ta[a] && r.$$hasNativeValidators && a === n.type && t.on(ea, function(e) {
4370             if (!c) {
4371                 var t = this[Pr],
4372                     n = t.badInput,
4373                     r = t.typeMismatch;
4374                 c = o.defer(function() {
4375                     c = null, t.badInput === n && t.typeMismatch === r || l(e)
4376                 })
4377             }
4378         }), r.$render = function() {
4379             var e = r.$isEmpty(r.$viewValue) ? "" : r.$viewValue;
4380             t.val() !== e && t.val(e)
4381         }
4382     }
4383
4384     function yr(e, t) {
4385         return function(n, r) {
4386             var i, a;
4387             if (x(n)) return n;
4388             if (E(n)) {
4389                 if ('"' === n.charAt(0) && '"' === n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)), zo.test(n)) return new Date(n);
4390                 if (e.lastIndex = 0, i = e.exec(n)) return i.shift(), a = r ? {
4391                     yyyy: r.getFullYear(),
4392                     MM: r.getMonth() + 1,
4393                     dd: r.getDate(),
4394                     HH: r.getHours(),
4395                     mm: r.getMinutes(),
4396                     ss: r.getSeconds(),
4397                     sss: r.getMilliseconds() / 1e3
4398                 } : {
4399                     yyyy: 1970,
4400                     MM: 1,
4401                     dd: 1,
4402                     HH: 0,
4403                     mm: 0,
4404                     ss: 0,
4405                     sss: 0
4406                 }, o(i, function(e, n) {
4407                     n < t.length && (a[t[n]] = +e)
4408                 }), new Date(a.yyyy, a.MM - 1, a.dd, a.HH, a.mm, a.ss || 0, 1e3 * a.sss || 0)
4409             }
4410             return NaN
4411         }
4412     }
4413
4414     function $r(e, t, n, r) {
4415         return function(i, o, a, s, c, l, u) {
4416             function d(e) {
4417                 return e && !(e.getTime && e.getTime() !== e.getTime())
4418             }
4419
4420             function f(e) {
4421                 return $(e) && !x(e) ? n(e) || void 0 : e
4422             }
4423             _r(i, o, a, s), br(i, o, a, s, c, l);
4424             var h, p = s && s.$options.getOption("timezone");
4425             if (s.$$parserName = e, s.$parsers.push(function(e) {
4426                     if (s.$isEmpty(e)) return null;
4427                     if (t.test(e)) {
4428                         var r = n(e, h);
4429                         return p && (r = ee(r, p)), r
4430                     }
4431                 }), s.$formatters.push(function(e) {
4432                     if (e && !x(e)) throw ka("datefmt", "Expected `{0}` to be a date", e);
4433                     return d(e) ? ((h = e) && p && (h = ee(h, p, !0)), u("date")(e, r, p)) : (h = null, "")
4434                 }), $(a.min) || a.ngMin) {
4435                 var m;
4436                 s.$validators.min = function(e) {
4437                     return !d(e) || y(m) || n(e) >= m
4438                 }, a.$observe("min", function(e) {
4439                     m = f(e), s.$validate()
4440                 })
4441             }
4442             if ($(a.max) || a.ngMax) {
4443                 var g;
4444                 s.$validators.max = function(e) {
4445                     return !d(e) || y(g) || n(e) <= g
4446                 }, a.$observe("max", function(e) {
4447                     g = f(e), s.$validate()
4448                 })
4449             }
4450         }
4451     }
4452
4453     function _r(e, t, n, r) {
4454         var i = t[0];
4455         (r.$$hasNativeValidators = _(i.validity)) && r.$parsers.push(function(e) {
4456             var n = t.prop(Pr) || {};
4457             return n.badInput || n.typeMismatch ? void 0 : e
4458         })
4459     }
4460
4461     function wr(e) {
4462         e.$$parserName = "number", e.$parsers.push(function(t) {
4463             return e.$isEmpty(t) ? null : Go.test(t) ? parseFloat(t) : void 0
4464         }), e.$formatters.push(function(t) {
4465             if (!e.$isEmpty(t)) {
4466                 if (!C(t)) throw ka("numfmt", "Expected `{0}` to be a number", t);
4467                 t = t.toString()
4468             }
4469             return t
4470         })
4471     }
4472
4473     function Er(e) {
4474         return $(e) && !C(e) && (e = parseFloat(e)), Qr(e) ? void 0 : e
4475     }
4476
4477     function Cr(e) {
4478         return (0 | e) === e
4479     }
4480
4481     function xr(e) {
4482         var t = e.toString(),
4483             n = t.indexOf(".");
4484         if (-1 === n) {
4485             if (-1 < e && e < 1) {
4486                 var r = /e-(\d+)$/.exec(t);
4487                 if (r) return Number(r[1])
4488             }
4489             return 0
4490         }
4491         return t.length - n - 1
4492     }
4493
4494     function kr(e, t, n) {
4495         var r = Number(e),
4496             i = !Cr(r),
4497             o = !Cr(t),
4498             a = !Cr(n);
4499         if (i || o || a) {
4500             var s = i ? xr(r) : 0,
4501                 c = o ? xr(t) : 0,
4502                 l = a ? xr(n) : 0,
4503                 u = Math.max(s, c, l),
4504                 d = Math.pow(10, u);
4505             r *= d, t *= d, n *= d, i && (r = Math.round(r)), o && (t = Math.round(t)), a && (n = Math.round(n))
4506         }
4507         return (r - t) % n == 0
4508     }
4509
4510     function Tr(e, t, n, r, i) {
4511         var o;
4512         if ($(r)) {
4513             if (!(o = e(r)).constant) throw ka("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
4514             return o(t)
4515         }
4516         return i
4517     }
4518
4519     function Mr(e, t) {
4520         function n(e, t) {
4521             if (!e || !e.length) return [];
4522             if (!t || !t.length) return e;
4523             var n = [];
4524             e: for (var r = 0; r < e.length; r++) {
4525                 for (var i = e[r], o = 0; o < t.length; o++)
4526                     if (i === t[o]) continue e;
4527                 n.push(i)
4528             }
4529             return n
4530         }
4531
4532         function r(e) {
4533             return e && e.split(" ")
4534         }
4535
4536         function i(e) {
4537             var t = e;
4538             return Jr(e) ? t = e.map(i).join(" ") : _(e) && (t = Object.keys(e).filter(function(t) {
4539                 return e[t]
4540             }).join(" ")), t
4541         }
4542
4543         function a(e) {
4544             var t = e;
4545             if (Jr(e)) t = e.map(a);
4546             else if (_(e)) {
4547                 var n = !1;
4548                 t = Object.keys(e).filter(function(t) {
4549                     var r = e[t];
4550                     return !n && y(r) && (n = !0), r
4551                 }), n && t.push(void 0)
4552             }
4553             return t
4554         }
4555         e = "ngClass" + e;
4556         var s;
4557         return ["$parse", function(c) {
4558             return {
4559                 restrict: "AC",
4560                 link: function(l, u, d) {
4561                     function f(e) {
4562                         e = m(r(e), 1), d.$addClass(e)
4563                     }
4564
4565                     function h(e) {
4566                         e = m(r(e), -1), d.$removeClass(e)
4567                     }
4568
4569                     function p(e, t) {
4570                         var i = r(e),
4571                             o = r(t),
4572                             a = n(i, o),
4573                             s = n(o, i),
4574                             c = m(a, -1),
4575                             l = m(s, 1);
4576                         d.$addClass(l), d.$removeClass(c)
4577                     }
4578
4579                     function m(e, t) {
4580                         var n = [];
4581                         return o(e, function(e) {
4582                             (t > 0 || w[e]) && (w[e] = (w[e] || 0) + t, w[e] === +(t > 0) && n.push(e))
4583                         }), n.join(" ")
4584                     }
4585
4586                     function g(e) {
4587                         E === t && p(v, e), v = e
4588                     }
4589                     var v, b = d[e].trim(),
4590                         y = ":" === b.charAt(0) && ":" === b.charAt(1),
4591                         $ = c(b, y ? a : i),
4592                         _ = y ? function(e) {
4593                             var t = i(e);
4594                             t !== v && g(t)
4595                         } : g,
4596                         w = u.data("$classCounts"),
4597                         E = !0;
4598                     w || (w = be(), u.data("$classCounts", w)), "ngClass" !== e && (s || (s = c("$index", function(e) {
4599                         return 1 & e
4600                     })), l.$watch(s, function(e) {
4601                         e === t ? f(v) : h(v), E = e
4602                     })), l.$watch($, _, y)
4603                 }
4604             }
4605         }]
4606     }
4607
4608     function Sr(e, t, n, r, i, o, a, s, c) {
4609         this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$$rawModelValue = void 0, this.$validators = {}, this.$asyncValidators = {}, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$untouched = !0, this.$touched = !1, this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = c(n.name || "", !1)(e), this.$$parentForm = Fo, this.$options = Ta, this.$$parsedNgModel = i(n.ngModel), this.$$parsedNgModelAssign = this.$$parsedNgModel.assign, this.$$ngModelGet = this.$$parsedNgModel, this.$$ngModelSet = this.$$parsedNgModelAssign, this.$$pendingDebounce = null, this.$$parserValid = void 0, this.$$currentValidationRunId = 0, Object.defineProperty(this, "$$scope", {
4610             value: e
4611         }), this.$$attr = n, this.$$element = r, this.$$animate = o, this.$$timeout = a, this.$$parse = i, this.$$q = s, this.$$exceptionHandler = t, pr(this), Ar(this)
4612     }
4613
4614     function Ar(e) {
4615         e.$$scope.$watch(function(t) {
4616             var n = e.$$ngModelGet(t);
4617             if (n !== e.$modelValue && (e.$modelValue === e.$modelValue || n === n)) {
4618                 e.$modelValue = e.$$rawModelValue = n, e.$$parserValid = void 0;
4619                 for (var r = e.$formatters, i = r.length, o = n; i--;) o = r[i](o);
4620                 e.$viewValue !== o && (e.$$updateEmptyClasses(o), e.$viewValue = e.$$lastCommittedViewValue = o, e.$render(), e.$$runValidators(e.$modelValue, e.$viewValue, m))
4621             }
4622             return n
4623         })
4624     }
4625
4626     function Or(e) {
4627         this.$$options = e
4628     }
4629
4630     function Dr(e, t) {
4631         o(t, function(t, n) {
4632             $(e[n]) || (e[n] = t)
4633         })
4634     }
4635
4636     function Nr(e, t) {
4637         e.prop("selected", t), e.attr("selected", t)
4638     }
4639     var Ir = {
4640             objectMaxDepth: 5
4641         },
4642         Rr = /^\/(.+)\/([a-z]*)$/,
4643         Pr = "validity",
4644         Hr = Object.prototype.hasOwnProperty,
4645         jr = function(e) {
4646             return E(e) ? e.toLowerCase() : e
4647         },
4648         Lr = function(e) {
4649             return E(e) ? e.toUpperCase() : e
4650         };
4651     "i" !== "I".toLowerCase() && (jr = function(e) {
4652         return E(e) ? e.replace(/[A-Z]/g, function(e) {
4653             return String.fromCharCode(32 | e.charCodeAt(0))
4654         }) : e
4655     }, Lr = function(e) {
4656         return E(e) ? e.replace(/[a-z]/g, function(e) {
4657             return String.fromCharCode(-33 & e.charCodeAt(0))
4658         }) : e
4659     });
4660     var Fr, qr, Ur, Vr, Br = [].slice,
4661         zr = [].splice,
4662         Wr = [].push,
4663         Yr = Object.prototype.toString,
4664         Gr = Object.getPrototypeOf,
4665         Kr = r("ng"),
4666         Zr = e.angular || (e.angular = {}),
4667         Xr = 0;
4668     Fr = e.document.documentMode;
4669     var Qr = Number.isNaN || function(e) {
4670         return e !== e
4671     };
4672     m.$inject = [], g.$inject = [];
4673     var Jr = Array.isArray,
4674         ei = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/,
4675         ti = function(e) {
4676             return E(e) ? e.trim() : e
4677         },
4678         ni = function(e) {
4679             return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
4680         },
4681         ri = function() {
4682             if (!$(ri.rules)) {
4683                 var t = e.document.querySelector("[ng-csp]") || e.document.querySelector("[data-ng-csp]");
4684                 if (t) {
4685                     var n = t.getAttribute("ng-csp") || t.getAttribute("data-ng-csp");
4686                     ri.rules = {
4687                         noUnsafeEval: !n || -1 !== n.indexOf("no-unsafe-eval"),
4688                         noInlineStyle: !n || -1 !== n.indexOf("no-inline-style")
4689                     }
4690                 } else ri.rules = {
4691                     noUnsafeEval: function() {
4692                         try {
4693                             return new Function(""), !1
4694                         } catch (e) {
4695                             return !0
4696                         }
4697                     }(),
4698                     noInlineStyle: !1
4699                 }
4700             }
4701             return ri.rules
4702         },
4703         ii = function() {
4704             if ($(ii.name_)) return ii.name_;
4705             var t, n, r, i, o = ai.length;
4706             for (n = 0; n < o; ++n)
4707                 if (r = ai[n], t = e.document.querySelector("[" + r.replace(":", "\\:") + "jq]")) {
4708                     i = t.getAttribute(r + "jq");
4709                     break
4710                 }
4711             return ii.name_ = i
4712         },
4713         oi = /:/g,
4714         ai = ["ng-", "data-ng-", "ng:", "x-ng-"],
4715         si = function(t) {
4716             var n = t.currentScript;
4717             if (!n) return !0;
4718             if (!(n instanceof e.HTMLScriptElement || n instanceof e.SVGScriptElement)) return !1;
4719             var r = n.attributes;
4720             return [r.getNamedItem("src"), r.getNamedItem("href"), r.getNamedItem("xlink:href")].every(function(e) {
4721                 if (!e) return !0;
4722                 if (!e.value) return !1;
4723                 var n = t.createElement("a");
4724                 if (n.href = e.value, t.location.origin === n.origin) return !0;
4725                 switch (n.protocol) {
4726                     case "http:":
4727                     case "https:":
4728                     case "ftp:":
4729                     case "blob:":
4730                     case "file:":
4731                     case "data:":
4732                         return !0;
4733                     default:
4734                         return !1
4735                 }
4736             })
4737         }(e.document),
4738         ci = /[A-Z]/g,
4739         li = !1,
4740         ui = 1,
4741         di = 3,
4742         fi = 8,
4743         hi = 9,
4744         pi = 11,
4745         mi = {
4746             full: "1.6.6",
4747             major: 1,
4748             minor: 6,
4749             dot: 6,
4750             codeName: "interdimensional-cable"
4751         };
4752     Ne.expando = "ng339";
4753     var gi = Ne.cache = {},
4754         vi = 1;
4755     Ne._data = function(e) {
4756         return this.cache[e[this.expando]] || {}
4757     };
4758     var bi = /-([a-z])/g,
4759         yi = /^-ms-/,
4760         $i = {
4761             mouseleave: "mouseout",
4762             mouseenter: "mouseover"
4763         },
4764         _i = r("jqLite"),
4765         wi = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
4766         Ei = /<|&#?\w+;/,
4767         Ci = /<([\w:-]+)/,
4768         xi = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
4769         ki = {
4770             option: [1, '<select multiple="multiple">', "</select>"],
4771             thead: [1, "<table>", "</table>"],
4772             col: [2, "<table><colgroup>", "</colgroup></table>"],
4773             tr: [2, "<table><tbody>", "</tbody></table>"],
4774             td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
4775             _default: [0, "", ""]
4776         };
4777     ki.optgroup = ki.option, ki.tbody = ki.tfoot = ki.colgroup = ki.caption = ki.thead, ki.th = ki.td;
4778     var Ti = e.Node.prototype.contains || function(e) {
4779             return !!(16 & this.compareDocumentPosition(e))
4780         },
4781         Mi = Ne.prototype = {
4782             ready: Ke,
4783             toString: function() {
4784                 var e = [];
4785                 return o(this, function(t) {
4786                     e.push("" + t)
4787                 }), "[" + e.join(", ") + "]"
4788             },
4789             eq: function(e) {
4790                 return qr(e >= 0 ? this[e] : this[this.length + e])
4791             },
4792             length: 0,
4793             push: Wr,
4794             sort: [].sort,
4795             splice: [].splice
4796         },
4797         Si = {};
4798     o("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
4799         Si[jr(e)] = e
4800     });
4801     var Ai = {};
4802     o("input,select,option,textarea,button,form,details".split(","), function(e) {
4803         Ai[e] = !0
4804     });
4805     var Oi = {
4806         ngMinlength: "minlength",
4807         ngMaxlength: "maxlength",
4808         ngMin: "min",
4809         ngMax: "max",
4810         ngPattern: "pattern",
4811         ngStep: "step"
4812     };
4813     o({
4814         data: Le,
4815         removeData: He,
4816         hasData: function(e) {
4817             for (var t in gi[e.ng339]) return !0;
4818             return !1
4819         },
4820         cleanData: function(e) {
4821             for (var t = 0, n = e.length; t < n; t++) He(e[t])
4822         }
4823     }, function(e, t) {
4824         Ne[t] = e
4825     }), o({
4826         data: Le,
4827         inheritedData: ze,
4828         scope: function(e) {
4829             return qr.data(e, "$scope") || ze(e.parentNode || e, ["$isolateScope", "$scope"])
4830         },
4831         isolateScope: function(e) {
4832             return qr.data(e, "$isolateScope") || qr.data(e, "$isolateScopeNoTemplate")
4833         },
4834         controller: Be,
4835         injector: function(e) {
4836             return ze(e, "$injector")
4837         },
4838         removeAttr: function(e, t) {
4839             e.removeAttribute(t)
4840         },
4841         hasClass: Fe,
4842         css: function(e, t, n) {
4843             if (t = xe(t), !$(n)) return e.style[t];
4844             e.style[t] = n
4845         },
4846         attr: function(e, t, n) {
4847             var r, i = e.nodeType;
4848             if (i !== di && 2 !== i && i !== fi && e.getAttribute) {
4849                 var o = jr(t),
4850                     a = Si[o];
4851                 if (!$(n)) return r = e.getAttribute(t), a && null !== r && (r = o), null === r ? void 0 : r;
4852                 null === n || !1 === n && a ? e.removeAttribute(t) : e.setAttribute(t, a ? o : n)
4853             }
4854         },
4855         prop: function(e, t, n) {
4856             if (!$(n)) return e[t];
4857             e[t] = n
4858         },
4859         text: function() {
4860             function e(e, t) {
4861                 if (y(t)) {
4862                     var n = e.nodeType;
4863                     return n === ui || n === di ? e.textContent : ""
4864                 }
4865                 e.textContent = t
4866             }
4867             return e.$dv = "", e
4868         }(),
4869         val: function(e, t) {
4870             if (y(t)) {
4871                 if (e.multiple && "select" === F(e)) {
4872                     var n = [];
4873                     return o(e.options, function(e) {
4874                         e.selected && n.push(e.value || e.text)
4875                     }), n
4876                 }
4877                 return e.value
4878             }
4879             e.value = t
4880         },
4881         html: function(e, t) {
4882             if (y(t)) return e.innerHTML;
4883             Re(e, !0), e.innerHTML = t
4884         },
4885         empty: We
4886     }, function(e, t) {
4887         Ne.prototype[t] = function(t, n) {
4888             var r, i, o = this.length;
4889             if (e !== We && y(2 === e.length && e !== Fe && e !== Be ? t : n)) {
4890                 if (_(t)) {
4891                     for (r = 0; r < o; r++)
4892                         if (e === Le) e(this[r], t);
4893                         else
4894                             for (i in t) e(this[r], i, t[i]);
4895                     return this
4896                 }
4897                 for (var a = e.$dv, s = y(a) ? Math.min(o, 1) : o, c = 0; c < s; c++) {
4898                     var l = e(this[c], t, n);
4899                     a = a ? a + l : l
4900                 }
4901                 return a
4902             }
4903             for (r = 0; r < o; r++) e(this[r], t, n);
4904             return this
4905         }
4906     }), o({
4907         removeData: He,
4908         on: function(e, t, n, r) {
4909             if ($(r)) throw _i("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
4910             if (Se(e)) {
4911                 var i = je(e, !0),
4912                     o = i.events,
4913                     a = i.handle;
4914                 a || (a = i.handle = Qe(e, o));
4915                 for (var s = t.indexOf(" ") >= 0 ? t.split(" ") : [t], c = s.length, l = function(t, r, i) {
4916                         var s = o[t];
4917                         s || ((s = o[t] = []).specialHandlerWrapper = r, "$destroy" === t || i || e.addEventListener(t, a)), s.push(n)
4918                     }; c--;) t = s[c], $i[t] ? (l($i[t], et), l(t, void 0, !0)) : l(t)
4919             }
4920         },
4921         off: Pe,
4922         one: function(e, t, n) {
4923             (e = qr(e)).on(t, function r() {
4924                 e.off(t, n), e.off(t, r)
4925             }), e.on(t, n)
4926         },
4927         replaceWith: function(e, t) {
4928             var n, r = e.parentNode;
4929             Re(e), o(new Ne(t), function(t) {
4930                 n ? r.insertBefore(t, n.nextSibling) : r.replaceChild(t, e), n = t
4931             })
4932         },
4933         children: function(e) {
4934             var t = [];
4935             return o(e.childNodes, function(e) {
4936                 e.nodeType === ui && t.push(e)
4937             }), t
4938         },
4939         contents: function(e) {
4940             return e.contentDocument || e.childNodes || []
4941         },
4942         append: function(e, t) {
4943             var n = e.nodeType;
4944             if (n === ui || n === pi)
4945                 for (var r = 0, i = (t = new Ne(t)).length; r < i; r++) {
4946                     var o = t[r];
4947                     e.appendChild(o)
4948                 }
4949         },
4950         prepend: function(e, t) {
4951             if (e.nodeType === ui) {
4952                 var n = e.firstChild;
4953                 o(new Ne(t), function(t) {
4954                     e.insertBefore(t, n)
4955                 })
4956             }
4957         },
4958         wrap: function(e, t) {
4959             De(e, qr(t).eq(0).clone()[0])
4960         },
4961         remove: Ye,
4962         detach: function(e) {
4963             Ye(e, !0)
4964         },
4965         after: function(e, t) {
4966             var n = e,
4967                 r = e.parentNode;
4968             if (r)
4969                 for (var i = 0, o = (t = new Ne(t)).length; i < o; i++) {
4970                     var a = t[i];
4971                     r.insertBefore(a, n.nextSibling), n = a
4972                 }
4973         },
4974         addClass: Ue,
4975         removeClass: qe,
4976         toggleClass: function(e, t, n) {
4977             t && o(t.split(" "), function(t) {
4978                 var r = n;
4979                 y(r) && (r = !Fe(e, t)), (r ? Ue : qe)(e, t)
4980             })
4981         },
4982         parent: function(e) {
4983             var t = e.parentNode;
4984             return t && t.nodeType !== pi ? t : null
4985         },
4986         next: function(e) {
4987             return e.nextElementSibling
4988         },
4989         find: function(e, t) {
4990             return e.getElementsByTagName ? e.getElementsByTagName(t) : []
4991         },
4992         clone: Ie,
4993         triggerHandler: function(e, t, n) {
4994             var r, i, a, s = t.type || t,
4995                 c = je(e),
4996                 l = c && c.events,
4997                 u = l && l[s];
4998             u && (r = {
4999                 preventDefault: function() {
5000                     this.defaultPrevented = !0
5001                 },
5002                 isDefaultPrevented: function() {
5003                     return !0 === this.defaultPrevented
5004                 },
5005                 stopImmediatePropagation: function() {
5006                     this.immediatePropagationStopped = !0
5007                 },
5008                 isImmediatePropagationStopped: function() {
5009                     return !0 === this.immediatePropagationStopped
5010                 },
5011                 stopPropagation: m,
5012                 type: s,
5013                 target: e
5014             }, t.type && (r = d(r, t)), i = _e(u), a = n ? [r].concat(n) : [r], o(i, function(t) {
5015                 r.isImmediatePropagationStopped() || t.apply(e, a)
5016             }))
5017         }
5018     }, function(e, t) {
5019         Ne.prototype[t] = function(t, n, r) {
5020             for (var i, o = 0, a = this.length; o < a; o++) y(i) ? $(i = e(this[o], t, n, r)) && (i = qr(i)) : Ve(i, e(this[o], t, n, r));
5021             return $(i) ? i : this
5022         }
5023     }), Ne.prototype.bind = Ne.prototype.on, Ne.prototype.unbind = Ne.prototype.off;
5024     var Di = Object.create(null);
5025     rt.prototype = {
5026         _idx: function(e) {
5027             return e === this._lastKey ? this._lastIndex : (this._lastKey = e, this._lastIndex = this._keys.indexOf(e), this._lastIndex)
5028         },
5029         _transformKey: function(e) {
5030             return Qr(e) ? Di : e
5031         },
5032         get: function(e) {
5033             e = this._transformKey(e);
5034             var t = this._idx(e);
5035             if (-1 !== t) return this._values[t]
5036         },
5037         set: function(e, t) {
5038             e = this._transformKey(e);
5039             var n = this._idx(e); - 1 === n && (n = this._lastIndex = this._keys.length), this._keys[n] = e, this._values[n] = t
5040         },
5041         delete: function(e) {
5042             e = this._transformKey(e);
5043             var t = this._idx(e);
5044             return -1 !== t && (this._keys.splice(t, 1), this._values.splice(t, 1), this._lastKey = NaN, this._lastIndex = -1, !0)
5045         }
5046     };
5047     var Ni = rt,
5048         Ii = [function() {
5049             this.$get = [function() {
5050                 return Ni
5051             }]
5052         }],
5053         Ri = /^([^(]+?)=>/,
5054         Pi = /^[^(]*\(\s*([^)]*)\)/m,
5055         Hi = /,/,
5056         ji = /^\s*(_?)(\S+?)\1\s*$/,
5057         Li = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
5058         Fi = r("$injector");
5059     st.$$annotate = function(e, t, n) {
5060         var r, i;
5061         if ("function" == typeof e) {
5062             if (!(r = e.$inject)) {
5063                 if (r = [], e.length) {
5064                     if (t) throw E(n) && n || (n = e.name || at(e)), Fi("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
5065                     o(ot(e)[1].split(Hi), function(e) {
5066                         e.replace(ji, function(e, t, n) {
5067                             r.push(n)
5068                         })
5069                     })
5070                 }
5071                 e.$inject = r
5072             }
5073         } else Jr(e) ? (pe(e[i = e.length - 1], "fn"), r = e.slice(0, i)) : pe(e, "fn", !0);
5074         return r
5075     };
5076     var qi = r("$animate"),
5077         Ui = 1,
5078         Vi = function() {
5079             this.$get = m
5080         },
5081         Bi = function() {
5082             var e = new Ni,
5083                 t = [];
5084             this.$get = ["$$AnimateRunner", "$rootScope", function(n, r) {
5085                 function i(e, t, n) {
5086                     var r = !1;
5087                     return t && o(t = E(t) ? t.split(" ") : Jr(t) ? t : [], function(t) {
5088                         t && (r = !0, e[t] = n)
5089                     }), r
5090                 }
5091
5092                 function a() {
5093                     o(t, function(t) {
5094                         var n = e.get(t);
5095                         if (n) {
5096                             var r = dt(t.attr("class")),
5097                                 i = "",
5098                                 a = "";
5099                             o(n, function(e, t) {
5100                                 e !== !!r[t] && (e ? i += (i.length ? " " : "") + t : a += (a.length ? " " : "") + t)
5101                             }), o(t, function(e) {
5102                                 i && Ue(e, i), a && qe(e, a)
5103                             }), e.delete(t)
5104                         }
5105                     }), t.length = 0
5106                 }
5107
5108                 function s(n, o, s) {
5109                     var c = e.get(n) || {},
5110                         l = i(c, o, !0),
5111                         u = i(c, s, !1);
5112                     (l || u) && (e.set(n, c), t.push(n), 1 === t.length && r.$$postDigest(a))
5113                 }
5114                 return {
5115                     enabled: m,
5116                     on: m,
5117                     off: m,
5118                     pin: m,
5119                     push: function(e, t, r, i) {
5120                         i && i(), (r = r || {}).from && e.css(r.from), r.to && e.css(r.to), (r.addClass || r.removeClass) && s(e, r.addClass, r.removeClass);
5121                         var o = new n;
5122                         return o.complete(), o
5123                     }
5124                 }
5125             }]
5126         },
5127         zi = ["$provide", function(e) {
5128             var t = this,
5129                 n = null,
5130                 r = null;
5131             this.$$registeredAnimations = Object.create(null), this.register = function(n, r) {
5132                 if (n && "." !== n.charAt(0)) throw qi("notcsel", "Expecting class selector starting with '.' got '{0}'.", n);
5133                 var i = n + "-animation";
5134                 t.$$registeredAnimations[n.substr(1)] = i, e.factory(i, r)
5135             }, this.customFilter = function(e) {
5136                 return 1 === arguments.length && (r = T(e) ? e : null), r
5137             }, this.classNameFilter = function(e) {
5138                 if (1 === arguments.length && (n = e instanceof RegExp ? e : null) && new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]").test(n.toString())) throw n = null, qi("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', "ng-animate");
5139                 return n
5140             }, this.$get = ["$$animateQueue", function(e) {
5141                 function t(e, t, n) {
5142                     if (n) {
5143                         var r = ut(n);
5144                         !r || r.parentNode || r.previousElementSibling || (n = null)
5145                     }
5146                     n ? n.after(e) : t.prepend(e)
5147                 }
5148                 return {
5149                     on: e.on,
5150                     off: e.off,
5151                     pin: e.pin,
5152                     enabled: e.enabled,
5153                     cancel: function(e) {
5154                         e.end && e.end()
5155                     },
5156                     enter: function(n, r, i, o) {
5157                         return r = r && qr(r), i = i && qr(i), r = r || i.parent(), t(n, r, i), e.push(n, "enter", ft(o))
5158                     },
5159                     move: function(n, r, i, o) {
5160                         return r = r && qr(r), i = i && qr(i), r = r || i.parent(), t(n, r, i), e.push(n, "move", ft(o))
5161                     },
5162                     leave: function(t, n) {
5163                         return e.push(t, "leave", ft(n), function() {
5164                             t.remove()
5165                         })
5166                     },
5167                     addClass: function(t, n, r) {
5168                         return r = ft(r), r.addClass = lt(r.addclass, n), e.push(t, "addClass", r)
5169                     },
5170                     removeClass: function(t, n, r) {
5171                         return r = ft(r), r.removeClass = lt(r.removeClass, n), e.push(t, "removeClass", r)
5172                     },
5173                     setClass: function(t, n, r, i) {
5174                         return i = ft(i), i.addClass = lt(i.addClass, n), i.removeClass = lt(i.removeClass, r), e.push(t, "setClass", i)
5175                     },
5176                     animate: function(t, n, r, i, o) {
5177                         return o = ft(o), o.from = o.from ? d(o.from, n) : n, o.to = o.to ? d(o.to, r) : r, i = i || "ng-inline-animate", o.tempClasses = lt(o.tempClasses, i), e.push(t, "animate", o)
5178                     }
5179                 }
5180             }]
5181         }],
5182         Wi = function() {
5183             this.$get = ["$$rAF", function(e) {
5184                 function t(t) {
5185                     n.push(t), n.length > 1 || e(function() {
5186                         for (var e = 0; e < n.length; e++) n[e]();
5187                         n = []
5188                     })
5189                 }
5190                 var n = [];
5191                 return function() {
5192                     var e = !1;
5193                     return t(function() {
5194                             e = !0
5195                         }),
5196                         function(n) {
5197                             e ? n() : t(n)
5198                         }
5199                 }
5200             }]
5201         },
5202         Yi = function() {
5203             this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(e, t, n, r, i) {
5204                 function a(e) {
5205                     this.setHost(e);
5206                     var t = n(),
5207                         o = function(e) {
5208                             i(e, 0, !1)
5209                         };
5210                     this._doneCallbacks = [], this._tick = function(e) {
5211                         r() ? o(e) : t(e)
5212                     }, this._state = 0
5213                 }
5214                 return a.chain = function(e, t) {
5215                     function n() {
5216                         r !== e.length ? e[r](function(e) {
5217                             !1 !== e ? (r++, n()) : t(!1)
5218                         }) : t(!0)
5219                     }
5220                     var r = 0;
5221                     n()
5222                 }, a.all = function(e, t) {
5223                     function n(n) {
5224                         i = i && n, ++r === e.length && t(i)
5225                     }
5226                     var r = 0,
5227                         i = !0;
5228                     o(e, function(e) {
5229                         e.done(n)
5230                     })
5231                 }, a.prototype = {
5232                     setHost: function(e) {
5233                         this.host = e || {}
5234                     },
5235                     done: function(e) {
5236                         2 === this._state ? e() : this._doneCallbacks.push(e)
5237                     },
5238                     progress: m,
5239                     getPromise: function() {
5240                         if (!this.promise) {
5241                             var t = this;
5242                             this.promise = e(function(e, n) {
5243                                 t.done(function(t) {
5244                                     !1 === t ? n() : e()
5245                                 })
5246                             })
5247                         }
5248                         return this.promise
5249                     },
5250                     then: function(e, t) {
5251                         return this.getPromise().then(e, t)
5252                     },
5253                     catch: function(e) {
5254                         return this.getPromise().catch(e)
5255                     },
5256                     finally: function(e) {
5257                         return this.getPromise().finally(e)
5258                     },
5259                     pause: function() {
5260                         this.host.pause && this.host.pause()
5261                     },
5262                     resume: function() {
5263                         this.host.resume && this.host.resume()
5264                     },
5265                     end: function() {
5266                         this.host.end && this.host.end(), this._resolve(!0)
5267                     },
5268                     cancel: function() {
5269                         this.host.cancel && this.host.cancel(), this._resolve(!1)
5270                     },
5271                     complete: function(e) {
5272                         var t = this;
5273                         0 === t._state && (t._state = 1, t._tick(function() {
5274                             t._resolve(e)
5275                         }))
5276                     },
5277                     _resolve: function(e) {
5278                         2 !== this._state && (o(this._doneCallbacks, function(t) {
5279                             t(e)
5280                         }), this._doneCallbacks.length = 0, this._state = 2)
5281                     }
5282                 }, a
5283             }]
5284         },
5285         Gi = function() {
5286             this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(e, t, n) {
5287                 return function(t, r) {
5288                     function i() {
5289                         return e(function() {
5290                             o(), s || c.complete(), s = !0
5291                         }), c
5292                     }
5293
5294                     function o() {
5295                         a.addClass && (t.addClass(a.addClass), a.addClass = null), a.removeClass && (t.removeClass(a.removeClass), a.removeClass = null), a.to && (t.css(a.to), a.to = null)
5296                     }
5297                     var a = r || {};
5298                     a.$$prepared || (a = V(a)), a.cleanupStyles && (a.from = a.to = null), a.from && (t.css(a.from), a.from = null);
5299                     var s, c = new n;
5300                     return {
5301                         start: i,
5302                         end: i
5303                     }
5304                 }
5305             }]
5306         },
5307         Ki = r("$compile"),
5308         Zi = new function() {};
5309     vt.$inject = ["$provide", "$$sanitizeUriProvider"], bt.prototype.isFirstChange = function() {
5310         return this.previousValue === Zi
5311     };
5312     var Xi = /^((?:x|data)[:\-_])/i,
5313         Qi = /[:\-_]+(.)/g,
5314         Ji = r("$controller"),
5315         eo = /^(\S+)(\s+as\s+([\w$]+))?$/,
5316         to = function() {
5317             this.$get = ["$document", function(e) {
5318                 return function(t) {
5319                     return t ? !t.nodeType && t instanceof qr && (t = t[0]) : t = e[0].body, t.offsetWidth + 1
5320                 }
5321             }]
5322         },
5323         no = "application/json",
5324         ro = {
5325             "Content-Type": no + ";charset=utf-8"
5326         },
5327         io = /^\[|^\{(?!\{)/,
5328         oo = {
5329             "[": /]$/,
5330             "{": /}$/
5331         },
5332         ao = /^\)]\}',?\n/,
5333         so = r("$http"),
5334         co = Zr.$interpolateMinErr = r("$interpolate");
5335     co.throwNoconcat = function(e) {
5336         throw co("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce", e)
5337     }, co.interr = function(e, t) {
5338         return co("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
5339     };
5340     var lo = function() {
5341             this.$get = function() {
5342                 function e(e) {
5343                     var t = function(e) {
5344                         t.data = e, t.called = !0
5345                     };
5346                     return t.id = e, t
5347                 }
5348                 var t = Zr.callbacks,
5349                     n = {};
5350                 return {
5351                     createCallback: function(r) {
5352                         var i = "_" + (t.$$counter++).toString(36),
5353                             o = "angular.callbacks." + i,
5354                             a = e(i);
5355                         return n[o] = t[i] = a, o
5356                     },
5357                     wasCalled: function(e) {
5358                         return n[e].called
5359                     },
5360                     getResponse: function(e) {
5361                         return n[e].data
5362                     },
5363                     removeCallback: function(e) {
5364                         var r = n[e];
5365                         delete t[r.id], delete n[e]
5366                     }
5367                 }
5368             }
5369         },
5370         uo = /^([^?#]*)(\?([^#]*))?(#(.*))?$/,
5371         fo = {
5372             http: 80,
5373             https: 443,
5374             ftp: 21
5375         },
5376         ho = r("$location"),
5377         po = /^\s*[\\/]{2,}/,
5378         mo = {
5379             $$absUrl: "",
5380             $$html5: !1,
5381             $$replace: !1,
5382             absUrl: en("$$absUrl"),
5383             url: function(e) {
5384                 if (y(e)) return this.$$url;
5385                 var t = uo.exec(e);
5386                 return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
5387             },
5388             protocol: en("$$protocol"),
5389             host: en("$$host"),
5390             port: en("$$port"),
5391             path: tn("$$path", function(e) {
5392                 return "/" === (e = null !== e ? e.toString() : "").charAt(0) ? e : "/" + e
5393             }),
5394             search: function(e, t) {
5395                 switch (arguments.length) {
5396                     case 0:
5397                         return this.$$search;
5398                     case 1:
5399                         if (E(e) || C(e)) e = e.toString(), this.$$search = re(e);
5400                         else {
5401                             if (!_(e)) throw ho("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
5402                             o(e = V(e, {}), function(t, n) {
5403                                 null == t && delete e[n]
5404                             }), this.$$search = e
5405                         }
5406                         break;
5407                     default:
5408                         y(t) || null === t ? delete this.$$search[e] : this.$$search[e] = t
5409                 }
5410                 return this.$$compose(), this
5411             },
5412             hash: tn("$$hash", function(e) {
5413                 return null !== e ? e.toString() : ""
5414             }),
5415             replace: function() {
5416                 return this.$$replace = !0, this
5417             }
5418         };
5419     o([Jt, Qt, Xt], function(e) {
5420         e.prototype = Object.create(mo), e.prototype.state = function(t) {
5421             if (!arguments.length) return this.$$state;
5422             if (e !== Xt || !this.$$html5) throw ho("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
5423             return this.$$state = y(t) ? null : t, this.$$urlUpdatedByLocation = !0, this
5424         }
5425     });
5426     var go = r("$parse"),
5427         vo = {}.constructor.prototype.valueOf,
5428         bo = be();
5429     o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
5430         bo[e] = !0
5431     });
5432     var yo = {
5433             n: "\n",
5434             f: "\f",
5435             r: "\r",
5436             t: "\t",
5437             v: "\v",
5438             "'": "'",
5439             '"': '"'
5440         },
5441         $o = function(e) {
5442             this.options = e
5443         };
5444     $o.prototype = {
5445         constructor: $o,
5446         lex: function(e) {
5447             for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
5448                 var t = this.text.charAt(this.index);
5449                 if ('"' === t || "'" === t) this.readString(t);
5450                 else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
5451                 else if (this.isIdentifierStart(this.peekMultichar())) this.readIdent();
5452                 else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
5453                     index: this.index,
5454                     text: t
5455                 }), this.index++;
5456                 else if (this.isWhitespace(t)) this.index++;
5457                 else {
5458                     var n = t + this.peek(),
5459                         r = n + this.peek(2),
5460                         i = bo[t],
5461                         o = bo[n],
5462                         a = bo[r];
5463                     if (i || o || a) {
5464                         var s = a ? r : o ? n : t;
5465                         this.tokens.push({
5466                             index: this.index,
5467                             text: s,
5468                             operator: !0
5469                         }), this.index += s.length
5470                     } else this.throwError("Unexpected next character ", this.index, this.index + 1)
5471                 }
5472             }
5473             return this.tokens
5474         },
5475         is: function(e, t) {
5476             return -1 !== t.indexOf(e)
5477         },
5478         peek: function(e) {
5479             var t = e || 1;
5480             return this.index + t < this.text.length && this.text.charAt(this.index + t)
5481         },
5482         isNumber: function(e) {
5483             return "0" <= e && e <= "9" && "string" == typeof e
5484         },
5485         isWhitespace: function(e) {
5486             return " " === e || "\r" === e || "\t" === e || "\n" === e || "\v" === e || " " === e
5487         },
5488         isIdentifierStart: function(e) {
5489             return this.options.isIdentifierStart ? this.options.isIdentifierStart(e, this.codePointAt(e)) : this.isValidIdentifierStart(e)
5490         },
5491         isValidIdentifierStart: function(e) {
5492             return "a" <= e && e <= "z" || "A" <= e && e <= "Z" || "_" === e || "$" === e
5493         },
5494         isIdentifierContinue: function(e) {
5495             return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(e, this.codePointAt(e)) : this.isValidIdentifierContinue(e)
5496         },
5497         isValidIdentifierContinue: function(e, t) {
5498             return this.isValidIdentifierStart(e, t) || this.isNumber(e)
5499         },
5500         codePointAt: function(e) {
5501             return 1 === e.length ? e.charCodeAt(0) : (e.charCodeAt(0) << 10) + e.charCodeAt(1) - 56613888
5502         },
5503         peekMultichar: function() {
5504             var e = this.text.charAt(this.index),
5505                 t = this.peek();
5506             if (!t) return e;
5507             var n = e.charCodeAt(0),
5508                 r = t.charCodeAt(0);
5509             return n >= 55296 && n <= 56319 && r >= 56320 && r <= 57343 ? e + t : e
5510         },
5511         isExpOperator: function(e) {
5512             return "-" === e || "+" === e || this.isNumber(e)
5513         },
5514         throwError: function(e, t, n) {
5515             n = n || this.index;
5516             var r = $(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
5517             throw go("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
5518         },
5519         readNumber: function() {
5520             for (var e = "", t = this.index; this.index < this.text.length;) {
5521                 var n = jr(this.text.charAt(this.index));
5522                 if ("." === n || this.isNumber(n)) e += n;
5523                 else {
5524                     var r = this.peek();
5525                     if ("e" === n && this.isExpOperator(r)) e += n;
5526                     else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" === e.charAt(e.length - 1)) e += n;
5527                     else {
5528                         if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" !== e.charAt(e.length - 1)) break;
5529                         this.throwError("Invalid exponent")
5530                     }
5531                 }
5532                 this.index++
5533             }
5534             this.tokens.push({
5535                 index: t,
5536                 text: e,
5537                 constant: !0,
5538                 value: Number(e)
5539             })
5540         },
5541         readIdent: function() {
5542             var e = this.index;
5543             for (this.index += this.peekMultichar().length; this.index < this.text.length;) {
5544                 var t = this.peekMultichar();
5545                 if (!this.isIdentifierContinue(t)) break;
5546                 this.index += t.length
5547             }
5548             this.tokens.push({
5549                 index: e,
5550                 text: this.text.slice(e, this.index),
5551                 identifier: !0
5552             })
5553         },
5554         readString: function(e) {
5555             var t = this.index;
5556             this.index++;
5557             for (var n = "", r = e, i = !1; this.index < this.text.length;) {
5558                 var o = this.text.charAt(this.index);
5559                 if (r += o, i) {
5560                     if ("u" === o) {
5561                         var a = this.text.substring(this.index + 1, this.index + 5);
5562                         a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
5563                     } else n += yo[o] || o;
5564                     i = !1
5565                 } else if ("\\" === o) i = !0;
5566                 else {
5567                     if (o === e) return this.index++, void this.tokens.push({
5568                         index: t,
5569                         text: r,
5570                         constant: !0,
5571                         value: n
5572                     });
5573                     n += o
5574                 }
5575                 this.index++
5576             }
5577             this.throwError("Unterminated quote", t)
5578         }
5579     };
5580     var _o = function(e, t) {
5581         this.lexer = e, this.options = t
5582     };
5583     _o.Program = "Program", _o.ExpressionStatement = "ExpressionStatement", _o.AssignmentExpression = "AssignmentExpression", _o.ConditionalExpression = "ConditionalExpression", _o.LogicalExpression = "LogicalExpression", _o.BinaryExpression = "BinaryExpression", _o.UnaryExpression = "UnaryExpression", _o.CallExpression = "CallExpression", _o.MemberExpression = "MemberExpression", _o.Identifier = "Identifier", _o.Literal = "Literal", _o.ArrayExpression = "ArrayExpression", _o.Property = "Property", _o.ObjectExpression = "ObjectExpression", _o.ThisExpression = "ThisExpression", _o.LocalsExpression = "LocalsExpression", _o.NGValueParameter = "NGValueParameter", _o.prototype = {
5584         ast: function(e) {
5585             this.text = e, this.tokens = this.lexer.lex(e);
5586             var t = this.program();
5587             return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
5588         },
5589         program: function() {
5590             for (var e = [];;)
5591                 if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
5592                     type: _o.Program,
5593                     body: e
5594                 }
5595         },
5596         expressionStatement: function() {
5597             return {
5598                 type: _o.ExpressionStatement,
5599                 expression: this.filterChain()
5600             }
5601         },
5602         filterChain: function() {
5603             for (var e = this.expression(); this.expect("|");) e = this.filter(e);
5604             return e
5605         },
5606         expression: function() {
5607             return this.assignment()
5608         },
5609         assignment: function() {
5610             var e = this.ternary();
5611             if (this.expect("=")) {
5612                 if (!fn(e)) throw go("lval", "Trying to assign a value to a non l-value");
5613                 e = {
5614                     type: _o.AssignmentExpression,
5615                     left: e,
5616                     right: this.assignment(),
5617                     operator: "="
5618                 }
5619             }
5620             return e
5621         },
5622         ternary: function() {
5623             var e, t, n = this.logicalOR();
5624             return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
5625                 type: _o.ConditionalExpression,
5626                 test: n,
5627                 alternate: e,
5628                 consequent: t
5629             }) : n
5630         },
5631         logicalOR: function() {
5632             for (var e = this.logicalAND(); this.expect("||");) e = {
5633                 type: _o.LogicalExpression,
5634                 operator: "||",
5635                 left: e,
5636                 right: this.logicalAND()
5637             };
5638             return e
5639         },
5640         logicalAND: function() {
5641             for (var e = this.equality(); this.expect("&&");) e = {
5642                 type: _o.LogicalExpression,
5643                 operator: "&&",
5644                 left: e,
5645                 right: this.equality()
5646             };
5647             return e
5648         },
5649         equality: function() {
5650             for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
5651                 type: _o.BinaryExpression,
5652                 operator: e.text,
5653                 left: t,
5654                 right: this.relational()
5655             };
5656             return t
5657         },
5658         relational: function() {
5659             for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
5660                 type: _o.BinaryExpression,
5661                 operator: e.text,
5662                 left: t,
5663                 right: this.additive()
5664             };
5665             return t
5666         },
5667         additive: function() {
5668             for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
5669                 type: _o.BinaryExpression,
5670                 operator: e.text,
5671                 left: t,
5672                 right: this.multiplicative()
5673             };
5674             return t
5675         },
5676         multiplicative: function() {
5677             for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
5678                 type: _o.BinaryExpression,
5679                 operator: e.text,
5680                 left: t,
5681                 right: this.unary()
5682             };
5683             return t
5684         },
5685         unary: function() {
5686             var e;
5687             return (e = this.expect("+", "-", "!")) ? {
5688                 type: _o.UnaryExpression,
5689                 operator: e.text,
5690                 prefix: !0,
5691                 argument: this.unary()
5692             } : this.primary()
5693         },
5694         primary: function() {
5695             var e;
5696             this.expect("(") ? (e = this.filterChain(), this.consume(")")) : this.expect("[") ? e = this.arrayDeclaration() : this.expect("{") ? e = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? e = V(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? e = {
5697                 type: _o.Literal,
5698                 value: this.options.literals[this.consume().text]
5699             } : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek());
5700             for (var t; t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
5701                 type: _o.CallExpression,
5702                 callee: e,
5703                 arguments: this.parseArguments()
5704             }, this.consume(")")) : "[" === t.text ? (e = {
5705                 type: _o.MemberExpression,
5706                 object: e,
5707                 property: this.expression(),
5708                 computed: !0
5709             }, this.consume("]")) : "." === t.text ? e = {
5710                 type: _o.MemberExpression,
5711                 object: e,
5712                 property: this.identifier(),
5713                 computed: !1
5714             } : this.throwError("IMPOSSIBLE");
5715             return e
5716         },
5717         filter: function(e) {
5718             for (var t = [e], n = {
5719                     type: _o.CallExpression,
5720                     callee: this.identifier(),
5721                     arguments: t,
5722                     filter: !0
5723                 }; this.expect(":");) t.push(this.expression());
5724             return n
5725         },
5726         parseArguments: function() {
5727             var e = [];
5728             if (")" !== this.peekToken().text)
5729                 do {
5730                     e.push(this.filterChain())
5731                 } while (this.expect(","));
5732             return e
5733         },
5734         identifier: function() {
5735             var e = this.consume();
5736             return e.identifier || this.throwError("is not a valid identifier", e), {
5737                 type: _o.Identifier,
5738                 name: e.text
5739             }
5740         },
5741         constant: function() {
5742             return {
5743                 type: _o.Literal,
5744                 value: this.consume().value
5745             }
5746         },
5747         arrayDeclaration: function() {
5748             var e = [];
5749             if ("]" !== this.peekToken().text)
5750                 do {
5751                     if (this.peek("]")) break;
5752                     e.push(this.expression())
5753                 } while (this.expect(","));
5754             return this.consume("]"), {
5755                 type: _o.ArrayExpression,
5756                 elements: e
5757             }
5758         },
5759         object: function() {
5760             var e, t = [];
5761             if ("}" !== this.peekToken().text)
5762                 do {
5763                     if (this.peek("}")) break;
5764                     e = {
5765                         type: _o.Property,
5766                         kind: "init"
5767                     }, 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)
5768                 } while (this.expect(","));
5769             return this.consume("}"), {
5770                 type: _o.ObjectExpression,
5771                 properties: t
5772             }
5773         },
5774         throwError: function(e, t) {
5775             throw go("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", t.text, e, t.index + 1, this.text, this.text.substring(t.index))
5776         },
5777         consume: function(e) {
5778             if (0 === this.tokens.length) throw go("ueoe", "Unexpected end of expression: {0}", this.text);
5779             var t = this.expect(e);
5780             return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
5781         },
5782         peekToken: function() {
5783             if (0 === this.tokens.length) throw go("ueoe", "Unexpected end of expression: {0}", this.text);
5784             return this.tokens[0]
5785         },
5786         peek: function(e, t, n, r) {
5787             return this.peekAhead(0, e, t, n, r)
5788         },
5789         peekAhead: function(e, t, n, r, i) {
5790             if (this.tokens.length > e) {
5791                 var o = this.tokens[e],
5792                     a = o.text;
5793                 if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
5794             }
5795             return !1
5796         },
5797         expect: function(e, t, n, r) {
5798             var i = this.peek(e, t, n, r);
5799             return !!i && (this.tokens.shift(), i)
5800         },
5801         selfReferential: {
5802             this: {
5803                 type: _o.ThisExpression
5804             },
5805             $locals: {
5806                 type: _o.LocalsExpression
5807             }
5808         }
5809     };
5810     var wo = 1,
5811         Eo = 2;
5812     gn.prototype = {
5813         compile: function(e) {
5814             var t = this;
5815             this.state = {
5816                 nextId: 0,
5817                 filters: {},
5818                 fn: {
5819                     vars: [],
5820                     body: [],
5821                     own: {}
5822                 },
5823                 assign: {
5824                     vars: [],
5825                     body: [],
5826                     own: {}
5827                 },
5828                 inputs: []
5829             }, un(e, t.$filter);
5830             var n, r = "";
5831             if (this.stage = "assign", n = hn(e)) {
5832                 this.state.computing = "assign";
5833                 var i = this.nextId();
5834                 this.recurse(n, i), this.return_(i), r = "fn.assign=" + this.generateFunction("assign", "s,v,l")
5835             }
5836             var a = dn(e.body);
5837             t.stage = "inputs", o(a, function(e, n) {
5838                 var r = "fn" + n;
5839                 t.state[r] = {
5840                     vars: [],
5841                     body: [],
5842                     own: {}
5843                 }, t.state.computing = r;
5844                 var i = t.nextId();
5845                 t.recurse(e, i), t.return_(i), t.state.inputs.push({
5846                     name: r,
5847                     isPure: e.isPure
5848                 }), e.watchId = n
5849             }), this.state.computing = "fn", this.stage = "main", this.recurse(e);
5850             var s = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + r + this.watchFns() + "return fn;",
5851                 c = new Function("$filter", "getStringValue", "ifDefined", "plus", s)(this.$filter, on, an, sn);
5852             return this.state = this.stage = void 0, c
5853         },
5854         USE: "use",
5855         STRICT: "strict",
5856         watchFns: function() {
5857             var e = [],
5858                 t = this.state.inputs,
5859                 n = this;
5860             return o(t, function(t) {
5861                 e.push("var " + t.name + "=" + n.generateFunction(t.name, "s")), t.isPure && e.push(t.name, ".isPure=" + JSON.stringify(t.isPure) + ";")
5862             }), t.length && e.push("fn.inputs=[" + t.map(function(e) {
5863                 return e.name
5864             }).join(",") + "];"), e.join("")
5865         },
5866         generateFunction: function(e, t) {
5867             return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
5868         },
5869         filterPrefix: function() {
5870             var e = [],
5871                 t = this;
5872             return o(this.state.filters, function(n, r) {
5873                 e.push(n + "=$filter(" + t.escape(r) + ")")
5874             }), e.length ? "var " + e.join(",") + ";" : ""
5875         },
5876         varsPrefix: function(e) {
5877             return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
5878         },
5879         body: function(e) {
5880             return this.state[e].body.join("")
5881         },
5882         recurse: function(e, t, n, r, i, a) {
5883             var s, c, l, u, d, f = this;
5884             if (r = r || m, !a && $(e.watchId)) return t = t || this.nextId(), void this.if_("i", this.lazyAssign(t, this.computedMember("i", e.watchId)), this.lazyRecurse(e, t, n, r, i, !0));
5885             switch (e.type) {
5886                 case _o.Program:
5887                     o(e.body, function(t, n) {
5888                         f.recurse(t.expression, void 0, void 0, function(e) {
5889                             c = e
5890                         }), n !== e.body.length - 1 ? f.current().body.push(c, ";") : f.return_(c)
5891                     });
5892                     break;
5893                 case _o.Literal:
5894                     u = this.escape(e.value), this.assign(t, u), r(t || u);
5895                     break;
5896                 case _o.UnaryExpression:
5897                     this.recurse(e.argument, void 0, void 0, function(e) {
5898                         c = e
5899                     }), u = e.operator + "(" + this.ifDefined(c, 0) + ")", this.assign(t, u), r(u);
5900                     break;
5901                 case _o.BinaryExpression:
5902                     this.recurse(e.left, void 0, void 0, function(e) {
5903                         s = e
5904                     }), this.recurse(e.right, void 0, void 0, function(e) {
5905                         c = e
5906                     }), u = "+" === e.operator ? this.plus(s, c) : "-" === e.operator ? this.ifDefined(s, 0) + e.operator + this.ifDefined(c, 0) : "(" + s + ")" + e.operator + "(" + c + ")", this.assign(t, u), r(u);
5907                     break;
5908                 case _o.LogicalExpression:
5909                     t = t || this.nextId(), f.recurse(e.left, t), f.if_("&&" === e.operator ? t : f.not(t), f.lazyRecurse(e.right, t)), r(t);
5910                     break;
5911                 case _o.ConditionalExpression:
5912                     t = t || this.nextId(), f.recurse(e.test, t), f.if_(t, f.lazyRecurse(e.alternate, t), f.lazyRecurse(e.consequent, t)), r(t);
5913                     break;
5914                 case _o.Identifier:
5915                     t = t || this.nextId(), n && (n.context = "inputs" === f.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", e.name) + "?l:s"), n.computed = !1, n.name = e.name), f.if_("inputs" === f.stage || f.not(f.getHasOwnProperty("l", e.name)), function() {
5916                         f.if_("inputs" === f.stage || "s", function() {
5917                             i && 1 !== i && f.if_(f.isNull(f.nonComputedMember("s", e.name)), f.lazyAssign(f.nonComputedMember("s", e.name), "{}")), f.assign(t, f.nonComputedMember("s", e.name))
5918                         })
5919                     }, t && f.lazyAssign(t, f.nonComputedMember("l", e.name))), r(t);
5920                     break;
5921                 case _o.MemberExpression:
5922                     s = n && (n.context = this.nextId()) || this.nextId(), t = t || this.nextId(), f.recurse(e.object, s, void 0, function() {
5923                         f.if_(f.notNull(s), function() {
5924                             e.computed ? (c = f.nextId(), f.recurse(e.property, c), f.getStringValue(c), i && 1 !== i && f.if_(f.not(f.computedMember(s, c)), f.lazyAssign(f.computedMember(s, c), "{}")), u = f.computedMember(s, c), f.assign(t, u), n && (n.computed = !0, n.name = c)) : (i && 1 !== i && f.if_(f.isNull(f.nonComputedMember(s, e.property.name)), f.lazyAssign(f.nonComputedMember(s, e.property.name), "{}")), u = f.nonComputedMember(s, e.property.name), f.assign(t, u), n && (n.computed = !1, n.name = e.property.name))
5925                         }, function() {
5926                             f.assign(t, "undefined")
5927                         }), r(t)
5928                     }, !!i);
5929                     break;
5930                 case _o.CallExpression:
5931                     t = t || this.nextId(), e.filter ? (c = f.filter(e.callee.name), l = [], o(e.arguments, function(e) {
5932                         var t = f.nextId();
5933                         f.recurse(e, t), l.push(t)
5934                     }), u = c + "(" + l.join(",") + ")", f.assign(t, u), r(t)) : (c = f.nextId(), s = {}, l = [], f.recurse(e.callee, c, s, function() {
5935                         f.if_(f.notNull(c), function() {
5936                             o(e.arguments, function(t) {
5937                                 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5938                                     l.push(e)
5939                                 })
5940                             }), u = s.name ? f.member(s.context, s.name, s.computed) + "(" + l.join(",") + ")" : c + "(" + l.join(",") + ")", f.assign(t, u)
5941                         }, function() {
5942                             f.assign(t, "undefined")
5943                         }), r(t)
5944                     }));
5945                     break;
5946                 case _o.AssignmentExpression:
5947                     c = this.nextId(), s = {}, this.recurse(e.left, void 0, s, function() {
5948                         f.if_(f.notNull(s.context), function() {
5949                             f.recurse(e.right, c), u = f.member(s.context, s.name, s.computed) + e.operator + c, f.assign(t, u), r(t || u)
5950                         })
5951                     }, 1);
5952                     break;
5953                 case _o.ArrayExpression:
5954                     l = [], o(e.elements, function(t) {
5955                         f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5956                             l.push(e)
5957                         })
5958                     }), u = "[" + l.join(",") + "]", this.assign(t, u), r(t || u);
5959                     break;
5960                 case _o.ObjectExpression:
5961                     l = [], d = !1, o(e.properties, function(e) {
5962                         e.computed && (d = !0)
5963                     }), d ? (t = t || this.nextId(), this.assign(t, "{}"), o(e.properties, function(e) {
5964                         e.computed ? (s = f.nextId(), f.recurse(e.key, s)) : s = e.key.type === _o.Identifier ? e.key.name : "" + e.key.value, c = f.nextId(), f.recurse(e.value, c), f.assign(f.member(t, s, e.computed), c)
5965                     })) : (o(e.properties, function(t) {
5966                         f.recurse(t.value, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5967                             l.push(f.escape(t.key.type === _o.Identifier ? t.key.name : "" + t.key.value) + ":" + e)
5968                         })
5969                     }), u = "{" + l.join(",") + "}", this.assign(t, u)), r(t || u);
5970                     break;
5971                 case _o.ThisExpression:
5972                     this.assign(t, "s"), r(t || "s");
5973                     break;
5974                 case _o.LocalsExpression:
5975                     this.assign(t, "l"), r(t || "l");
5976                     break;
5977                 case _o.NGValueParameter:
5978                     this.assign(t, "v"), r(t || "v")
5979             }
5980         },
5981         getHasOwnProperty: function(e, t) {
5982             var n = e + "." + t,
5983                 r = this.current().own;
5984             return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
5985         },
5986         assign: function(e, t) {
5987             if (e) return this.current().body.push(e, "=", t, ";"), e
5988         },
5989         filter: function(e) {
5990             return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
5991         },
5992         ifDefined: function(e, t) {
5993             return "ifDefined(" + e + "," + this.escape(t) + ")"
5994         },
5995         plus: function(e, t) {
5996             return "plus(" + e + "," + t + ")"
5997         },
5998         return_: function(e) {
5999             this.current().body.push("return ", e, ";")
6000         },
6001         if_: function(e, t, n) {
6002             if (!0 === e) t();
6003             else {
6004                 var r = this.current().body;
6005                 r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
6006             }
6007         },
6008         not: function(e) {
6009             return "!(" + e + ")"
6010         },
6011         isNull: function(e) {
6012             return e + "==null"
6013         },
6014         notNull: function(e) {
6015             return e + "!=null"
6016         },
6017         nonComputedMember: function(e, t) {
6018             var n = /[^$_a-zA-Z0-9]/g;
6019             return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t) ? e + "." + t : e + '["' + t.replace(n, this.stringEscapeFn) + '"]'
6020         },
6021         computedMember: function(e, t) {
6022             return e + "[" + t + "]"
6023         },
6024         member: function(e, t, n) {
6025             return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
6026         },
6027         getStringValue: function(e) {
6028             this.assign(e, "getStringValue(" + e + ")")
6029         },
6030         lazyRecurse: function(e, t, n, r, i, o) {
6031             var a = this;
6032             return function() {
6033                 a.recurse(e, t, n, r, i, o)
6034             }
6035         },
6036         lazyAssign: function(e, t) {
6037             var n = this;
6038             return function() {
6039                 n.assign(e, t)
6040             }
6041         },
6042         stringEscapeRegex: /[^ a-zA-Z0-9]/g,
6043         stringEscapeFn: function(e) {
6044             return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
6045         },
6046         escape: function(e) {
6047             if (E(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
6048             if (C(e)) return e.toString();
6049             if (!0 === e) return "true";
6050             if (!1 === e) return "false";
6051             if (null === e) return "null";
6052             if (void 0 === e) return "undefined";
6053             throw go("esc", "IMPOSSIBLE")
6054         },
6055         nextId: function(e, t) {
6056             var n = "v" + this.state.nextId++;
6057             return e || this.current().vars.push(n + (t ? "=" + t : "")), n
6058         },
6059         current: function() {
6060             return this.state[this.state.computing]
6061         }
6062     }, vn.prototype = {
6063         compile: function(e) {
6064             var t = this;
6065             un(e, t.$filter);
6066             var n, r;
6067             (n = hn(e)) && (r = this.recurse(n));
6068             var i, a = dn(e.body);
6069             a && (i = [], o(a, function(e, n) {
6070                 var r = t.recurse(e);
6071                 r.isPure = e.isPure, e.input = r, i.push(r), e.watchId = n
6072             }));
6073             var s = [];
6074             o(e.body, function(e) {
6075                 s.push(t.recurse(e.expression))
6076             });
6077             var c = 0 === e.body.length ? m : 1 === e.body.length ? s[0] : function(e, t) {
6078                 var n;
6079                 return o(s, function(r) {
6080                     n = r(e, t)
6081                 }), n
6082             };
6083             return r && (c.assign = function(e, t, n) {
6084                 return r(e, n, t)
6085             }), i && (c.inputs = i), c
6086         },
6087         recurse: function(e, t, n) {
6088             var r, i, a, s = this;
6089             if (e.input) return this.inputs(e.input, e.watchId);
6090             switch (e.type) {
6091                 case _o.Literal:
6092                     return this.value(e.value, t);
6093                 case _o.UnaryExpression:
6094                     return i = this.recurse(e.argument), this["unary" + e.operator](i, t);
6095                 case _o.BinaryExpression:
6096                 case _o.LogicalExpression:
6097                     return r = this.recurse(e.left), i = this.recurse(e.right), this["binary" + e.operator](r, i, t);
6098                 case _o.ConditionalExpression:
6099                     return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), t);
6100                 case _o.Identifier:
6101                     return s.identifier(e.name, t, n);
6102                 case _o.MemberExpression:
6103                     return r = this.recurse(e.object, !1, !!n), e.computed || (i = e.property.name), e.computed && (i = this.recurse(e.property)), e.computed ? this.computedMember(r, i, t, n) : this.nonComputedMember(r, i, t, n);
6104                 case _o.CallExpression:
6105                     return a = [], o(e.arguments, function(e) {
6106                         a.push(s.recurse(e))
6107                     }), e.filter && (i = this.$filter(e.callee.name)), e.filter || (i = this.recurse(e.callee, !0)), e.filter ? function(e, n, r, o) {
6108                         for (var s = [], c = 0; c < a.length; ++c) s.push(a[c](e, n, r, o));
6109                         var l = i.apply(void 0, s, o);
6110                         return t ? {
6111                             context: void 0,
6112                             name: void 0,
6113                             value: l
6114                         } : l
6115                     } : function(e, n, r, o) {
6116                         var s, c = i(e, n, r, o);
6117                         if (null != c.value) {
6118                             for (var l = [], u = 0; u < a.length; ++u) l.push(a[u](e, n, r, o));
6119                             s = c.value.apply(c.context, l)
6120                         }
6121                         return t ? {
6122                             value: s
6123                         } : s
6124                     };
6125                 case _o.AssignmentExpression:
6126                     return r = this.recurse(e.left, !0, 1), i = this.recurse(e.right),
6127                         function(e, n, o, a) {
6128                             var s = r(e, n, o, a),
6129                                 c = i(e, n, o, a);
6130                             return s.context[s.name] = c, t ? {
6131                                 value: c
6132                             } : c
6133                         };
6134                 case _o.ArrayExpression:
6135                     return a = [], o(e.elements, function(e) {
6136                             a.push(s.recurse(e))
6137                         }),
6138                         function(e, n, r, i) {
6139                             for (var o = [], s = 0; s < a.length; ++s) o.push(a[s](e, n, r, i));
6140                             return t ? {
6141                                 value: o
6142                             } : o
6143                         };
6144                 case _o.ObjectExpression:
6145                     return a = [], o(e.properties, function(e) {
6146                             e.computed ? a.push({
6147                                 key: s.recurse(e.key),
6148                                 computed: !0,
6149                                 value: s.recurse(e.value)
6150                             }) : a.push({
6151                                 key: e.key.type === _o.Identifier ? e.key.name : "" + e.key.value,
6152                                 computed: !1,
6153                                 value: s.recurse(e.value)
6154                             })
6155                         }),
6156                         function(e, n, r, i) {
6157                             for (var o = {}, s = 0; s < a.length; ++s) a[s].computed ? o[a[s].key(e, n, r, i)] = a[s].value(e, n, r, i) : o[a[s].key] = a[s].value(e, n, r, i);
6158                             return t ? {
6159                                 value: o
6160                             } : o
6161                         };
6162                 case _o.ThisExpression:
6163                     return function(e) {
6164                         return t ? {
6165                             value: e
6166                         } : e
6167                     };
6168                 case _o.LocalsExpression:
6169                     return function(e, n) {
6170                         return t ? {
6171                             value: n
6172                         } : n
6173                     };
6174                 case _o.NGValueParameter:
6175                     return function(e, n, r) {
6176                         return t ? {
6177                             value: r
6178                         } : r
6179                     }
6180             }
6181         },
6182         "unary+": function(e, t) {
6183             return function(n, r, i, o) {
6184                 var a = e(n, r, i, o);
6185                 return a = $(a) ? +a : 0, t ? {
6186                     value: a
6187                 } : a
6188             }
6189         },
6190         "unary-": function(e, t) {
6191             return function(n, r, i, o) {
6192                 var a = e(n, r, i, o);
6193                 return a = $(a) ? -a : -0, t ? {
6194                     value: a
6195                 } : a
6196             }
6197         },
6198         "unary!": function(e, t) {
6199             return function(n, r, i, o) {
6200                 var a = !e(n, r, i, o);
6201                 return t ? {
6202                     value: a
6203                 } : a
6204             }
6205         },
6206         "binary+": function(e, t, n) {
6207             return function(r, i, o, a) {
6208                 var s = sn(e(r, i, o, a), t(r, i, o, a));
6209                 return n ? {
6210                     value: s
6211                 } : s
6212             }
6213         },
6214         "binary-": function(e, t, n) {
6215             return function(r, i, o, a) {
6216                 var s = e(r, i, o, a),
6217                     c = t(r, i, o, a),
6218                     l = ($(s) ? s : 0) - ($(c) ? c : 0);
6219                 return n ? {
6220                     value: l
6221                 } : l
6222             }
6223         },
6224         "binary*": function(e, t, n) {
6225             return function(r, i, o, a) {
6226                 var s = e(r, i, o, a) * t(r, i, o, a);
6227                 return n ? {
6228                     value: s
6229                 } : s
6230             }
6231         },
6232         "binary/": function(e, t, n) {
6233             return function(r, i, o, a) {
6234                 var s = e(r, i, o, a) / t(r, i, o, a);
6235                 return n ? {
6236                     value: s
6237                 } : s
6238             }
6239         },
6240         "binary%": function(e, t, n) {
6241             return function(r, i, o, a) {
6242                 var s = e(r, i, o, a) % t(r, i, o, a);
6243                 return n ? {
6244                     value: s
6245                 } : s
6246             }
6247         },
6248         "binary===": function(e, t, n) {
6249             return function(r, i, o, a) {
6250                 var s = e(r, i, o, a) === t(r, i, o, a);
6251                 return n ? {
6252                     value: s
6253                 } : s
6254             }
6255         },
6256         "binary!==": function(e, t, n) {
6257             return function(r, i, o, a) {
6258                 var s = e(r, i, o, a) !== t(r, i, o, a);
6259                 return n ? {
6260                     value: s
6261                 } : s
6262             }
6263         },
6264         "binary==": function(e, t, n) {
6265             return function(r, i, o, a) {
6266                 var s = e(r, i, o, a) == t(r, i, o, a);
6267                 return n ? {
6268                     value: s
6269                 } : s
6270             }
6271         },
6272         "binary!=": function(e, t, n) {
6273             return function(r, i, o, a) {
6274                 var s = e(r, i, o, a) != t(r, i, o, a);
6275                 return n ? {
6276                     value: s
6277                 } : s
6278             }
6279         },
6280         "binary<": function(e, t, n) {
6281             return function(r, i, o, a) {
6282                 var s = e(r, i, o, a) < t(r, i, o, a);
6283                 return n ? {
6284                     value: s
6285                 } : s
6286             }
6287         },
6288         "binary>": function(e, t, n) {
6289             return function(r, i, o, a) {
6290                 var s = e(r, i, o, a) > t(r, i, o, a);
6291                 return n ? {
6292                     value: s
6293                 } : s
6294             }
6295         },
6296         "binary<=": function(e, t, n) {
6297             return function(r, i, o, a) {
6298                 var s = e(r, i, o, a) <= t(r, i, o, a);
6299                 return n ? {
6300                     value: s
6301                 } : s
6302             }
6303         },
6304         "binary>=": function(e, t, n) {
6305             return function(r, i, o, a) {
6306                 var s = e(r, i, o, a) >= t(r, i, o, a);
6307                 return n ? {
6308                     value: s
6309                 } : s
6310             }
6311         },
6312         "binary&&": function(e, t, n) {
6313             return function(r, i, o, a) {
6314                 var s = e(r, i, o, a) && t(r, i, o, a);
6315                 return n ? {
6316                     value: s
6317                 } : s
6318             }
6319         },
6320         "binary||": function(e, t, n) {
6321             return function(r, i, o, a) {
6322                 var s = e(r, i, o, a) || t(r, i, o, a);
6323                 return n ? {
6324                     value: s
6325                 } : s
6326             }
6327         },
6328         "ternary?:": function(e, t, n, r) {
6329             return function(i, o, a, s) {
6330                 var c = e(i, o, a, s) ? t(i, o, a, s) : n(i, o, a, s);
6331                 return r ? {
6332                     value: c
6333                 } : c
6334             }
6335         },
6336         value: function(e, t) {
6337             return function() {
6338                 return t ? {
6339                     context: void 0,
6340                     name: void 0,
6341                     value: e
6342                 } : e
6343             }
6344         },
6345         identifier: function(e, t, n) {
6346             return function(r, i, o, a) {
6347                 var s = i && e in i ? i : r;
6348                 n && 1 !== n && s && null == s[e] && (s[e] = {});
6349                 var c = s ? s[e] : void 0;
6350                 return t ? {
6351                     context: s,
6352                     name: e,
6353                     value: c
6354                 } : c
6355             }
6356         },
6357         computedMember: function(e, t, n, r) {
6358             return function(i, o, a, s) {
6359                 var c, l, u = e(i, o, a, s);
6360                 return null != u && (c = on(c = t(i, o, a, s)), r && 1 !== r && u && !u[c] && (u[c] = {}), l = u[c]), n ? {
6361                     context: u,
6362                     name: c,
6363                     value: l
6364                 } : l
6365             }
6366         },
6367         nonComputedMember: function(e, t, n, r) {
6368             return function(i, o, a, s) {
6369                 var c = e(i, o, a, s);
6370                 r && 1 !== r && c && null == c[t] && (c[t] = {});
6371                 var l = null != c ? c[t] : void 0;
6372                 return n ? {
6373                     context: c,
6374                     name: t,
6375                     value: l
6376                 } : l
6377             }
6378         },
6379         inputs: function(e, t) {
6380             return function(n, r, i, o) {
6381                 return o ? o[t] : e(n, r, i)
6382             }
6383         }
6384     }, bn.prototype = {
6385         constructor: bn,
6386         parse: function(e) {
6387             var t = this.ast.ast(e),
6388                 n = this.astCompiler.compile(t);
6389             return n.literal = pn(t), n.constant = mn(t), n
6390         }
6391     };
6392     var Co = r("$sce"),
6393         xo = {
6394             HTML: "html",
6395             CSS: "css",
6396             URL: "url",
6397             RESOURCE_URL: "resourceUrl",
6398             JS: "js"
6399         },
6400         ko = /_([a-z])/g,
6401         To = r("$compile"),
6402         Mo = e.document.createElement("a"),
6403         So = Ln(e.location.href);
6404     Un.$inject = ["$document"], Bn.$inject = ["$provide"];
6405     var Ao = 22,
6406         Oo = ".",
6407         Do = "0";
6408     Kn.$inject = ["$locale"], Zn.$inject = ["$locale"];
6409     var No = {
6410             yyyy: tr("FullYear", 4, 0, !1, !0),
6411             yy: tr("FullYear", 2, 0, !0, !0),
6412             y: tr("FullYear", 1, 0, !1, !0),
6413             MMMM: nr("Month"),
6414             MMM: nr("Month", !0),
6415             MM: tr("Month", 2, 1),
6416             M: tr("Month", 1, 1),
6417             LLLL: nr("Month", !1, !0),
6418             dd: tr("Date", 2),
6419             d: tr("Date", 1),
6420             HH: tr("Hours", 2),
6421             H: tr("Hours", 1),
6422             hh: tr("Hours", 2, -12),
6423             h: tr("Hours", 1, -12),
6424             mm: tr("Minutes", 2),
6425             m: tr("Minutes", 1),
6426             ss: tr("Seconds", 2),
6427             s: tr("Seconds", 1),
6428             sss: tr("Milliseconds", 3),
6429             EEEE: nr("Day"),
6430             EEE: nr("Day", !0),
6431             a: function(e, t) {
6432                 return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
6433             },
6434             Z: function(e, t, n) {
6435                 var r = -1 * n,
6436                     i = r >= 0 ? "+" : "";
6437                 return i += er(Math[r > 0 ? "floor" : "ceil"](r / 60), 2) + er(Math.abs(r % 60), 2)
6438             },
6439             ww: or(2),
6440             w: or(1),
6441             G: ar,
6442             GG: ar,
6443             GGG: ar,
6444             GGGG: function(e, t) {
6445                 return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
6446             }
6447         },
6448         Io = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,
6449         Ro = /^-?\d+$/;
6450     sr.$inject = ["$locale"];
6451     var Po = v(jr),
6452         Ho = v(Lr);
6453     dr.$inject = ["$parse"];
6454     var jo = v({
6455             restrict: "E",
6456             compile: function(e, t) {
6457                 if (!t.href && !t.xlinkHref) return function(e, t) {
6458                     if ("a" === t[0].nodeName.toLowerCase()) {
6459                         var n = "[object SVGAnimatedString]" === Yr.call(t.prop("href")) ? "xlink:href" : "href";
6460                         t.on("click", function(e) {
6461                             t.attr(n) || e.preventDefault()
6462                         })
6463                     }
6464                 }
6465             }
6466         }),
6467         Lo = {};
6468     o(Si, function(e, t) {
6469         function n(e, n, i) {
6470             e.$watch(i[r], function(e) {
6471                 i.$set(t, !!e)
6472             })
6473         }
6474         if ("multiple" !== e) {
6475             var r = yt("ng-" + t),
6476                 i = n;
6477             "checked" === e && (i = function(e, t, i) {
6478                 i.ngModel !== i[r] && n(e, 0, i)
6479             }), Lo[r] = function() {
6480                 return {
6481                     restrict: "A",
6482                     priority: 100,
6483                     link: i
6484                 }
6485             }
6486         }
6487     }), o(Oi, function(e, t) {
6488         Lo[t] = function() {
6489             return {
6490                 priority: 100,
6491                 link: function(e, n, r) {
6492                     if ("ngPattern" === t && "/" === r.ngPattern.charAt(0)) {
6493                         var i = r.ngPattern.match(Rr);
6494                         if (i) return void r.$set("ngPattern", new RegExp(i[1], i[2]))
6495                     }
6496                     e.$watch(r[t], function(e) {
6497                         r.$set(t, e)
6498                     })
6499                 }
6500             }
6501         }
6502     }), o(["src", "srcset", "href"], function(e) {
6503         var t = yt("ng-" + e);
6504         Lo[t] = function() {
6505             return {
6506                 priority: 99,
6507                 link: function(n, r, i) {
6508                     var o = e,
6509                         a = e;
6510                     "href" === e && "[object SVGAnimatedString]" === Yr.call(r.prop("href")) && (a = "xlinkHref", i.$attr[a] = "xlink:href", o = null), i.$observe(t, function(t) {
6511                         t ? (i.$set(a, t), Fr && o && r.prop(o, i[a])) : "href" === e && i.$set(a, null)
6512                     })
6513                 }
6514             }
6515         }
6516     });
6517     var Fo = {
6518             $addControl: m,
6519             $$renameControl: function(e, t) {
6520                 e.$name = t
6521             },
6522             $removeControl: m,
6523             $setValidity: m,
6524             $setDirty: m,
6525             $setPristine: m,
6526             $setSubmitted: m
6527         },
6528         qo = "ng-pending";
6529     hr.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"], hr.prototype = {
6530         $rollbackViewValue: function() {
6531             o(this.$$controls, function(e) {
6532                 e.$rollbackViewValue()
6533             })
6534         },
6535         $commitViewValue: function() {
6536             o(this.$$controls, function(e) {
6537                 e.$commitViewValue()
6538             })
6539         },
6540         $addControl: function(e) {
6541             me(e.$name, "input"), this.$$controls.push(e), e.$name && (this[e.$name] = e), e.$$parentForm = this
6542         },
6543         $$renameControl: function(e, t) {
6544             var n = e.$name;
6545             this[n] === e && delete this[n], this[t] = e, e.$name = t
6546         },
6547         $removeControl: function(e) {
6548             e.$name && this[e.$name] === e && delete this[e.$name], o(this.$pending, function(t, n) {
6549                 this.$setValidity(n, null, e)
6550             }, this), o(this.$error, function(t, n) {
6551                 this.$setValidity(n, null, e)
6552             }, this), o(this.$$success, function(t, n) {
6553                 this.$setValidity(n, null, e)
6554             }, this), U(this.$$controls, e), e.$$parentForm = Fo
6555         },
6556         $setDirty: function() {
6557             this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, xa), this.$dirty = !0, this.$pristine = !1, this.$$parentForm.$setDirty()
6558         },
6559         $setPristine: function() {
6560             this.$$animate.setClass(this.$$element, Ca, xa + " ng-submitted"), this.$dirty = !1, this.$pristine = !0, this.$submitted = !1, o(this.$$controls, function(e) {
6561                 e.$setPristine()
6562             })
6563         },
6564         $setUntouched: function() {
6565             o(this.$$controls, function(e) {
6566                 e.$setUntouched()
6567             })
6568         },
6569         $setSubmitted: function() {
6570             this.$$animate.addClass(this.$$element, "ng-submitted"), this.$submitted = !0, this.$$parentForm.$setSubmitted()
6571         }
6572     }, mr({
6573         clazz: hr,
6574         set: function(e, t, n) {
6575             var r = e[t];
6576             r ? -1 === r.indexOf(n) && r.push(n) : e[t] = [n]
6577         },
6578         unset: function(e, t, n) {
6579             var r = e[t];
6580             r && (U(r, n), 0 === r.length && delete e[t])
6581         }
6582     });
6583     var Uo = function(e) {
6584             return ["$timeout", "$parse", function(t, n) {
6585                 function r(e) {
6586                     return "" === e ? n('this[""]').assign : n(e).assign || m
6587                 }
6588                 return {
6589                     name: "form",
6590                     restrict: e ? "EAC" : "E",
6591                     require: ["form", "^^?form"],
6592                     controller: hr,
6593                     compile: function(n, i) {
6594                         n.addClass(Ca).addClass(wa);
6595                         var o = i.name ? "name" : !(!e || !i.ngForm) && "ngForm";
6596                         return {
6597                             pre: function(e, n, i, a) {
6598                                 var s = a[0];
6599                                 if (!("action" in i)) {
6600                                     var c = function(t) {
6601                                         e.$apply(function() {
6602                                             s.$commitViewValue(), s.$setSubmitted()
6603                                         }), t.preventDefault()
6604                                     };
6605                                     n[0].addEventListener("submit", c), n.on("$destroy", function() {
6606                                         t(function() {
6607                                             n[0].removeEventListener("submit", c)
6608                                         }, 0, !1)
6609                                     })
6610                                 }(a[1] || s.$$parentForm).$addControl(s);
6611                                 var l = o ? r(s.$name) : m;
6612                                 o && (l(e, s), i.$observe(o, function(t) {
6613                                     s.$name !== t && (l(e, void 0), s.$$parentForm.$$renameControl(s, t), (l = r(s.$name))(e, s))
6614                                 })), n.on("$destroy", function() {
6615                                     s.$$parentForm.$removeControl(s), l(e, void 0), d(s, Fo)
6616                                 })
6617                             }
6618                         }
6619                     }
6620                 }
6621             }]
6622         },
6623         Vo = Uo(),
6624         Bo = Uo(!0),
6625         zo = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,
6626         Wo = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
6627         Yo = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,
6628         Go = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
6629         Ko = /^(\d{4,})-(\d{2})-(\d{2})$/,
6630         Zo = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6631         Xo = /^(\d{4,})-W(\d\d)$/,
6632         Qo = /^(\d{4,})-(\d\d)$/,
6633         Jo = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6634         ea = "keydown wheel mousedown",
6635         ta = be();
6636     o("date,datetime-local,month,time,week".split(","), function(e) {
6637         ta[e] = !0
6638     });
6639     var na = {
6640             text: function(e, t, n, r, i, o) {
6641                 br(e, t, n, r, i, o), vr(r)
6642             },
6643             date: $r("date", Ko, yr(Ko, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
6644             "datetime-local": $r("datetimelocal", Zo, yr(Zo, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
6645             time: $r("time", Jo, yr(Jo, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
6646             week: $r("week", Xo, function(e, t) {
6647                 if (x(e)) return e;
6648                 if (E(e)) {
6649                     Xo.lastIndex = 0;
6650                     var n = Xo.exec(e);
6651                     if (n) {
6652                         var r = +n[1],
6653                             i = +n[2],
6654                             o = 0,
6655                             a = 0,
6656                             s = 0,
6657                             c = 0,
6658                             l = rr(r),
6659                             u = 7 * (i - 1);
6660                         return t && (o = t.getHours(), a = t.getMinutes(), s = t.getSeconds(), c = t.getMilliseconds()), new Date(r, 0, l.getDate() + u, o, a, s, c)
6661                     }
6662                 }
6663                 return NaN
6664             }, "yyyy-Www"),
6665             month: $r("month", Qo, yr(Qo, ["yyyy", "MM"]), "yyyy-MM"),
6666             number: function(e, t, n, r, i, o) {
6667                 _r(e, t, n, r), wr(r), br(e, t, n, r, i, o);
6668                 var a, s;
6669                 if (($(n.min) || n.ngMin) && (r.$validators.min = function(e) {
6670                         return r.$isEmpty(e) || y(a) || e >= a
6671                     }, n.$observe("min", function(e) {
6672                         a = Er(e), r.$validate()
6673                     })), ($(n.max) || n.ngMax) && (r.$validators.max = function(e) {
6674                         return r.$isEmpty(e) || y(s) || e <= s
6675                     }, n.$observe("max", function(e) {
6676                         s = Er(e), r.$validate()
6677                     })), $(n.step) || n.ngStep) {
6678                     var c;
6679                     r.$validators.step = function(e, t) {
6680                         return r.$isEmpty(t) || y(c) || kr(t, a || 0, c)
6681                     }, n.$observe("step", function(e) {
6682                         c = Er(e), r.$validate()
6683                     })
6684                 }
6685             },
6686             url: function(e, t, n, r, i, o) {
6687                 br(e, t, n, r, i, o), vr(r), r.$$parserName = "url", r.$validators.url = function(e, t) {
6688                     var n = e || t;
6689                     return r.$isEmpty(n) || Wo.test(n)
6690                 }
6691             },
6692             email: function(e, t, n, r, i, o) {
6693                 br(e, t, n, r, i, o), vr(r), r.$$parserName = "email", r.$validators.email = function(e, t) {
6694                     var n = e || t;
6695                     return r.$isEmpty(n) || Yo.test(n)
6696                 }
6697             },
6698             radio: function(e, t, n, r) {
6699                 var i = !n.ngTrim || "false" !== ti(n.ngTrim);
6700                 y(n.name) && t.attr("name", c());
6701                 t.on("click", function(e) {
6702                     var o;
6703                     t[0].checked && (o = n.value, i && (o = ti(o)), r.$setViewValue(o, e && e.type))
6704                 }), r.$render = function() {
6705                     var e = n.value;
6706                     i && (e = ti(e)), t[0].checked = e === r.$viewValue
6707                 }, n.$observe("value", r.$render)
6708             },
6709             range: function(e, t, n, r, i, o) {
6710                 function a(e, r) {
6711                     t.attr(e, n[e]), n.$observe(e, r)
6712                 }
6713                 _r(e, t, n, r), wr(r), br(e, t, n, r, i, o);
6714                 var s = r.$$hasNativeValidators && "range" === t[0].type,
6715                     c = s ? 0 : void 0,
6716                     l = s ? 100 : void 0,
6717                     u = s ? 1 : void 0,
6718                     d = t[0].validity,
6719                     f = $(n.min),
6720                     h = $(n.max),
6721                     p = $(n.step),
6722                     m = r.$render;
6723                 r.$render = s && $(d.rangeUnderflow) && $(d.rangeOverflow) ? function() {
6724                     m(), r.$setViewValue(t.val())
6725                 } : m, f && (r.$validators.min = s ? function() {
6726                     return !0
6727                 } : function(e, t) {
6728                     return r.$isEmpty(t) || y(c) || t >= c
6729                 }, a("min", function(e) {
6730                     if (c = Er(e), !Qr(r.$modelValue))
6731                         if (s) {
6732                             var n = t.val();
6733                             c > n && (n = c, t.val(n)), r.$setViewValue(n)
6734                         } else r.$validate()
6735                 })), h && (r.$validators.max = s ? function() {
6736                     return !0
6737                 } : function(e, t) {
6738                     return r.$isEmpty(t) || y(l) || t <= l
6739                 }, a("max", function(e) {
6740                     if (l = Er(e), !Qr(r.$modelValue))
6741                         if (s) {
6742                             var n = t.val();
6743                             l < n && (t.val(l), n = l < c ? c : l), r.$setViewValue(n)
6744                         } else r.$validate()
6745                 })), p && (r.$validators.step = s ? function() {
6746                     return !d.stepMismatch
6747                 } : function(e, t) {
6748                     return r.$isEmpty(t) || y(u) || kr(t, c || 0, u)
6749                 }, a("step", function(e) {
6750                     u = Er(e), Qr(r.$modelValue) || (s && r.$viewValue !== t.val() ? r.$setViewValue(t.val()) : r.$validate())
6751                 }))
6752             },
6753             checkbox: function(e, t, n, r, i, o, a, s) {
6754                 var c = Tr(s, e, "ngTrueValue", n.ngTrueValue, !0),
6755                     l = Tr(s, e, "ngFalseValue", n.ngFalseValue, !1);
6756                 t.on("click", function(e) {
6757                     r.$setViewValue(t[0].checked, e && e.type)
6758                 }), r.$render = function() {
6759                     t[0].checked = r.$viewValue
6760                 }, r.$isEmpty = function(e) {
6761                     return !1 === e
6762                 }, r.$formatters.push(function(e) {
6763                     return z(e, c)
6764                 }), r.$parsers.push(function(e) {
6765                     return e ? c : l
6766                 })
6767             },
6768             hidden: m,
6769             button: m,
6770             submit: m,
6771             reset: m,
6772             file: m
6773         },
6774         ra = ["$browser", "$sniffer", "$filter", "$parse", function(e, t, n, r) {
6775             return {
6776                 restrict: "E",
6777                 require: ["?ngModel"],
6778                 link: {
6779                     pre: function(i, o, a, s) {
6780                         s[0] && (na[jr(a.type)] || na.text)(i, o, a, s[0], t, e, n, r)
6781                     }
6782                 }
6783             }
6784         }],
6785         ia = /^(true|false|\d+)$/,
6786         oa = function() {
6787             function e(e, t, n) {
6788                 var r = $(n) ? n : 9 === Fr ? "" : null;
6789                 e.prop("value", r), t.$set("value", n)
6790             }
6791             return {
6792                 restrict: "A",
6793                 priority: 100,
6794                 compile: function(t, n) {
6795                     return ia.test(n.ngValue) ? function(t, n, r) {
6796                         e(n, r, t.$eval(r.ngValue))
6797                     } : function(t, n, r) {
6798                         t.$watch(r.ngValue, function(t) {
6799                             e(n, r, t)
6800                         })
6801                     }
6802                 }
6803             }
6804         },
6805         aa = ["$compile", function(e) {
6806             return {
6807                 restrict: "AC",
6808                 compile: function(t) {
6809                     return e.$$addBindingClass(t),
6810                         function(t, n, r) {
6811                             e.$$addBindingInfo(n, r.ngBind), n = n[0], t.$watch(r.ngBind, function(e) {
6812                                 n.textContent = ye(e)
6813                             })
6814                         }
6815                 }
6816             }
6817         }],
6818         sa = ["$interpolate", "$compile", function(e, t) {
6819             return {
6820                 compile: function(n) {
6821                     return t.$$addBindingClass(n),
6822                         function(n, r, i) {
6823                             var o = e(r.attr(i.$attr.ngBindTemplate));
6824                             t.$$addBindingInfo(r, o.expressions), r = r[0], i.$observe("ngBindTemplate", function(e) {
6825                                 r.textContent = y(e) ? "" : e
6826                             })
6827                         }
6828                 }
6829             }
6830         }],
6831         ca = ["$sce", "$parse", "$compile", function(e, t, n) {
6832             return {
6833                 restrict: "A",
6834                 compile: function(r, i) {
6835                     var o = t(i.ngBindHtml),
6836                         a = t(i.ngBindHtml, function(t) {
6837                             return e.valueOf(t)
6838                         });
6839                     return n.$$addBindingClass(r),
6840                         function(t, r, i) {
6841                             n.$$addBindingInfo(r, i.ngBindHtml), t.$watch(a, function() {
6842                                 var n = o(t);
6843                                 r.html(e.getTrustedHtml(n) || "")
6844                             })
6845                         }
6846                 }
6847             }
6848         }],
6849         la = v({
6850             restrict: "A",
6851             require: "ngModel",
6852             link: function(e, t, n, r) {
6853                 r.$viewChangeListeners.push(function() {
6854                     e.$eval(n.ngChange)
6855                 })
6856             }
6857         }),
6858         ua = Mr("", !0),
6859         da = Mr("Odd", 0),
6860         fa = Mr("Even", 1),
6861         ha = fr({
6862             compile: function(e, t) {
6863                 t.$set("ngCloak", void 0), e.removeClass("ng-cloak")
6864             }
6865         }),
6866         pa = [function() {
6867             return {
6868                 restrict: "A",
6869                 scope: !0,
6870                 controller: "@",
6871                 priority: 500
6872             }
6873         }],
6874         ma = {},
6875         ga = {
6876             blur: !0,
6877             focus: !0
6878         };
6879     o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(e) {
6880         var t = yt("ng-" + e);
6881         ma[t] = ["$parse", "$rootScope", function(n, r) {
6882             return {
6883                 restrict: "A",
6884                 compile: function(i, o) {
6885                     var a = n(o[t]);
6886                     return function(t, n) {
6887                         n.on(e, function(n) {
6888                             var i = function() {
6889                                 a(t, {
6890                                     $event: n
6891                                 })
6892                             };
6893                             ga[e] && r.$$phase ? t.$evalAsync(i) : t.$apply(i)
6894                         })
6895                     }
6896                 }
6897             }
6898         }]
6899     });
6900     var va = ["$animate", "$compile", function(e, t) {
6901             return {
6902                 multiElement: !0,
6903                 transclude: "element",
6904                 priority: 600,
6905                 terminal: !0,
6906                 restrict: "A",
6907                 $$tlb: !0,
6908                 link: function(n, r, i, o, a) {
6909                     var s, c, l;
6910                     n.$watch(i.ngIf, function(n) {
6911                         n ? c || a(function(n, o) {
6912                             c = o, n[n.length++] = t.$$createComment("end ngIf", i.ngIf), s = {
6913                                 clone: n
6914                             }, e.enter(n, r.parent(), r)
6915                         }) : (l && (l.remove(), l = null), c && (c.$destroy(), c = null), s && (l = ve(s.clone), e.leave(l).done(function(e) {
6916                             !1 !== e && (l = null)
6917                         }), s = null))
6918                     })
6919                 }
6920             }
6921         }],
6922         ba = ["$templateRequest", "$anchorScroll", "$animate", function(e, t, n) {
6923             return {
6924                 restrict: "ECA",
6925                 priority: 400,
6926                 terminal: !0,
6927                 transclude: "element",
6928                 controller: Zr.noop,
6929                 compile: function(r, i) {
6930                     var o = i.ngInclude || i.src,
6931                         a = i.onload || "",
6932                         s = i.autoscroll;
6933                     return function(r, i, c, l, u) {
6934                         var d, f, h, p = 0,
6935                             m = function() {
6936                                 f && (f.remove(), f = null), d && (d.$destroy(), d = null), h && (n.leave(h).done(function(e) {
6937                                     !1 !== e && (f = null)
6938                                 }), f = h, h = null)
6939                             };
6940                         r.$watch(o, function(o) {
6941                             var c = function(e) {
6942                                     !1 === e || !$(s) || s && !r.$eval(s) || t()
6943                                 },
6944                                 f = ++p;
6945                             o ? (e(o, !0).then(function(e) {
6946                                 if (!r.$$destroyed && f === p) {
6947                                     var t = r.$new();
6948                                     l.template = e;
6949                                     var s = u(t, function(e) {
6950                                         m(), n.enter(e, null, i).done(c)
6951                                     });
6952                                     h = s, (d = t).$emit("$includeContentLoaded", o), r.$eval(a)
6953                                 }
6954                             }, function() {
6955                                 r.$$destroyed || f === p && (m(), r.$emit("$includeContentError", o))
6956                             }), r.$emit("$includeContentRequested", o)) : (m(), l.template = null)
6957                         })
6958                     }
6959                 }
6960             }
6961         }],
6962         ya = ["$compile", function(t) {
6963             return {
6964                 restrict: "ECA",
6965                 priority: -400,
6966                 require: "ngInclude",
6967                 link: function(n, r, i, o) {
6968                     if (Yr.call(r[0]).match(/SVG/)) return r.empty(), void t(Ae(o.template, e.document).childNodes)(n, function(e) {
6969                         r.append(e)
6970                     }, {
6971                         futureParentElement: r
6972                     });
6973                     r.html(o.template), t(r.contents())(n)
6974                 }
6975             }
6976         }],
6977         $a = fr({
6978             priority: 450,
6979             compile: function() {
6980                 return {
6981                     pre: function(e, t, n) {
6982                         e.$eval(n.ngInit)
6983                     }
6984                 }
6985             }
6986         }),
6987         _a = function() {
6988             return {
6989                 restrict: "A",
6990                 priority: 100,
6991                 require: "ngModel",
6992                 link: function(e, t, n, r) {
6993                     var i = n.ngList || ", ",
6994                         a = "false" !== n.ngTrim,
6995                         s = a ? ti(i) : i;
6996                     r.$parsers.push(function(e) {
6997                         if (!y(e)) {
6998                             var t = [];
6999                             return e && o(e.split(s), function(e) {
7000                                 e && t.push(a ? ti(e) : e)
7001                             }), t
7002                         }
7003                     }), r.$formatters.push(function(e) {
7004                         if (Jr(e)) return e.join(i)
7005                     }), r.$isEmpty = function(e) {
7006                         return !e || !e.length
7007                     }
7008                 }
7009             }
7010         },
7011         wa = "ng-valid",
7012         Ea = "ng-invalid",
7013         Ca = "ng-pristine",
7014         xa = "ng-dirty",
7015         ka = r("ngModel");
7016     Sr.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"], Sr.prototype = {
7017         $$initGetterSetters: function() {
7018             if (this.$options.getOption("getterSetter")) {
7019                 var e = this.$$parse(this.$$attr.ngModel + "()"),
7020                     t = this.$$parse(this.$$attr.ngModel + "($$$p)");
7021                 this.$$ngModelGet = function(t) {
7022                     var n = this.$$parsedNgModel(t);
7023                     return T(n) && (n = e(t)), n
7024                 }, this.$$ngModelSet = function(e, n) {
7025                     T(this.$$parsedNgModel(e)) ? t(e, {
7026                         $$$p: n
7027                     }) : this.$$parsedNgModelAssign(e, n)
7028                 }
7029             } else if (!this.$$parsedNgModel.assign) throw ka("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, te(this.$$element))
7030         },
7031         $render: m,
7032         $isEmpty: function(e) {
7033             return y(e) || "" === e || null === e || e !== e
7034         },
7035         $$updateEmptyClasses: function(e) {
7036             this.$isEmpty(e) ? (this.$$animate.removeClass(this.$$element, "ng-not-empty"), this.$$animate.addClass(this.$$element, "ng-empty")) : (this.$$animate.removeClass(this.$$element, "ng-empty"), this.$$animate.addClass(this.$$element, "ng-not-empty"))
7037         },
7038         $setPristine: function() {
7039             this.$dirty = !1, this.$pristine = !0, this.$$animate.removeClass(this.$$element, xa), this.$$animate.addClass(this.$$element, Ca)
7040         },
7041         $setDirty: function() {
7042             this.$dirty = !0, this.$pristine = !1, this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, xa), this.$$parentForm.$setDirty()
7043         },
7044         $setUntouched: function() {
7045             this.$touched = !1, this.$untouched = !0, this.$$animate.setClass(this.$$element, "ng-untouched", "ng-touched")
7046         },
7047         $setTouched: function() {
7048             this.$touched = !0, this.$untouched = !1, this.$$animate.setClass(this.$$element, "ng-touched", "ng-untouched")
7049         },
7050         $rollbackViewValue: function() {
7051             this.$$timeout.cancel(this.$$pendingDebounce), this.$viewValue = this.$$lastCommittedViewValue, this.$render()
7052         },
7053         $validate: function() {
7054             if (!Qr(this.$modelValue)) {
7055                 var e = this.$$lastCommittedViewValue,
7056                     t = this.$$rawModelValue,
7057                     n = this.$valid,
7058                     r = this.$modelValue,
7059                     i = this.$options.getOption("allowInvalid"),
7060                     o = this;
7061                 this.$$runValidators(t, e, function(e) {
7062                     i || n === e || (o.$modelValue = e ? t : void 0, o.$modelValue !== r && o.$$writeModelToScope())
7063                 })
7064             }
7065         },
7066         $$runValidators: function(e, t, n) {
7067             function r(e, t) {
7068                 a === s.$$currentValidationRunId && s.$setValidity(e, t)
7069             }
7070
7071             function i(e) {
7072                 a === s.$$currentValidationRunId && n(e)
7073             }
7074             var a = ++this.$$currentValidationRunId,
7075                 s = this;
7076             ! function() {
7077                 var e = s.$$parserName || "parse";
7078                 return y(s.$$parserValid) ? (r(e, null), !0) : (s.$$parserValid || (o(s.$validators, function(e, t) {
7079                     r(t, null)
7080                 }), o(s.$asyncValidators, function(e, t) {
7081                     r(t, null)
7082                 })), r(e, s.$$parserValid), s.$$parserValid)
7083             }() ? i(!1): function() {
7084                 var n = !0;
7085                 return o(s.$validators, function(i, o) {
7086                     var a = Boolean(i(e, t));
7087                     n = n && a, r(o, a)
7088                 }), !!n || (o(s.$asyncValidators, function(e, t) {
7089                     r(t, null)
7090                 }), !1)
7091             }() ? function() {
7092                 var n = [],
7093                     a = !0;
7094                 o(s.$asyncValidators, function(i, o) {
7095                     var s = i(e, t);
7096                     if (!R(s)) throw ka("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", s);
7097                     r(o, void 0), n.push(s.then(function() {
7098                         r(o, !0)
7099                     }, function() {
7100                         a = !1, r(o, !1)
7101                     }))
7102                 }), n.length ? s.$$q.all(n).then(function() {
7103                     i(a)
7104                 }, m) : i(!0)
7105             }() : i(!1)
7106         },
7107         $commitViewValue: function() {
7108             var e = this.$viewValue;
7109             this.$$timeout.cancel(this.$$pendingDebounce), (this.$$lastCommittedViewValue !== e || "" === e && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(e), this.$$lastCommittedViewValue = e, this.$pristine && this.$setDirty(), this.$$parseAndValidate())
7110         },
7111         $$parseAndValidate: function() {
7112             function e() {
7113                 n.$modelValue !== i && n.$$writeModelToScope()
7114             }
7115             var t = this.$$lastCommittedViewValue,
7116                 n = this;
7117             if (this.$$parserValid = !y(t) || void 0, this.$$parserValid)
7118                 for (var r = 0; r < this.$parsers.length; r++)
7119                     if (t = this.$parsers[r](t), y(t)) {
7120                         this.$$parserValid = !1;
7121                         break
7122                     }
7123             Qr(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
7124             var i = this.$modelValue,
7125                 o = this.$options.getOption("allowInvalid");
7126             this.$$rawModelValue = t, o && (this.$modelValue = t, e()), this.$$runValidators(t, this.$$lastCommittedViewValue, function(r) {
7127                 o || (n.$modelValue = r ? t : void 0, e())
7128             })
7129         },
7130         $$writeModelToScope: function() {
7131             this.$$ngModelSet(this.$$scope, this.$modelValue), o(this.$viewChangeListeners, function(e) {
7132                 try {
7133                     e()
7134                 } catch (e) {
7135                     this.$$exceptionHandler(e)
7136                 }
7137             }, this)
7138         },
7139         $setViewValue: function(e, t) {
7140             this.$viewValue = e, this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(t)
7141         },
7142         $$debounceViewValueCommit: function(e) {
7143             var t = this.$options.getOption("debounce");
7144             C(t[e]) ? t = t[e] : C(t.default) && (t = t.default), this.$$timeout.cancel(this.$$pendingDebounce);
7145             var n = this;
7146             t > 0 ? this.$$pendingDebounce = this.$$timeout(function() {
7147                 n.$commitViewValue()
7148             }, t) : this.$$scope.$root.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
7149                 n.$commitViewValue()
7150             })
7151         },
7152         $overrideModelOptions: function(e) {
7153             this.$options = this.$options.createChild(e)
7154         }
7155     }, mr({
7156         clazz: Sr,
7157         set: function(e, t) {
7158             e[t] = !0
7159         },
7160         unset: function(e, t) {
7161             delete e[t]
7162         }
7163     });
7164     var Ta, Ma = ["$rootScope", function(e) {
7165             return {
7166                 restrict: "A",
7167                 require: ["ngModel", "^?form", "^?ngModelOptions"],
7168                 controller: Sr,
7169                 priority: 1,
7170                 compile: function(t) {
7171                     return t.addClass(Ca).addClass("ng-untouched").addClass(wa), {
7172                         pre: function(e, t, n, r) {
7173                             var i = r[0],
7174                                 o = r[1] || i.$$parentForm,
7175                                 a = r[2];
7176                             a && (i.$options = a.$options), i.$$initGetterSetters(), o.$addControl(i), n.$observe("name", function(e) {
7177                                 i.$name !== e && i.$$parentForm.$$renameControl(i, e)
7178                             }), e.$on("$destroy", function() {
7179                                 i.$$parentForm.$removeControl(i)
7180                             })
7181                         },
7182                         post: function(t, n, r, i) {
7183                             function o() {
7184                                 a.$setTouched()
7185                             }
7186                             var a = i[0];
7187                             a.$options.getOption("updateOn") && n.on(a.$options.getOption("updateOn"), function(e) {
7188                                 a.$$debounceViewValueCommit(e && e.type)
7189                             }), n.on("blur", function() {
7190                                 a.$touched || (e.$$phase ? t.$evalAsync(o) : t.$apply(o))
7191                             })
7192                         }
7193                     }
7194                 }
7195             }
7196         }],
7197         Sa = /(\s+|^)default(\s+|$)/;
7198     Or.prototype = {
7199         getOption: function(e) {
7200             return this.$$options[e]
7201         },
7202         createChild: function(e) {
7203             var t = !1;
7204             return e = d({}, e), o(e, function(n, r) {
7205                 "$inherit" === n ? "*" === r ? t = !0 : (e[r] = this.$$options[r], "updateOn" === r && (e.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === r && (e.updateOnDefault = !1, e[r] = ti(n.replace(Sa, function() {
7206                     return e.updateOnDefault = !0, " "
7207                 })))
7208             }, this), t && (delete e["*"], Dr(e, this.$$options)), Dr(e, Ta.$$options), new Or(e)
7209         }
7210     }, Ta = new Or({
7211         updateOn: "",
7212         updateOnDefault: !0,
7213         debounce: 0,
7214         getterSetter: !1,
7215         allowInvalid: !1,
7216         timezone: null
7217     });
7218     var Aa = function() {
7219             function e(e, t) {
7220                 this.$$attrs = e, this.$$scope = t
7221             }
7222             return e.$inject = ["$attrs", "$scope"], e.prototype = {
7223                 $onInit: function() {
7224                     var e = this.parentCtrl ? this.parentCtrl.$options : Ta,
7225                         t = this.$$scope.$eval(this.$$attrs.ngModelOptions);
7226                     this.$options = e.createChild(t)
7227                 }
7228             }, {
7229                 restrict: "A",
7230                 priority: 10,
7231                 require: {
7232                     parentCtrl: "?^^ngModelOptions"
7233                 },
7234                 bindToController: !0,
7235                 controller: e
7236             }
7237         },
7238         Oa = fr({
7239             terminal: !0,
7240             priority: 1e3
7241         }),
7242         Da = r("ngOptions"),
7243         Na = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
7244         Ia = ["$compile", "$document", "$parse", function(t, n, r) {
7245             function a(e, t, n) {
7246                 function o(e, t, n, r, i) {
7247                     this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
7248                 }
7249
7250                 function a(e) {
7251                     var t;
7252                     if (!l && i(e)) t = e;
7253                     else {
7254                         t = [];
7255                         for (var n in e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n)
7256                     }
7257                     return t
7258                 }
7259                 var s = e.match(Na);
7260                 if (!s) throw Da("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, te(t));
7261                 var c = s[5] || s[7],
7262                     l = s[6],
7263                     u = / as /.test(s[0]) && s[1],
7264                     d = s[9],
7265                     f = r(s[2] ? s[1] : c),
7266                     h = u && r(u) || f,
7267                     p = d && r(d),
7268                     m = d ? function(e, t) {
7269                         return p(n, t)
7270                     } : function(e) {
7271                         return nt(e)
7272                     },
7273                     g = function(e, t) {
7274                         return m(e, w(e, t))
7275                     },
7276                     v = r(s[2] || s[1]),
7277                     b = r(s[3] || ""),
7278                     y = r(s[4] || ""),
7279                     $ = r(s[8]),
7280                     _ = {},
7281                     w = l ? function(e, t) {
7282                         return _[l] = t, _[c] = e, _
7283                     } : function(e) {
7284                         return _[c] = e, _
7285                     };
7286                 return {
7287                     trackBy: d,
7288                     getTrackByValue: g,
7289                     getWatchables: r($, function(e) {
7290                         for (var t = [], r = a(e = e || []), i = r.length, o = 0; o < i; o++) {
7291                             var c = e === r ? o : r[o],
7292                                 l = e[c],
7293                                 u = w(l, c),
7294                                 d = m(l, u);
7295                             if (t.push(d), s[2] || s[1]) {
7296                                 var f = v(n, u);
7297                                 t.push(f)
7298                             }
7299                             if (s[4]) {
7300                                 var h = y(n, u);
7301                                 t.push(h)
7302                             }
7303                         }
7304                         return t
7305                     }),
7306                     getOptions: function() {
7307                         for (var e = [], t = {}, r = $(n) || [], i = a(r), s = i.length, c = 0; c < s; c++) {
7308                             var l = r === i ? c : i[c],
7309                                 u = w(r[l], l),
7310                                 f = h(n, u),
7311                                 p = m(f, u),
7312                                 _ = new o(p, f, v(n, u), b(n, u), y(n, u));
7313                             e.push(_), t[p] = _
7314                         }
7315                         return {
7316                             items: e,
7317                             selectValueMap: t,
7318                             getOptionFromViewValue: function(e) {
7319                                 return t[g(e)]
7320                             },
7321                             getViewValueFromOption: function(e) {
7322                                 return d ? V(e.viewValue) : e.viewValue
7323                             }
7324                         }
7325                     }
7326                 }
7327             }
7328             var s = e.document.createElement("option"),
7329                 c = e.document.createElement("optgroup");
7330             return {
7331                 restrict: "A",
7332                 terminal: !0,
7333                 require: ["select", "ngModel"],
7334                 link: {
7335                     pre: function(e, t, n, r) {
7336                         r[0].registerOption = m
7337                     },
7338                     post: function(e, r, i, l) {
7339                         function u(e, t) {
7340                             var n = s.cloneNode(!1);
7341                             t.appendChild(n), f(e, n)
7342                         }
7343
7344                         function d(e) {
7345                             var t = _.getOptionFromViewValue(e),
7346                                 n = t && t.element;
7347                             return n && !n.selected && (n.selected = !0), t
7348                         }
7349
7350                         function f(e, t) {
7351                             e.element = t, t.disabled = e.disabled, e.label !== t.label && (t.label = e.label, t.textContent = e.label), t.value = e.selectValue
7352                         }
7353                         for (var h = l[0], p = l[1], m = i.multiple, g = 0, v = r.children(), b = v.length; g < b; g++)
7354                             if ("" === v[g].value) {
7355                                 h.hasEmptyOption = !0, h.emptyOption = v.eq(g);
7356                                 break
7357                             }
7358                         r.empty();
7359                         var y = !!h.emptyOption;
7360                         qr(s.cloneNode(!1)).val("?");
7361                         var _, w = a(i.ngOptions, r, e),
7362                             E = n[0].createDocumentFragment();
7363                         h.generateUnknownOptionValue = function(e) {
7364                             return "?"
7365                         }, m ? (h.writeValue = function(e) {
7366                             if (_) {
7367                                 var t = e && e.map(d) || [];
7368                                 _.items.forEach(function(e) {
7369                                     e.element.selected && !q(t, e) && (e.element.selected = !1)
7370                                 })
7371                             }
7372                         }, h.readValue = function() {
7373                             var e = [];
7374                             return o(r.val() || [], function(t) {
7375                                 var n = _.selectValueMap[t];
7376                                 n && !n.disabled && e.push(_.getViewValueFromOption(n))
7377                             }), e
7378                         }, w.trackBy && e.$watchCollection(function() {
7379                             if (Jr(p.$viewValue)) return p.$viewValue.map(function(e) {
7380                                 return w.getTrackByValue(e)
7381                             })
7382                         }, function() {
7383                             p.$render()
7384                         })) : (h.writeValue = function(e) {
7385                             if (_) {
7386                                 var t = r[0].options[r[0].selectedIndex],
7387                                     n = _.getOptionFromViewValue(e);
7388                                 t && t.removeAttribute("selected"), n ? (r[0].value !== n.selectValue && (h.removeUnknownOption(), r[0].value = n.selectValue, n.element.selected = !0), n.element.setAttribute("selected", "selected")) : h.selectUnknownOrEmptyOption(e)
7389                             }
7390                         }, h.readValue = function() {
7391                             var e = _.selectValueMap[r.val()];
7392                             return e && !e.disabled ? (h.unselectEmptyOption(), h.removeUnknownOption(), _.getViewValueFromOption(e)) : null
7393                         }, w.trackBy && e.$watch(function() {
7394                             return w.getTrackByValue(p.$viewValue)
7395                         }, function() {
7396                             p.$render()
7397                         })), y && (t(h.emptyOption)(e), r.prepend(h.emptyOption), h.emptyOption[0].nodeType === fi ? (h.hasEmptyOption = !1, h.registerOption = function(e, t) {
7398                             "" === t.val() && (h.hasEmptyOption = !0, h.emptyOption = t, h.emptyOption.removeClass("ng-scope"), p.$render(), t.on("$destroy", function() {
7399                                 var e = h.$isEmptyOptionSelected();
7400                                 h.hasEmptyOption = !1, h.emptyOption = void 0, e && p.$render()
7401                             }))
7402                         }) : h.emptyOption.removeClass("ng-scope")), e.$watchCollection(w.getWatchables, function() {
7403                             var e = _ && h.readValue();
7404                             if (_)
7405                                 for (var t = _.items.length - 1; t >= 0; t--) {
7406                                     var n = _.items[t];
7407                                     Ye($(n.group) ? n.element.parentNode : n.element)
7408                                 }
7409                             var i = {};
7410                             if ((_ = w.getOptions()).items.forEach(function(e) {
7411                                     var t;
7412                                     $(e.group) ? ((t = i[e.group]) || (t = c.cloneNode(!1), E.appendChild(t), t.label = null === e.group ? "null" : e.group, i[e.group] = t), u(e, t)) : u(e, E)
7413                                 }), r[0].appendChild(E), p.$render(), !p.$isEmpty(e)) {
7414                                 var o = h.readValue();
7415                                 (w.trackBy || m ? z(e, o) : e === o) || (p.$setViewValue(o), p.$render())
7416                             }
7417                         })
7418                     }
7419                 }
7420             }
7421         }],
7422         Ra = ["$locale", "$interpolate", "$log", function(e, t, n) {
7423             var r = /{}/g,
7424                 i = /^when(Minus)?(.+)$/;
7425             return {
7426                 link: function(a, s, c) {
7427                     function l(e) {
7428                         s.text(e || "")
7429                     }
7430                     var u, d = c.count,
7431                         f = c.$attr.when && s.attr(c.$attr.when),
7432                         h = c.offset || 0,
7433                         p = a.$eval(f) || {},
7434                         g = {},
7435                         v = t.startSymbol(),
7436                         b = t.endSymbol(),
7437                         $ = v + d + "-" + h + b,
7438                         _ = Zr.noop;
7439                     o(c, function(e, t) {
7440                         var n = i.exec(t);
7441                         if (n) {
7442                             var r = (n[1] ? "-" : "") + jr(n[2]);
7443                             p[r] = s.attr(c.$attr[t])
7444                         }
7445                     }), o(p, function(e, n) {
7446                         g[n] = t(e.replace(r, $))
7447                     }), a.$watch(d, function(t) {
7448                         var r = parseFloat(t),
7449                             i = Qr(r);
7450                         if (i || r in p || (r = e.pluralCat(r - h)), !(r === u || i && Qr(u))) {
7451                             _();
7452                             var o = g[r];
7453                             y(o) ? (null != t && n.debug("ngPluralize: no rule defined for '" + r + "' in " + f), _ = m, l()) : _ = a.$watch(o, l), u = r
7454                         }
7455                     })
7456                 }
7457             }
7458         }],
7459         Pa = ["$parse", "$animate", "$compile", function(e, t, n) {
7460             var a = r("ngRepeat"),
7461                 s = function(e, t, n, r, i, o, a) {
7462                     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))
7463                 },
7464                 c = function(e) {
7465                     return e.clone[0]
7466                 },
7467                 l = function(e) {
7468                     return e.clone[e.clone.length - 1]
7469                 };
7470             return {
7471                 restrict: "A",
7472                 multiElement: !0,
7473                 transclude: "element",
7474                 priority: 1e3,
7475                 terminal: !0,
7476                 $$tlb: !0,
7477                 compile: function(r, u) {
7478                     var d = u.ngRepeat,
7479                         f = n.$$createComment("end ngRepeat", d),
7480                         h = d.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
7481                     if (!h) throw a("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", d);
7482                     var p = h[1],
7483                         m = h[2],
7484                         g = h[3],
7485                         v = h[4];
7486                     if (!(h = p.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/))) throw a("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", p);
7487                     var b = h[3] || h[1],
7488                         y = h[2];
7489                     if (g && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(g) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(g))) throw a("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", g);
7490                     var $, _, w, E, C = {
7491                         $id: nt
7492                     };
7493                     return v ? $ = e(v) : (w = function(e, t) {
7494                             return nt(t)
7495                         }, E = function(e) {
7496                             return e
7497                         }),
7498                         function(e, n, r, u, h) {
7499                             $ && (_ = function(t, n, r) {
7500                                 return y && (C[y] = t), C[b] = n, C.$index = r, $(e, C)
7501                             });
7502                             var p = be();
7503                             e.$watchCollection(m, function(r) {
7504                                 var u, m, v, $, C, x, k, T, M, S, A, O, D = n[0],
7505                                     N = be();
7506                                 if (g && (e[g] = r), i(r)) M = r, T = _ || w;
7507                                 else {
7508                                     T = _ || E, M = [];
7509                                     for (var I in r) Hr.call(r, I) && "$" !== I.charAt(0) && M.push(I)
7510                                 }
7511                                 for ($ = M.length, A = new Array($), u = 0; u < $; u++)
7512                                     if (C = r === M ? u : M[u], x = r[C], k = T(C, x, u), p[k]) S = p[k], delete p[k], N[k] = S, A[u] = S;
7513                                     else {
7514                                         if (N[k]) throw o(A, function(e) {
7515                                             e && e.scope && (p[e.id] = e)
7516                                         }), a("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", d, k, x);
7517                                         A[u] = {
7518                                             id: k,
7519                                             scope: void 0,
7520                                             clone: void 0
7521                                         }, N[k] = !0
7522                                     }
7523                                 for (var R in p) {
7524                                     if (S = p[R], O = ve(S.clone), t.leave(O), O[0].parentNode)
7525                                         for (u = 0, m = O.length; u < m; u++) O[u].$$NG_REMOVED = !0;
7526                                     S.scope.$destroy()
7527                                 }
7528                                 for (u = 0; u < $; u++)
7529                                     if (C = r === M ? u : M[u], x = r[C], (S = A[u]).scope) {
7530                                         v = D;
7531                                         do {
7532                                             v = v.nextSibling
7533                                         } while (v && v.$$NG_REMOVED);
7534                                         c(S) !== v && t.move(ve(S.clone), null, D), D = l(S), s(S.scope, u, b, x, y, C, $)
7535                                     } else h(function(e, n) {
7536                                         S.scope = n;
7537                                         var r = f.cloneNode(!1);
7538                                         e[e.length++] = r, t.enter(e, null, D), D = r, S.clone = e, N[S.id] = S, s(S.scope, u, b, x, y, C, $)
7539                                     });
7540                                 p = N
7541                             })
7542                         }
7543                 }
7544             }
7545         }],
7546         Ha = ["$animate", function(e) {
7547             return {
7548                 restrict: "A",
7549                 multiElement: !0,
7550                 link: function(t, n, r) {
7551                     t.$watch(r.ngShow, function(t) {
7552                         e[t ? "removeClass" : "addClass"](n, "ng-hide", {
7553                             tempClasses: "ng-hide-animate"
7554                         })
7555                     })
7556                 }
7557             }
7558         }],
7559         ja = ["$animate", function(e) {
7560             return {
7561                 restrict: "A",
7562                 multiElement: !0,
7563                 link: function(t, n, r) {
7564                     t.$watch(r.ngHide, function(t) {
7565                         e[t ? "addClass" : "removeClass"](n, "ng-hide", {
7566                             tempClasses: "ng-hide-animate"
7567                         })
7568                     })
7569                 }
7570             }
7571         }],
7572         La = fr(function(e, t, n) {
7573             e.$watch(n.ngStyle, function(e, n) {
7574                 n && e !== n && o(n, function(e, n) {
7575                     t.css(n, "")
7576                 }), e && t.css(e)
7577             }, !0)
7578         }),
7579         Fa = ["$animate", "$compile", function(e, t) {
7580             return {
7581                 require: "ngSwitch",
7582                 controller: ["$scope", function() {
7583                     this.cases = {}
7584                 }],
7585                 link: function(n, r, i, a) {
7586                     var s = i.ngSwitch || i.on,
7587                         c = [],
7588                         l = [],
7589                         u = [],
7590                         d = [],
7591                         f = function(e, t) {
7592                             return function(n) {
7593                                 !1 !== n && e.splice(t, 1)
7594                             }
7595                         };
7596                     n.$watch(s, function(n) {
7597                         for (var r, i; u.length;) e.cancel(u.pop());
7598                         for (r = 0, i = d.length; r < i; ++r) {
7599                             var s = ve(l[r].clone);
7600                             d[r].$destroy(), (u[r] = e.leave(s)).done(f(u, r))
7601                         }
7602                         l.length = 0, d.length = 0, (c = a.cases["!" + n] || a.cases["?"]) && o(c, function(n) {
7603                             n.transclude(function(r, i) {
7604                                 d.push(i);
7605                                 var o = n.element;
7606                                 r[r.length++] = t.$$createComment("end ngSwitchWhen");
7607                                 var a = {
7608                                     clone: r
7609                                 };
7610                                 l.push(a), e.enter(r, o.parent(), o)
7611                             })
7612                         })
7613                     })
7614                 }
7615             }
7616         }],
7617         qa = fr({
7618             transclude: "element",
7619             priority: 1200,
7620             require: "^ngSwitch",
7621             multiElement: !0,
7622             link: function(e, t, n, r, i) {
7623                 o(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter(function(e, t, n) {
7624                     return n[t - 1] !== e
7625                 }), function(e) {
7626                     r.cases["!" + e] = r.cases["!" + e] || [], r.cases["!" + e].push({
7627                         transclude: i,
7628                         element: t
7629                     })
7630                 })
7631             }
7632         }),
7633         Ua = fr({
7634             transclude: "element",
7635             priority: 1200,
7636             require: "^ngSwitch",
7637             multiElement: !0,
7638             link: function(e, t, n, r, i) {
7639                 r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
7640                     transclude: i,
7641                     element: t
7642                 })
7643             }
7644         }),
7645         Va = r("ngTransclude"),
7646         Ba = ["$compile", function(e) {
7647             return {
7648                 restrict: "EAC",
7649                 terminal: !0,
7650                 compile: function(t) {
7651                     var n = e(t.contents());
7652                     return t.empty(),
7653                         function(e, t, r, i, o) {
7654                             function a() {
7655                                 n(e, function(e) {
7656                                     t.append(e)
7657                                 })
7658                             }
7659
7660                             function s(e) {
7661                                 for (var t = 0, n = e.length; t < n; t++) {
7662                                     var r = e[t];
7663                                     if (r.nodeType !== di || r.nodeValue.trim()) return !0
7664                                 }
7665                             }
7666                             if (!o) throw Va("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", te(t));
7667                             r.ngTransclude === r.$attr.ngTransclude && (r.ngTransclude = "");
7668                             var c = r.ngTransclude || r.ngTranscludeSlot;
7669                             o(function(e, n) {
7670                                 e.length && s(e) ? t.append(e) : (a(), n.$destroy())
7671                             }, null, c), c && !o.isSlotFilled(c) && a()
7672                         }
7673                 }
7674             }
7675         }],
7676         za = ["$templateCache", function(e) {
7677             return {
7678                 restrict: "E",
7679                 terminal: !0,
7680                 compile: function(t, n) {
7681                     if ("text/ng-template" === n.type) {
7682                         var r = n.id,
7683                             i = t[0].text;
7684                         e.put(r, i)
7685                     }
7686                 }
7687             }
7688         }],
7689         Wa = {
7690             $setViewValue: m,
7691             $render: m
7692         },
7693         Ya = ["$element", "$scope", function(t, n) {
7694             function r() {
7695                 s || (s = !0, n.$$postDigest(function() {
7696                     s = !1, o.ngModelCtrl.$render()
7697                 }))
7698             }
7699
7700             function i(e) {
7701                 c || (c = !0, n.$$postDigest(function() {
7702                     n.$$destroyed || (c = !1, o.ngModelCtrl.$setViewValue(o.readValue()), e && o.ngModelCtrl.$render())
7703                 }))
7704             }
7705             var o = this,
7706                 a = new Ni;
7707             o.selectValueMap = {}, o.ngModelCtrl = Wa, o.multiple = !1, o.unknownOption = qr(e.document.createElement("option")), o.hasEmptyOption = !1, o.emptyOption = void 0, o.renderUnknownOption = function(e) {
7708                 var n = o.generateUnknownOptionValue(e);
7709                 o.unknownOption.val(n), t.prepend(o.unknownOption), Nr(o.unknownOption, !0), t.val(n)
7710             }, o.updateUnknownOption = function(e) {
7711                 var n = o.generateUnknownOptionValue(e);
7712                 o.unknownOption.val(n), Nr(o.unknownOption, !0), t.val(n)
7713             }, o.generateUnknownOptionValue = function(e) {
7714                 return "? " + nt(e) + " ?"
7715             }, o.removeUnknownOption = function() {
7716                 o.unknownOption.parent() && o.unknownOption.remove()
7717             }, o.selectEmptyOption = function() {
7718                 o.emptyOption && (t.val(""), Nr(o.emptyOption, !0))
7719             }, o.unselectEmptyOption = function() {
7720                 o.hasEmptyOption && Nr(o.emptyOption, !1)
7721             }, n.$on("$destroy", function() {
7722                 o.renderUnknownOption = m
7723             }), o.readValue = function() {
7724                 var e = t.val(),
7725                     n = e in o.selectValueMap ? o.selectValueMap[e] : e;
7726                 return o.hasOption(n) ? n : null
7727             }, o.writeValue = function(e) {
7728                 var n = t[0].options[t[0].selectedIndex];
7729                 if (n && Nr(qr(n), !1), o.hasOption(e)) {
7730                     o.removeUnknownOption();
7731                     var r = nt(e);
7732                     t.val(r in o.selectValueMap ? r : e);
7733                     var i = t[0].options[t[0].selectedIndex];
7734                     Nr(qr(i), !0)
7735                 } else o.selectUnknownOrEmptyOption(e)
7736             }, o.addOption = function(e, t) {
7737                 if (t[0].nodeType !== fi) {
7738                     me(e, '"option value"'), "" === e && (o.hasEmptyOption = !0, o.emptyOption = t);
7739                     var n = a.get(e) || 0;
7740                     a.set(e, n + 1), r()
7741                 }
7742             }, o.removeOption = function(e) {
7743                 var t = a.get(e);
7744                 t && (1 === t ? (a.delete(e), "" === e && (o.hasEmptyOption = !1, o.emptyOption = void 0)) : a.set(e, t - 1))
7745             }, o.hasOption = function(e) {
7746                 return !!a.get(e)
7747             }, o.$hasEmptyOption = function() {
7748                 return o.hasEmptyOption
7749             }, o.$isUnknownOptionSelected = function() {
7750                 return t[0].options[0] === o.unknownOption[0]
7751             }, o.$isEmptyOptionSelected = function() {
7752                 return o.hasEmptyOption && t[0].options[t[0].selectedIndex] === o.emptyOption[0]
7753             }, o.selectUnknownOrEmptyOption = function(e) {
7754                 null == e && o.emptyOption ? (o.removeUnknownOption(), o.selectEmptyOption()) : o.unknownOption.parent().length ? o.updateUnknownOption(e) : o.renderUnknownOption(e)
7755             };
7756             var s = !1,
7757                 c = !1;
7758             o.registerOption = function(e, t, n, a, s) {
7759                 if (n.$attr.ngValue) {
7760                     var c, l = NaN;
7761                     n.$observe("value", function(e) {
7762                         var n, r = t.prop("selected");
7763                         $(l) && (o.removeOption(c), delete o.selectValueMap[l], n = !0), l = nt(e), c = e, o.selectValueMap[l] = e, o.addOption(e, t), t.attr("value", l), n && r && i()
7764                     })
7765                 } else a ? n.$observe("value", function(e) {
7766                     o.readValue();
7767                     var n, r = t.prop("selected");
7768                     $(c) && (o.removeOption(c), n = !0), c = e, o.addOption(e, t), n && r && i()
7769                 }) : s ? e.$watch(s, function(e, r) {
7770                     n.$set("value", e);
7771                     var a = t.prop("selected");
7772                     r !== e && o.removeOption(r), o.addOption(e, t), r && a && i()
7773                 }) : o.addOption(n.value, t);
7774                 n.$observe("disabled", function(e) {
7775                     ("true" === e || e && t.prop("selected")) && (o.multiple ? i(!0) : (o.ngModelCtrl.$setViewValue(null), o.ngModelCtrl.$render()))
7776                 }), t.on("$destroy", function() {
7777                     var e = o.readValue(),
7778                         t = n.value;
7779                     o.removeOption(t), r(), (o.multiple && e && -1 !== e.indexOf(t) || e === t) && i(!0)
7780                 })
7781             }
7782         }],
7783         Ga = function() {
7784             return {
7785                 restrict: "E",
7786                 require: ["select", "?ngModel"],
7787                 controller: Ya,
7788                 priority: 1,
7789                 link: {
7790                     pre: function(e, t, n, r) {
7791                         var i = r[0],
7792                             a = r[1];
7793                         if (a) {
7794                             if (i.ngModelCtrl = a, t.on("change", function() {
7795                                     i.removeUnknownOption(), e.$apply(function() {
7796                                         a.$setViewValue(i.readValue())
7797                                     })
7798                                 }), n.multiple) {
7799                                 i.multiple = !0, i.readValue = function() {
7800                                     var e = [];
7801                                     return o(t.find("option"), function(t) {
7802                                         if (t.selected && !t.disabled) {
7803                                             var n = t.value;
7804                                             e.push(n in i.selectValueMap ? i.selectValueMap[n] : n)
7805                                         }
7806                                     }), e
7807                                 }, i.writeValue = function(e) {
7808                                     o(t.find("option"), function(t) {
7809                                         var n = !!e && (q(e, t.value) || q(e, i.selectValueMap[t.value]));
7810                                         n !== t.selected && Nr(qr(t), n)
7811                                     })
7812                                 };
7813                                 var s, c = NaN;
7814                                 e.$watch(function() {
7815                                     c !== a.$viewValue || z(s, a.$viewValue) || (s = _e(a.$viewValue), a.$render()), c = a.$viewValue
7816                                 }), a.$isEmpty = function(e) {
7817                                     return !e || 0 === e.length
7818                                 }
7819                             }
7820                         } else i.registerOption = m
7821                     },
7822                     post: function(e, t, n, r) {
7823                         var i = r[1];
7824                         if (i) {
7825                             var o = r[0];
7826                             i.$render = function() {
7827                                 o.writeValue(i.$viewValue)
7828                             }
7829                         }
7830                     }
7831                 }
7832             }
7833         },
7834         Ka = ["$interpolate", function(e) {
7835             return {
7836                 restrict: "E",
7837                 priority: 100,
7838                 compile: function(t, n) {
7839                     var r, i;
7840                     return $(n.ngValue) || ($(n.value) ? r = e(n.value, !0) : (i = e(t.text(), !0)) || n.$set("value", t.text())),
7841                         function(e, t, n) {
7842                             var o = t.parent(),
7843                                 a = o.data("$selectController") || o.parent().data("$selectController");
7844                             a && a.registerOption(e, t, n, r, i)
7845                         }
7846                 }
7847             }
7848         }],
7849         Za = function() {
7850             return {
7851                 restrict: "A",
7852                 require: "?ngModel",
7853                 link: function(e, t, n, r) {
7854                     r && (n.required = !0, r.$validators.required = function(e, t) {
7855                         return !n.required || !r.$isEmpty(t)
7856                     }, n.$observe("required", function() {
7857                         r.$validate()
7858                     }))
7859                 }
7860             }
7861         },
7862         Xa = function() {
7863             return {
7864                 restrict: "A",
7865                 require: "?ngModel",
7866                 link: function(e, t, n, i) {
7867                     if (i) {
7868                         var o, a = n.ngPattern || n.pattern;
7869                         n.$observe("pattern", function(e) {
7870                             if (E(e) && e.length > 0 && (e = new RegExp("^" + e + "$")), e && !e.test) throw r("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", a, e, te(t));
7871                             o = e || void 0, i.$validate()
7872                         }), i.$validators.pattern = function(e, t) {
7873                             return i.$isEmpty(t) || y(o) || o.test(t)
7874                         }
7875                     }
7876                 }
7877             }
7878         },
7879         Qa = function() {
7880             return {
7881                 restrict: "A",
7882                 require: "?ngModel",
7883                 link: function(e, t, n, r) {
7884                     if (r) {
7885                         var i = -1;
7886                         n.$observe("maxlength", function(e) {
7887                             var t = h(e);
7888                             i = Qr(t) ? -1 : t, r.$validate()
7889                         }), r.$validators.maxlength = function(e, t) {
7890                             return i < 0 || r.$isEmpty(t) || t.length <= i
7891                         }
7892                     }
7893                 }
7894             }
7895         },
7896         Ja = function() {
7897             return {
7898                 restrict: "A",
7899                 require: "?ngModel",
7900                 link: function(e, t, n, r) {
7901                     if (r) {
7902                         var i = 0;
7903                         n.$observe("minlength", function(e) {
7904                             i = h(e) || 0, r.$validate()
7905                         }), r.$validators.minlength = function(e, t) {
7906                             return r.$isEmpty(t) || t.length >= i
7907                         }
7908                     }
7909                 }
7910             }
7911         };
7912     e.angular.bootstrap ? e.console && console.log("WARNING: Tried to load angular more than once.") : (! function() {
7913         var t;
7914         if (!li) {
7915             var n = ii();
7916             (Ur = y(n) ? e.jQuery : n ? e[n] : void 0) && Ur.fn.on ? (qr = Ur, d(Ur.fn, {
7917                 scope: Mi.scope,
7918                 isolateScope: Mi.isolateScope,
7919                 controller: Mi.controller,
7920                 injector: Mi.injector,
7921                 inheritedData: Mi.inheritedData
7922             }), t = Ur.cleanData, Ur.cleanData = function(e) {
7923                 for (var n, r, i = 0; null != (r = e[i]); i++)(n = Ur._data(r, "events")) && n.$destroy && Ur(r).triggerHandler("$destroy");
7924                 t(e)
7925             }) : qr = Ne, Zr.element = qr, li = !0
7926         }
7927     }(), function(n) {
7928         d(n, {
7929             errorHandlingConfig: t,
7930             bootstrap: le,
7931             copy: V,
7932             extend: d,
7933             merge: f,
7934             equals: z,
7935             element: qr,
7936             forEach: o,
7937             injector: st,
7938             noop: m,
7939             bind: G,
7940             toJson: Z,
7941             fromJson: X,
7942             identity: g,
7943             isUndefined: y,
7944             isDefined: $,
7945             isString: E,
7946             isFunction: T,
7947             isObject: _,
7948             isNumber: C,
7949             isElement: j,
7950             isArray: Jr,
7951             version: mi,
7952             isDate: x,
7953             lowercase: jr,
7954             uppercase: Lr,
7955             callbacks: {
7956                 $$counter: 0
7957             },
7958             getTestability: de,
7959             reloadWithDebugInfo: ue,
7960             $$minErr: r,
7961             $$csp: ri,
7962             $$encodeUriSegment: oe,
7963             $$encodeUriQuery: ae,
7964             $$stringify: ye
7965         }), (Vr = $e(e))("ng", ["ngLocale"], ["$provide", function(e) {
7966             e.provider({
7967                 $$sanitizeUri: Sn
7968             }), e.provider("$compile", vt).directive({
7969                 a: jo,
7970                 input: ra,
7971                 textarea: ra,
7972                 form: Vo,
7973                 script: za,
7974                 select: Ga,
7975                 option: Ka,
7976                 ngBind: aa,
7977                 ngBindHtml: ca,
7978                 ngBindTemplate: sa,
7979                 ngClass: ua,
7980                 ngClassEven: fa,
7981                 ngClassOdd: da,
7982                 ngCloak: ha,
7983                 ngController: pa,
7984                 ngForm: Bo,
7985                 ngHide: ja,
7986                 ngIf: va,
7987                 ngInclude: ba,
7988                 ngInit: $a,
7989                 ngNonBindable: Oa,
7990                 ngPluralize: Ra,
7991                 ngRepeat: Pa,
7992                 ngShow: Ha,
7993                 ngStyle: La,
7994                 ngSwitch: Fa,
7995                 ngSwitchWhen: qa,
7996                 ngSwitchDefault: Ua,
7997                 ngOptions: Ia,
7998                 ngTransclude: Ba,
7999                 ngModel: Ma,
8000                 ngList: _a,
8001                 ngChange: la,
8002                 pattern: Xa,
8003                 ngPattern: Xa,
8004                 required: Za,
8005                 ngRequired: Za,
8006                 minlength: Ja,
8007                 ngMinlength: Ja,
8008                 maxlength: Qa,
8009                 ngMaxlength: Qa,
8010                 ngValue: oa,
8011                 ngModelOptions: Aa
8012             }).directive({
8013                 ngInclude: ya
8014             }).directive(Lo).directive(ma), e.provider({
8015                 $anchorScroll: ct,
8016                 $animate: zi,
8017                 $animateCss: Gi,
8018                 $$animateJs: Vi,
8019                 $$animateQueue: Bi,
8020                 $$AnimateRunner: Yi,
8021                 $$animateAsyncRun: Wi,
8022                 $browser: pt,
8023                 $cacheFactory: mt,
8024                 $controller: Et,
8025                 $document: Ct,
8026                 $$isDocumentHidden: xt,
8027                 $exceptionHandler: kt,
8028                 $filter: Bn,
8029                 $$forceReflow: to,
8030                 $interpolate: Ft,
8031                 $interval: qt,
8032                 $http: Pt,
8033                 $httpParamSerializer: Mt,
8034                 $httpParamSerializerJQLike: St,
8035                 $httpBackend: jt,
8036                 $xhrFactory: Ht,
8037                 $jsonpCallbacks: lo,
8038                 $location: nn,
8039                 $log: rn,
8040                 $parse: $n,
8041                 $rootScope: Mn,
8042                 $q: _n,
8043                 $$q: wn,
8044                 $sce: In,
8045                 $sceDelegate: Nn,
8046                 $sniffer: Rn,
8047                 $templateCache: gt,
8048                 $templateRequest: Pn,
8049                 $$testability: Hn,
8050                 $timeout: jn,
8051                 $window: qn,
8052                 $$rAF: Tn,
8053                 $$jqLite: tt,
8054                 $$Map: Ii,
8055                 $$cookieReader: Vn
8056             })
8057         }]).info({
8058             angularVersion: "1.6.6"
8059         })
8060     }(Zr), Zr.module("ngLocale", [], ["$provide", function(e) {
8061         function t(e) {
8062             var t = (e += "").indexOf(".");
8063             return -1 == t ? 0 : e.length - t - 1
8064         }
8065
8066         function n(e, n) {
8067             var r = n;
8068             void 0 === r && (r = Math.min(t(e), 3));
8069             var i = Math.pow(10, r);
8070             return {
8071                 v: r,
8072                 f: (e * i | 0) % i
8073             }
8074         }
8075         var r = {
8076             ZERO: "zero",
8077             ONE: "one",
8078             TWO: "two",
8079             FEW: "few",
8080             MANY: "many",
8081             OTHER: "other"
8082         };
8083         e.value("$locale", {
8084             DATETIME_FORMATS: {
8085                 AMPMS: ["AM", "PM"],
8086                 DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8087                 ERANAMES: ["Before Christ", "Anno Domini"],
8088                 ERAS: ["BC", "AD"],
8089                 FIRSTDAYOFWEEK: 6,
8090                 MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8091                 SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8092                 SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8093                 STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8094                 WEEKENDRANGE: [5, 6],
8095                 fullDate: "EEEE, MMMM d, y",
8096                 longDate: "MMMM d, y",
8097                 medium: "MMM d, y h:mm:ss a",
8098                 mediumDate: "MMM d, y",
8099                 mediumTime: "h:mm:ss a",
8100                 short: "M/d/yy h:mm a",
8101                 shortDate: "M/d/yy",
8102                 shortTime: "h:mm a"
8103             },
8104             NUMBER_FORMATS: {
8105                 CURRENCY_SYM: "$",
8106                 DECIMAL_SEP: ".",
8107                 GROUP_SEP: ",",
8108                 PATTERNS: [{
8109                     gSize: 3,
8110                     lgSize: 3,
8111                     maxFrac: 3,
8112                     minFrac: 0,
8113                     minInt: 1,
8114                     negPre: "-",
8115                     negSuf: "",
8116                     posPre: "",
8117                     posSuf: ""
8118                 }, {
8119                     gSize: 3,
8120                     lgSize: 3,
8121                     maxFrac: 2,
8122                     minFrac: 2,
8123                     minInt: 1,
8124                     negPre: "-¤",
8125                     negSuf: "",
8126                     posPre: "¤",
8127                     posSuf: ""
8128                 }]
8129             },
8130             id: "en-us",
8131             localeID: "en_US",
8132             pluralCat: function(e, t) {
8133                 var i = 0 | e,
8134                     o = n(e, t);
8135                 return 1 == i && 0 == o.v ? r.ONE : r.OTHER
8136             }
8137         })
8138     }]), qr(function() {
8139         ce(e.document, le)
8140     }))
8141 }(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>'),
8142     function(e, t) {
8143         "use strict";
8144
8145         function n(e, t, n) {
8146             if (!e) throw ce("areq", "Argument '{0}' is {1}", t || "?", n || "required");
8147             return e
8148         }
8149
8150         function r(e, t) {
8151             return e || t ? e ? t ? (W(e) && (e = e.join(" ")), W(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
8152         }
8153
8154         function i(e) {
8155             var t = {};
8156             return e && (e.to || e.from) && (t.to = e.to, t.from = e.from), t
8157         }
8158
8159         function o(e, t, n) {
8160             var r = "";
8161             return e = W(e) ? e : e && X(e) && e.length ? e.split(/\s+/) : [], z(e, function(e, i) {
8162                 e && e.length > 0 && (r += i > 0 ? " " : "", r += n ? t + e : e + t)
8163             }), r
8164         }
8165
8166         function a(e, t) {
8167             var n = e.indexOf(t);
8168             t >= 0 && e.splice(n, 1)
8169         }
8170
8171         function s(e) {
8172             if (e instanceof J) switch (e.length) {
8173                 case 0:
8174                     return e;
8175                 case 1:
8176                     if (e[0].nodeType === H) return e;
8177                     break;
8178                 default:
8179                     return J(c(e))
8180             }
8181             if (e.nodeType === H) return J(e)
8182         }
8183
8184         function c(e) {
8185             if (!e[0]) return e;
8186             for (var t = 0; t < e.length; t++) {
8187                 var n = e[t];
8188                 if (n.nodeType === H) return n
8189             }
8190         }
8191
8192         function l(e, t, n) {
8193             z(t, function(t) {
8194                 e.addClass(t, n)
8195             })
8196         }
8197
8198         function u(e, t, n) {
8199             z(t, function(t) {
8200                 e.removeClass(t, n)
8201             })
8202         }
8203
8204         function d(e) {
8205             return function(t, n) {
8206                 n.addClass && (l(e, t, n.addClass), n.addClass = null), n.removeClass && (u(e, t, n.removeClass), n.removeClass = null)
8207             }
8208         }
8209
8210         function f(e) {
8211             if (!(e = e || {}).$$prepared) {
8212                 var t = e.domOperation || ee;
8213                 e.domOperation = function() {
8214                     e.$$domOperationFired = !0, t(), t = ee
8215                 }, e.$$prepared = !0
8216             }
8217             return e
8218         }
8219
8220         function h(e, t) {
8221             p(e, t), m(e, t)
8222         }
8223
8224         function p(e, t) {
8225             t.from && (e.css(t.from), t.from = null)
8226         }
8227
8228         function m(e, t) {
8229             t.to && (e.css(t.to), t.to = null)
8230         }
8231
8232         function g(e, t, n) {
8233             var r = t.options || {},
8234                 i = n.options || {},
8235                 o = (r.addClass || "") + " " + (i.addClass || ""),
8236                 a = (r.removeClass || "") + " " + (i.removeClass || ""),
8237                 s = v(e.attr("class"), o, a);
8238             i.preparationClasses && (r.preparationClasses = C(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
8239             var c = r.domOperation !== ee ? r.domOperation : null;
8240             return B(r, i), c && (r.domOperation = c), s.addClass ? r.addClass = s.addClass : r.addClass = null, s.removeClass ? r.removeClass = s.removeClass : r.removeClass = null, t.addClass = r.addClass, t.removeClass = r.removeClass, r
8241         }
8242
8243         function v(e, t, n) {
8244             function r(e) {
8245                 X(e) && (e = e.split(" "));
8246                 var t = {};
8247                 return z(e, function(e) {
8248                     e.length && (t[e] = !0)
8249                 }), t
8250             }
8251             var i = {};
8252             e = r(e), t = r(t), z(t, function(e, t) {
8253                 i[t] = 1
8254             }), n = r(n), z(n, function(e, t) {
8255                 i[t] = 1 === i[t] ? null : -1
8256             });
8257             var o = {
8258                 addClass: "",
8259                 removeClass: ""
8260             };
8261             return z(i, function(t, n) {
8262                 var r, i;
8263                 1 === t ? (r = "addClass", i = !e[n] || e[n + L]) : -1 === t && (r = "removeClass", i = e[n] || e[n + j]), i && (o[r].length && (o[r] += " "), o[r] += n)
8264             }), o
8265         }
8266
8267         function b(e) {
8268             return e instanceof J ? e[0] : e
8269         }
8270
8271         function y(e, t, n) {
8272             var r = "";
8273             t && (r = o(t, F, !0)), n.addClass && (r = C(r, o(n.addClass, j))), n.removeClass && (r = C(r, o(n.removeClass, L))), r.length && (n.preparationClasses = r, e.addClass(r))
8274         }
8275
8276         function $(e, t) {
8277             t.preparationClasses && (e.removeClass(t.preparationClasses), t.preparationClasses = null), t.activeClasses && (e.removeClass(t.activeClasses), t.activeClasses = null)
8278         }
8279
8280         function _(e, t) {
8281             var n = t ? "-" + t + "s" : "";
8282             return E(e, [ae, n]), [ae, n]
8283         }
8284
8285         function w(e, t) {
8286             var n = t ? "paused" : "",
8287                 r = R + re;
8288             return E(e, [r, n]), [r, n]
8289         }
8290
8291         function E(e, t) {
8292             var n = t[0],
8293                 r = t[1];
8294             e.style[n] = r
8295         }
8296
8297         function C(e, t) {
8298             return e ? t ? e + " " + t : e : t
8299         }
8300
8301         function x(e) {
8302             return [oe, e + "s"]
8303         }
8304
8305         function k(e, t) {
8306             return [t ? ie : ae, e + "s"]
8307         }
8308
8309         function T(e, t, n) {
8310             var r = Object.create(null),
8311                 i = e.getComputedStyle(t) || {};
8312             return z(n, function(e, t) {
8313                 var n = i[e];
8314                 if (n) {
8315                     var o = n.charAt(0);
8316                     ("-" === o || "+" === o || o >= 0) && (n = M(n)), 0 === n && (n = null), r[t] = n
8317                 }
8318             }), r
8319         }
8320
8321         function M(e) {
8322             var t = 0,
8323                 n = e.split(/\s*,\s*/);
8324             return z(n, function(e) {
8325                 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
8326             }), t
8327         }
8328
8329         function S(e) {
8330             return 0 === e || null != e
8331         }
8332
8333         function A(e, t) {
8334             var n = N,
8335                 r = e + "s";
8336             return t ? n += te : r += " linear all", [n, r]
8337         }
8338
8339         function O() {
8340             var e = Object.create(null);
8341             return {
8342                 flush: function() {
8343                     e = Object.create(null)
8344                 },
8345                 count: function(t) {
8346                     var n = e[t];
8347                     return n ? n.total : 0
8348                 },
8349                 get: function(t) {
8350                     var n = e[t];
8351                     return n && n.value
8352                 },
8353                 put: function(t, n) {
8354                     e[t] ? e[t].total++ : e[t] = {
8355                         total: 1,
8356                         value: n
8357                     }
8358                 }
8359             }
8360         }
8361
8362         function D(e, t, n) {
8363             z(n, function(n) {
8364                 e[n] = Y(e[n]) ? e[n] : t.style.getPropertyValue(n)
8365             })
8366         }
8367         var N, I, R, P, H = 1,
8368             j = "-add",
8369             L = "-remove",
8370             F = "ng-",
8371             q = "ng-animate",
8372             U = "$$ngAnimateChildren";
8373         void 0 === e.ontransitionend && void 0 !== e.onwebkittransitionend ? ("-webkit-", N = "WebkitTransition", I = "webkitTransitionEnd transitionend") : (N = "transition", I = "transitionend"), void 0 === e.onanimationend && void 0 !== e.onwebkitanimationend ? ("-webkit-", R = "WebkitAnimation", P = "webkitAnimationEnd animationend") : (R = "animation", P = "animationend");
8374         var V, B, z, W, Y, G, K, Z, X, Q, J, ee, te = "Duration",
8375             ne = "TimingFunction",
8376             re = "PlayState",
8377             ie = R + "Delay",
8378             oe = R + te,
8379             ae = N + "Delay",
8380             se = N + te,
8381             ce = t.$$minErr("ng"),
8382             le = ["$$rAF", function(e) {
8383                 function t(e) {
8384                     r = r.concat(e), n()
8385                 }
8386
8387                 function n() {
8388                     if (r.length) {
8389                         for (var t = r.shift(), o = 0; o < t.length; o++) t[o]();
8390                         i || e(function() {
8391                             i || n()
8392                         })
8393                     }
8394                 }
8395                 var r, i;
8396                 return r = t.queue = [], t.waitUntilQuiet = function(t) {
8397                     i && i(), i = e(function() {
8398                         i = null, t(), n()
8399                     })
8400                 }, t
8401             }],
8402             ue = ["$interpolate", function(e) {
8403                 return {
8404                     link: function(t, n, r) {
8405                         function i(e) {
8406                             e = "on" === e || "true" === e, n.data(U, e)
8407                         }
8408                         var o = r.ngAnimateChildren;
8409                         X(o) && 0 === o.length ? n.data(U, !0) : (i(e(o)(t)), r.$observe("ngAnimateChildren", i))
8410                     }
8411                 }
8412             }],
8413             de = "$$animateCss",
8414             fe = 1e3,
8415             he = 3,
8416             pe = 1.5,
8417             me = {
8418                 transitionDuration: se,
8419                 transitionDelay: ae,
8420                 transitionProperty: N + "Property",
8421                 animationDuration: oe,
8422                 animationDelay: ie,
8423                 animationIterationCount: R + "IterationCount"
8424             },
8425             ge = {
8426                 transitionDuration: se,
8427                 transitionDelay: ae,
8428                 animationDuration: oe,
8429                 animationDelay: ie
8430             },
8431             ve = ["$animateProvider", function(e) {
8432                 var t = O(),
8433                     n = O();
8434                 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(e, r, s, c, l, u, g, v) {
8435                     function y(e, t) {
8436                         var n = "$$ngAnimateParentKey",
8437                             r = e.parentNode;
8438                         return (r[n] || (r[n] = ++q)) + "-" + e.getAttribute("class") + "-" + t
8439                     }
8440
8441                     function $(n, r, i, o) {
8442                         var a = t.get(i);
8443                         return a || "infinite" === (a = T(e, n, o)).animationIterationCount && (a.animationIterationCount = 1), t.put(i, a), a
8444                     }
8445
8446                     function C(i, a, s, c) {
8447                         var l;
8448                         if (t.count(s) > 0 && !(l = n.get(s))) {
8449                             var u = o(a, "-stagger");
8450                             r.addClass(i, u), (l = T(e, i, c)).animationDuration = Math.max(l.animationDuration, 0), l.transitionDuration = Math.max(l.transitionDuration, 0), r.removeClass(i, u), n.put(s, l)
8451                         }
8452                         return l || {}
8453                     }
8454
8455                     function M(e) {
8456                         U.push(e), g.waitUntilQuiet(function() {
8457                             t.flush(), n.flush();
8458                             for (var e = l(), r = 0; r < U.length; r++) U[r](e);
8459                             U.length = 0
8460                         })
8461                     }
8462
8463                     function O(e, t, n) {
8464                         var r = $(e, t, n, me),
8465                             i = r.animationDelay,
8466                             o = r.transitionDelay;
8467                         return r.maxDelay = i && o ? Math.max(i, o) : i || o, r.maxDuration = Math.max(r.animationDuration * r.animationIterationCount, r.transitionDuration), r
8468                     }
8469                     var H = d(r),
8470                         q = 0,
8471                         U = [];
8472                     return function(e, n) {
8473                         function l() {
8474                             g()
8475                         }
8476
8477                         function d() {
8478                             g(!0)
8479                         }
8480
8481                         function g(t) {
8482                             if (!(K || X && Z)) {
8483                                 K = !0, Z = !1, B.$$skipPreparationClasses || r.removeClass(e, ye), r.removeClass(e, _e), w(G, !1), _(G, !1), z(se, function(e) {
8484                                     G.style[e[0]] = ""
8485                                 }), H(e, B), h(e, B), Object.keys(Y).length && z(Y, function(e, t) {
8486                                     e ? G.style.setProperty(t, e) : G.style.removeProperty(t)
8487                                 }), B.onDone && B.onDone(), ue && ue.length && e.off(ue.join(" "), q);
8488                                 var n = e.data(de);
8489                                 n && (c.cancel(n[0].timer), e.removeData(de)), Q && Q.complete(!t)
8490                             }
8491                         }
8492
8493                         function $(e) {
8494                             Ie.blockTransition && _(G, e), Ie.blockKeyframeAnimation && w(G, !!e)
8495                         }
8496
8497                         function T() {
8498                             return Q = new s({
8499                                 end: l,
8500                                 cancel: d
8501                             }), M(ee), g(), {
8502                                 $$willAnimate: !1,
8503                                 start: function() {
8504                                     return Q
8505                                 },
8506                                 end: l
8507                             }
8508                         }
8509
8510                         function q(e) {
8511                             e.stopPropagation();
8512                             var t = e.originalEvent || e,
8513                                 n = t.$manualTimeStamp || Date.now(),
8514                                 r = parseFloat(t.elapsedTime.toFixed(he));
8515                             Math.max(n - ae, 0) >= re && r >= ie && (X = !0, g())
8516                         }
8517
8518                         function U() {
8519                             function t() {
8520                                 if (!K) {
8521                                     if ($(!1), z(se, function(e) {
8522                                             var t = e[0],
8523                                                 n = e[1];
8524                                             G.style[t] = n
8525                                         }), H(e, B), r.addClass(e, _e), Ie.recalculateTimingStyles) {
8526                                         if ($e = G.getAttribute("class") + " " + ye, Ee = y(G, $e), De = O(G, $e, Ee), Ne = De.maxDelay, te = Math.max(Ne, 0), 0 === (ie = De.maxDuration)) return void g();
8527                                         Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0
8528                                     }
8529                                     if (Ie.applyAnimationDelay && (Ne = "boolean" != typeof B.delay && S(B.delay) ? parseFloat(B.delay) : Ne, te = Math.max(Ne, 0), De.animationDelay = Ne, Re = k(Ne, !0), se.push(Re), G.style[Re[0]] = Re[1]), re = te * fe, oe = ie * fe, B.easing) {
8530                                         var t, i = B.easing;
8531                                         Ie.hasTransitions && (t = N + ne, se.push([t, i]), G.style[t] = i), Ie.hasAnimations && (t = R + ne, se.push([t, i]), G.style[t] = i)
8532                                     }
8533                                     De.transitionDuration && ue.push(I), De.animationDuration && ue.push(P), ae = Date.now();
8534                                     var o = re + pe * oe,
8535                                         a = ae + o,
8536                                         s = e.data(de) || [],
8537                                         l = !0;
8538                                     if (s.length) {
8539                                         var u = s[0];
8540                                         (l = a > u.expectedEndTime) ? c.cancel(u.timer): s.push(g)
8541                                     }
8542                                     if (l) {
8543                                         var d = c(n, o, !1);
8544                                         s[0] = {
8545                                             timer: d,
8546                                             expectedEndTime: a
8547                                         }, s.push(g), e.data(de, s)
8548                                     }
8549                                     ue.length && e.on(ue.join(" "), q), B.to && (B.cleanupStyles && D(Y, G, Object.keys(B.to)), m(e, B))
8550                                 }
8551                             }
8552
8553                             function n() {
8554                                 var t = e.data(de);
8555                                 if (t) {
8556                                     for (var n = 1; n < t.length; n++) t[n]();
8557                                     e.removeData(de)
8558                                 }
8559                             }
8560                             if (!K)
8561                                 if (G.parentNode) {
8562                                     var i = function(e) {
8563                                             if (X) Z && e && (Z = !1, g());
8564                                             else if (Z = !e, De.animationDuration) {
8565                                                 var t = w(G, Z);
8566                                                 Z ? se.push(t) : a(se, t)
8567                                             }
8568                                         },
8569                                         o = Ae > 0 && (De.transitionDuration && 0 === Ce.transitionDuration || De.animationDuration && 0 === Ce.animationDuration) && Math.max(Ce.animationDelay, Ce.transitionDelay);
8570                                     o ? c(t, Math.floor(o * Ae * fe), !1) : t(), J.resume = function() {
8571                                         i(!0)
8572                                     }, J.pause = function() {
8573                                         i(!1)
8574                                     }
8575                                 } else g()
8576                         }
8577                         var B = n || {};
8578                         B.$$prepared || (B = f(V(B)));
8579                         var Y = {},
8580                             G = b(e);
8581                         if (!G || !G.parentNode || !v.enabled()) return T();
8582                         var K, Z, X, Q, J, te, re, ie, oe, ae, se = [],
8583                             ce = e.attr("class"),
8584                             le = i(B),
8585                             ue = [];
8586                         if (0 === B.duration || !u.animations && !u.transitions) return T();
8587                         var me = B.event && W(B.event) ? B.event.join(" ") : B.event,
8588                             ve = "",
8589                             be = "";
8590                         me && B.structural ? ve = o(me, F, !0) : me && (ve = me), B.addClass && (be += o(B.addClass, j)), B.removeClass && (be.length && (be += " "), be += o(B.removeClass, L)), B.applyClassesEarly && be.length && H(e, B);
8591                         var ye = [ve, be].join(" ").trim(),
8592                             $e = ce + " " + ye,
8593                             _e = o(ye, "-active"),
8594                             we = le.to && Object.keys(le.to).length > 0;
8595                         if (!((B.keyframeStyle || "").length > 0) && !we && !ye) return T();
8596                         var Ee, Ce;
8597                         if (B.stagger > 0) {
8598                             var xe = parseFloat(B.stagger);
8599                             Ce = {
8600                                 transitionDelay: xe,
8601                                 animationDelay: xe,
8602                                 transitionDuration: 0,
8603                                 animationDuration: 0
8604                             }
8605                         } else Ee = y(G, $e), Ce = C(G, ye, Ee, ge);
8606                         B.$$skipPreparationClasses || r.addClass(e, ye);
8607                         var ke;
8608                         if (B.transitionStyle) {
8609                             var Te = [N, B.transitionStyle];
8610                             E(G, Te), se.push(Te)
8611                         }
8612                         if (B.duration >= 0) {
8613                             ke = G.style[N].length > 0;
8614                             var Me = A(B.duration, ke);
8615                             E(G, Me), se.push(Me)
8616                         }
8617                         if (B.keyframeStyle) {
8618                             var Se = [R, B.keyframeStyle];
8619                             E(G, Se), se.push(Se)
8620                         }
8621                         var Ae = Ce ? B.staggerIndex >= 0 ? B.staggerIndex : t.count(Ee) : 0,
8622                             Oe = 0 === Ae;
8623                         Oe && !B.skipBlocking && _(G, 9999);
8624                         var De = O(G, $e, Ee),
8625                             Ne = De.maxDelay;
8626                         te = Math.max(Ne, 0), ie = De.maxDuration;
8627                         var Ie = {};
8628                         if (Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0, Ie.hasTransitionAll = Ie.hasTransitions && "all" === De.transitionProperty, Ie.applyTransitionDuration = we && (Ie.hasTransitions && !Ie.hasTransitionAll || Ie.hasAnimations && !Ie.hasTransitions), Ie.applyAnimationDuration = B.duration && Ie.hasAnimations, Ie.applyTransitionDelay = S(B.delay) && (Ie.applyTransitionDuration || Ie.hasTransitions), Ie.applyAnimationDelay = S(B.delay) && Ie.hasAnimations, Ie.recalculateTimingStyles = be.length > 0, (Ie.applyTransitionDuration || Ie.applyAnimationDuration) && (ie = B.duration ? parseFloat(B.duration) : ie, Ie.applyTransitionDuration && (Ie.hasTransitions = !0, De.transitionDuration = ie, ke = G.style[N + "Property"].length > 0, se.push(A(ie, ke))), Ie.applyAnimationDuration && (Ie.hasAnimations = !0, De.animationDuration = ie, se.push(x(ie)))), 0 === ie && !Ie.recalculateTimingStyles) return T();
8629                         if (null != B.delay) {
8630                             var Re;
8631                             "boolean" != typeof B.delay && (Re = parseFloat(B.delay), te = Math.max(Re, 0)), Ie.applyTransitionDelay && se.push(k(Re)), Ie.applyAnimationDelay && se.push(k(Re, !0))
8632                         }
8633                         return null == B.duration && De.transitionDuration > 0 && (Ie.recalculateTimingStyles = Ie.recalculateTimingStyles || Oe), re = te * fe, oe = ie * fe, B.skipBlocking || (Ie.blockTransition = De.transitionDuration > 0, Ie.blockKeyframeAnimation = De.animationDuration > 0 && Ce.animationDelay > 0 && 0 === Ce.animationDuration), B.from && (B.cleanupStyles && D(Y, G, Object.keys(B.from)), p(e, B)), Ie.blockTransition || Ie.blockKeyframeAnimation ? $(ie) : B.skipBlocking || _(G, !1), {
8634                             $$willAnimate: !0,
8635                             end: l,
8636                             start: function() {
8637                                 if (!K) return J = {
8638                                     end: l,
8639                                     cancel: d,
8640                                     resume: null,
8641                                     pause: null
8642                                 }, Q = new s(J), M(U), Q
8643                             }
8644                         }
8645                     }
8646                 }]
8647             }],
8648             be = ["$$animationProvider", function(e) {
8649                 function t(e) {
8650                     return e.parentNode && 11 === e.parentNode.nodeType
8651                 }
8652                 e.drivers.push("$$animateCssDriver");
8653                 var n = "ng-animate-shim",
8654                     r = "ng-anchor",
8655                     i = "ng-anchor-out",
8656                     o = "ng-anchor-in";
8657                 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(e, a, s, c, l, u, d) {
8658                     function f(e) {
8659                         return e.replace(/\bng-\S+\b/g, "")
8660                     }
8661
8662                     function h(e, t) {
8663                         return X(e) && (e = e.split(" ")), X(t) && (t = t.split(" ")), e.filter(function(e) {
8664                             return -1 === t.indexOf(e)
8665                         }).join(" ")
8666                     }
8667
8668                     function p(t, a, c) {
8669                         function l(e) {
8670                             var t = {},
8671                                 n = b(e).getBoundingClientRect();
8672                             return z(["width", "height", "top", "left"], function(e) {
8673                                 var r = n[e];
8674                                 switch (e) {
8675                                     case "top":
8676                                         r += v.scrollTop;
8677                                         break;
8678                                     case "left":
8679                                         r += v.scrollLeft
8680                                 }
8681                                 t[e] = Math.floor(r) + "px"
8682                             }), t
8683                         }
8684
8685                         function u(e) {
8686                             return e.attr("class") || ""
8687                         }
8688
8689                         function d() {
8690                             var t = f(u(c)),
8691                                 n = h(t, g),
8692                                 r = h(g, t),
8693                                 a = e(m, {
8694                                     to: l(c),
8695                                     addClass: o + " " + n,
8696                                     removeClass: i + " " + r,
8697                                     delay: !0
8698                                 });
8699                             return a.$$willAnimate ? a : null
8700                         }
8701
8702                         function p() {
8703                             m.remove(), a.removeClass(n), c.removeClass(n)
8704                         }
8705                         var m = J(b(a).cloneNode(!0)),
8706                             g = f(u(m));
8707                         a.addClass(n), c.addClass(n), m.addClass(r), $.append(m);
8708                         var y, _ = function() {
8709                             var t = e(m, {
8710                                 addClass: i,
8711                                 delay: !0,
8712                                 from: l(a)
8713                             });
8714                             return t.$$willAnimate ? t : null
8715                         }();
8716                         if (!_ && !(y = d())) return p();
8717                         var w = _ || y;
8718                         return {
8719                             start: function() {
8720                                 function e() {
8721                                     n && n.end()
8722                                 }
8723                                 var t, n = w.start();
8724                                 return n.done(function() {
8725                                     if (n = null, !y && (y = d())) return (n = y.start()).done(function() {
8726                                         n = null, p(), t.complete()
8727                                     }), n;
8728                                     p(), t.complete()
8729                                 }), t = new s({
8730                                     end: e,
8731                                     cancel: e
8732                                 })
8733                             }
8734                         }
8735                     }
8736
8737                     function m(e, t, n, r) {
8738                         var i = g(e),
8739                             o = g(t),
8740                             a = [];
8741                         if (z(r, function(e) {
8742                                 var t = e.out,
8743                                     r = e.in,
8744                                     i = p(n, t, r);
8745                                 i && a.push(i)
8746                             }), i || o || 0 !== a.length) return {
8747                             start: function() {
8748                                 function e() {
8749                                     z(t, function(e) {
8750                                         e.end()
8751                                     })
8752                                 }
8753                                 var t = [];
8754                                 i && t.push(i.start()), o && t.push(o.start()), z(a, function(e) {
8755                                     t.push(e.start())
8756                                 });
8757                                 var n = new s({
8758                                     end: e,
8759                                     cancel: e
8760                                 });
8761                                 return s.all(t, function(e) {
8762                                     n.complete(e)
8763                                 }), n
8764                             }
8765                         }
8766                     }
8767
8768                     function g(t) {
8769                         var n = t.element,
8770                             r = t.options || {};
8771                         t.structural && (r.event = t.event, r.structural = !0, r.applyClassesEarly = !0, "leave" === t.event && (r.onDone = r.domOperation)), r.preparationClasses && (r.event = C(r.event, r.preparationClasses));
8772                         var i = e(n, r);
8773                         return i.$$willAnimate ? i : null
8774                     }
8775                     if (!l.animations && !l.transitions) return ee;
8776                     var v = d[0].body,
8777                         y = b(c),
8778                         $ = J(t(y) || v.contains(y) ? y : v);
8779                     return function(e) {
8780                         return e.from && e.to ? m(e.from, e.to, e.classes, e.anchors) : g(e)
8781                     }
8782                 }]
8783             }],
8784             ye = ["$animateProvider", function(e) {
8785                 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(t, n, r) {
8786                     function i(n) {
8787                         n = W(n) ? n : n.split(" ");
8788                         for (var r = [], i = {}, o = 0; o < n.length; o++) {
8789                             var a = n[o],
8790                                 s = e.$$registeredAnimations[a];
8791                             s && !i[a] && (r.push(t.get(s)), i[a] = !0)
8792                         }
8793                         return r
8794                     }
8795                     var o = d(r);
8796                     return function(e, t, r, a) {
8797                         function s() {
8798                             a.domOperation(), o(e, a)
8799                         }
8800
8801                         function c() {
8802                             p = !0, s(), h(e, a)
8803                         }
8804
8805                         function l(e, t, r, i, o) {
8806                             var a;
8807                             switch (r) {
8808                                 case "animate":
8809                                     a = [t, i.from, i.to, o];
8810                                     break;
8811                                 case "setClass":
8812                                     a = [t, v, b, o];
8813                                     break;
8814                                 case "addClass":
8815                                     a = [t, v, o];
8816                                     break;
8817                                 case "removeClass":
8818                                     a = [t, b, o];
8819                                     break;
8820                                 default:
8821                                     a = [t, o]
8822                             }
8823                             a.push(i);
8824                             var s = e.apply(e, a);
8825                             if (s)
8826                                 if (K(s.start) && (s = s.start()), s instanceof n) s.done(o);
8827                                 else if (K(s)) return s;
8828                             return ee
8829                         }
8830
8831                         function u(e, t, r, i, o) {
8832                             var a = [];
8833                             return z(i, function(i) {
8834                                 var s = i[o];
8835                                 s && a.push(function() {
8836                                     var i, o, a = !1,
8837                                         c = function(e) {
8838                                             a || (a = !0, (o || ee)(e), i.complete(!e))
8839                                         };
8840                                     return i = new n({
8841                                         end: function() {
8842                                             c()
8843                                         },
8844                                         cancel: function() {
8845                                             c(!0)
8846                                         }
8847                                     }), o = l(s, e, t, r, function(e) {
8848                                         c(!1 === e)
8849                                     }), i
8850                                 })
8851                             }), a
8852                         }
8853
8854                         function d(e, t, r, i, o) {
8855                             var a = u(e, t, r, i, o);
8856                             if (0 === a.length) {
8857                                 var s, c;
8858                                 "beforeSetClass" === o ? (s = u(e, "removeClass", r, i, "beforeRemoveClass"), c = u(e, "addClass", r, i, "beforeAddClass")) : "setClass" === o && (s = u(e, "removeClass", r, i, "removeClass"), c = u(e, "addClass", r, i, "addClass")), s && (a = a.concat(s)), c && (a = a.concat(c))
8859                             }
8860                             if (0 !== a.length) return function(e) {
8861                                 var t = [];
8862                                 return a.length && z(a, function(e) {
8863                                         t.push(e())
8864                                     }), t.length ? n.all(t, e) : e(),
8865                                     function(e) {
8866                                         z(t, function(t) {
8867                                             e ? t.cancel() : t.end()
8868                                         })
8869                                     }
8870                             }
8871                         }
8872                         var p = !1;
8873                         3 === arguments.length && Z(r) && (a = r, r = null), a = f(a), r || (r = e.attr("class") || "", a.addClass && (r += " " + a.addClass), a.removeClass && (r += " " + a.removeClass));
8874                         var m, g, v = a.addClass,
8875                             b = a.removeClass,
8876                             y = i(r);
8877                         if (y.length) {
8878                             var $, _;
8879                             "leave" === t ? (_ = "leave", $ = "afterLeave") : (_ = "before" + t.charAt(0).toUpperCase() + t.substr(1), $ = t), "enter" !== t && "move" !== t && (m = d(e, t, a, y, _)), g = d(e, t, a, y, $)
8880                         }
8881                         if (m || g) {
8882                             var w;
8883                             return {
8884                                 $$willAnimate: !0,
8885                                 end: function() {
8886                                     return w ? w.end() : (c(), (w = new n).complete(!0)), w
8887                                 },
8888                                 start: function() {
8889                                     function e(e) {
8890                                         c(e), w.complete(e)
8891                                     }
8892
8893                                     function t(t) {
8894                                         p || ((r || ee)(t), e(t))
8895                                     }
8896                                     if (w) return w;
8897                                     w = new n;
8898                                     var r, i = [];
8899                                     return m && i.push(function(e) {
8900                                         r = m(e)
8901                                     }), i.length ? i.push(function(e) {
8902                                         s(), e(!0)
8903                                     }) : s(), g && i.push(function(e) {
8904                                         r = g(e)
8905                                     }), w.setHost({
8906                                         end: function() {
8907                                             t()
8908                                         },
8909                                         cancel: function() {
8910                                             t(!0)
8911                                         }
8912                                     }), n.chain(i, e), w
8913                                 }
8914                             }
8915                         }
8916                     }
8917                 }]
8918             }],
8919             $e = ["$$animationProvider", function(e) {
8920                 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(e, t) {
8921                     function n(t) {
8922                         var n = t.element,
8923                             r = t.event,
8924                             i = t.options,
8925                             o = t.classes;
8926                         return e(n, r, o, i)
8927                     }
8928                     return function(e) {
8929                         if (e.from && e.to) {
8930                             var r = n(e.from),
8931                                 i = n(e.to);
8932                             if (!r && !i) return;
8933                             return {
8934                                 start: function() {
8935                                     function e() {
8936                                         return function() {
8937                                             z(n, function(e) {
8938                                                 e.end()
8939                                             })
8940                                         }
8941                                     }
8942                                     var n = [];
8943                                     r && n.push(r.start()), i && n.push(i.start()), t.all(n, function(e) {
8944                                         o.complete(e)
8945                                     });
8946                                     var o = new t({
8947                                         end: e(),
8948                                         cancel: e()
8949                                     });
8950                                     return o
8951                                 }
8952                             }
8953                         }
8954                         return n(e)
8955                     }
8956                 }]
8957             }],
8958             _e = "data-ng-animate",
8959             we = "$ngAnimatePin",
8960             Ee = ["$animateProvider", function(t) {
8961                 function r(e) {
8962                     if (!e) return null;
8963                     var t = e.split(p),
8964                         n = Object.create(null);
8965                     return z(t, function(e) {
8966                         n[e] = !0
8967                     }), n
8968                 }
8969
8970                 function i(e, t) {
8971                     if (e && t) {
8972                         var n = r(t);
8973                         return e.split(p).some(function(e) {
8974                             return n[e]
8975                         })
8976                     }
8977                 }
8978
8979                 function o(e, t, n) {
8980                     return m[e].some(function(e) {
8981                         return e(t, n)
8982                     })
8983                 }
8984
8985                 function a(e, t) {
8986                     var n = (e.addClass || "").length > 0,
8987                         r = (e.removeClass || "").length > 0;
8988                     return t ? n && r : n || r
8989                 }
8990                 var l = 1,
8991                     u = 2,
8992                     p = " ",
8993                     m = this.rules = {
8994                         skip: [],
8995                         cancel: [],
8996                         join: []
8997                     };
8998                 m.join.push(function(e, t) {
8999                     return !e.structural && a(e)
9000                 }), m.skip.push(function(e, t) {
9001                     return !e.structural && !a(e)
9002                 }), m.skip.push(function(e, t) {
9003                     return "leave" === t.event && e.structural
9004                 }), m.skip.push(function(e, t) {
9005                     return t.structural && t.state === u && !e.structural
9006                 }), m.cancel.push(function(e, t) {
9007                     return t.structural && e.structural
9008                 }), m.cancel.push(function(e, t) {
9009                     return t.state === u && e.structural
9010                 }), m.cancel.push(function(e, t) {
9011                     if (t.structural) return !1;
9012                     var n = e.addClass,
9013                         r = e.removeClass,
9014                         o = t.addClass,
9015                         a = t.removeClass;
9016                     return !(Q(n) && Q(r) || Q(o) && Q(a)) && (i(n, a) || i(r, o))
9017                 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(r, i, p, m, v, _, w, E, C, x, k) {
9018                     function T() {
9019                         var e = !1;
9020                         return function(t) {
9021                             e ? t() : i.$$postDigest(function() {
9022                                 e = !0, t()
9023                             })
9024                         }
9025                     }
9026
9027                     function M(e, t) {
9028                         return g(e, t, {})
9029                     }
9030
9031                     function S(e, t, n) {
9032                         var r = [],
9033                             i = K[n];
9034                         return i && z(i, function(i) {
9035                             ae.call(i.node, t) ? r.push(i.callback) : "leave" === n && ae.call(i.node, e) && r.push(i.callback)
9036                         }), r
9037                     }
9038
9039                     function A(e, t, n) {
9040                         var r = c(t);
9041                         return e.filter(function(e) {
9042                             return !(e.node === r && (!n || e.callback === n))
9043                         })
9044                     }
9045
9046                     function O(e, t) {
9047                         "close" !== e || t.parentNode || se.off(t)
9048                     }
9049
9050                     function D(e, t, n) {
9051                         function c(e, t, n, i) {
9052                             x(function() {
9053                                 var e = S(E, v, t);
9054                                 e.length ? r(function() {
9055                                     z(e, function(e) {
9056                                         e(m, n, i)
9057                                     }), O(n, v)
9058                                 }) : O(n, v)
9059                             }), e.progress(t, n, i)
9060                         }
9061
9062                         function d(e) {
9063                             $(m, p), oe(m, p), h(m, p), p.domOperation(), C.complete(!e)
9064                         }
9065                         var p = V(n),
9066                             m = s(e),
9067                             v = b(m),
9068                             E = v && v.parentNode;
9069                         p = f(p);
9070                         var C = new w,
9071                             x = T();
9072                         if (W(p.addClass) && (p.addClass = p.addClass.join(" ")), p.addClass && !X(p.addClass) && (p.addClass = null), W(p.removeClass) && (p.removeClass = p.removeClass.join(" ")), p.removeClass && !X(p.removeClass) && (p.removeClass = null), p.from && !Z(p.from) && (p.from = null), p.to && !Z(p.to) && (p.to = null), !(F && v && re(v, t, n) && ie(v, p))) return d(), C;
9073                         var A = ["enter", "move", "leave"].indexOf(t) >= 0,
9074                             D = k(),
9075                             H = D || L.get(v),
9076                             q = !H && j.get(v) || {},
9077                             U = !!q.state;
9078                         if (H || U && q.state === l || (H = !R(v, E, t)), H) return D && c(C, t, "start"), d(), D && c(C, t, "close"), C;
9079                         A && N(v);
9080                         var B = {
9081                             structural: A,
9082                             element: m,
9083                             event: t,
9084                             addClass: p.addClass,
9085                             removeClass: p.removeClass,
9086                             close: d,
9087                             options: p,
9088                             runner: C
9089                         };
9090                         if (U) {
9091                             if (o("skip", B, q)) return q.state === u ? (d(), C) : (g(m, q, B), q.runner);
9092                             if (o("cancel", B, q))
9093                                 if (q.state === u) q.runner.end();
9094                                 else {
9095                                     if (!q.structural) return g(m, q, B), q.runner;
9096                                     q.close()
9097                                 }
9098                             else if (o("join", B, q)) {
9099                                 if (q.state !== u) return y(m, A ? t : null, p), t = B.event = q.event, p = g(m, q, B), q.runner;
9100                                 M(m, B)
9101                             }
9102                         } else M(m, B);
9103                         var Y = B.structural;
9104                         if (Y || (Y = "animate" === B.event && Object.keys(B.options.to || {}).length > 0 || a(B)), !Y) return d(), I(v), C;
9105                         var G = (q.counter || 0) + 1;
9106                         return B.counter = G, P(v, l, B), i.$$postDigest(function() {
9107                             m = s(e);
9108                             var n = j.get(v),
9109                                 r = !n;
9110                             n = n || {};
9111                             var i = (m.parent() || []).length > 0 && ("animate" === n.event || n.structural || a(n));
9112                             if (r || n.counter !== G || !i) return r && (oe(m, p), h(m, p)), (r || A && n.event !== t) && (p.domOperation(), C.end()), void(i || I(v));
9113                             t = !n.structural && a(n, !0) ? "setClass" : n.event, P(v, u);
9114                             var o = _(m, t, n.options);
9115                             C.setHost(o), c(C, t, "start", {}), o.done(function(e) {
9116                                 d(!e);
9117                                 var n = j.get(v);
9118                                 n && n.counter === G && I(v), c(C, t, "close", {})
9119                             })
9120                         }), C
9121                     }
9122
9123                     function N(e) {
9124                         var t = e.querySelectorAll("[" + _e + "]");
9125                         z(t, function(e) {
9126                             var t = parseInt(e.getAttribute(_e), 10),
9127                                 n = j.get(e);
9128                             if (n) switch (t) {
9129                                 case u:
9130                                     n.runner.end();
9131                                 case l:
9132                                     j.delete(e)
9133                             }
9134                         })
9135                     }
9136
9137                     function I(e) {
9138                         e.removeAttribute(_e), j.delete(e)
9139                     }
9140
9141                     function R(e, t, n) {
9142                         var r, i = m[0].body,
9143                             o = b(p),
9144                             a = e === i || "HTML" === e.nodeName,
9145                             s = e === o,
9146                             c = !1,
9147                             l = L.get(e),
9148                             u = J.data(e, we);
9149                         for (u && (t = b(u)); t && (s || (s = t === o), t.nodeType === H);) {
9150                             var d = j.get(t) || {};
9151                             if (!c) {
9152                                 var f = L.get(t);
9153                                 if (!0 === f && !1 !== l) {
9154                                     l = !0;
9155                                     break
9156                                 }!1 === f && (l = !1), c = d.structural
9157                             }
9158                             if (Q(r) || !0 === r) {
9159                                 var h = J.data(t, U);
9160                                 Y(h) && (r = h)
9161                             }
9162                             if (c && !1 === r) break;
9163                             if (a || (a = t === i), a && s) break;
9164                             t = s || !(u = J.data(t, we)) ? t.parentNode : b(u)
9165                         }
9166                         return (!c || r) && !0 !== l && s && a
9167                     }
9168
9169                     function P(e, t, n) {
9170                         (n = n || {}).state = t, e.setAttribute(_e, t);
9171                         var r = j.get(e),
9172                             i = r ? B(r, n) : n;
9173                         j.set(e, i)
9174                     }
9175                     var j = new v,
9176                         L = new v,
9177                         F = null,
9178                         q = i.$watch(function() {
9179                             return 0 === E.totalPendingRequests
9180                         }, function(e) {
9181                             e && (q(), i.$$postDigest(function() {
9182                                 i.$$postDigest(function() {
9183                                     null === F && (F = !0)
9184                                 })
9185                             }))
9186                         }),
9187                         K = Object.create(null),
9188                         ee = t.customFilter(),
9189                         te = t.classNameFilter(),
9190                         ne = function() {
9191                             return !0
9192                         },
9193                         re = ee || ne,
9194                         ie = te ? function(e, t) {
9195                             var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
9196                             return te.test(n)
9197                         } : ne,
9198                         oe = d(C),
9199                         ae = e.Node.prototype.contains || function(e) {
9200                             return this === e || !!(16 & this.compareDocumentPosition(e))
9201                         },
9202                         se = {
9203                             on: function(e, t, n) {
9204                                 var r = c(t);
9205                                 K[e] = K[e] || [], K[e].push({
9206                                     node: r,
9207                                     callback: n
9208                                 }), J(t).on("$destroy", function() {
9209                                     j.get(r) || se.off(e, t, n)
9210                                 })
9211                             },
9212                             off: function(e, t, n) {
9213                                 if (1 !== arguments.length || X(arguments[0])) {
9214                                     var r = K[e];
9215                                     r && (K[e] = 1 === arguments.length ? null : A(r, t, n))
9216                                 } else {
9217                                     t = arguments[0];
9218                                     for (var i in K) K[i] = A(K[i], t)
9219                                 }
9220                             },
9221                             pin: function(e, t) {
9222                                 n(G(e), "element", "not an element"), n(G(t), "parentElement", "not an element"), e.data(we, t)
9223                             },
9224                             push: function(e, t, n, r) {
9225                                 return n = n || {}, n.domOperation = r, D(e, t, n)
9226                             },
9227                             enabled: function(e, t) {
9228                                 var n = arguments.length;
9229                                 if (0 === n) t = !!F;
9230                                 else if (G(e)) {
9231                                     var r = b(e);
9232                                     1 === n ? t = !L.get(r) : L.set(r, !t)
9233                                 } else t = F = !!e;
9234                                 return t
9235                             }
9236                         };
9237                     return se
9238                 }]
9239             }],
9240             Ce = ["$animateProvider", function(e) {
9241                 function t(e, t) {
9242                     e.data(s, t)
9243                 }
9244
9245                 function n(e) {
9246                     e.removeData(s)
9247                 }
9248
9249                 function i(e) {
9250                     return e.data(s)
9251                 }
9252                 var o = "ng-animate-ref",
9253                     a = this.drivers = [],
9254                     s = "$$animationRunner";
9255                 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", function(e, s, c, l, u, p) {
9256                     function m(e) {
9257                         function t(e) {
9258                             if (e.processed) return e;
9259                             e.processed = !0;
9260                             var n = e.domNode,
9261                                 o = n.parentNode;
9262                             i.set(n, e);
9263                             for (var a; o;) {
9264                                 if (a = i.get(o)) {
9265                                     a.processed || (a = t(a));
9266                                     break
9267                                 }
9268                                 o = o.parentNode
9269                             }
9270                             return (a || r).children.push(e), e
9271                         }
9272                         var n, r = {
9273                                 children: []
9274                             },
9275                             i = new u;
9276                         for (n = 0; n < e.length; n++) {
9277                             var o = e[n];
9278                             i.set(o.domNode, e[n] = {
9279                                 domNode: o.domNode,
9280                                 fn: o.fn,
9281                                 children: []
9282                             })
9283                         }
9284                         for (n = 0; n < e.length; n++) t(e[n]);
9285                         return function(e) {
9286                             var t, n = [],
9287                                 r = [];
9288                             for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
9289                             var i = r.length,
9290                                 o = 0,
9291                                 a = [];
9292                             for (t = 0; t < r.length; t++) {
9293                                 var s = r[t];
9294                                 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s.fn), s.children.forEach(function(e) {
9295                                     o++, r.push(e)
9296                                 }), i--
9297                             }
9298                             return a.length && n.push(a), n
9299                         }(r)
9300                     }
9301                     var g = [],
9302                         v = d(e);
9303                     return function(u, d, y) {
9304                         function $(e) {
9305                             var t = "[" + o + "]",
9306                                 n = e.hasAttribute(o) ? [e] : e.querySelectorAll(t),
9307                                 r = [];
9308                             return z(n, function(e) {
9309                                 var t = e.getAttribute(o);
9310                                 t && t.length && r.push(e)
9311                             }), r
9312                         }
9313
9314                         function _(e) {
9315                             var t = [],
9316                                 n = {};
9317                             z(e, function(e, r) {
9318                                 var i = b(e.element),
9319                                     a = e.event,
9320                                     s = ["enter", "move"].indexOf(a) >= 0,
9321                                     c = e.structural ? $(i) : [];
9322                                 if (c.length) {
9323                                     var l = s ? "to" : "from";
9324                                     z(c, function(e) {
9325                                         var t = e.getAttribute(o);
9326                                         n[t] = n[t] || {}, n[t][l] = {
9327                                             animationID: r,
9328                                             element: J(e)
9329                                         }
9330                                     })
9331                                 } else t.push(e)
9332                             });
9333                             var r = {},
9334                                 i = {};
9335                             return z(n, function(n, o) {
9336                                 var a = n.from,
9337                                     s = n.to;
9338                                 if (a && s) {
9339                                     var c = e[a.animationID],
9340                                         l = e[s.animationID],
9341                                         u = a.animationID.toString();
9342                                     if (!i[u]) {
9343                                         var d = i[u] = {
9344                                             structural: !0,
9345                                             beforeStart: function() {
9346                                                 c.beforeStart(), l.beforeStart()
9347                                             },
9348                                             close: function() {
9349                                                 c.close(), l.close()
9350                                             },
9351                                             classes: w(c.classes, l.classes),
9352                                             from: c,
9353                                             to: l,
9354                                             anchors: []
9355                                         };
9356                                         d.classes.length ? t.push(d) : (t.push(c), t.push(l))
9357                                     }
9358                                     i[u].anchors.push({
9359                                         out: a.element,
9360                                         in: s.element
9361                                     })
9362                                 } else {
9363                                     var f = a ? a.animationID : s.animationID,
9364                                         h = f.toString();
9365                                     r[h] || (r[h] = !0, t.push(e[f]))
9366                                 }
9367                             }), t
9368                         }
9369
9370                         function w(e, t) {
9371                             e = e.split(" "), t = t.split(" ");
9372                             for (var n = [], r = 0; r < e.length; r++) {
9373                                 var i = e[r];
9374                                 if ("ng-" !== i.substring(0, 3))
9375                                     for (var o = 0; o < t.length; o++)
9376                                         if (i === t[o]) {
9377                                             n.push(i);
9378                                             break
9379                                         }
9380                             }
9381                             return n.join(" ")
9382                         }
9383
9384                         function E(e) {
9385                             for (var t = a.length - 1; t >= 0; t--) {
9386                                 var n = a[t],
9387                                     r = c.get(n)(e);
9388                                 if (r) return r
9389                             }
9390                         }
9391
9392                         function C(e, t) {
9393                             function n(e) {
9394                                 var n = i(e);
9395                                 n && n.setHost(t)
9396                             }
9397                             e.from && e.to ? (n(e.from.element), n(e.to.element)) : n(e.element)
9398                         }
9399
9400                         function x() {
9401                             var e = i(u);
9402                             !e || "leave" === d && y.$$domOperationFired || e.end()
9403                         }
9404
9405                         function k(t) {
9406                             u.off("$destroy", x), n(u), v(u, y), h(u, y), y.domOperation(), A && e.removeClass(u, A), u.removeClass(q), M.complete(!t)
9407                         }
9408                         y = f(y);
9409                         var T = ["enter", "move", "leave"].indexOf(d) >= 0,
9410                             M = new l({
9411                                 end: function() {
9412                                     k()
9413                                 },
9414                                 cancel: function() {
9415                                     k(!0)
9416                                 }
9417                             });
9418                         if (!a.length) return k(), M;
9419                         t(u, M);
9420                         var S = r(u.attr("class"), r(y.addClass, y.removeClass)),
9421                             A = y.tempClasses;
9422                         A && (S += " " + A, y.tempClasses = null);
9423                         var O;
9424                         return T && (O = "ng-" + d + "-prepare", e.addClass(u, O)), g.push({
9425                             element: u,
9426                             classes: S,
9427                             event: d,
9428                             structural: T,
9429                             options: y,
9430                             beforeStart: function() {
9431                                 u.addClass(q), A && e.addClass(u, A), O && (e.removeClass(u, O), O = null)
9432                             },
9433                             close: k
9434                         }), u.on("$destroy", x), g.length > 1 ? M : (s.$$postDigest(function() {
9435                             var e = [];
9436                             z(g, function(t) {
9437                                 i(t.element) ? e.push(t) : t.close()
9438                             }), g.length = 0;
9439                             var t = _(e),
9440                                 n = [];
9441                             z(t, function(e) {
9442                                 n.push({
9443                                     domNode: b(e.from ? e.from.element : e.element),
9444                                     fn: function() {
9445                                         e.beforeStart();
9446                                         var t, n = e.close;
9447                                         if (i(e.anchors ? e.from.element || e.to.element : e.element)) {
9448                                             var r = E(e);
9449                                             r && (t = r.start)
9450                                         }
9451                                         if (t) {
9452                                             var o = t();
9453                                             o.done(function(e) {
9454                                                 n(!e)
9455                                             }), C(e, o)
9456                                         } else n()
9457                                     }
9458                                 })
9459                             }), p(m(n))
9460                         }), M)
9461                     }
9462                 }]
9463             }],
9464             xe = ["$animate", "$rootScope", function(e, t) {
9465                 return {
9466                     restrict: "A",
9467                     transclude: "element",
9468                     terminal: !0,
9469                     priority: 600,
9470                     link: function(t, n, r, i, o) {
9471                         var a, s;
9472                         t.$watchCollection(r.ngAnimateSwap || r.for, function(r) {
9473                             a && e.leave(a), s && (s.$destroy(), s = null), (r || 0 === r) && (s = t.$new(), o(s, function(t) {
9474                                 a = t, e.enter(t, null, n)
9475                             }))
9476                         })
9477                     }
9478                 }
9479             }];
9480         t.module("ngAnimate", [], function() {
9481             ee = t.noop, V = t.copy, B = t.extend, J = t.element, z = t.forEach, W = t.isArray, X = t.isString, Z = t.isObject, Q = t.isUndefined, Y = t.isDefined, K = t.isFunction, G = t.isElement
9482         }).info({
9483             angularVersion: "1.6.6"
9484         }).directive("ngAnimateSwap", xe).directive("ngAnimateChildren", ue).factory("$$rAFScheduler", le).provider("$$animateQueue", Ee).provider("$$animation", Ce).provider("$animateCss", ve).provider("$$animateCssDriver", be).provider("$$animateJs", ye).provider("$$animateJsDriver", $e)
9485     }(window, window.angular),
9486     function(e, t) {
9487         "use strict";
9488         var n = t.module("ngAria", ["ng"]).info({
9489                 angularVersion: "1.6.6"
9490             }).provider("$aria", function() {
9491                 function e(e, t, r, o) {
9492                     return function(a, s, c) {
9493                         var l = c.$normalize(t);
9494                         !n[l] || i(s, r) || c[l] || a.$watch(c[e], function(e) {
9495                             e = o ? !e : !!e, s.attr(t, e)
9496                         })
9497                     }
9498                 }
9499                 var n = {
9500                     ariaHidden: !0,
9501                     ariaChecked: !0,
9502                     ariaReadonly: !0,
9503                     ariaDisabled: !0,
9504                     ariaRequired: !0,
9505                     ariaInvalid: !0,
9506                     ariaValue: !0,
9507                     tabindex: !0,
9508                     bindKeydown: !0,
9509                     bindRoleForClick: !0
9510                 };
9511                 this.config = function(e) {
9512                     n = t.extend(n, e)
9513                 }, this.$get = function() {
9514                     return {
9515                         config: function(e) {
9516                             return n[e]
9517                         },
9518                         $$watchExpr: e
9519                     }
9520                 }
9521             }),
9522             r = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
9523             i = function(e, t) {
9524                 if (-1 !== t.indexOf(e[0].nodeName)) return !0
9525             };
9526         n.directive("ngShow", ["$aria", function(e) {
9527             return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
9528         }]).directive("ngHide", ["$aria", function(e) {
9529             return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
9530         }]).directive("ngValue", ["$aria", function(e) {
9531             return e.$$watchExpr("ngValue", "aria-checked", r, !1)
9532         }]).directive("ngChecked", ["$aria", function(e) {
9533             return e.$$watchExpr("ngChecked", "aria-checked", r, !1)
9534         }]).directive("ngReadonly", ["$aria", function(e) {
9535             return e.$$watchExpr("ngReadonly", "aria-readonly", r, !1)
9536         }]).directive("ngRequired", ["$aria", function(e) {
9537             return e.$$watchExpr("ngRequired", "aria-required", r, !1)
9538         }]).directive("ngModel", ["$aria", function(e) {
9539             function t(t, n, o, a) {
9540                 return e.config(n) && !o.attr(t) && (a || !i(o, r))
9541             }
9542
9543             function n(e, t) {
9544                 return !t.attr("role") && t.attr("type") === e && !i(t, r)
9545             }
9546
9547             function o(e, t) {
9548                 var n = e.type,
9549                     r = e.role;
9550                 return "checkbox" === (n || r) || "menuitemcheckbox" === r ? "checkbox" : "radio" === (n || r) || "menuitemradio" === r ? "radio" : "range" === n || "progressbar" === r || "slider" === r ? "range" : ""
9551             }
9552             return {
9553                 restrict: "A",
9554                 require: "ngModel",
9555                 priority: 200,
9556                 compile: function(r, i) {
9557                     var a = o(i);
9558                     return {
9559                         post: function(r, i, o, s) {
9560                             function c() {
9561                                 return s.$modelValue
9562                             }
9563                             var l = t("tabindex", "tabindex", i, !1);
9564                             switch (a) {
9565                                 case "radio":
9566                                 case "checkbox":
9567                                     n(a, i) && i.attr("role", a), t("aria-checked", "ariaChecked", i, !1) && r.$watch(c, "radio" === a ? function(e) {
9568                                         var t = o.value == s.$viewValue;
9569                                         i.attr("aria-checked", t)
9570                                     } : function() {
9571                                         i.attr("aria-checked", !s.$isEmpty(s.$viewValue))
9572                                     }), l && i.attr("tabindex", 0);
9573                                     break;
9574                                 case "range":
9575                                     if (n(a, i) && i.attr("role", "slider"), e.config("ariaValue")) {
9576                                         var u = !i.attr("aria-valuemin") && (o.hasOwnProperty("min") || o.hasOwnProperty("ngMin")),
9577                                             d = !i.attr("aria-valuemax") && (o.hasOwnProperty("max") || o.hasOwnProperty("ngMax")),
9578                                             f = !i.attr("aria-valuenow");
9579                                         u && o.$observe("min", function(e) {
9580                                             i.attr("aria-valuemin", e)
9581                                         }), d && o.$observe("max", function(e) {
9582                                             i.attr("aria-valuemax", e)
9583                                         }), f && r.$watch(c, function(e) {
9584                                             i.attr("aria-valuenow", e)
9585                                         })
9586                                     }
9587                                     l && i.attr("tabindex", 0)
9588                             }!o.hasOwnProperty("ngRequired") && s.$validators.required && t("aria-required", "ariaRequired", i, !1) && o.$observe("required", function() {
9589                                 i.attr("aria-required", !!o.required)
9590                             }), t("aria-invalid", "ariaInvalid", i, !0) && r.$watch(function() {
9591                                 return s.$invalid
9592                             }, function(e) {
9593                                 i.attr("aria-invalid", !!e)
9594                             })
9595                         }
9596                     }
9597                 }
9598             }
9599         }]).directive("ngDisabled", ["$aria", function(e) {
9600             return e.$$watchExpr("ngDisabled", "aria-disabled", r, !1)
9601         }]).directive("ngMessages", function() {
9602             return {
9603                 restrict: "A",
9604                 require: "?ngMessages",
9605                 link: function(e, t, n, r) {
9606                     t.attr("aria-live") || t.attr("aria-live", "assertive")
9607                 }
9608             }
9609         }).directive("ngClick", ["$aria", "$parse", function(e, t) {
9610             return {
9611                 restrict: "A",
9612                 compile: function(n, o) {
9613                     var a = t(o.ngClick);
9614                     return function(t, n, o) {
9615                         i(n, r) || (e.config("bindRoleForClick") && !n.attr("role") && n.attr("role", "button"), e.config("tabindex") && !n.attr("tabindex") && n.attr("tabindex", 0), !e.config("bindKeydown") || o.ngKeydown || o.ngKeypress || o.ngKeyup || n.on("keydown", function(e) {
9616                             var n = e.which || e.keyCode;
9617                             32 !== n && 13 !== n || t.$apply(function() {
9618                                 a(t, {
9619                                     $event: e
9620                                 })
9621                             })
9622                         }))
9623                     }
9624                 }
9625             }
9626         }]).directive("ngDblclick", ["$aria", function(e) {
9627             return function(t, n, o) {
9628                 !e.config("tabindex") || n.attr("tabindex") || i(n, r) || n.attr("tabindex", 0)
9629             }
9630         }])
9631     }(window, window.angular),
9632     function(e, t) {
9633         "use strict";
9634
9635         function n() {
9636             function e(e, t) {
9637                 if (e) return i(e) ? e.indexOf(t) >= 0 : e.hasOwnProperty(t)
9638             }
9639             return ["$animate", function(t) {
9640                 return {
9641                     restrict: "AE",
9642                     transclude: "element",
9643                     priority: 1,
9644                     terminal: !0,
9645                     require: "^^ngMessages",
9646                     link: function(n, r, o, a, s) {
9647                         var c, l = r[0],
9648                             u = o.ngMessage || o.when,
9649                             d = o.ngMessageExp || o.whenExp,
9650                             f = function(e) {
9651                                 c = e ? i(e) ? e : e.split(/[\s,]+/) : null, a.reRender()
9652                             };
9653                         d ? (f(n.$eval(d)), n.$watchCollection(d, f)) : f(u);
9654                         var h, p;
9655                         a.register(l, p = {
9656                             test: function(t) {
9657                                 return e(c, t)
9658                             },
9659                             attach: function() {
9660                                 h || s(function(e, n) {
9661                                     t.enter(e, null, r);
9662                                     var i = (h = e).$$attachId = a.getAttachId();
9663                                     h.on("$destroy", function() {
9664                                         h && h.$$attachId === i && (a.deregister(l), p.detach()), n.$destroy()
9665                                     })
9666                                 })
9667                             },
9668                             detach: function() {
9669                                 if (h) {
9670                                     var e = h;
9671                                     h = null, t.leave(e)
9672                                 }
9673                             }
9674                         })
9675                     }
9676                 }
9677             }]
9678         }
9679         var r, i, o, a;
9680         t.module("ngMessages", [], function() {
9681             r = t.forEach, i = t.isArray, o = t.isString, a = t.element
9682         }).info({
9683             angularVersion: "1.6.6"
9684         }).directive("ngMessages", ["$animate", function(e) {
9685             function t(e, t) {
9686                 return o(t) && 0 === t.length || n(e.$eval(t))
9687             }
9688
9689             function n(e) {
9690                 return o(e) ? e.length : !!e
9691             }
9692             return {
9693                 require: "ngMessages",
9694                 restrict: "AE",
9695                 controller: ["$element", "$scope", "$attrs", function(i, o, a) {
9696                     function s(e, t) {
9697                         for (var n = t, r = []; n && n !== e;) {
9698                             var i = n.$$ngMessageNode;
9699                             if (i && i.length) return m[i];
9700                             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))
9701                         }
9702                     }
9703
9704                     function c(e, t, n) {
9705                         var r = m[n];
9706                         if (u.head) {
9707                             var i = s(e, t);
9708                             i ? (r.next = i.next, i.next = r) : (r.next = u.head, u.head = r)
9709                         } else u.head = r
9710                     }
9711
9712                     function l(e, t, n) {
9713                         var r = m[n],
9714                             i = s(e, t);
9715                         i ? i.next = r.next : u.head = r.next
9716                     }
9717                     var u = this,
9718                         d = 0,
9719                         f = 0;
9720                     this.getAttachId = function() {
9721                         return f++
9722                     };
9723                     var h, p, m = this.messages = {};
9724                     this.render = function(s) {
9725                         h = !1, p = s = s || {};
9726                         for (var c = t(o, a.ngMessagesMultiple) || t(o, a.multiple), l = [], d = {}, f = u.head, m = !1, g = 0; null != f;) {
9727                             g++;
9728                             var v = f.message,
9729                                 b = !1;
9730                             m || r(s, function(e, t) {
9731                                 if (!b && n(e) && v.test(t)) {
9732                                     if (d[t]) return;
9733                                     d[t] = !0, b = !0, v.attach()
9734                                 }
9735                             }), b ? m = !c : l.push(v), f = f.next
9736                         }
9737                         r(l, function(e) {
9738                             e.detach()
9739                         }), l.length !== g ? e.setClass(i, "ng-active", "ng-inactive") : e.setClass(i, "ng-inactive", "ng-active")
9740                     }, o.$watchCollection(a.ngMessages || a.for, u.render), i.on("$destroy", function() {
9741                         r(m, function(e) {
9742                             e.message.detach()
9743                         })
9744                     }), this.reRender = function() {
9745                         h || (h = !0, o.$evalAsync(function() {
9746                             h && p && u.render(p)
9747                         }))
9748                     }, this.register = function(e, t) {
9749                         var n = d.toString();
9750                         m[n] = {
9751                             message: t
9752                         }, c(i[0], e, n), e.$$ngMessageNode = n, d++, u.reRender()
9753                     }, this.deregister = function(e) {
9754                         var t = e.$$ngMessageNode;
9755                         delete e.$$ngMessageNode, l(i[0], e, t), delete m[t], u.reRender()
9756                     }
9757                 }]
9758             }
9759         }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(e, t, n) {
9760             function r(e, r) {
9761                 var i = n.$$createComment ? n.$$createComment("ngMessagesInclude", r) : t[0].createComment(" ngMessagesInclude: " + r + " "),
9762                     o = a(i);
9763                 e.after(o), e.remove()
9764             }
9765             return {
9766                 restrict: "AE",
9767                 require: "^^ngMessages",
9768                 link: function(t, i, a) {
9769                     var s = a.ngMessagesInclude || a.src;
9770                     e(s).then(function(e) {
9771                         t.$$destroyed || (o(e) && !e.trim() ? r(i, s) : n(e)(t, function(e) {
9772                             i.after(e), r(i, s)
9773                         }))
9774                     })
9775                 }
9776             }
9777         }]).directive("ngMessage", n()).directive("ngMessageExp", n())
9778     }(window, window.angular),
9779     function(e, t, n) {
9780         "use strict";
9781         t.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.interaction", "material.core.gestures", "material.core.layout", "material.core.meta", "material.core.theming.palette", "material.core.theming", "material.core.animate", "material.components.autocomplete", "material.components.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.progressCircular", "material.components.panel", "material.components.progressLinear", "material.components.radioButton", "material.components.showHide", "material.components.sidenav", "material.components.select", "material.components.slider", "material.components.sticky", "material.components.subheader", "material.components.switch", "material.components.swipe", "material.components.tabs", "material.components.toast", "material.components.toolbar", "material.components.tooltip", "material.components.truncate", "material.components.virtualRepeat", "material.components.whiteframe"]),
9782             function() {
9783                 function e(e, t) {
9784                     if (t.has("$swipe")) {
9785                         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!")
9786                     }
9787                 }
9788
9789                 function n(e, t) {
9790                     e.decorator("$$rAF", ["$delegate", r]), e.decorator("$q", ["$delegate", i]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
9791                 }
9792
9793                 function r(e) {
9794                     return e.throttle = function(t) {
9795                         var n, r, i, o;
9796                         return function() {
9797                             n = arguments, o = this, i = t, r || (r = !0, e(function() {
9798                                 i.apply(o, Array.prototype.slice.call(n)), r = !1
9799                             }))
9800                         }
9801                     }, e
9802                 }
9803
9804                 function i(e) {
9805                     return e.resolve || (e.resolve = e.when), e
9806                 }
9807                 e.$inject = ["$log", "$injector"], n.$inject = ["$provide", "$mdThemingProvider"], r.$inject = ["$delegate"], i.$inject = ["$delegate"], t.module("material.core", ["ngAnimate", "material.core.animate", "material.core.layout", "material.core.interaction", "material.core.gestures", "material.core.theming"]).config(n).run(e)
9808             }(),
9809             function() {
9810                 function e(e) {
9811                     return {
9812                         restrict: "A",
9813                         link: {
9814                             pre: function(n, r, i) {
9815                                 function o(e) {
9816                                     t.isUndefined(e) && (e = !0), r.toggleClass("md-autofocus", !!e)
9817                                 }
9818                                 var a = i.mdAutoFocus || i.mdAutofocus || i.mdSidenavFocus;
9819                                 o(e(a)(n)), a && n.$watch(a, o)
9820                             }
9821                         }
9822                     }
9823                 }
9824                 e.$inject = ["$parse"], t.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
9825             }(),
9826             function() {
9827                 t.module("material.core").factory("$mdColorUtil", function() {
9828                     return {
9829                         rgbaToHex: function(e) {
9830                             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()
9831                         },
9832                         hexToRgba: function(e) {
9833                             var t = "#" === e[0] ? e.substr(1) : e,
9834                                 n = t.length / 3,
9835                                 r = t.substr(0, n),
9836                                 i = t.substr(n, n),
9837                                 o = t.substr(2 * n);
9838                             return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
9839                         },
9840                         rgbToRgba: function(e) {
9841                             return e.replace(")", ", 0.1)").replace("(", "a(")
9842                         },
9843                         rgbaToRgb: function(e) {
9844                             return e ? e.replace("rgba", "rgb").replace(/,[^\),]+\)/, ")") : "rgb(0,0,0)"
9845                         }
9846                     }
9847                 })
9848             }(),
9849             function() {
9850                 t.module("material.core").factory("$mdConstant", function() {
9851                     function e(e) {
9852                         var t = r(o + "-" + e),
9853                             a = t.charAt(0).toLowerCase() + t.substring(1);
9854                         return n(i, e) ? e : n(i, t) ? t : n(i, a) ? a : e
9855                     }
9856
9857                     function n(e, n) {
9858                         return t.isDefined(e.style[n])
9859                     }
9860
9861                     function r(e) {
9862                         return e.replace(s, function(e, t, n, r) {
9863                             return r ? n.toUpperCase() : n
9864                         })
9865                     }
9866                     var i = document.createElement("div"),
9867                         o = function(e) {
9868                             var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
9869                             for (t in e.style)
9870                                 if (n = r.exec(t)) return n[0]
9871                         }(i),
9872                         a = /webkit/i.test(o),
9873                         s = /([:\-_]+(.))/g,
9874                         c = {
9875                             isInputKey: function(e) {
9876                                 return e.keyCode >= 31 && e.keyCode <= 90
9877                             },
9878                             isNumPadKey: function(e) {
9879                                 return 3 === e.location && e.keyCode >= 97 && e.keyCode <= 105
9880                             },
9881                             isMetaKey: function(e) {
9882                                 return e.keyCode >= 91 && e.keyCode <= 93
9883                             },
9884                             isFnLockKey: function(e) {
9885                                 return e.keyCode >= 112 && e.keyCode <= 145
9886                             },
9887                             isNavigationKey: function(e) {
9888                                 var t = c.KEY_CODE;
9889                                 return -1 != [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW].indexOf(e.keyCode)
9890                             },
9891                             hasModifierKey: function(e) {
9892                                 return e.ctrlKey || e.metaKey || e.altKey
9893                             },
9894                             ELEMENT_MAX_PIXELS: 1533917,
9895                             BEFORE_NG_ARIA: 210,
9896                             KEY_CODE: {
9897                                 COMMA: 188,
9898                                 SEMICOLON: 186,
9899                                 ENTER: 13,
9900                                 ESCAPE: 27,
9901                                 SPACE: 32,
9902                                 PAGE_UP: 33,
9903                                 PAGE_DOWN: 34,
9904                                 END: 35,
9905                                 HOME: 36,
9906                                 LEFT_ARROW: 37,
9907                                 UP_ARROW: 38,
9908                                 RIGHT_ARROW: 39,
9909                                 DOWN_ARROW: 40,
9910                                 TAB: 9,
9911                                 BACKSPACE: 8,
9912                                 DELETE: 46
9913                             },
9914                             CSS: {
9915                                 TRANSITIONEND: "transitionend" + (a ? " webkitTransitionEnd" : ""),
9916                                 ANIMATIONEND: "animationend" + (a ? " webkitAnimationEnd" : ""),
9917                                 TRANSFORM: e("transform"),
9918                                 TRANSFORM_ORIGIN: e("transformOrigin"),
9919                                 TRANSITION: e("transition"),
9920                                 TRANSITION_DURATION: e("transitionDuration"),
9921                                 ANIMATION_PLAY_STATE: e("animationPlayState"),
9922                                 ANIMATION_DURATION: e("animationDuration"),
9923                                 ANIMATION_NAME: e("animationName"),
9924                                 ANIMATION_TIMING: e("animationTimingFunction"),
9925                                 ANIMATION_DIRECTION: e("animationDirection")
9926                             },
9927                             MEDIA: {
9928                                 xs: "(max-width: 599px)",
9929                                 "gt-xs": "(min-width: 600px)",
9930                                 sm: "(min-width: 600px) and (max-width: 959px)",
9931                                 "gt-sm": "(min-width: 960px)",
9932                                 md: "(min-width: 960px) and (max-width: 1279px)",
9933                                 "gt-md": "(min-width: 1280px)",
9934                                 lg: "(min-width: 1280px) and (max-width: 1919px)",
9935                                 "gt-lg": "(min-width: 1920px)",
9936                                 xl: "(min-width: 1920px)",
9937                                 landscape: "(orientation: landscape)",
9938                                 portrait: "(orientation: portrait)",
9939                                 print: "print"
9940                             },
9941                             MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
9942                         };
9943                     return c
9944                 })
9945             }(),
9946             function() {
9947                 function e(e, n) {
9948                     function r(e) {
9949                         return u.length && e > -1 && e < u.length
9950                     }
9951
9952                     function i(e) {
9953                         return u.indexOf(e)
9954                     }
9955
9956                     function o(e) {
9957                         return e && i(e) > -1
9958                     }
9959
9960                     function a() {
9961                         return u.length ? u[0] : null
9962                     }
9963
9964                     function s() {
9965                         return u.length ? u[u.length - 1] : null
9966                     }
9967
9968                     function c(e, o, c, d) {
9969                         c = c || l;
9970                         for (var f = i(o);;) {
9971                             if (!r(f)) return null;
9972                             var h = f + (e ? -1 : 1),
9973                                 p = null;
9974                             if (r(h) ? p = u[h] : n && (h = i(p = e ? s() : a())), null === p || h === d) return null;
9975                             if (c(p)) return p;
9976                             t.isUndefined(d) && (d = h), f = h
9977                         }
9978                     }
9979                     var l = function() {
9980                         return !0
9981                     };
9982                     e && !t.isArray(e) && (e = Array.prototype.slice.call(e)), n = !!n;
9983                     var u = e || [];
9984                     return {
9985                         items: function() {
9986                             return [].concat(u)
9987                         },
9988                         count: function() {
9989                             return u.length
9990                         },
9991                         inRange: r,
9992                         contains: o,
9993                         indexOf: i,
9994                         itemAt: function(e) {
9995                             return r(e) ? u[e] : null
9996                         },
9997                         findBy: function(e, t) {
9998                             return u.filter(function(n) {
9999                                 return n[e] === t
10000                             })
10001                         },
10002                         add: function(e, n) {
10003                             return e ? (t.isNumber(n) || (n = u.length), u.splice(n, 0, e), i(e)) : -1
10004                         },
10005                         remove: function(e) {
10006                             o(e) && u.splice(i(e), 1)
10007                         },
10008                         first: a,
10009                         last: s,
10010                         next: t.bind(null, c, !1),
10011                         previous: t.bind(null, c, !0),
10012                         hasPrevious: function(e) {
10013                             return !!e && r(i(e) - 1)
10014                         },
10015                         hasNext: function(e) {
10016                             return !!e && r(i(e) + 1)
10017                         }
10018                     }
10019                 }
10020                 t.module("material.core").config(["$provide", function(t) {
10021                     t.decorator("$mdUtil", ["$delegate", function(t) {
10022                         return t.iterator = e, t
10023                     }])
10024                 }])
10025             }(),
10026             function() {
10027                 function e(e, n, r) {
10028                     function i(e) {
10029                         var n = l[e];
10030                         t.isUndefined(n) && (n = l[e] = o(e));
10031                         var r = d[n];
10032                         return t.isUndefined(r) && (r = a(n)), r
10033                     }
10034
10035                     function o(t) {
10036                         return e.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)
10037                     }
10038
10039                     function a(e) {
10040                         var t = u[e];
10041                         return t || (t = u[e] = r.matchMedia(e)), t.addListener(s), d[t.media] = !!t.matches
10042                     }
10043
10044                     function s(e) {
10045                         n.$evalAsync(function() {
10046                             d[e.media] = !!e.matches
10047                         })
10048                     }
10049
10050                     function c(e, t) {
10051                         return f[t] || (f[t] = e.$normalize(t))
10052                     }
10053                     var l = {},
10054                         u = {},
10055                         d = {},
10056                         f = {};
10057                     return i.getResponsiveAttribute = function(t, n) {
10058                         for (var r = 0; r < e.MEDIA_PRIORITY.length; r++) {
10059                             var i = e.MEDIA_PRIORITY[r];
10060                             if (u[l[i]].matches) {
10061                                 var o = c(t, n + "-" + i);
10062                                 if (t[o]) return t[o]
10063                             }
10064                         }
10065                         return t[c(t, n)]
10066                     }, i.getQuery = function(e) {
10067                         return u[e]
10068                     }, i.watchResponsiveAttributes = function(n, r, i) {
10069                         var o = [];
10070                         return n.forEach(function(n) {
10071                                 var a = c(r, n);
10072                                 t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, null)));
10073                                 for (var s in e.MEDIA) a = c(r, n + "-" + s), t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, s)))
10074                             }),
10075                             function() {
10076                                 o.forEach(function(e) {
10077                                     e()
10078                                 })
10079                             }
10080                     }, i
10081                 }
10082                 e.$inject = ["$mdConstant", "$rootScope", "$window"], t.module("material.core").factory("$mdMedia", e)
10083             }(),
10084             function() {
10085                 function e(e, n) {
10086                     function r(e) {
10087                         return (e = t.isArray(e) ? e : [e]).forEach(function(t) {
10088                             a.forEach(function(n) {
10089                                 e.push(n + "-" + t)
10090                             })
10091                         }), e
10092                     }
10093
10094                     function i(e) {
10095                         return e = t.isArray(e) ? e : [e], r(e).map(function(e) {
10096                             return "[" + e + "]"
10097                         }).join(",")
10098                     }
10099
10100                     function o(e) {
10101                         if ((e = e[0] || e).nodeType) return e
10102                     }
10103                     var a = ["data", "x"];
10104                     return e ? n ? i(e) : r(e) : {
10105                         buildList: r,
10106                         buildSelector: i,
10107                         hasAttribute: function(e, t) {
10108                             if (!(e = o(e))) return !1;
10109                             for (var n = r(t), i = 0; i < n.length; i++)
10110                                 if (e.hasAttribute(n[i])) return !0;
10111                             return !1
10112                         },
10113                         removeAttribute: function(e, t) {
10114                             (e = o(e)) && r(t).forEach(function(t) {
10115                                 e.removeAttribute(t)
10116                             })
10117                         }
10118                     }
10119                 }
10120                 t.module("material.core").config(["$provide", function(t) {
10121                     t.decorator("$mdUtil", ["$delegate", function(t) {
10122                         return t.prefixer = e, t
10123                     }])
10124                 }])
10125             }(),
10126             function() {
10127                 function r(r, o, a, s, c, l, u, d, f, h) {
10128                     function p(e) {
10129                         return e ? m(e) || g(e) ? e : e + "px" : "0"
10130                     }
10131
10132                     function m(e) {
10133                         return String(e).indexOf("px") > -1
10134                     }
10135
10136                     function g(e) {
10137                         return String(e).indexOf("%") > -1
10138                     }
10139
10140                     function v(e) {
10141                         return e[0] || e
10142                     }
10143                     var b = l.startSymbol(),
10144                         y = l.endSymbol(),
10145                         $ = "{{" === b && "}}" === y,
10146                         _ = function(e, n, r) {
10147                             var i = !1;
10148                             if (e && e.length) {
10149                                 var o = f.getComputedStyle(e[0]);
10150                                 i = t.isDefined(o[n]) && (!r || o[n] == r)
10151                             }
10152                             return i
10153                         },
10154                         w = {
10155                             dom: {},
10156                             now: e.performance && e.performance.now ? t.bind(e.performance, e.performance.now) : Date.now || function() {
10157                                 return (new Date).getTime()
10158                             },
10159                             getModelOption: function(e, t) {
10160                                 if (e.$options) {
10161                                     var n = e.$options;
10162                                     return n.getOption ? n.getOption(t) : n[t]
10163                                 }
10164                             },
10165                             bidi: function(e, n, i, o) {
10166                                 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir);
10167                                 if (0 == arguments.length) return a ? "ltr" : "rtl";
10168                                 var s = t.element(e);
10169                                 a && t.isDefined(i) ? s.css(n, p(i)) : !a && t.isDefined(o) && s.css(n, p(o))
10170                             },
10171                             bidiProperty: function(e, n, i, o) {
10172                                 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir),
10173                                     s = t.element(e);
10174                                 a && t.isDefined(n) ? (s.css(n, p(o)), s.css(i, "")) : !a && t.isDefined(i) && (s.css(i, p(o)), s.css(n, ""))
10175                             },
10176                             clientRect: function(e, t, n) {
10177                                 var r = v(e);
10178                                 t = v(t || r.offsetParent || document.body);
10179                                 var i = r.getBoundingClientRect(),
10180                                     o = n ? t.getBoundingClientRect() : {
10181                                         left: 0,
10182                                         top: 0,
10183                                         width: 0,
10184                                         height: 0
10185                                     };
10186                                 return {
10187                                     left: i.left - o.left,
10188                                     top: i.top - o.top,
10189                                     width: i.width,
10190                                     height: i.height
10191                                 }
10192                             },
10193                             offsetRect: function(e, t) {
10194                                 return w.clientRect(e, t, !0)
10195                             },
10196                             nodesToArray: function(e) {
10197                                 e = e || [];
10198                                 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
10199                                 return t
10200                             },
10201                             getViewportTop: function() {
10202                                 return e.scrollY || e.pageYOffset || 0
10203                             },
10204                             findFocusTarget: function(e, n) {
10205                                 function r(e, n) {
10206                                     var r, i = e[0].querySelectorAll(n);
10207                                     return i && i.length && i.length && t.forEach(i, function(e) {
10208                                         (e = t.element(e)).hasClass("md-autofocus") && (r = e)
10209                                     }), r
10210                                 }
10211                                 var i, o = this.prefixer("md-autofocus", !0);
10212                                 return (i = r(e, n || o)) || n == o || (i = r(e, this.prefixer("md-auto-focus", !0))) || (i = r(e, o)), i
10213                             },
10214                             disableScrollAround: function(e, n, i) {
10215                                 if (i = i || {}, w.disableScrollAround._count = Math.max(0, w.disableScrollAround._count || 0), w.disableScrollAround._count++, w.disableScrollAround._restoreScroll) return w.disableScrollAround._restoreScroll;
10216                                 var o = r[0].body,
10217                                     a = function() {
10218                                         var e = r[0].documentElement,
10219                                             n = e.style.cssText || "",
10220                                             i = o.style.cssText || "",
10221                                             a = w.getViewportTop(),
10222                                             s = o.clientWidth,
10223                                             c = o.scrollHeight > o.clientHeight + 1;
10224                                         return c && t.element(o).css({
10225                                                 position: "fixed",
10226                                                 width: "100%",
10227                                                 top: -a + "px"
10228                                             }), o.clientWidth < s && (o.style.overflow = "hidden"), c && (e.style.overflowY = "scroll"),
10229                                             function() {
10230                                                 o.style.cssText = i, e.style.cssText = n, o.scrollTop = a
10231                                             }
10232                                     }(),
10233                                     s = function(e) {
10234                                         function n(e) {
10235                                             e.preventDefault()
10236                                         }
10237                                         e = t.element(e || o);
10238                                         var r;
10239                                         return i.disableScrollMask ? r = e : (r = t.element('<div class="md-scroll-mask">  <div class="md-scroll-mask-bar"></div></div>'), e.append(r)), r.on("wheel", n), r.on("touchmove", n),
10240                                             function() {
10241                                                 r.off("wheel"), r.off("touchmove"), i.disableScrollMask || r[0].parentNode.removeChild(r[0])
10242                                             }
10243                                     }(n);
10244                                 return w.disableScrollAround._restoreScroll = function() {
10245                                     --w.disableScrollAround._count <= 0 && (a(), s(), delete w.disableScrollAround._restoreScroll)
10246                                 }
10247                             },
10248                             enableScrolling: function() {
10249                                 var e = this.disableScrollAround._restoreScroll;
10250                                 e && e()
10251                             },
10252                             floatingScrollbars: function() {
10253                                 if (this.floatingScrollbars.cached === n) {
10254                                     var e = t.element("<div><div></div></div>").css({
10255                                         width: "100%",
10256                                         "z-index": -1,
10257                                         position: "absolute",
10258                                         height: "35px",
10259                                         "overflow-y": "scroll"
10260                                     });
10261                                     e.children().css("height", "60px"), r[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
10262                                 }
10263                                 return this.floatingScrollbars.cached
10264                             },
10265                             forceFocus: function(t) {
10266                                 var n = t[0] || t;
10267                                 document.addEventListener("click", function e(t) {
10268                                     t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
10269                                 }, !0);
10270                                 var r = document.createEvent("MouseEvents");
10271                                 r.initMouseEvent("click", !1, !0, e, {}, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), r.$material = !0, r.$focus = !0, n.dispatchEvent(r)
10272                             },
10273                             createBackdrop: function(e, t) {
10274                                 return a(w.supplant('<md-backdrop class="{0}">', [t]))(e)
10275                             },
10276                             supplant: function(e, t, n) {
10277                                 return n = n || /\{([^\{\}]*)\}/g, e.replace(n, function(e, n) {
10278                                     var r = n.split("."),
10279                                         i = t;
10280                                     try {
10281                                         for (var o in r) r.hasOwnProperty(o) && (i = i[r[o]])
10282                                     } catch (t) {
10283                                         i = e
10284                                     }
10285                                     return "string" == typeof i || "number" == typeof i ? i : e
10286                                 })
10287                             },
10288                             fakeNgModel: function() {
10289                                 return {
10290                                     $fake: !0,
10291                                     $setTouched: t.noop,
10292                                     $setViewValue: function(e) {
10293                                         this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
10294                                             e()
10295                                         })
10296                                     },
10297                                     $isEmpty: function(e) {
10298                                         return 0 === ("" + e).length
10299                                     },
10300                                     $parsers: [],
10301                                     $formatters: [],
10302                                     $viewChangeListeners: [],
10303                                     $render: t.noop
10304                                 }
10305                             },
10306                             debounce: function(e, t, r, i) {
10307                                 var a;
10308                                 return function() {
10309                                     var s = r,
10310                                         c = Array.prototype.slice.call(arguments);
10311                                     o.cancel(a), a = o(function() {
10312                                         a = n, e.apply(s, c)
10313                                     }, t || 10, i)
10314                                 }
10315                             },
10316                             throttle: function(e, t) {
10317                                 var n;
10318                                 return function() {
10319                                     var r = this,
10320                                         i = arguments,
10321                                         o = w.now();
10322                                     (!n || o - n > t) && (e.apply(r, i), n = o)
10323                                 }
10324                             },
10325                             time: function(e) {
10326                                 var t = w.now();
10327                                 return e(), w.now() - t
10328                             },
10329                             valueOnUse: function(e, t, n) {
10330                                 var r = null,
10331                                     i = Array.prototype.slice.call(arguments),
10332                                     o = i.length > 3 ? i.slice(3) : [];
10333                                 Object.defineProperty(e, t, {
10334                                     get: function() {
10335                                         return null === r && (r = n.apply(e, o)), r
10336                                     }
10337                                 })
10338                             },
10339                             nextUid: function() {
10340                                 return "" + i++
10341                             },
10342                             disconnectScope: function(e) {
10343                                 if (e && e.$root !== e && !e.$$destroyed) {
10344                                     var t = e.$parent;
10345                                     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
10346                                 }
10347                             },
10348                             reconnectScope: function(e) {
10349                                 if (e && e.$root !== e && e.$$disconnected) {
10350                                     var t = e,
10351                                         n = t.$parent;
10352                                     t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
10353                                 }
10354                             },
10355                             getClosest: function(e, n, r) {
10356                                 if (t.isString(n)) {
10357                                     var i = n.toUpperCase();
10358                                     n = function(e) {
10359                                         return e.nodeName.toUpperCase() === i
10360                                     }
10361                                 }
10362                                 if (e instanceof t.element && (e = e[0]), r && (e = e.parentNode), !e) return null;
10363                                 do {
10364                                     if (n(e)) return e
10365                                 } while (e = e.parentNode);
10366                                 return null
10367                             },
10368                             elementContains: function(n, r) {
10369                                 return (e.Node && e.Node.prototype && Node.prototype.contains ? t.bind(n, n.contains) : t.bind(n, function(e) {
10370                                     return n === r || !!(16 & this.compareDocumentPosition(e))
10371                                 }))(r)
10372                             },
10373                             extractElementByName: function(e, n, r, i) {
10374                                 function o(e) {
10375                                     return a(e) || (r ? s(e) : null)
10376                                 }
10377
10378                                 function a(e) {
10379                                     if (e)
10380                                         for (var t = 0, r = e.length; t < r; t++)
10381                                             if (e[t].nodeName.toLowerCase() === n) return e[t];
10382                                     return null
10383                                 }
10384
10385                                 function s(e) {
10386                                     var t;
10387                                     if (e)
10388                                         for (var n = 0, r = e.length; n < r; n++) {
10389                                             var i = e[n];
10390                                             if (!t)
10391                                                 for (var a = 0, s = i.childNodes.length; a < s; a++) t = t || o([i.childNodes[a]])
10392                                         }
10393                                     return t
10394                                 }
10395                                 var c = o(e);
10396                                 return !c && i && u.warn(w.supplant("Unable to find node '{0}' in element '{1}'.", [n, e[0].outerHTML])), t.element(c || e)
10397                             },
10398                             initOptionalProperties: function(e, n, r) {
10399                                 r = r || {}, t.forEach(e.$$isolateBindings, function(i, o) {
10400                                     if (i.optional && t.isUndefined(e[o])) {
10401                                         var a = t.isDefined(n[i.attrName]);
10402                                         e[o] = t.isDefined(r[o]) ? r[o] : a
10403                                     }
10404                                 })
10405                             },
10406                             nextTick: function(e, t, n) {
10407                                 var r = w.nextTick,
10408                                     i = r.timeout,
10409                                     a = r.queue || [];
10410                                 return a.push({
10411                                     scope: n,
10412                                     callback: e
10413                                 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = a, i || (r.timeout = o(function() {
10414                                     var e = r.queue,
10415                                         t = r.digest;
10416                                     r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
10417                                         e.scope && e.scope.$$destroyed || e.callback()
10418                                     }), t && s.$digest()
10419                                 }, 0, !1))
10420                             },
10421                             processTemplate: function(e) {
10422                                 return $ ? e : e && t.isString(e) ? e.replace(/\{\{/g, b).replace(/}}/g, y) : e
10423                             },
10424                             getParentWithPointerEvents: function(e) {
10425                                 for (var t = e.parent(); _(t, "pointer-events", "none");) t = t.parent();
10426                                 return t
10427                             },
10428                             getNearestContentElement: function(e) {
10429                                 for (var t = e.parent()[0]; t && t !== d[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
10430                                 return t
10431                             },
10432                             checkStickySupport: function() {
10433                                 var e, n = t.element("<div>");
10434                                 r[0].body.appendChild(n[0]);
10435                                 for (var i = ["sticky", "-webkit-sticky"], o = 0; o < i.length; ++o)
10436                                     if (n.css({
10437                                             position: i[o],
10438                                             top: 0,
10439                                             "z-index": 2
10440                                         }), n.css("position") == i[o]) {
10441                                         e = i[o];
10442                                         break
10443                                     }
10444                                 return n.remove(), e
10445                             },
10446                             parseAttributeBoolean: function(e, t) {
10447                                 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
10448                             },
10449                             hasComputedStyle: _,
10450                             isParentFormSubmitted: function(e) {
10451                                 var n = w.getClosest(e, "form"),
10452                                     r = n ? t.element(n).controller("form") : null;
10453                                 return !!r && r.$submitted
10454                             },
10455                             animateScrollTo: function(e, t, n) {
10456                                 function r() {
10457                                     var n = i();
10458                                     e.scrollTop = n, (c ? n < t : n > t) && h(r)
10459                                 }
10460
10461                                 function i() {
10462                                     var e = n || 1e3;
10463                                     return o(w.now() - l, a, s, e)
10464                                 }
10465
10466                                 function o(e, t, n, r) {
10467                                     if (e > r) return t + n;
10468                                     var i = (e /= r) * e;
10469                                     return t + n * (-2 * (i * e) + 3 * i)
10470                                 }
10471                                 var a = e.scrollTop,
10472                                     s = t - a,
10473                                     c = a < t,
10474                                     l = w.now();
10475                                 h(r)
10476                             },
10477                             uniq: function(e) {
10478                                 if (e) return e.filter(function(e, t, n) {
10479                                     return n.indexOf(e) === t
10480                                 })
10481                             }
10482                         };
10483                     return w.dom.animator = c(w), w
10484                 }
10485                 r.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
10486                 var i = 0;
10487                 t.module("material.core").factory("$mdUtil", r), t.element.prototype.focus = t.element.prototype.focus || function() {
10488                     return this.length && this[0].focus(), this
10489                 }, t.element.prototype.blur = t.element.prototype.blur || function() {
10490                     return this.length && this[0].blur(), this
10491                 }
10492             }(),
10493             function() {
10494                 function e(e, t, n, r, i) {
10495                     this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
10496                 }
10497                 e.$inject = ["$q", "$templateRequest", "$injector", "$compile", "$controller"], t.module("material.core").service("$mdCompiler", e), e.prototype.compile = function(e) {
10498                     return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
10499                 }, e.prototype._prepareContentElement = function(e) {
10500                     var t = this._fetchContentElement(e);
10501                     return this.$q.resolve({
10502                         element: t.element,
10503                         cleanup: t.restore,
10504                         locals: {},
10505                         link: function() {
10506                             return t.element
10507                         }
10508                     })
10509                 }, e.prototype._compileTemplate = function(e) {
10510                     var n = this,
10511                         r = e.templateUrl,
10512                         i = e.template || "",
10513                         o = t.extend({}, e.resolve),
10514                         a = t.extend({}, e.locals),
10515                         s = e.transformTemplate || t.identity;
10516                     return t.forEach(o, function(e, r) {
10517                         t.isString(e) ? o[r] = n.$injector.get(e) : o[r] = n.$injector.invoke(e)
10518                     }), t.extend(o, a), o.$$ngTemplate = r ? this.$templateRequest(r) : this.$q.when(i), this.$q.all(o).then(function(r) {
10519                         var i = s(r.$$ngTemplate, e),
10520                             o = e.element || t.element("<div>").html(i.trim()).contents();
10521                         return n._compileElement(r, o, e)
10522                     })
10523                 }, e.prototype._compileElement = function(e, n, r) {
10524                     var i = this,
10525                         o = this.$compile(n),
10526                         a = {
10527                             element: n,
10528                             cleanup: n.remove.bind(n),
10529                             locals: e,
10530                             link: function(s) {
10531                                 if (e.$scope = s, r.controller) {
10532                                     var c = t.extend(e, {
10533                                             $element: n
10534                                         }),
10535                                         l = i.$controller(r.controller, c, !0, r.controllerAs);
10536                                     r.bindToController && t.extend(l.instance, e);
10537                                     var u = l();
10538                                     n.data("$ngControllerController", u), n.children().data("$ngControllerController", u), a.controller = u
10539                                 }
10540                                 return o(s)
10541                             }
10542                         };
10543                     return a
10544                 }, e.prototype._fetchContentElement = function(e) {
10545                     function n(e) {
10546                         var t = e.parentNode,
10547                             n = e.nextElementSibling;
10548                         return function() {
10549                             n ? t.insertBefore(e, n) : t.appendChild(e)
10550                         }
10551                     }
10552                     var r = e.contentElement,
10553                         i = null;
10554                     return t.isString(r) ? i = n(r = document.querySelector(r)) : (r = r[0] || r, i = document.contains(r) ? n(r) : function() {
10555                         r.parentNode && r.parentNode.removeChild(r)
10556                     }), {
10557                         element: t.element(r),
10558                         restore: i
10559                     }
10560                 }
10561             }(),
10562             function() {
10563                 function e(e, n, r, i) {
10564                     function o(e, r, i) {
10565                         var o = t.element(e)[0] || e;
10566                         !o || o.hasAttribute(r) && 0 !== o.getAttribute(r).length || c(o, r) || ((i = t.isString(i) ? i.trim() : "").length ? e.attr(r, i) : d && n.warn('ARIA: Attribute "', r, '", required for accessibility, is missing on node:', o))
10567                     }
10568
10569                     function a(t, n, r) {
10570                         e(function() {
10571                             o(t, n, r())
10572                         })
10573                     }
10574
10575                     function s(e) {
10576                         e = e[0] || e;
10577                         for (var t, n = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, null, !1), r = ""; t = n.nextNode();)(function(t) {
10578                             for (; t.parentNode && (t = t.parentNode) !== e;)
10579                                 if (t.getAttribute && "true" === t.getAttribute("aria-hidden")) return !0
10580                         })(t) || (r += t.textContent);
10581                         return r.trim() || ""
10582                     }
10583
10584                     function c(e, t) {
10585                         var n = !1;
10586                         if (e.hasChildNodes())
10587                             for (var i = e.childNodes, o = 0; o < i.length; o++) {
10588                                 var a = i[o];
10589                                 1 === a.nodeType && a.hasAttribute(t) && (function(e) {
10590                                     return "none" === (e.currentStyle ? e.currentStyle : r.getComputedStyle(e)).display
10591                                 }(a) || (n = !0))
10592                             }
10593                         return n
10594                     }
10595
10596                     function l(e) {
10597                         var n = t.element(e)[0] || e;
10598                         return !!n.hasAttribute && (n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby") || n.hasAttribute("aria-describedby"))
10599                     }
10600
10601                     function u(e, n) {
10602                         n = n || 1;
10603                         var r = t.element(e)[0] || e;
10604                         return !!r.parentNode && (!! function(e) {
10605                             if (!l(e)) return !1;
10606                             if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
10607                                 case "command":
10608                                 case "definition":
10609                                 case "directory":
10610                                 case "grid":
10611                                 case "list":
10612                                 case "listitem":
10613                                 case "log":
10614                                 case "marquee":
10615                                 case "menu":
10616                                 case "menubar":
10617                                 case "note":
10618                                 case "presentation":
10619                                 case "separator":
10620                                 case "scrollbar":
10621                                 case "status":
10622                                 case "tablist":
10623                                     return !1
10624                             }
10625                             switch (e.tagName.toLowerCase()) {
10626                                 case "abbr":
10627                                 case "acronym":
10628                                 case "address":
10629                                 case "applet":
10630                                 case "audio":
10631                                 case "b":
10632                                 case "bdi":
10633                                 case "bdo":
10634                                 case "big":
10635                                 case "blockquote":
10636                                 case "br":
10637                                 case "canvas":
10638                                 case "caption":
10639                                 case "center":
10640                                 case "cite":
10641                                 case "code":
10642                                 case "col":
10643                                 case "data":
10644                                 case "dd":
10645                                 case "del":
10646                                 case "dfn":
10647                                 case "dir":
10648                                 case "div":
10649                                 case "dl":
10650                                 case "em":
10651                                 case "embed":
10652                                 case "fieldset":
10653                                 case "figcaption":
10654                                 case "font":
10655                                 case "h1":
10656                                 case "h2":
10657                                 case "h3":
10658                                 case "h4":
10659                                 case "h5":
10660                                 case "h6":
10661                                 case "hgroup":
10662                                 case "html":
10663                                 case "i":
10664                                 case "ins":
10665                                 case "isindex":
10666                                 case "kbd":
10667                                 case "keygen":
10668                                 case "label":
10669                                 case "legend":
10670                                 case "li":
10671                                 case "map":
10672                                 case "mark":
10673                                 case "menu":
10674                                 case "object":
10675                                 case "ol":
10676                                 case "output":
10677                                 case "pre":
10678                                 case "presentation":
10679                                 case "q":
10680                                 case "rt":
10681                                 case "ruby":
10682                                 case "samp":
10683                                 case "small":
10684                                 case "source":
10685                                 case "span":
10686                                 case "status":
10687                                 case "strike":
10688                                 case "strong":
10689                                 case "sub":
10690                                 case "sup":
10691                                 case "svg":
10692                                 case "tbody":
10693                                 case "td":
10694                                 case "th":
10695                                 case "thead":
10696                                 case "time":
10697                                 case "tr":
10698                                 case "track":
10699                                 case "tt":
10700                                 case "ul":
10701                                 case "var":
10702                                     return !1
10703                             }
10704                             return !0
10705                         }(r.parentNode) || !!--n && u(r.parentNode, n))
10706                     }
10707                     var d = this.showWarnings;
10708                     return {
10709                         expect: o,
10710                         expectAsync: a,
10711                         expectWithText: function(e, t) {
10712                             var n = s(e) || "";
10713                             n.indexOf(i.startSymbol()) > -1 ? a(e, t, function() {
10714                                 return s(e)
10715                             }) : o(e, t, n)
10716                         },
10717                         expectWithoutText: function(e, t) {
10718                             var n = s(e);
10719                             n.indexOf(i.startSymbol()) > -1 || n || o(e, t, n)
10720                         },
10721                         getText: s,
10722                         hasAriaLabel: l,
10723                         parentHasAriaLabel: u
10724                     }
10725                 }
10726                 e.$inject = ["$$rAF", "$log", "$window", "$interpolate"], t.module("material.core").provider("$mdAria", function() {
10727                     var t = {
10728                         showWarnings: !0
10729                     };
10730                     return {
10731                         disableWarnings: function() {
10732                             t.showWarnings = !1
10733                         },
10734                         $get: ["$$rAF", "$log", "$window", "$interpolate", function(n, r, i, o) {
10735                             return e.apply(t, arguments)
10736                         }]
10737                     }
10738                 })
10739             }(),
10740             function() {
10741                 function n(e, n) {
10742                     this.$timeout = e, this.$mdUtil = n, this.bodyElement = t.element(document.body), this.isBuffering = !1, this.bufferTimeout = null, this.lastInteractionType = null, this.lastInteractionTime = null, this.inputEventMap = {
10743                         keydown: "keyboard",
10744                         mousedown: "mouse",
10745                         mouseenter: "mouse",
10746                         touchstart: "touch",
10747                         pointerdown: "pointer",
10748                         MSPointerDown: "pointer"
10749                     }, this.iePointerMap = {
10750                         2: "touch",
10751                         3: "touch",
10752                         4: "mouse"
10753                     }, this.initializeEvents()
10754                 }
10755                 n.$inject = ["$timeout", "$mdUtil"], t.module("material.core.interaction", []).service("$mdInteraction", n), n.prototype.initializeEvents = function() {
10756                     var t = "MSPointerEvent" in e ? "MSPointerDown" : "PointerEvent" in e ? "pointerdown" : null;
10757                     this.bodyElement.on("keydown mousedown", this.onInputEvent.bind(this)), "ontouchstart" in document.documentElement && this.bodyElement.on("touchstart", this.onBufferInputEvent.bind(this)), t && this.bodyElement.on(t, this.onInputEvent.bind(this))
10758                 }, n.prototype.onInputEvent = function(e) {
10759                     if (!this.isBuffering) {
10760                         var t = this.inputEventMap[e.type];
10761                         "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
10762                     }
10763                 }, n.prototype.onBufferInputEvent = function(e) {
10764                     this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
10765                         this.isBuffering = !1
10766                     }.bind(this), 650, !1)
10767                 }, n.prototype.getLastInteractionType = function() {
10768                     return this.lastInteractionType
10769                 }, n.prototype.isUserInvoked = function(e) {
10770                     var n = t.isNumber(e) ? e : 15;
10771                     return this.lastInteractionTime >= this.$mdUtil.now() - n
10772                 }
10773             }(),
10774             function() {
10775                 function n() {}
10776
10777                 function r(n, r, i) {
10778                     function o(e) {
10779                         return function(t, n) {
10780                             n.distance < this.state.options.maxDistance && this.dispatchEvent(t, e, n)
10781                         }
10782                     }
10783                     var s = navigator.userAgent || navigator.vendor || e.opera,
10784                         c = s.match(/ipad|iphone|ipod/i),
10785                         u = s.match(/android/i),
10786                         d = function() {
10787                             for (var e = document.createElement("div"), n = ["", "webkit", "Moz", "MS", "ms", "o"], r = 0; r < n.length; r++) {
10788                                 var i = n[r],
10789                                     o = i ? i + "TouchAction" : "touchAction";
10790                                 if (t.isDefined(e.style[o])) return o
10791                             }
10792                         }(),
10793                         f = void 0 !== e.jQuery && t.element === e.jQuery,
10794                         m = {
10795                             handler: function(e, r) {
10796                                 var i = new n(e);
10797                                 return t.extend(i, r), h[e] = i, m
10798                             },
10799                             register: function(e, t, n) {
10800                                 var r = h[t.replace(/^\$md./, "")];
10801                                 if (!r) throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(h).join(", "));
10802                                 return r.registerElement(e, n)
10803                             },
10804                             isHijackingClicks: (c || u) && !f && !p
10805                         };
10806                     if (m.isHijackingClicks) {
10807                         m.handler("click", {
10808                             options: {
10809                                 maxDistance: 6
10810                             },
10811                             onEnd: o("click")
10812                         }), m.handler("focus", {
10813                             options: {
10814                                 maxDistance: 6
10815                             },
10816                             onEnd: function(e, t) {
10817                                 t.distance < this.state.options.maxDistance && function(e) {
10818                                     var t = ["INPUT", "SELECT", "BUTTON", "TEXTAREA", "VIDEO", "AUDIO"];
10819                                     return "-1" != e.getAttribute("tabindex") && !e.hasAttribute("DISABLED") && (e.hasAttribute("tabindex") || e.hasAttribute("href") || e.isContentEditable || -1 != t.indexOf(e.nodeName))
10820                                 }(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
10821                             }
10822                         }), m.handler("mouseup", {
10823                             options: {
10824                                 maxDistance: 6
10825                             },
10826                             onEnd: o("mouseup")
10827                         }), m.handler("mousedown", {
10828                             onStart: function(e) {
10829                                 this.dispatchEvent(e, "mousedown")
10830                             }
10831                         })
10832                     }
10833                     return m.handler("press", {
10834                         onStart: function(e, t) {
10835                             this.dispatchEvent(e, "$md.pressdown")
10836                         },
10837                         onEnd: function(e, t) {
10838                             this.dispatchEvent(e, "$md.pressup")
10839                         }
10840                     }).handler("hold", {
10841                         options: {
10842                             maxDistance: 6,
10843                             delay: 500
10844                         },
10845                         onCancel: function() {
10846                             i.cancel(this.state.timeout)
10847                         },
10848                         onStart: function(e, n) {
10849                             if (!this.state.registeredParent) return this.cancel();
10850                             this.state.pos = {
10851                                 x: n.x,
10852                                 y: n.y
10853                             }, this.state.timeout = i(t.bind(this, function() {
10854                                 this.dispatchEvent(e, "$md.hold"), this.cancel()
10855                             }), this.state.options.delay, !1)
10856                         },
10857                         onMove: function(e, t) {
10858                             d || "touchmove" !== e.type || e.preventDefault();
10859                             var n = this.state.pos.x - t.x,
10860                                 r = this.state.pos.y - t.y;
10861                             Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
10862                         },
10863                         onEnd: function() {
10864                             this.onCancel()
10865                         }
10866                     }).handler("drag", {
10867                         options: {
10868                             minDistance: 6,
10869                             horizontal: !0,
10870                             cancelMultiplier: 1.5
10871                         },
10872                         onSetup: function(e, t) {
10873                             d && (this.oldTouchAction = e[0].style[d], e[0].style[d] = t.horizontal ? "pan-y" : "pan-x")
10874                         },
10875                         onCleanup: function(e) {
10876                             this.oldTouchAction && (e[0].style[d] = this.oldTouchAction)
10877                         },
10878                         onStart: function(e) {
10879                             this.state.registeredParent || this.cancel()
10880                         },
10881                         onMove: function(e, t) {
10882                             var n, r;
10883                             d || "touchmove" !== e.type || e.preventDefault(), this.state.dragPointer ? this.dispatchDragMove(e) : (this.state.options.horizontal ? (n = Math.abs(t.distanceX) > this.state.options.minDistance, r = Math.abs(t.distanceY) > this.state.options.minDistance * this.state.options.cancelMultiplier) : (n = Math.abs(t.distanceY) > this.state.options.minDistance, r = Math.abs(t.distanceX) > this.state.options.minDistance * this.state.options.cancelMultiplier), n ? (this.state.dragPointer = a(e), l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragstart", this.state.dragPointer)) : r && this.cancel())
10884                         },
10885                         dispatchDragMove: r.throttle(function(e) {
10886                             this.state.isRunning && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
10887                         }),
10888                         onEnd: function(e, t) {
10889                             this.state.dragPointer && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
10890                         }
10891                     }).handler("swipe", {
10892                         options: {
10893                             minVelocity: .65,
10894                             minDistance: 10
10895                         },
10896                         onEnd: function(e, t) {
10897                             var n;
10898                             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))
10899                         }
10900                     })
10901                 }
10902
10903                 function i(e) {
10904                     this.name = e, this.state = {}
10905                 }
10906
10907                 function o(e, n) {
10908                     function r(e) {
10909                         !e.clientX && !e.clientY || e.$material || e.isIonicTap || c(e) || (e.preventDefault(), e.stopPropagation())
10910                     }
10911
10912                     function i(e, t) {
10913                         var r;
10914                         for (var i in h)(r = h[i]) instanceof n && ("start" === e && r.cancel(), r[e](t, d))
10915                     }
10916                     document.contains || (document.contains = function(e) {
10917                         return document.body.contains(e)
10918                     }), !g && e.isHijackingClicks && (document.addEventListener("click", function(e) {
10919                         var t = 0 === e.clientX && 0 === e.clientY,
10920                             n = e.target && "submit" === e.target.type;
10921                         t || e.$material || e.isIonicTap || c(e) || n ? (m = null, "label" == e.target.tagName.toLowerCase() && (m = {
10922                             x: e.x,
10923                             y: e.y
10924                         })) : (e.preventDefault(), e.stopPropagation(), m = null)
10925                     }, !0), document.addEventListener("mouseup", r, !0), document.addEventListener("mousedown", r, !0), document.addEventListener("focus", r, !0), g = !0);
10926                     t.element(document).on("mousedown touchstart pointerdown", function(e) {
10927                         if (!d) {
10928                             var t = +Date.now();
10929                             f && !s(e, f) && t - f.endTime < 1500 || (d = a(e), i("start", e))
10930                         }
10931                     }).on("mousemove touchmove pointermove", function(e) {
10932                         d && s(e, d) && (l(e, d), i("move", e))
10933                     }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
10934                         d && s(e, d) && (l(e, d), d.endTime = +Date.now(), i("end", e), f = d, d = null)
10935                     }).on("$$mdGestureReset", function() {
10936                         f = d = null
10937                     })
10938                 }
10939
10940                 function a(e) {
10941                     var t = u(e),
10942                         n = {
10943                             startTime: +Date.now(),
10944                             target: e.target,
10945                             type: e.type.charAt(0)
10946                         };
10947                     return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
10948                 }
10949
10950                 function s(e, t) {
10951                     return e && t && e.type.charAt(0) === t.type
10952                 }
10953
10954                 function c(e) {
10955                     return m && m.x == e.x && m.y == e.y
10956                 }
10957
10958                 function l(e, t) {
10959                     var n = u(e),
10960                         r = t.x = n.pageX,
10961                         i = t.y = n.pageY;
10962                     t.distanceX = r - t.startX, t.distanceY = i - t.startY, t.distance = Math.sqrt(t.distanceX * t.distanceX + t.distanceY * t.distanceY), t.directionX = t.distanceX > 0 ? "right" : t.distanceX < 0 ? "left" : "", t.directionY = t.distanceY > 0 ? "down" : t.distanceY < 0 ? "up" : "", t.duration = +Date.now() - t.startTime, t.velocityX = t.distanceX / t.duration, t.velocityY = t.distanceY / t.duration
10963                 }
10964
10965                 function u(e) {
10966                     return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
10967                 }
10968                 r.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"], o.$inject = ["$mdGesture", "$$MdGestureHandler"];
10969                 var d, f, h = {},
10970                     p = !1,
10971                     m = null,
10972                     g = !1;
10973                 t.module("material.core.gestures", []).provider("$mdGesture", n).factory("$$MdGestureHandler", function() {
10974                     var n = void 0 !== e.jQuery && t.element === e.jQuery;
10975                     return i.prototype = {
10976                         options: {},
10977                         dispatchEvent: n ? function(e, n, r) {
10978                             r = r || d;
10979                             var i = new t.element.Event(n);
10980                             i.$material = !0, i.pointer = r, i.srcEvent = e, t.extend(i, {
10981                                 clientX: r.x,
10982                                 clientY: r.y,
10983                                 screenX: r.x,
10984                                 screenY: r.y,
10985                                 pageX: r.x,
10986                                 pageY: r.y,
10987                                 ctrlKey: e.ctrlKey,
10988                                 altKey: e.altKey,
10989                                 shiftKey: e.shiftKey,
10990                                 metaKey: e.metaKey
10991                             }), t.element(r.target).trigger(i)
10992                         } : function(t, n, r) {
10993                             r = r || d;
10994                             var i;
10995                             "click" === n || "mouseup" == n || "mousedown" == n ? (i = document.createEvent("MouseEvents")).initMouseEvent(n, !0, !0, e, t.detail, r.x, r.y, r.x, r.y, t.ctrlKey, t.altKey, t.shiftKey, t.metaKey, t.button, t.relatedTarget || null) : (i = document.createEvent("CustomEvent")).initCustomEvent(n, !0, !0, {}), i.$material = !0, i.pointer = r, i.srcEvent = t, r.target.dispatchEvent(i)
10996                         },
10997                         onSetup: t.noop,
10998                         onCleanup: t.noop,
10999                         onStart: t.noop,
11000                         onMove: t.noop,
11001                         onEnd: t.noop,
11002                         onCancel: t.noop,
11003                         start: function(e, n) {
11004                             if (!this.state.isRunning) {
11005                                 var r = this.getNearestParent(e.target),
11006                                     i = r && r.$mdGesture[this.name] || {};
11007                                 this.state = {
11008                                     isRunning: !0,
11009                                     options: t.extend({}, this.options, i),
11010                                     registeredParent: r
11011                                 }, this.onStart(e, n)
11012                             }
11013                         },
11014                         move: function(e, t) {
11015                             this.state.isRunning && this.onMove(e, t)
11016                         },
11017                         end: function(e, t) {
11018                             this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
11019                         },
11020                         cancel: function(e, t) {
11021                             this.onCancel(e, t), this.state = {}
11022                         },
11023                         getNearestParent: function(e) {
11024                             for (var t = e; t;) {
11025                                 if ((t.$mdGesture || {})[this.name]) return t;
11026                                 t = t.parentNode
11027                             }
11028                             return null
11029                         },
11030                         registerElement: function(e, t) {
11031                             function n() {
11032                                 delete e[0].$mdGesture[r.name], e.off("$destroy", n), r.onCleanup(e, t || {})
11033                             }
11034                             var r = this;
11035                             return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", n), r.onSetup(e, t || {}), n
11036                         }
11037                     }, i
11038                 }).run(o), n.prototype = {
11039                     skipClickHijack: function() {
11040                         return p = !0
11041                     },
11042                     $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
11043                         return new r(e, t, n)
11044                     }]
11045                 }
11046             }(),
11047             function() {
11048                 t.module("material.core").provider("$$interimElement", function() {
11049                     function e(e) {
11050                         function n(n, r) {
11051                             function a(t, n) {
11052                                 var i = {};
11053                                 return i[e] = u, r.invoke(t || function() {
11054                                     return n
11055                                 }, {}, i)
11056                             }
11057                             var s, c, l = n(),
11058                                 u = {
11059                                     hide: l.hide,
11060                                     cancel: l.cancel,
11061                                     show: function(e) {
11062                                         return (e = e || {})._options && (e = e._options), l.show(t.extend({}, c, e))
11063                                     },
11064                                     destroy: function(e) {
11065                                         return l.destroy(e)
11066                                     }
11067                                 };
11068                             return s = o.methods || [], c = a(o.optionsFactory, {}), t.forEach(i, function(e, t) {
11069                                 u[t] = e
11070                             }), t.forEach(o.presets, function(e, n) {
11071                                 function r(e) {
11072                                     this._options = t.extend({}, i, e)
11073                                 }
11074                                 var i = a(e.optionsFactory, {}),
11075                                     o = (e.methods || []).concat(s);
11076                                 if (t.extend(i, {
11077                                         $type: n
11078                                     }), t.forEach(o, function(e) {
11079                                         r.prototype[e] = function(t) {
11080                                             return this._options[e] = t, this
11081                                         }
11082                                     }), e.argOption) {
11083                                     var c = "show" + n.charAt(0).toUpperCase() + n.slice(1);
11084                                     u[c] = function(e) {
11085                                         var t = u[n](e);
11086                                         return u.show(t)
11087                                     }
11088                                 }
11089                                 u[n] = function(n) {
11090                                     return arguments.length && e.argOption && !t.isObject(n) && !t.isArray(n) ? (new r)[e.argOption](n) : new r(n)
11091                                 }
11092                             }), u
11093                         }
11094                         n.$inject = ["$$interimElement", "$injector"];
11095                         var r = ["onHide", "onShow", "onRemove"],
11096                             i = {},
11097                             o = {
11098                                 presets: {}
11099                             },
11100                             a = {
11101                                 setDefaults: function(e) {
11102                                     return o.optionsFactory = e.options, o.methods = (e.methods || []).concat(r), a
11103                                 },
11104                                 addPreset: function(t, n) {
11105                                     if (n = n || {}, n.methods = n.methods || [], n.options = n.options || function() {
11106                                             return {}
11107                                         }, /^cancel|hide|show$/.test(t)) throw new Error("Preset '" + t + "' in " + e + " is reserved!");
11108                                     if (n.methods.indexOf("_options") > -1) throw new Error("Method '_options' in " + e + " is reserved!");
11109                                     return o.presets[t] = {
11110                                         methods: n.methods.concat(r),
11111                                         optionsFactory: n.options,
11112                                         argOption: n.argOption
11113                                     }, a
11114                                 },
11115                                 addMethod: function(e, t) {
11116                                     return i[e] = t, a
11117                                 },
11118                                 $get: n
11119                             };
11120                         return a.addPreset("build", {
11121                             methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
11122                         }), a
11123                     }
11124
11125                     function r(e, r, i, o, a, s, c, l, u, d, f) {
11126                         return function() {
11127                             function h(e) {
11128                                 return function() {
11129                                     var t = arguments;
11130                                     return y.length ? e.apply(m, t) : v.length ? v[0].finally(function() {
11131                                         return e.apply(m, t)
11132                                     }) : r.when("No interim elements currently showing up.")
11133                                 }
11134                             }
11135
11136                             function p(d) {
11137                                 function f(e) {
11138                                     return (e.skipCompile ? null : l.compile(e)) || r(function(t) {
11139                                         t({
11140                                             locals: {},
11141                                             link: function() {
11142                                                 return e.element
11143                                             }
11144                                         })
11145                                     })
11146                                 }
11147
11148                                 function h(e, n) {
11149                                     t.extend(e.locals, n);
11150                                     var r = e.link(n.scope);
11151                                     return n.element = r, n.parent = p(r, n), n.themable && u(r), r
11152                                 }
11153
11154                                 function p(n, r) {
11155                                     var i = r.parent;
11156                                     if (!((i = t.isFunction(i) ? i(r.scope, n, r) : t.isString(i) ? t.element(e[0].querySelector(i)) : t.element(i)) || {}).length) {
11157                                         var o;
11158                                         return a[0] && a[0].querySelector && (o = a[0].querySelector(":not(svg) > body")), o || (o = a[0]), "#comment" == o.nodeName && (o = e[0].body), t.element(o)
11159                                     }
11160                                     return i
11161                                 }
11162
11163                                 function g() {
11164                                     var e, r = t.noop;
11165                                     d.hideDelay && (e = o(m.hide, d.hideDelay), r = function() {
11166                                         o.cancel(e)
11167                                     }), d.cancelAutoHide = function() {
11168                                         r(), d.cancelAutoHide = n
11169                                     }
11170                                 }
11171
11172                                 function v(e, n, i) {
11173                                     var o = n.onShowing || t.noop,
11174                                         a = n.onComplete || t.noop;
11175                                     try {
11176                                         o(n.scope, e, n, i)
11177                                     } catch (e) {
11178                                         return r.reject(e)
11179                                     }
11180                                     return r(function(t, o) {
11181                                         try {
11182                                             r.when(n.onShow(n.scope, e, n, i)).then(function() {
11183                                                 a(n.scope, e, n), g(), t(e)
11184                                             }, o)
11185                                         } catch (e) {
11186                                             o(e.message)
11187                                         }
11188                                     })
11189                                 }
11190
11191                                 function b(e, n) {
11192                                     var i = n.onRemoving || t.noop;
11193                                     return r(function(t, o) {
11194                                         try {
11195                                             var a = r.when(n.onRemove(n.scope, e, n) || !0);
11196                                             i(e, a), n.$destroy ? (t(e), !n.preserveScope && n.scope && a.then(function() {
11197                                                 n.scope.$destroy()
11198                                             })) : a.then(function() {
11199                                                 !n.preserveScope && n.scope && n.scope.$destroy(), t(e)
11200                                             }, o)
11201                                         } catch (e) {
11202                                             o(e.message)
11203                                         }
11204                                     })
11205                                 }
11206                                 var y, $, _ = r.when(!0);
11207                                 return d = function(e) {
11208                                     return (e = e || {}).template && (e.template = c.processTemplate(e.template)), t.extend({
11209                                         preserveScope: !1,
11210                                         cancelAutoHide: t.noop,
11211                                         scope: e.scope || i.$new(e.isolateScope),
11212                                         onShow: function(e, t, n) {
11213                                             return s.enter(t, n.parent)
11214                                         },
11215                                         onRemove: function(e, t) {
11216                                             return t && s.leave(t) || r.when()
11217                                         }
11218                                     }, e)
11219                                 }(d), y = {
11220                                     options: d,
11221                                     deferred: r.defer(),
11222                                     show: function() {
11223                                         return r(function(e, t) {
11224                                             function n(e) {
11225                                                 y.deferred.reject(e), t(e)
11226                                             }
11227                                             d.onCompiling && d.onCompiling(d), f(d).then(function(t) {
11228                                                 $ = h(t, d), d.cleanupElement = t.cleanup, _ = v($, d, t.controller).then(e, n)
11229                                             }).catch(n)
11230                                         })
11231                                     },
11232                                     remove: function(e, n, i) {
11233                                         function o(e) {
11234                                             y.deferred.resolve(e)
11235                                         }
11236
11237                                         function a(e) {
11238                                             y.deferred.reject(e)
11239                                         }
11240                                         return $ ? ((d = t.extend(d || {}, i || {})).cancelAutoHide && d.cancelAutoHide(), d.element.triggerHandler("$mdInterimElementRemove"), !0 === d.$destroy ? b(d.element, d).then(function() {
11241                                             n && a(e) || o(e)
11242                                         }) : (r.when(_).finally(function() {
11243                                             b(d.element, d).then(function() {
11244                                                 n ? a(e) : o(e)
11245                                             }, a)
11246                                         }), y.deferred.promise)) : r.when(!1)
11247                                     }
11248                                 }
11249                             }
11250                             var m, g = !1,
11251                                 v = [],
11252                                 b = [],
11253                                 y = [];
11254                             return m = {
11255                                 show: function(e) {
11256                                     var t = new p((e = e || {}) || {}),
11257                                         n = e.multiple ? r.resolve() : r.all(v);
11258                                     e.multiple || (n = n.then(function() {
11259                                         var e = b.concat(y.map(m.cancel));
11260                                         return r.all(e)
11261                                     }));
11262                                     var i = n.then(function() {
11263                                         return t.show().catch(function(e) {
11264                                             return e
11265                                         }).finally(function() {
11266                                             v.splice(v.indexOf(i), 1), y.push(t)
11267                                         })
11268                                     });
11269                                     return v.push(i), t.deferred.promise.catch(function(e) {
11270                                         return e instanceof Error && f(e), e
11271                                     }), t.deferred.promise
11272                                 },
11273                                 hide: h(function(e, t) {
11274                                     function i(n) {
11275                                         var r = n.remove(e, !1, t || {}).catch(function(e) {
11276                                             return e
11277                                         }).finally(function() {
11278                                             b.splice(b.indexOf(r), 1)
11279                                         });
11280                                         return y.splice(y.indexOf(n), 1), b.push(r), n.deferred.promise
11281                                     }
11282                                     return (t = t || {}).closeAll ? r.all(y.slice().reverse().map(i)) : t.closeTo !== n ? r.all(y.slice(t.closeTo).map(i)) : i(y[y.length - 1])
11283                                 }),
11284                                 cancel: h(function(e, n) {
11285                                     var i = y.pop();
11286                                     if (!i) return r.when(e);
11287                                     var o = i.remove(e, !0, n || {}).catch(function(e) {
11288                                         return e
11289                                     }).finally(function() {
11290                                         b.splice(b.indexOf(o), 1)
11291                                     });
11292                                     return b.push(o), i.deferred.promise.catch(t.noop)
11293                                 }),
11294                                 destroy: function(e) {
11295                                     var n = e ? null : y.shift(),
11296                                         i = t.element(e).length && t.element(e)[0].parentNode;
11297                                     if (i) {
11298                                         var o = y.filter(function(e) {
11299                                             return e.options.element[0] === i
11300                                         });
11301                                         o.length && (n = o[0], y.splice(y.indexOf(n), 1))
11302                                     }
11303                                     return n ? n.remove(g, !1, {
11304                                         $destroy: !0
11305                                     }) : r.when(g)
11306                                 },
11307                                 $injector_: d
11308                             }
11309                         }
11310                     }
11311                     return r.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = r, e
11312                 })
11313             }(),
11314             function() {
11315                 function e() {
11316                     var e = !!document.querySelector("[md-layouts-disabled]");
11317                     C.enabled = !e
11318                 }
11319
11320                 function n() {
11321                     return C.enabled = !1, {
11322                         restrict: "A",
11323                         priority: "900"
11324                     }
11325                 }
11326
11327                 function r(e) {
11328                     return ["$timeout", function(n) {
11329                         return {
11330                             restrict: "A",
11331                             priority: -10,
11332                             compile: function(r) {
11333                                 return C.enabled ? (r.addClass(e), function(t, r) {
11334                                     n(function() {
11335                                         r.removeClass(e)
11336                                     }, 10, !1)
11337                                 }) : t.noop
11338                             }
11339                         }
11340                     }]
11341                 }
11342
11343                 function i(e) {
11344                     function n(t, n, r) {
11345                         var i = a(n, e),
11346                             o = r.$observe(r.$normalize(e), i);
11347                         i(f(e, r, "")), t.$on("$destroy", function() {
11348                             o()
11349                         })
11350                     }
11351                     return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
11352                         return m = r, g = i, v = o, {
11353                             restrict: "A",
11354                             compile: function(r, i) {
11355                                 var o;
11356                                 return C.enabled && (c(e, i, r, v), l(e, f(e, i, ""), u(r, e, i)), o = n), o || t.noop
11357                             }
11358                         }
11359                     }]
11360                 }
11361
11362                 function o(e) {
11363                     function n(t, n) {
11364                         n.addClass(e)
11365                     }
11366                     return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
11367                         return m = r, g = i, v = o, {
11368                             restrict: "A",
11369                             compile: function(r, i) {
11370                                 var o;
11371                                 return C.enabled && (l(e, f(e, i, ""), u(r, e, i)), n(0, r), o = n), o || t.noop
11372                             }
11373                         }
11374                     }]
11375                 }
11376
11377                 function a(e, n) {
11378                     var r;
11379                     return function(i) {
11380                         var o = l(n, i || "");
11381                         t.isDefined(o) && (r && e.removeClass(r), r = o ? n + "-" + o.trim().replace(y, "-") : n, e.addClass(r))
11382                     }
11383                 }
11384
11385                 function s(e) {
11386                     var n = e.split("-");
11387                     return ["$log", function(r) {
11388                         return r.warn(e + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), t.noop
11389                     }]
11390                 }
11391
11392                 function c(e, t, n, r) {
11393                     var i, o, a, s = n[0].nodeName.toLowerCase();
11394                     switch (e.replace(b, "")) {
11395                         case "flex":
11396                             "md-button" != s && "fieldset" != s || (o = "<" + s + " " + e + "></" + s + ">", a = "https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers", i = "Markup '{0}' may not work as expected in IE Browsers. Consult '{1}' for details.", r.warn(m.supplant(i, [o, a])))
11397                     }
11398                 }
11399
11400                 function l(e, n, r) {
11401                     if (!d(n)) {
11402                         switch (e.replace(b, "")) {
11403                             case "layout":
11404                                 h(n, _) || (n = _[0]);
11405                                 break;
11406                             case "flex":
11407                                 h(n, $) || isNaN(n) && (n = "");
11408                                 break;
11409                             case "flex-offset":
11410                             case "flex-order":
11411                                 n && !isNaN(+n) || (n = "0");
11412                                 break;
11413                             case "layout-align":
11414                                 var i = p(n);
11415                                 n = m.supplant("{main}-{cross}", i);
11416                                 break;
11417                             case "layout-padding":
11418                             case "layout-margin":
11419                             case "layout-fill":
11420                             case "layout-wrap":
11421                             case "layout-nowrap":
11422                             case "layout-nowrap":
11423                                 n = ""
11424                         }
11425                         void 0 != n && (r || t.noop)(n)
11426                     }
11427                     return n ? n.trim() : ""
11428                 }
11429
11430                 function u(e, t, n) {
11431                     return function(e) {
11432                         d(e) || (n[n.$normalize(t)] = e)
11433                     }
11434                 }
11435
11436                 function d(e) {
11437                     return (e || "").indexOf(g.startSymbol()) > -1
11438                 }
11439
11440                 function f(e, t, n) {
11441                     var r = t.$normalize(e);
11442                     return t[r] ? t[r].trim().replace(y, "-") : n || null
11443                 }
11444
11445                 function h(e, t, n) {
11446                     var r = !1;
11447                     return (e = n && e ? e.replace(y, n) : e) && t.forEach(function(t) {
11448                         t = n ? t.replace(y, n) : t, r = r || t === e
11449                     }), r
11450                 }
11451
11452                 function p(e) {
11453                     var t, n = {
11454                         main: "start",
11455                         cross: "stretch"
11456                     };
11457                     return 0 !== (e = e || "").indexOf("-") && 0 !== e.indexOf(" ") || (e = "none" + e), (t = e.toLowerCase().trim().replace(y, "-").split("-")).length && "space" === t[0] && (t = [t[0] + "-" + t[1], t[2]]), t.length > 0 && (n.main = t[0] || n.main), t.length > 1 && (n.cross = t[1] || n.cross), w.indexOf(n.main) < 0 && (n.main = "start"), E.indexOf(n.cross) < 0 && (n.cross = "stretch"), n
11458                 }
11459                 var m, g, v, b = /(-gt)?-(sm|md|lg|print)/g,
11460                     y = /\s+/g,
11461                     $ = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
11462                     _ = ["row", "column"],
11463                     w = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
11464                     E = ["", "start", "center", "end", "stretch"],
11465                     C = {
11466                         enabled: !0,
11467                         breakpoints: []
11468                     };
11469                 ! function(a) {
11470                     function u(e) {
11471                         return e.replace(d, "").replace(f, function(e, t, n, r) {
11472                             return r ? n.toUpperCase() : n
11473                         })
11474                     }
11475                     var d = /^((?:x|data)[\:\-_])/i,
11476                         f = /([\:\-\_]+(.))/g,
11477                         h = ["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"],
11478                         p = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
11479                         m = ["show", "hide", "layout-padding", "layout-margin"];
11480                     t.forEach(h, function(e) {
11481                         t.forEach(p, function(t) {
11482                             var n = e ? t + "-" + e : t;
11483                             a.directive(u(n), i(n))
11484                         }), t.forEach(m, function(t) {
11485                             var n = e ? t + "-" + e : t;
11486                             a.directive(u(n), o(n))
11487                         })
11488                     }), a.provider("$$mdLayout", function() {
11489                         return {
11490                             $get: t.noop,
11491                             validateAttributeValue: l,
11492                             validateAttributeUsage: c,
11493                             disableLayouts: function(e) {
11494                                 C.enabled = !0 !== e
11495                             }
11496                         }
11497                     }).directive("mdLayoutCss", n).directive("ngCloak", r("ng-cloak")).directive("layoutWrap", o("layout-wrap")).directive("layoutNowrap", o("layout-nowrap")).directive("layoutNoWrap", o("layout-no-wrap")).directive("layoutFill", o("layout-fill")).directive("layoutLtMd", s("layout-lt-md")).directive("layoutLtLg", s("layout-lt-lg")).directive("flexLtMd", s("flex-lt-md")).directive("flexLtLg", s("flex-lt-lg")).directive("layoutAlignLtMd", s("layout-align-lt-md")).directive("layoutAlignLtLg", s("layout-align-lt-lg")).directive("flexOrderLtMd", s("flex-order-lt-md")).directive("flexOrderLtLg", s("flex-order-lt-lg")).directive("offsetLtMd", s("flex-offset-lt-md")).directive("offsetLtLg", s("flex-offset-lt-lg")).directive("hideLtMd", s("hide-lt-md")).directive("hideLtLg", s("hide-lt-lg")).directive("showLtMd", s("show-lt-md")).directive("showLtLg", s("show-lt-lg")).config(e)
11498                 }(t.module("material.core.layout", ["ng"]))
11499             }(),
11500             function() {
11501                 function e(e) {
11502                     this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
11503                 }
11504                 e.$inject = ["$timeout"], t.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
11505                     t || (t = "polite");
11506                     var n = this;
11507                     n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
11508                         n._liveElement.textContent = e
11509                     }, n._announceTimeout, !1)
11510                 }, e.prototype._createLiveElement = function() {
11511                     var e = document.createElement("div");
11512                     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
11513                 }
11514             }(), t.module("material.core.meta", []).provider("$$mdMeta", function() {
11515                 function e(e) {
11516                     if (r[e]) return !0;
11517                     var n = document.getElementsByName(e)[0];
11518                     return !!n && (r[e] = t.element(n), !0)
11519                 }
11520                 var n = t.element(document.head),
11521                     r = {},
11522                     i = {
11523                         setMeta: function(i, o) {
11524                             if (e(i), r[i]) r[i].attr("content", o);
11525                             else {
11526                                 var a = t.element('<meta name="' + i + '" content="' + o + '"/>');
11527                                 n.append(a), r[i] = a
11528                             }
11529                             return function() {
11530                                 r[i].attr("content", ""), r[i].remove(), delete r[i]
11531                             }
11532                         },
11533                         getMeta: function(t) {
11534                             if (!e(t)) throw Error("$$mdMeta: could not find a meta tag with the name '" + t + "'");
11535                             return r[t].attr("content")
11536                         }
11537                     };
11538                 return t.extend({}, i, {
11539                     $get: function() {
11540                         return i
11541                     }
11542                 })
11543             }),
11544             function() {
11545                 function e(e, r) {
11546                     function i(e) {
11547                         return e && "" !== e
11548                     }
11549                     var o, a = [],
11550                         s = {};
11551                     return o = {
11552                         notFoundError: function(t, n) {
11553                             e.error((n || "") + "No instance found for handle", t)
11554                         },
11555                         getInstances: function() {
11556                             return a
11557                         },
11558                         get: function(e) {
11559                             if (!i(e)) return null;
11560                             var t, n, r;
11561                             for (t = 0, n = a.length; t < n; t++)
11562                                 if ((r = a[t]).$$mdHandle === e) return r;
11563                             return null
11564                         },
11565                         register: function(e, n) {
11566                             return n ? (e.$$mdHandle = n, a.push(e), function() {
11567                                 var t = s[n];
11568                                 t && (t.forEach(function(t) {
11569                                     t.resolve(e)
11570                                 }), delete s[n])
11571                             }(), function() {
11572                                 var t = a.indexOf(e); - 1 !== t && a.splice(t, 1)
11573                             }) : t.noop
11574                         },
11575                         when: function(e) {
11576                             if (i(e)) {
11577                                 var t = r.defer(),
11578                                     a = o.get(e);
11579                                 return a ? t.resolve(a) : (s[e] === n && (s[e] = []), s[e].push(t)), t.promise
11580                             }
11581                             return r.reject("Invalid `md-component-id` value.")
11582                         }
11583                     }
11584                 }
11585                 e.$inject = ["$log", "$q"], t.module("material.core").factory("$mdComponentRegistry", e)
11586             }(),
11587             function() {
11588                 function e(e) {
11589                     function n(e) {
11590                         return e.hasClass("md-icon-button") ? {
11591                             isMenuItem: e.hasClass("md-menu-item"),
11592                             fitRipple: !0,
11593                             center: !0
11594                         } : {
11595                             isMenuItem: e.hasClass("md-menu-item"),
11596                             dimBackground: !0
11597                         }
11598                     }
11599                     return {
11600                         attach: function(r, i, o) {
11601                             return o = t.extend(n(i), o), e.attach(r, i, o)
11602                         }
11603                     }
11604                 }
11605                 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdButtonInkRipple", e)
11606             }(),
11607             function() {
11608                 function e(e) {
11609                     return {
11610                         attach: function(n, r, i) {
11611                             return e.attach(n, r, t.extend({
11612                                 center: !0,
11613                                 dimBackground: !1,
11614                                 fitRipple: !0
11615                             }, i))
11616                         }
11617                     }
11618                 }
11619                 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdCheckboxInkRipple", e)
11620             }(),
11621             function() {
11622                 function e(e) {
11623                     return {
11624                         attach: function(n, r, i) {
11625                             return e.attach(n, r, t.extend({
11626                                 center: !1,
11627                                 dimBackground: !0,
11628                                 outline: !1,
11629                                 rippleSize: "full"
11630                             }, i))
11631                         }
11632                     }
11633                 }
11634                 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdListInkRipple", e)
11635             }(),
11636             function() {
11637                 function e(e, n) {
11638                     return {
11639                         controller: t.noop,
11640                         link: function(t, r, i) {
11641                             i.hasOwnProperty("mdInkRippleCheckbox") ? n.attach(t, r) : e.attach(t, r)
11642                         }
11643                     }
11644                 }
11645
11646                 function n(e, n, r, i, o, a, s) {
11647                     this.$window = i, this.$timeout = o, this.$mdUtil = a, this.$mdColorUtil = s, this.$scope = e, this.$element = n, this.options = r, this.mousedown = !1, this.ripples = [], this.timeout = null, this.lastRipple = null, a.valueOnUse(this, "container", this.createContainer), this.$element.addClass("md-ink-ripple"), (n.controller("mdInkRipple") || {}).createRipple = t.bind(this, this.createRipple), (n.controller("mdInkRipple") || {}).setColor = t.bind(this, this.color), this.bindEvents()
11648                 }
11649
11650                 function r(e, n) {
11651                     (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(t.bind(e, n), !1))
11652                 }
11653
11654                 function i() {
11655                     return {
11656                         controller: t.noop
11657                     }
11658                 }
11659                 n.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], t.module("material.core").provider("$mdInkRipple", function() {
11660                     var e = !1;
11661                     return {
11662                         disableInkRipple: function() {
11663                             e = !0
11664                         },
11665                         $get: ["$injector", function(r) {
11666                             return {
11667                                 attach: function(i, o, a) {
11668                                     return e || o.controller("mdNoInk") ? t.noop : r.instantiate(n, {
11669                                         $scope: i,
11670                                         $element: o,
11671                                         rippleOptions: a
11672                                     })
11673                                 }
11674                             }
11675                         }]
11676                     }
11677                 }).directive("mdInkRipple", e).directive("mdNoInk", i).directive("mdNoBar", i).directive("mdNoStretch", i);
11678                 n.prototype.color = function(e) {
11679                     var n = this;
11680                     return t.isDefined(e) && (n._color = n._parseColor(e)), n._color || n._parseColor(n.inkRipple()) || n._parseColor(function() {
11681                         var e = n.options && n.options.colorElement ? n.options.colorElement : [],
11682                             t = e.length ? e[0] : n.$element[0];
11683                         return t ? n.$window.getComputedStyle(t).color : "rgb(0,0,0)"
11684                     }())
11685                 }, n.prototype.calculateColor = function() {
11686                     return this.color()
11687                 }, n.prototype._parseColor = function(e, t) {
11688                     t = t || 1;
11689                     var n = this.$mdColorUtil;
11690                     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
11691                 }, n.prototype.bindEvents = function() {
11692                     this.$element.on("mousedown", t.bind(this, this.handleMousedown)), this.$element.on("mouseup touchend", t.bind(this, this.handleMouseup)), this.$element.on("mouseleave", t.bind(this, this.handleMouseup)), this.$element.on("touchmove", t.bind(this, this.handleTouchmove))
11693                 }, n.prototype.handleMousedown = function(e) {
11694                     if (!this.mousedown)
11695                         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);
11696                         else if (e.srcElement !== this.$element[0]) {
11697                         var t = this.$element[0].getBoundingClientRect(),
11698                             n = e.clientX - t.left,
11699                             r = e.clientY - t.top;
11700                         this.createRipple(n, r)
11701                     } else this.createRipple(e.offsetX, e.offsetY)
11702                 }, n.prototype.handleMouseup = function() {
11703                     r(this, this.clearRipples)
11704                 }, n.prototype.handleTouchmove = function() {
11705                     r(this, this.deleteRipples)
11706                 }, n.prototype.deleteRipples = function() {
11707                     for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
11708                 }, n.prototype.clearRipples = function() {
11709                     for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
11710                 }, n.prototype.createContainer = function() {
11711                     var e = t.element('<div class="md-ripple-container"></div>');
11712                     return this.$element.append(e), e
11713                 }, n.prototype.clearTimeout = function() {
11714                     this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
11715                 }, n.prototype.isRippleAllowed = function() {
11716                     var e = this.$element[0];
11717                     do {
11718                         if (!e.tagName || "BODY" === e.tagName) break;
11719                         if (e && t.isFunction(e.hasAttribute)) {
11720                             if (e.hasAttribute("disabled")) return !1;
11721                             if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
11722                         }
11723                     } while (e = e.parentNode);
11724                     return !0
11725                 }, n.prototype.inkRipple = function() {
11726                     return this.$element.attr("md-ink-ripple")
11727                 }, n.prototype.createRipple = function(e, n) {
11728                     if (this.isRippleAllowed()) {
11729                         var r = this,
11730                             i = r.$mdColorUtil,
11731                             o = t.element('<div class="md-ripple"></div>'),
11732                             a = this.$element.prop("clientWidth"),
11733                             s = this.$element.prop("clientHeight"),
11734                             c = 2 * Math.max(Math.abs(a - e), e),
11735                             l = 2 * Math.max(Math.abs(s - n), n),
11736                             u = function(e, t, n) {
11737                                 return e ? Math.max(t, n) : Math.sqrt(Math.pow(t, 2) + Math.pow(n, 2))
11738                             }(this.options.fitRipple, c, l),
11739                             d = this.calculateColor();
11740                         o.css({
11741                             left: e + "px",
11742                             top: n + "px",
11743                             background: "black",
11744                             width: u + "px",
11745                             height: u + "px",
11746                             backgroundColor: i.rgbaToRgb(d),
11747                             borderColor: i.rgbaToRgb(d)
11748                         }), this.lastRipple = o, this.clearTimeout(), this.timeout = this.$timeout(function() {
11749                             r.clearTimeout(), r.mousedown || r.fadeInComplete(o)
11750                         }, 157.5, !1), this.options.dimBackground && this.container.css({
11751                             backgroundColor: d
11752                         }), this.container.append(o), this.ripples.push(o), o.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
11753                             o.addClass("md-ripple-scaled md-ripple-active"), r.$timeout(function() {
11754                                 r.clearRipples()
11755                             }, 450, !1)
11756                         }, !1)
11757                     }
11758                 }, n.prototype.fadeInComplete = function(e) {
11759                     this.lastRipple === e ? this.timeout || this.mousedown || this.removeRipple(e) : this.removeRipple(e)
11760                 }, n.prototype.removeRipple = function(e) {
11761                     var t = this;
11762                     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({
11763                         backgroundColor: ""
11764                     }), this.$timeout(function() {
11765                         t.fadeOutComplete(e)
11766                     }, 450, !1))
11767                 }, n.prototype.fadeOutComplete = function(e) {
11768                     e.remove(), this.lastRipple = null
11769                 }
11770             }(),
11771             function() {
11772                 function e(e) {
11773                     return {
11774                         attach: function(n, r, i) {
11775                             return e.attach(n, r, t.extend({
11776                                 center: !1,
11777                                 dimBackground: !0,
11778                                 outline: !1,
11779                                 rippleSize: "full"
11780                             }, i))
11781                         }
11782                     }
11783                 }
11784                 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdTabInkRipple", e)
11785             }(), t.module("material.core.theming.palette", []).constant("$mdColorPalette", {
11786                 red: {
11787                     50: "#ffebee",
11788                     100: "#ffcdd2",
11789                     200: "#ef9a9a",
11790                     300: "#e57373",
11791                     400: "#ef5350",
11792                     500: "#f44336",
11793                     600: "#e53935",
11794                     700: "#d32f2f",
11795                     800: "#c62828",
11796                     900: "#b71c1c",
11797                     A100: "#ff8a80",
11798                     A200: "#ff5252",
11799                     A400: "#ff1744",
11800                     A700: "#d50000",
11801                     contrastDefaultColor: "light",
11802                     contrastDarkColors: "50 100 200 300 A100",
11803                     contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
11804                 },
11805                 pink: {
11806                     50: "#fce4ec",
11807                     100: "#f8bbd0",
11808                     200: "#f48fb1",
11809                     300: "#f06292",
11810                     400: "#ec407a",
11811                     500: "#e91e63",
11812                     600: "#d81b60",
11813                     700: "#c2185b",
11814                     800: "#ad1457",
11815                     900: "#880e4f",
11816                     A100: "#ff80ab",
11817                     A200: "#ff4081",
11818                     A400: "#f50057",
11819                     A700: "#c51162",
11820                     contrastDefaultColor: "light",
11821                     contrastDarkColors: "50 100 200 A100",
11822                     contrastStrongLightColors: "500 600 A200 A400 A700"
11823                 },
11824                 purple: {
11825                     50: "#f3e5f5",
11826                     100: "#e1bee7",
11827                     200: "#ce93d8",
11828                     300: "#ba68c8",
11829                     400: "#ab47bc",
11830                     500: "#9c27b0",
11831                     600: "#8e24aa",
11832                     700: "#7b1fa2",
11833                     800: "#6a1b9a",
11834                     900: "#4a148c",
11835                     A100: "#ea80fc",
11836                     A200: "#e040fb",
11837                     A400: "#d500f9",
11838                     A700: "#aa00ff",
11839                     contrastDefaultColor: "light",
11840                     contrastDarkColors: "50 100 200 A100",
11841                     contrastStrongLightColors: "300 400 A200 A400 A700"
11842                 },
11843                 "deep-purple": {
11844                     50: "#ede7f6",
11845                     100: "#d1c4e9",
11846                     200: "#b39ddb",
11847                     300: "#9575cd",
11848                     400: "#7e57c2",
11849                     500: "#673ab7",
11850                     600: "#5e35b1",
11851                     700: "#512da8",
11852                     800: "#4527a0",
11853                     900: "#311b92",
11854                     A100: "#b388ff",
11855                     A200: "#7c4dff",
11856                     A400: "#651fff",
11857                     A700: "#6200ea",
11858                     contrastDefaultColor: "light",
11859                     contrastDarkColors: "50 100 200 A100",
11860                     contrastStrongLightColors: "300 400 A200"
11861                 },
11862                 indigo: {
11863                     50: "#e8eaf6",
11864                     100: "#c5cae9",
11865                     200: "#9fa8da",
11866                     300: "#7986cb",
11867                     400: "#5c6bc0",
11868                     500: "#3f51b5",
11869                     600: "#3949ab",
11870                     700: "#303f9f",
11871                     800: "#283593",
11872                     900: "#1a237e",
11873                     A100: "#8c9eff",
11874                     A200: "#536dfe",
11875                     A400: "#3d5afe",
11876                     A700: "#304ffe",
11877                     contrastDefaultColor: "light",
11878                     contrastDarkColors: "50 100 200 A100",
11879                     contrastStrongLightColors: "300 400 A200 A400"
11880                 },
11881                 blue: {
11882                     50: "#e3f2fd",
11883                     100: "#bbdefb",
11884                     200: "#90caf9",
11885                     300: "#64b5f6",
11886                     400: "#42a5f5",
11887                     500: "#2196f3",
11888                     600: "#1e88e5",
11889                     700: "#1976d2",
11890                     800: "#1565c0",
11891                     900: "#0d47a1",
11892                     A100: "#82b1ff",
11893                     A200: "#448aff",
11894                     A400: "#2979ff",
11895                     A700: "#2962ff",
11896                     contrastDefaultColor: "light",
11897                     contrastDarkColors: "50 100 200 300 400 A100",
11898                     contrastStrongLightColors: "500 600 700 A200 A400 A700"
11899                 },
11900                 "light-blue": {
11901                     50: "#e1f5fe",
11902                     100: "#b3e5fc",
11903                     200: "#81d4fa",
11904                     300: "#4fc3f7",
11905                     400: "#29b6f6",
11906                     500: "#03a9f4",
11907                     600: "#039be5",
11908                     700: "#0288d1",
11909                     800: "#0277bd",
11910                     900: "#01579b",
11911                     A100: "#80d8ff",
11912                     A200: "#40c4ff",
11913                     A400: "#00b0ff",
11914                     A700: "#0091ea",
11915                     contrastDefaultColor: "dark",
11916                     contrastLightColors: "600 700 800 900 A700",
11917                     contrastStrongLightColors: "600 700 800 A700"
11918                 },
11919                 cyan: {
11920                     50: "#e0f7fa",
11921                     100: "#b2ebf2",
11922                     200: "#80deea",
11923                     300: "#4dd0e1",
11924                     400: "#26c6da",
11925                     500: "#00bcd4",
11926                     600: "#00acc1",
11927                     700: "#0097a7",
11928                     800: "#00838f",
11929                     900: "#006064",
11930                     A100: "#84ffff",
11931                     A200: "#18ffff",
11932                     A400: "#00e5ff",
11933                     A700: "#00b8d4",
11934                     contrastDefaultColor: "dark",
11935                     contrastLightColors: "700 800 900",
11936                     contrastStrongLightColors: "700 800 900"
11937                 },
11938                 teal: {
11939                     50: "#e0f2f1",
11940                     100: "#b2dfdb",
11941                     200: "#80cbc4",
11942                     300: "#4db6ac",
11943                     400: "#26a69a",
11944                     500: "#009688",
11945                     600: "#00897b",
11946                     700: "#00796b",
11947                     800: "#00695c",
11948                     900: "#004d40",
11949                     A100: "#a7ffeb",
11950                     A200: "#64ffda",
11951                     A400: "#1de9b6",
11952                     A700: "#00bfa5",
11953                     contrastDefaultColor: "dark",
11954                     contrastLightColors: "500 600 700 800 900",
11955                     contrastStrongLightColors: "500 600 700"
11956                 },
11957                 green: {
11958                     50: "#e8f5e9",
11959                     100: "#c8e6c9",
11960                     200: "#a5d6a7",
11961                     300: "#81c784",
11962                     400: "#66bb6a",
11963                     500: "#4caf50",
11964                     600: "#43a047",
11965                     700: "#388e3c",
11966                     800: "#2e7d32",
11967                     900: "#1b5e20",
11968                     A100: "#b9f6ca",
11969                     A200: "#69f0ae",
11970                     A400: "#00e676",
11971                     A700: "#00c853",
11972                     contrastDefaultColor: "dark",
11973                     contrastLightColors: "500 600 700 800 900",
11974                     contrastStrongLightColors: "500 600 700"
11975                 },
11976                 "light-green": {
11977                     50: "#f1f8e9",
11978                     100: "#dcedc8",
11979                     200: "#c5e1a5",
11980                     300: "#aed581",
11981                     400: "#9ccc65",
11982                     500: "#8bc34a",
11983                     600: "#7cb342",
11984                     700: "#689f38",
11985                     800: "#558b2f",
11986                     900: "#33691e",
11987                     A100: "#ccff90",
11988                     A200: "#b2ff59",
11989                     A400: "#76ff03",
11990                     A700: "#64dd17",
11991                     contrastDefaultColor: "dark",
11992                     contrastLightColors: "700 800 900",
11993                     contrastStrongLightColors: "700 800 900"
11994                 },
11995                 lime: {
11996                     50: "#f9fbe7",
11997                     100: "#f0f4c3",
11998                     200: "#e6ee9c",
11999                     300: "#dce775",
12000                     400: "#d4e157",
12001                     500: "#cddc39",
12002                     600: "#c0ca33",
12003                     700: "#afb42b",
12004                     800: "#9e9d24",
12005                     900: "#827717",
12006                     A100: "#f4ff81",
12007                     A200: "#eeff41",
12008                     A400: "#c6ff00",
12009                     A700: "#aeea00",
12010                     contrastDefaultColor: "dark",
12011                     contrastLightColors: "900",
12012                     contrastStrongLightColors: "900"
12013                 },
12014                 yellow: {
12015                     50: "#fffde7",
12016                     100: "#fff9c4",
12017                     200: "#fff59d",
12018                     300: "#fff176",
12019                     400: "#ffee58",
12020                     500: "#ffeb3b",
12021                     600: "#fdd835",
12022                     700: "#fbc02d",
12023                     800: "#f9a825",
12024                     900: "#f57f17",
12025                     A100: "#ffff8d",
12026                     A200: "#ffff00",
12027                     A400: "#ffea00",
12028                     A700: "#ffd600",
12029                     contrastDefaultColor: "dark"
12030                 },
12031                 amber: {
12032                     50: "#fff8e1",
12033                     100: "#ffecb3",
12034                     200: "#ffe082",
12035                     300: "#ffd54f",
12036                     400: "#ffca28",
12037                     500: "#ffc107",
12038                     600: "#ffb300",
12039                     700: "#ffa000",
12040                     800: "#ff8f00",
12041                     900: "#ff6f00",
12042                     A100: "#ffe57f",
12043                     A200: "#ffd740",
12044                     A400: "#ffc400",
12045                     A700: "#ffab00",
12046                     contrastDefaultColor: "dark"
12047                 },
12048                 orange: {
12049                     50: "#fff3e0",
12050                     100: "#ffe0b2",
12051                     200: "#ffcc80",
12052                     300: "#ffb74d",
12053                     400: "#ffa726",
12054                     500: "#ff9800",
12055                     600: "#fb8c00",
12056                     700: "#f57c00",
12057                     800: "#ef6c00",
12058                     900: "#e65100",
12059                     A100: "#ffd180",
12060                     A200: "#ffab40",
12061                     A400: "#ff9100",
12062                     A700: "#ff6d00",
12063                     contrastDefaultColor: "dark",
12064                     contrastLightColors: "800 900",
12065                     contrastStrongLightColors: "800 900"
12066                 },
12067                 "deep-orange": {
12068                     50: "#fbe9e7",
12069                     100: "#ffccbc",
12070                     200: "#ffab91",
12071                     300: "#ff8a65",
12072                     400: "#ff7043",
12073                     500: "#ff5722",
12074                     600: "#f4511e",
12075                     700: "#e64a19",
12076                     800: "#d84315",
12077                     900: "#bf360c",
12078                     A100: "#ff9e80",
12079                     A200: "#ff6e40",
12080                     A400: "#ff3d00",
12081                     A700: "#dd2c00",
12082                     contrastDefaultColor: "light",
12083                     contrastDarkColors: "50 100 200 300 400 A100 A200",
12084                     contrastStrongLightColors: "500 600 700 800 900 A400 A700"
12085                 },
12086                 brown: {
12087                     50: "#efebe9",
12088                     100: "#d7ccc8",
12089                     200: "#bcaaa4",
12090                     300: "#a1887f",
12091                     400: "#8d6e63",
12092                     500: "#795548",
12093                     600: "#6d4c41",
12094                     700: "#5d4037",
12095                     800: "#4e342e",
12096                     900: "#3e2723",
12097                     A100: "#d7ccc8",
12098                     A200: "#bcaaa4",
12099                     A400: "#8d6e63",
12100                     A700: "#5d4037",
12101                     contrastDefaultColor: "light",
12102                     contrastDarkColors: "50 100 200 A100 A200",
12103                     contrastStrongLightColors: "300 400"
12104                 },
12105                 grey: {
12106                     50: "#fafafa",
12107                     100: "#f5f5f5",
12108                     200: "#eeeeee",
12109                     300: "#e0e0e0",
12110                     400: "#bdbdbd",
12111                     500: "#9e9e9e",
12112                     600: "#757575",
12113                     700: "#616161",
12114                     800: "#424242",
12115                     900: "#212121",
12116                     A100: "#ffffff",
12117                     A200: "#000000",
12118                     A400: "#303030",
12119                     A700: "#616161",
12120                     contrastDefaultColor: "dark",
12121                     contrastLightColors: "600 700 800 900 A200 A400 A700"
12122                 },
12123                 "blue-grey": {
12124                     50: "#eceff1",
12125                     100: "#cfd8dc",
12126                     200: "#b0bec5",
12127                     300: "#90a4ae",
12128                     400: "#78909c",
12129                     500: "#607d8b",
12130                     600: "#546e7a",
12131                     700: "#455a64",
12132                     800: "#37474f",
12133                     900: "#263238",
12134                     A100: "#cfd8dc",
12135                     A200: "#b0bec5",
12136                     A400: "#78909c",
12137                     A700: "#455a64",
12138                     contrastDefaultColor: "light",
12139                     contrastDarkColors: "50 100 200 300 A100 A200",
12140                     contrastStrongLightColors: "400 500 700"
12141                 }
12142             }),
12143             function(e) {
12144                 function t(e) {
12145                     var t = !!document.querySelector("[md-themes-disabled]");
12146                     e.disableTheming(t)
12147                 }
12148
12149                 function r(t, r) {
12150                     function i(e, t) {
12151                         var n = x.filter(function(e) {
12152                             return !t[e]
12153                         });
12154                         if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
12155                         return t
12156                     }
12157
12158                     function o(t, n) {
12159                         if (h[t]) return h[t];
12160                         var r = "string" == typeof(n = n || "default") ? h[n] : n,
12161                             i = new s(t);
12162                         return r && e.forEach(r.colors, function(t, n) {
12163                             i.colors[n] = {
12164                                 name: t.name,
12165                                 hues: e.extend({}, t.hues)
12166                             }
12167                         }), h[t] = i, i
12168                     }
12169
12170                     function s(t) {
12171                         function n(t) {
12172                             if ((t = 0 === arguments.length || !!t) !== r.isDark) {
12173                                 r.isDark = t, r.foregroundPalette = r.isDark ? m : p, r.foregroundShadow = r.isDark ? g : v;
12174                                 var n = r.isDark ? C : E,
12175                                     i = r.isDark ? E : C;
12176                                 return e.forEach(n, function(e, t) {
12177                                     var n = r.colors[t],
12178                                         o = i[t];
12179                                     if (n)
12180                                         for (var a in n.hues) n.hues[a] === o[a] && (n.hues[a] = e[a])
12181                                 }), r
12182                             }
12183                         }
12184                         var r = this;
12185                         r.name = t, r.colors = {}, r.dark = n, n(!1), _.forEach(function(t) {
12186                             var n = (r.isDark ? C : E)[t];
12187                             r[t + "Palette"] = function(i, o) {
12188                                 var a = r.colors[t] = {
12189                                     name: i,
12190                                     hues: e.extend({}, n, o)
12191                                 };
12192                                 return Object.keys(a.hues).forEach(function(e) {
12193                                     if (!n[e]) throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1", e).replace("%2", r.name).replace("%3", i).replace("%4", Object.keys(n).join(", ")))
12194                                 }), Object.keys(a.hues).map(function(e) {
12195                                     return a.hues[e]
12196                                 }).forEach(function(e) {
12197                                     if (-1 == x.indexOf(e)) throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1", e).replace("%2", r.name).replace("%3", t).replace("%4", i).replace("%5", x.join(", ")))
12198                                 }), r
12199                             }, r[t + "Color"] = function() {
12200                                 var e = Array.prototype.slice.call(arguments);
12201                                 return console.warn("$mdThemingProviderTheme." + t + "Color() has been deprecated. Use $mdThemingProviderTheme." + t + "Palette() instead."), r[t + "Palette"].apply(r, e)
12202                             }
12203                         })
12204                     }
12205
12206                     function l(t, r, i, a) {
12207                         function s(e) {
12208                             return e === n || "" === e || l.THEMES[e] !== n
12209                         }
12210                         var l = function(e, r) {
12211                             r === n && (r = e, e = n), e === n && (e = t), l.inherit(r, r)
12212                         };
12213                         return Object.defineProperty(l, "THEMES", {
12214                             get: function() {
12215                                 return e.extend({}, h)
12216                             }
12217                         }), Object.defineProperty(l, "PALETTES", {
12218                             get: function() {
12219                                 return e.extend({}, f)
12220                             }
12221                         }), Object.defineProperty(l, "ALWAYS_WATCH", {
12222                             get: function() {
12223                                 return b
12224                             }
12225                         }), l.inherit = function(e, t) {
12226                             function n(t) {
12227                                 if (t) {
12228                                     s(t) || a.warn("Attempted to use unregistered theme '" + t + "'. Register it with $mdThemingProvider.theme().");
12229                                     var n = e.data("$mdThemeName");
12230                                     n && e.removeClass("md-" + n + "-theme"), e.addClass("md-" + t + "-theme"), e.data("$mdThemeName", t), i && e.data("$mdThemeController", i)
12231                                 }
12232                             }
12233                             var i = t.controller("mdTheme") || e.data("$mdThemeController");
12234                             if (n(i && i.$mdTheme || ("default" == y ? "" : y)), i) var o = b || i.$shouldWatch || r.parseAttributeBoolean(e.attr("md-theme-watch")),
12235                                 c = i.registerChanges(function(t) {
12236                                     n(t), o ? e.on("$destroy", c) : c()
12237                                 })
12238                         }, l.registered = s, l.defaultTheme = function() {
12239                             return y
12240                         }, l.generateTheme = function(e) {
12241                             c(h[e], e, k.nonce)
12242                         }, l.defineTheme = function(e, t) {
12243                             t = t || {};
12244                             var n = o(e);
12245                             return t.primary && n.primaryPalette(t.primary), t.accent && n.accentPalette(t.accent), t.warn && n.warnPalette(t.warn), t.background && n.backgroundPalette(t.background), t.dark && n.dark(), this.generateTheme(e), i.resolve(e)
12246                         }, l.setBrowserColor = w, l
12247                     }
12248                     l.$inject = ["$rootScope", "$mdUtil", "$q", "$log"], f = {};
12249                     var u, h = {},
12250                         b = !1,
12251                         y = "default";
12252                     e.extend(f, t);
12253                     var $ = function(e) {
12254                             var t = r.setMeta("theme-color", e),
12255                                 n = r.setMeta("msapplication-navbutton-color", e);
12256                             return function() {
12257                                 t(), n()
12258                             }
12259                         },
12260                         w = function(t) {
12261                             var n = (t = e.isObject(t) ? t : {}).theme || "default",
12262                                 r = t.hue || "800",
12263                                 i = f[t.palette] || f[h[n].colors[t.palette || "primary"].name],
12264                                 o = e.isObject(i[r]) ? i[r].hex : i[r];
12265                             return $(o)
12266                         };
12267                     return u = {
12268                         definePalette: function(e, t) {
12269                             return t = t || {}, f[e] = i(e, t), u
12270                         },
12271                         extendPalette: function(t, n) {
12272                             return i(t, e.extend({}, f[t] || {}, n))
12273                         },
12274                         theme: o,
12275                         configuration: function() {
12276                             return e.extend({}, k, {
12277                                 defaultTheme: y,
12278                                 alwaysWatchTheme: b,
12279                                 registeredStyles: [].concat(k.registeredStyles)
12280                             })
12281                         },
12282                         disableTheming: function(t) {
12283                             k.disableTheming = e.isUndefined(t) || !!t
12284                         },
12285                         registerStyles: function(e) {
12286                             k.registeredStyles.push(e)
12287                         },
12288                         setNonce: function(e) {
12289                             k.nonce = e
12290                         },
12291                         generateThemesOnDemand: function(e) {
12292                             k.generateOnDemand = e
12293                         },
12294                         setDefaultTheme: function(e) {
12295                             y = e
12296                         },
12297                         alwaysWatchTheme: function(e) {
12298                             b = e
12299                         },
12300                         enableBrowserColor: w,
12301                         $get: l,
12302                         _LIGHT_DEFAULT_HUES: E,
12303                         _DARK_DEFAULT_HUES: C,
12304                         _PALETTES: f,
12305                         _THEMES: h,
12306                         _parseRules: a,
12307                         _rgba: d
12308                     }
12309                 }
12310
12311                 function i(t, n, r, i, o, a) {
12312                     return {
12313                         priority: 101,
12314                         link: {
12315                             pre: function(s, c, l) {
12316                                 var u = [],
12317                                     d = n.startSymbol(),
12318                                     f = n.endSymbol(),
12319                                     h = l.mdTheme.trim(),
12320                                     p = h.substr(0, d.length) === d && h.lastIndexOf(f) === h.length - f.length,
12321                                     m = "::" === l.mdTheme.split(d).join("").split(f).join("").trim().substr(0, "::".length),
12322                                     g = {
12323                                         registerChanges: function(t, n) {
12324                                             return n && (t = e.bind(n, t)), u.push(t),
12325                                                 function() {
12326                                                     var e = u.indexOf(t);
12327                                                     e > -1 && u.splice(e, 1)
12328                                                 }
12329                                         },
12330                                         $setTheme: function(e) {
12331                                             t.registered(e) || a.warn("attempted to use unregistered theme '" + e + "'"), g.$mdTheme = e;
12332                                             for (var n = u.length; n--;) u[n](e)
12333                                         },
12334                                         $shouldWatch: i.parseAttributeBoolean(c.attr("md-theme-watch")) || t.ALWAYS_WATCH || p && !m
12335                                     };
12336                                 c.data("$mdThemeController", g);
12337                                 var v = function() {
12338                                         var e = n(l.mdTheme)(s);
12339                                         return r(e)(s) || e
12340                                     },
12341                                     b = function(t) {
12342                                         if ("string" == typeof t) return g.$setTheme(t);
12343                                         o.when(e.isFunction(t) ? t() : t).then(function(e) {
12344                                             g.$setTheme(e)
12345                                         })
12346                                     };
12347                                 b(v());
12348                                 var y = s.$watch(v, function(e) {
12349                                     e && (b(e), g.$shouldWatch || y())
12350                                 })
12351                             }
12352                         }
12353                     }
12354                 }
12355
12356                 function o(e) {
12357                     return e
12358                 }
12359
12360                 function a(t, n, r) {
12361                     l(t, n), r = r.replace(/THEME_NAME/g, t.name);
12362                     var i = [],
12363                         o = t.colors[n],
12364                         a = new RegExp("\\.md-" + t.name + "-theme", "g"),
12365                         s = new RegExp("('|\")?{{\\s*(" + n + ")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
12366                         c = /'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g,
12367                         u = f[o.name];
12368                     return r = r.replace(c, function(e, n, r, i, o) {
12369                         return "foreground" === n ? "shadow" == r ? t.foregroundShadow : t.foregroundPalette[r] || t.foregroundPalette[1] : (0 !== r.indexOf("hue") && "default" !== r || (r = t.colors[n].hues[r]), d((f[t.colors[n].name][r] || "")[o ? "contrast" : "value"], i))
12370                     }), e.forEach(o.hues, function(e, n) {
12371                         var o = r.replace(s, function(t, n, r, i, o) {
12372                             return d(u[e]["color" === i ? "value" : "contrast"], o)
12373                         });
12374                         if ("default" !== n && (o = o.replace(a, ".md-" + t.name + "-theme.md-" + n)), "default" == t.name) {
12375                             var c = /((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g;
12376                             o = o.replace(c, function(e, t, n) {
12377                                 return e + ", " + t + n
12378                             })
12379                         }
12380                         i.push(o)
12381                     }), i
12382                 }
12383
12384                 function s(t, n) {
12385                     var r = document.head,
12386                         i = r ? r.firstElementChild : null,
12387                         o = !k.disableTheming && t.has("$MD_THEME_CSS") ? t.get("$MD_THEME_CSS") : "";
12388                     if (o += k.registeredStyles.join(""), i && 0 !== o.length) {
12389                         e.forEach(f, function(t, n) {
12390                             var r = t.contrastDefaultColor,
12391                                 i = t.contrastLightColors || [],
12392                                 o = t.contrastStrongLightColors || [],
12393                                 a = t.contrastDarkColors || [];
12394                             "string" == typeof i && (i = i.split(" ")), "string" == typeof o && (o = o.split(" ")), "string" == typeof a && (a = a.split(" ")), delete t.contrastDefaultColor, delete t.contrastLightColors, delete t.contrastStrongLightColors, delete t.contrastDarkColors, e.forEach(t, function(n, s) {
12395                                 if (!e.isObject(n)) {
12396                                     var c = u(n);
12397                                     if (!c) throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1", n).replace("%2", t.name).replace("%3", s));
12398                                     t[s] = {
12399                                         hex: t[s],
12400                                         value: c,
12401                                         contrast: "light" === r ? a.indexOf(s) > -1 ? b : o.indexOf(s) > -1 ? $ : y : i.indexOf(s) > -1 ? o.indexOf(s) > -1 ? $ : y : b
12402                                     }
12403                                 }
12404                             })
12405                         });
12406                         var a = o.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
12407                                 return e && e.trim().length
12408                             }).map(function(e) {
12409                                 return e.trim() + "}"
12410                             }),
12411                             s = new RegExp("md-(" + _.join("|") + ")", "g");
12412                         _.forEach(function(e) {
12413                             T[e] = ""
12414                         }), a.forEach(function(e) {
12415                             e.match(s);
12416                             for (var t, n = 0; t = _[n]; n++)
12417                                 if (e.indexOf(".md-" + t) > -1) return T[t] += e;
12418                             for (n = 0; t = _[n]; n++)
12419                                 if (e.indexOf(t) > -1) return T[t] += e;
12420                             return T[w] += e
12421                         }), k.generateOnDemand || e.forEach(n.THEMES, function(e) {
12422                             h[e.name] || "default" !== n.defaultTheme() && "default" === e.name || c(e, e.name, k.nonce)
12423                         })
12424                     }
12425                 }
12426
12427                 function c(e, t, n) {
12428                     var r = document.head,
12429                         i = r ? r.firstElementChild : null;
12430                     h[t] || (_.forEach(function(t) {
12431                         for (var o = a(e, t, T[t]); o.length;) {
12432                             var s = o.shift();
12433                             if (s) {
12434                                 var c = document.createElement("style");
12435                                 c.setAttribute("md-theme-style", ""), n && c.setAttribute("nonce", n), c.appendChild(document.createTextNode(s)), r.insertBefore(c, i)
12436                             }
12437                         }
12438                     }), h[e.name] = !0)
12439                 }
12440
12441                 function l(e, t) {
12442                     if (!f[(e.colors[t] || {}).name]) throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1", e.name).replace("%2", t).replace("%3", Object.keys(f).join(", ")))
12443                 }
12444
12445                 function u(t) {
12446                     if (e.isArray(t) && 3 == t.length) return t;
12447                     if (/^rgb/.test(t)) return t.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
12448                         return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
12449                     });
12450                     if ("#" == t.charAt(0) && (t = t.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(t)) {
12451                         var n = t.length / 3,
12452                             r = t.substr(0, n),
12453                             i = t.substr(n, n),
12454                             o = t.substr(2 * n);
12455                         return 1 === n && (r += r, i += i, o += o), [parseInt(r, 16), parseInt(i, 16), parseInt(o, 16)]
12456                     }
12457                 }
12458
12459                 function d(t, n) {
12460                     return t ? (4 == t.length && (t = e.copy(t), n ? t.pop() : n = t.pop()), n && ("number" == typeof n || "string" == typeof n && n.length) ? "rgba(" + t.join(",") + "," + n + ")" : "rgb(" + t.join(",") + ")") : "rgb('0,0,0')"
12461                 }
12462                 t.$inject = ["$mdThemingProvider"], i.$inject = ["$mdTheming", "$interpolate", "$parse", "$mdUtil", "$q", "$log"], o.$inject = ["$mdTheming"], r.$inject = ["$mdColorPalette", "$$mdMetaProvider"], s.$inject = ["$injector", "$mdTheming"], e.module("material.core.theming", ["material.core.theming.palette", "material.core.meta"]).directive("mdTheme", i).directive("mdThemable", o).directive("mdThemesDisabled", function() {
12463                     return k.disableTheming = !0, {
12464                         restrict: "A",
12465                         priority: "900"
12466                     }
12467                 }).provider("$mdTheming", r).config(t).run(s);
12468                 var f, h = {},
12469                     p = {
12470                         name: "dark",
12471                         1: "rgba(0,0,0,0.87)",
12472                         2: "rgba(0,0,0,0.54)",
12473                         3: "rgba(0,0,0,0.38)",
12474                         4: "rgba(0,0,0,0.12)"
12475                     },
12476                     m = {
12477                         name: "light",
12478                         1: "rgba(255,255,255,1.0)",
12479                         2: "rgba(255,255,255,0.7)",
12480                         3: "rgba(255,255,255,0.5)",
12481                         4: "rgba(255,255,255,0.12)"
12482                     },
12483                     g = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
12484                     v = "",
12485                     b = u("rgba(0,0,0,0.87)"),
12486                     y = u("rgba(255,255,255,0.87)"),
12487                     $ = u("rgb(255,255,255)"),
12488                     _ = ["primary", "accent", "warn", "background"],
12489                     w = "primary",
12490                     E = {
12491                         accent: {
12492                             default: "A200",
12493                             "hue-1": "A100",
12494                             "hue-2": "A400",
12495                             "hue-3": "A700"
12496                         },
12497                         background: {
12498                             default: "50",
12499                             "hue-1": "A100",
12500                             "hue-2": "100",
12501                             "hue-3": "300"
12502                         }
12503                     },
12504                     C = {
12505                         background: {
12506                             default: "A400",
12507                             "hue-1": "800",
12508                             "hue-2": "900",
12509                             "hue-3": "A200"
12510                         }
12511                     };
12512                 _.forEach(function(e) {
12513                     var t = {
12514                         default: "500",
12515                         "hue-1": "300",
12516                         "hue-2": "800",
12517                         "hue-3": "A100"
12518                     };
12519                     E[e] || (E[e] = t), C[e] || (C[e] = t)
12520                 });
12521                 var x = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
12522                     k = {
12523                         disableTheming: !1,
12524                         generateOnDemand: !1,
12525                         registeredStyles: [],
12526                         nonce: null
12527                     },
12528                     T = {}
12529             }(e.angular),
12530             function() {
12531                 function n(n, r, i, o, a) {
12532                     var s;
12533                     return s = {
12534                         translate3d: function(e, t, n, r) {
12535                             function i(n) {
12536                                 return a(e, {
12537                                     to: n || t,
12538                                     addClass: r.transitionOutClass,
12539                                     removeClass: r.transitionInClass,
12540                                     duration: r.duration
12541                                 }).start()
12542                             }
12543                             return a(e, {
12544                                 from: t,
12545                                 to: n,
12546                                 addClass: r.transitionInClass,
12547                                 removeClass: r.transitionOutClass,
12548                                 duration: r.duration
12549                             }).start().then(function() {
12550                                 return i
12551                             })
12552                         },
12553                         waitTransitionEnd: function(t, n) {
12554                             var a = 3e3;
12555                             return r(function(r, s) {
12556                                 function c(e) {
12557                                     e && e.target !== t[0] || (e && i.cancel(l), t.off(o.CSS.TRANSITIONEND, c), r())
12558                                 }(function(n) {
12559                                     return "0s" == (n = n || e.getComputedStyle(t[0])).transitionDuration || !n.transition && !n.transitionProperty
12560                                 })((n = n || {}).cachedTransitionStyles) && (a = 0);
12561                                 var l = i(c, n.timeout || a);
12562                                 t.on(o.CSS.TRANSITIONEND, c)
12563                             })
12564                         },
12565                         calculateTransformValues: function(e, t) {
12566                             var n = t.element,
12567                                 r = t.bounds;
12568                             if (n || r) {
12569                                 var i = n ? s.clientRect(n) || function() {
12570                                         var t = e ? e.parent() : null,
12571                                             n = t ? t.parent() : null;
12572                                         return n ? s.clientRect(n) : null
12573                                     }() : s.copyRect(r),
12574                                     o = s.copyRect(e[0].getBoundingClientRect()),
12575                                     a = s.centerPointFor(o),
12576                                     c = s.centerPointFor(i);
12577                                 return {
12578                                     centerX: c.x - a.x,
12579                                     centerY: c.y - a.y,
12580                                     scaleX: Math.round(100 * Math.min(.5, i.width / o.width)) / 100,
12581                                     scaleY: Math.round(100 * Math.min(.5, i.height / o.height)) / 100
12582                                 }
12583                             }
12584                             return {
12585                                 centerX: 0,
12586                                 centerY: 0,
12587                                 scaleX: .5,
12588                                 scaleY: .5
12589                             }
12590                         },
12591                         calculateZoomToOrigin: function(e, r) {
12592                             return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )")(s.calculateTransformValues(e, r))
12593                         },
12594                         calculateSlideToOrigin: function(e, r) {
12595                             return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 )")(s.calculateTransformValues(e, r))
12596                         },
12597                         toCss: function(e) {
12598                             function n(e, n, i) {
12599                                 t.forEach(n.split(" "), function(e) {
12600                                     r[e] = i
12601                                 })
12602                             }
12603                             var r = {};
12604                             return t.forEach(e, function(e, i) {
12605                                 if (!t.isUndefined(e))
12606                                     if ("left top right bottom width height x y min-width min-height max-width max-height".indexOf(i) >= 0) r[i] = e + "px";
12607                                     else switch (i) {
12608                                         case "transition":
12609                                             n(0, o.CSS.TRANSITION, e);
12610                                             break;
12611                                         case "transform":
12612                                             n(0, o.CSS.TRANSFORM, e);
12613                                             break;
12614                                         case "transformOrigin":
12615                                             n(0, o.CSS.TRANSFORM_ORIGIN, e);
12616                                             break;
12617                                         case "font-size":
12618                                             r["font-size"] = e
12619                                     }
12620                             }), r
12621                         },
12622                         toTransformCss: function(e, n, r) {
12623                             var i = {};
12624                             return t.forEach(o.CSS.TRANSFORM.split(" "), function(t) {
12625                                 i[t] = e
12626                             }), n && (r = r || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", i.transition = r), i
12627                         },
12628                         copyRect: function(e, n) {
12629                             return e ? (n = n || {}, t.forEach("left top right bottom width height".split(" "), function(t) {
12630                                 n[t] = Math.round(e[t])
12631                             }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
12632                         },
12633                         clientRect: function(e) {
12634                             var n = t.element(e)[0].getBoundingClientRect();
12635                             return function(e) {
12636                                 return e && e.width > 0 && e.height > 0
12637                             }(n) ? s.copyRect(n) : null
12638                         },
12639                         centerPointFor: function(e) {
12640                             return e ? {
12641                                 x: Math.round(e.left + e.width / 2),
12642                                 y: Math.round(e.top + e.height / 2)
12643                             } : {
12644                                 x: 0,
12645                                 y: 0
12646                             }
12647                         }
12648                     }
12649                 }
12650                 t.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(e, t, r, i) {
12651                     return function(o) {
12652                         return n(o, e, t, r, i)
12653                     }
12654                 }])
12655             }(), t.version.minor >= 4 ? t.module("material.core.animate", []) : function() {
12656                 function e(e) {
12657                     return e.replace(/-[a-z]/g, function(e) {
12658                         return e.charAt(1).toUpperCase()
12659                     })
12660                 }
12661                 var n = t.forEach,
12662                     r = t.isDefined(document.documentElement.style.WebkitAppearance),
12663                     i = r ? "-webkit-" : "",
12664                     o = (r ? "webkitTransitionEnd " : "") + "transitionend",
12665                     a = (r ? "webkitAnimationEnd " : "") + "animationend",
12666                     s = ["$document", function(e) {
12667                         return function() {
12668                             return e[0].body.clientWidth + 1
12669                         }
12670                     }],
12671                     c = ["$$rAF", function(e) {
12672                         return function() {
12673                             var t = !1;
12674                             return e(function() {
12675                                     t = !0
12676                                 }),
12677                                 function(n) {
12678                                     t ? n() : e(n)
12679                                 }
12680                         }
12681                     }],
12682                     l = ["$q", "$$rAFMutex", function(e, r) {
12683                         function i(e) {
12684                             this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = r(), this._state = 0
12685                         }
12686                         return i.prototype = {
12687                             setHost: function(e) {
12688                                 this.host = e || {}
12689                             },
12690                             done: function(e) {
12691                                 2 === this._state ? e() : this._doneCallbacks.push(e)
12692                             },
12693                             progress: t.noop,
12694                             getPromise: function() {
12695                                 if (!this.promise) {
12696                                     var t = this;
12697                                     this.promise = e(function(e, n) {
12698                                         t.done(function(t) {
12699                                             !1 === t ? n() : e()
12700                                         })
12701                                     })
12702                                 }
12703                                 return this.promise
12704                             },
12705                             then: function(e, t) {
12706                                 return this.getPromise().then(e, t)
12707                             },
12708                             catch: function(e) {
12709                                 return this.getPromise().catch(e)
12710                             },
12711                             finally: function(e) {
12712                                 return this.getPromise().finally(e)
12713                             },
12714                             pause: function() {
12715                                 this.host.pause && this.host.pause()
12716                             },
12717                             resume: function() {
12718                                 this.host.resume && this.host.resume()
12719                             },
12720                             end: function() {
12721                                 this.host.end && this.host.end(), this._resolve(!0)
12722                             },
12723                             cancel: function() {
12724                                 this.host.cancel && this.host.cancel(), this._resolve(!1)
12725                             },
12726                             complete: function(e) {
12727                                 var t = this;
12728                                 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
12729                                     t._resolve(e)
12730                                 }))
12731                             },
12732                             _resolve: function(e) {
12733                                 2 !== this._state && (n(this._doneCallbacks, function(t) {
12734                                     t(e)
12735                                 }), this._doneCallbacks.length = 0, this._state = 2)
12736                             }
12737                         }, i.all = function(e, t) {
12738                             function r(n) {
12739                                 o = o && n, ++i === e.length && t(o)
12740                             }
12741                             var i = 0,
12742                                 o = !0;
12743                             n(e, function(e) {
12744                                 e.done(r)
12745                             })
12746                         }, i
12747                     }];
12748                 t.module("material.core.animate", []).factory("$$forceReflow", s).factory("$$AnimateRunner", l).factory("$$rAFMutex", c).factory("$animateCss", ["$window", "$$rAF", "$$AnimateRunner", "$$forceReflow", "$$jqLite", "$timeout", "$animate", function(t, s, c, l, u, d, f) {
12749                     function h(e, t) {
12750                         t.addClass && (u.addClass(e, t.addClass), t.addClass = null), t.removeClass && (u.removeClass(e, t.removeClass), t.removeClass = null)
12751                     }
12752
12753                     function p(e) {
12754                         function n(e) {
12755                             return r ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
12756                         }
12757                         var i = $(e),
12758                             o = t.getComputedStyle(i),
12759                             a = m(o[n("transitionDuration")]),
12760                             s = m(o[n("animationDuration")]),
12761                             c = m(o[n("transitionDelay")]),
12762                             l = m(o[n("animationDelay")]);
12763                         return s *= parseInt(o[n("animationIterationCount")], 10) || 1, {
12764                             duration: Math.max(s, a),
12765                             delay: Math.max(l, c),
12766                             animationDuration: s,
12767                             transitionDuration: a,
12768                             animationDelay: l,
12769                             transitionDelay: c
12770                         }
12771                     }
12772
12773                     function m(e) {
12774                         var t = 0,
12775                             r = (e || "").split(/\s*,\s*/);
12776                         return n(r, function(e) {
12777                             "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
12778                         }), t
12779                     }
12780
12781                     function g(e) {
12782                         w && w(), E.push(e), w = s(function() {
12783                             w = null;
12784                             for (var e = l(), t = 0; t < E.length; t++) E[t](e);
12785                             E.length = 0
12786                         })
12787                     }
12788
12789                     function v(e, t) {
12790                         b(e, t), y(e, t)
12791                     }
12792
12793                     function b(e, t) {
12794                         t.from && (e.css(t.from), t.from = null)
12795                     }
12796
12797                     function y(e, t) {
12798                         t.to && (e.css(t.to), t.to = null)
12799                     }
12800
12801                     function $(e) {
12802                         for (var t = 0; t < e.length; t++)
12803                             if (1 === e[t].nodeType) return e[t]
12804                     }
12805
12806                     function _(t, n) {
12807                         var r = $(t),
12808                             o = e(i + "transition-delay");
12809                         r.style[o] = n ? "-9999s" : ""
12810                     }
12811                     var w, E = [];
12812                     return function(r, s) {
12813                         var l = [],
12814                             u = $(r),
12815                             m = u && f.enabled(),
12816                             w = !1,
12817                             E = !1;
12818                         m && (s.transitionStyle && l.push([i + "transition", s.transitionStyle]), s.keyframeStyle && l.push([i + "animation", s.keyframeStyle]), s.delay && l.push([i + "transition-delay", s.delay + "s"]), s.duration && l.push([i + "transition-duration", s.duration + "s"]), w = s.keyframeStyle || s.to && (s.duration > 0 || s.transitionStyle), E = !!s.addClass || !!s.removeClass, _(r, !0));
12819                         var C = m && (w || E);
12820                         b(r, s);
12821                         var x, k, T = !1;
12822                         return {
12823                             close: t.close,
12824                             start: function() {
12825                                 function t() {
12826                                     if (!T) return T = !0, x && k && r.off(x, k), h(r, s), v(r, s), n(l, function(t) {
12827                                         u.style[e(t[0])] = ""
12828                                     }), f.complete(!0), f
12829                                 }
12830                                 var f = new c;
12831                                 return g(function() {
12832                                     if (_(r, !1), !C) return t();
12833                                     n(l, function(t) {
12834                                         var n = t[0],
12835                                             r = t[1];
12836                                         u.style[e(n)] = r
12837                                     }), h(r, s);
12838                                     var c = p(r);
12839                                     if (0 === c.duration) return t();
12840                                     var f = [];
12841                                     s.easing && (c.transitionDuration && f.push([i + "transition-timing-function", s.easing]), c.animationDuration && f.push([i + "animation-timing-function", s.easing])), s.delay && c.animationDelay && f.push([i + "animation-delay", s.delay + "s"]), s.duration && c.animationDuration && f.push([i + "animation-duration", s.duration + "s"]), n(f, function(t) {
12842                                         var n = t[0],
12843                                             r = t[1];
12844                                         u.style[e(n)] = r, l.push(t)
12845                                     });
12846                                     var m = 1e3 * c.delay,
12847                                         g = c.duration,
12848                                         v = 1e3 * g,
12849                                         b = Date.now();
12850                                     x = [], c.transitionDuration && x.push(o), c.animationDuration && x.push(a), x = x.join(" "), k = function(e) {
12851                                         e.stopPropagation();
12852                                         var n = e.originalEvent || e,
12853                                             r = n.timeStamp || Date.now(),
12854                                             i = parseFloat(n.elapsedTime.toFixed(3));
12855                                         Math.max(r - b, 0) >= m && i >= g && t()
12856                                     }, r.on(x, k), y(r, s), d(t, m + 1.5 * v, !1)
12857                                 }), f
12858                             }
12859                         }
12860                     }
12861                 }])
12862             }(), t.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]), t.module("material.components.backdrop", ["material.core"]).directive("mdBackdrop", ["$mdTheming", "$mdUtil", "$animate", "$rootElement", "$window", "$log", "$$rAF", "$document", function(e, n, r, i, o, a, s, c) {
12863                 var l = "<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";
12864                 return {
12865                     restrict: "E",
12866                     link: function(u, d, f) {
12867                         function h() {
12868                             var e = parseInt(p.height, 10) + Math.abs(parseInt(p.top, 10));
12869                             d.css("height", e + "px")
12870                         }
12871                         r.pin && r.pin(d, i);
12872                         var p;
12873                         s(function() {
12874                             if ("fixed" === (p = o.getComputedStyle(c[0].body)).position) {
12875                                 var r = n.debounce(function() {
12876                                     p = o.getComputedStyle(c[0].body), h()
12877                                 }, 60, null, !1);
12878                                 h(), t.element(o).on("resize", r), u.$on("$destroy", function() {
12879                                     t.element(o).off("resize", r)
12880                                 })
12881                             }
12882                             var i = d.parent();
12883                             i.length && ("BODY" === i[0].nodeName && d.css("position", "fixed"), "static" === o.getComputedStyle(i[0]).position && a.warn(l), e.inherit(d, i))
12884                         })
12885                     }
12886                 }
12887             }]),
12888             function() {
12889                 function e(e) {
12890                     return {
12891                         restrict: "E",
12892                         link: function(t, n) {
12893                             n.addClass("_md"), t.$on("$destroy", function() {
12894                                 e.destroy()
12895                             })
12896                         }
12897                     }
12898                 }
12899
12900                 function n(e) {
12901                     function n(e, n, o, a, s, c, l, u) {
12902                         function d(e, t) {
12903                             function a(t) {
12904                                 e.css(n.CSS.TRANSITION_DURATION, "0ms")
12905                             }
12906
12907                             function c(t) {
12908                                 var r = t.pointer.distanceY;
12909                                 r < 5 && (r = Math.max(-i, r / 2)), e.css(n.CSS.TRANSFORM, "translate3d(0," + (i + r) + "px,0)")
12910                             }
12911
12912                             function u(t) {
12913                                 if (t.pointer.distanceY > 0 && (t.pointer.distanceY > 20 || Math.abs(t.pointer.velocityY) > r)) {
12914                                     var i = e.prop("offsetHeight") - t.pointer.distanceY,
12915                                         a = Math.min(i / t.pointer.velocityY * .75, 500);
12916                                     e.css(n.CSS.TRANSITION_DURATION, a + "ms"), o.nextTick(s.cancel, !0)
12917                                 } else e.css(n.CSS.TRANSITION_DURATION, ""), e.css(n.CSS.TRANSFORM, "")
12918                             }
12919                             var d = l.register(t, "drag", {
12920                                 horizontal: !1
12921                             });
12922                             return t.on("$md.dragstart", a).on("$md.drag", c).on("$md.dragend", u), {
12923                                 element: e,
12924                                 cleanup: function() {
12925                                     d(), t.off("$md.dragstart", a), t.off("$md.drag", c), t.off("$md.dragend", u)
12926                                 }
12927                             }
12928                         }
12929                         var f;
12930                         return {
12931                             themable: !0,
12932                             onShow: function(r, i, l, h) {
12933                                 (i = o.extractElementByName(i, "md-bottom-sheet")).attr("tabindex", "-1"), i.hasClass("ng-cloak") && u.warn("$mdBottomSheet: using `<md-bottom-sheet ng-cloak >` will affect the bottom-sheet opening animations.", i[0]);
12934                                 l.disableBackdrop || ((f = o.createBackdrop(r, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, l.clickOutsideToClose && f.on("click", function() {
12935                                     o.nextTick(s.cancel, !0)
12936                                 }), a.inherit(f, l.parent), e.enter(f, l.parent, null));
12937                                 var p = new d(i, l.parent);
12938                                 return l.bottomSheet = p, a.inherit(p.element, l.parent), l.disableParentScroll && (l.restoreScroll = o.disableScrollAround(p.element, l.parent)), e.enter(p.element, l.parent, f).then(function() {
12939                                     var e = o.findFocusTarget(i) || t.element(i[0].querySelector("button") || i[0].querySelector("a") || i[0].querySelector(o.prefixer("ng-click", !0))) || f;
12940                                     l.escapeToClose && (l.rootElementKeyupCallback = function(e) {
12941                                         e.keyCode === n.KEY_CODE.ESCAPE && o.nextTick(s.cancel, !0)
12942                                     }, c.on("keyup", l.rootElementKeyupCallback), e && e.focus())
12943                                 })
12944                             },
12945                             onRemove: function(t, n, r) {
12946                                 var i = r.bottomSheet;
12947                                 return r.disableBackdrop || e.leave(f), e.leave(i.element).then(function() {
12948                                     r.disableParentScroll && (r.restoreScroll(), delete r.restoreScroll), i.cleanup()
12949                                 })
12950                             },
12951                             disableBackdrop: !1,
12952                             escapeToClose: !0,
12953                             clickOutsideToClose: !0,
12954                             disableParentScroll: !0
12955                         }
12956                     }
12957                     n.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
12958                     var r = .5,
12959                         i = 80;
12960                     return e("$mdBottomSheet").setDefaults({
12961                         methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
12962                         options: n
12963                     })
12964                 }
12965                 e.$inject = ["$mdBottomSheet"], n.$inject = ["$$interimElementProvider"], t.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", n)
12966             }(),
12967             function() {
12968                 function e(e) {
12969                     return {
12970                         restrict: "E",
12971                         link: function(t, n) {
12972                             e(n)
12973                         }
12974                     }
12975                 }
12976
12977                 function n(e, n, r, i) {
12978                     function o(e) {
12979                         return t.isDefined(e.href) || t.isDefined(e.ngHref) || t.isDefined(e.ngLink) || t.isDefined(e.uiSref)
12980                     }
12981                     return {
12982                         restrict: "EA",
12983                         replace: !0,
12984                         transclude: !0,
12985                         template: function(e, t) {
12986                             return o(t) ? '<a class="md-button" ng-transclude></a>' : '<button class="md-button" type="' + (void 0 === t.type ? "button" : t.type) + '" ng-transclude></button>'
12987                         },
12988                         link: function(a, s, c) {
12989                             n(s), e.attach(a, s), r.expectWithoutText(s, "aria-label"), o(c) && t.isDefined(c.ngDisabled) && a.$watch(c.ngDisabled, function(e) {
12990                                 s.attr("tabindex", e ? -1 : 0)
12991                             }), s.on("click", function(e) {
12992                                 !0 === c.disabled && (e.preventDefault(), e.stopImmediatePropagation())
12993                             }), s.hasClass("md-no-focus") || (s.on("focus", function() {
12994                                 i.isUserInvoked() && "keyboard" !== i.getLastInteractionType() || s.addClass("md-focused")
12995                             }), s.on("blur", function() {
12996                                 s.removeClass("md-focused")
12997                             }))
12998                         }
12999                     }
13000                 }
13001                 n.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], t.module("material.components.button", ["material.core"]).directive("mdButton", n).directive("a", e)
13002             }(),
13003             function() {
13004                 function e(e) {
13005                     return {
13006                         restrict: "E",
13007                         link: function(t, n, r) {
13008                             n.addClass("_md"), e(n)
13009                         }
13010                     }
13011                 }
13012                 e.$inject = ["$mdTheming"], t.module("material.components.card", ["material.core"]).directive("mdCard", e)
13013             }(),
13014             function() {
13015                 function e(e, n, r, i, o, a) {
13016                     return e = e[0], {
13017                         restrict: "E",
13018                         transclude: !0,
13019                         require: ["^?mdInputContainer", "?ngModel", "?^form"],
13020                         priority: r.BEFORE_NG_ARIA,
13021                         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>',
13022                         compile: function(s, c) {
13023                             return c.$set("tabindex", c.tabindex || "0"), c.$set("type", "checkbox"), c.$set("role", c.type), {
13024                                 pre: function(e, t) {
13025                                     t.on("click", function(e) {
13026                                         this.hasAttribute("disabled") && e.stopImmediatePropagation()
13027                                     })
13028                                 },
13029                                 post: function(s, c, l, u) {
13030                                     function d(e) {
13031                                         c[0].hasAttribute("disabled") || s.skipToggle || s.$apply(function() {
13032                                             var t = l.ngChecked && l.ngClick ? l.checked : !m.$viewValue;
13033                                             m.$setViewValue(t, e && e.type), m.$render()
13034                                         })
13035                                     }
13036
13037                                     function f(e) {
13038                                         (h = !1 !== e) && c.attr("aria-checked", "mixed"), c.toggleClass("md-indeterminate", h)
13039                                     }
13040                                     var h, p = u[0],
13041                                         m = u[1] || o.fakeNgModel(),
13042                                         g = u[2];
13043                                     if (p) {
13044                                         var v = p.isErrorGetter || function() {
13045                                             return m.$invalid && (m.$touched || g && g.$submitted)
13046                                         };
13047                                         p.input = c, s.$watch(v, p.setInvalid)
13048                                     }
13049                                     i(c), c.children().on("focus", function() {
13050                                             c.focus()
13051                                         }), o.parseAttributeBoolean(l.mdIndeterminate) && (f(), s.$watch(l.mdIndeterminate, f)), l.ngChecked && s.$watch(s.$eval.bind(s, l.ngChecked), function(e) {
13052                                             m.$setViewValue(e), m.$render()
13053                                         }),
13054                                         function(e, t, n) {
13055                                             l[e] && s.$watch(l[e], function(e) {
13056                                                 n[e] && c.attr(t, n[e])
13057                                             })
13058                                         }("ngDisabled", "tabindex", {
13059                                             true: "-1",
13060                                             false: l.tabindex
13061                                         }), n.expectWithText(c, "aria-label"), e.link.pre(s, {
13062                                             on: t.noop,
13063                                             0: {}
13064                                         }, l, [m]), c.on("click", d).on("keypress", function(e) {
13065                                             var t = e.which || e.keyCode;
13066                                             t !== r.KEY_CODE.SPACE && t !== r.KEY_CODE.ENTER || (e.preventDefault(), c.addClass("md-focused"), d(e))
13067                                         }).on("focus", function() {
13068                                             "keyboard" === a.getLastInteractionType() && c.addClass("md-focused")
13069                                         }).on("blur", function() {
13070                                             c.removeClass("md-focused")
13071                                         }), m.$render = function() {
13072                                             c.toggleClass("md-checked", !!m.$viewValue && !h)
13073                                         }
13074                                 }
13075                             }
13076                         }
13077                     }
13078                 }
13079                 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], t.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
13080             }(), t.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
13081             function() {
13082                 function e(e, n, r) {
13083                     function o(t, r) {
13084                         r = r || !1;
13085                         var i = e.PALETTES[t.palette][t.hue];
13086                         return i = r ? i.contrast : i.value, n.supplant("rgba({0}, {1}, {2}, {3})", [i[0], i[1], i[2], i[3] || t.opacity])
13087                     }
13088
13089                     function a(e) {
13090                         var n = {},
13091                             r = e.hasOwnProperty("color");
13092                         return t.forEach(e, function(e, t) {
13093                             var i = s(e),
13094                                 a = t.indexOf("background") > -1;
13095                             n[t] = o(i), a && !r && (n.color = o(i, !0))
13096                         }), n
13097                     }
13098
13099                     function s(n) {
13100                         var r = n.split("-"),
13101                             i = t.isDefined(e.THEMES[r[0]]) ? r.splice(0, 1)[0] : e.defaultTheme();
13102                         return {
13103                             theme: i,
13104                             palette: c(r, i),
13105                             hue: l(r, i),
13106                             opacity: r[2] || 1
13107                         }
13108                     }
13109
13110                     function c(t, r) {
13111                         var o = t.length > 1 && -1 !== i.indexOf(t[1]),
13112                             a = t[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
13113                         if (o && (a = t[0] + "-" + t.splice(1, 1)), -1 === i.indexOf(a)) {
13114                             var s = e.THEMES[r].colors[a];
13115                             if (!s) throw new Error(n.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
13116                                 palette: a
13117                             }));
13118                             a = s.name
13119                         }
13120                         return a
13121                     }
13122
13123                     function l(t, r) {
13124                         var i = e.THEMES[r].colors;
13125                         if ("hue" === t[1]) {
13126                             var o = parseInt(t.splice(2, 1)[0], 10);
13127                             if (o < 1 || o > 3) throw new Error(n.supplant("mdColors: 'hue-{hueNumber}' is not a valid hue, can be only 'hue-1', 'hue-2' and 'hue-3'", {
13128                                 hueNumber: o
13129                             }));
13130                             if (t[1] = "hue-" + o, !(t[0] in i)) throw new Error(n.supplant("mdColors: 'hue-x' can only be used with [{availableThemes}], but was used with '{usedTheme}'", {
13131                                 availableThemes: Object.keys(i).join(", "),
13132                                 usedTheme: t[0]
13133                             }));
13134                             return i[t[0]].hues[t[1]]
13135                         }
13136                         return t[1] || i[t[0] in i ? t[0] : "primary"].hues.default
13137                     }
13138                     return i = i || Object.keys(e.PALETTES), {
13139                         applyThemeColors: function(e, t) {
13140                             try {
13141                                 t && e.css(a(t))
13142                             } catch (e) {
13143                                 r.error(e.message)
13144                             }
13145                         },
13146                         getThemeColor: function(e) {
13147                             return o(s(e))
13148                         },
13149                         hasTheme: function(n) {
13150                             return t.isDefined(e.THEMES[n.split("-")[0]])
13151                         }
13152                     }
13153                 }
13154
13155                 function n(e, n, i, o) {
13156                     return {
13157                         restrict: "A",
13158                         require: ["^?mdTheme"],
13159                         compile: function(a, s) {
13160                             var c = function() {
13161                                 var e = s.mdColors,
13162                                     i = e.indexOf("::") > -1,
13163                                     o = !!i || r.test(s.mdColors);
13164                                 s.mdColors = e.replace("::", "");
13165                                 var a = t.isDefined(s.mdColorsWatch);
13166                                 return !i && !o && (!a || n.parseAttributeBoolean(s.mdColorsWatch))
13167                             }();
13168                             return function(n, r, a, s) {
13169                                 var l = s[0],
13170                                     u = {},
13171                                     d = function(t) {
13172                                         "string" != typeof t && (t = ""), a.mdColors || (a.mdColors = "{}");
13173                                         var r = o(a.mdColors)(n);
13174                                         return l && Object.keys(r).forEach(function(n) {
13175                                             var i = r[n];
13176                                             e.hasTheme(i) || (r[n] = (t || l.$mdTheme) + "-" + i)
13177                                         }), f(r), r
13178                                     },
13179                                     f = function(e) {
13180                                         if (!t.equals(e, u)) {
13181                                             var n = Object.keys(u);
13182                                             u.background && !n.color && n.push("color"), n.forEach(function(e) {
13183                                                 r.css(e, "")
13184                                             })
13185                                         }
13186                                         u = e
13187                                     },
13188                                     h = t.noop;
13189                                 l && (h = l.registerChanges(function(t) {
13190                                     e.applyThemeColors(r, d(t))
13191                                 })), n.$on("$destroy", function() {
13192                                     h()
13193                                 });
13194                                 try {
13195                                     c ? n.$watch(d, t.bind(this, e.applyThemeColors, r), !0) : e.applyThemeColors(r, d())
13196                                 } catch (e) {
13197                                     i.error(e.message)
13198                                 }
13199                             }
13200                         }
13201                     }
13202                 }
13203                 n.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
13204                 var r = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
13205                     i = null;
13206                 t.module("material.components.colors", ["material.core"]).directive("mdColors", n).service("$mdColors", e)
13207             }(),
13208             function() {
13209                 function e(e) {
13210                     return {
13211                         restrict: "E",
13212                         controller: ["$scope", "$element", function(e, t) {
13213                             this.$scope = e, this.$element = t
13214                         }],
13215                         link: function(t, r) {
13216                             r.addClass("_md"), e(r), t.$broadcast("$mdContentLoaded", r), n(r[0])
13217                         }
13218                     }
13219                 }
13220
13221                 function n(e) {
13222                     t.element(e).on("$md.pressdown", function(t) {
13223                         "t" === t.pointer.type && (t.$materialScrollFixed || (t.$materialScrollFixed = !0, 0 === e.scrollTop ? e.scrollTop = 1 : e.scrollHeight === e.scrollTop + e.offsetHeight && (e.scrollTop -= 1)))
13224                     })
13225                 }
13226                 e.$inject = ["$mdTheming"], t.module("material.components.content", ["material.core"]).directive("mdContent", e)
13227             }(), t.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
13228             function() {
13229                 function e(e, n, r) {
13230                     return {
13231                         restrict: "E",
13232                         link: function(i, o) {
13233                             o.addClass("_md"), n(o), e(function() {
13234                                 function e() {
13235                                     o.toggleClass("md-content-overflow", a.scrollHeight > a.clientHeight)
13236                                 }
13237                                 var n, a = o[0].querySelector("md-dialog-content");
13238                                 a && (n = a.getElementsByTagName("img"), e(), t.element(n).on("load", e)), i.$on("$destroy", function() {
13239                                     r.destroy(o)
13240                                 })
13241                             })
13242                         }
13243                     }
13244                 }
13245
13246                 function r(e) {
13247                     function r(e, t) {
13248                         return {
13249                             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}}">', "    </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\'">', "      {{ dialog.ok }}", "    </md-button>", "  </md-dialog-actions>", "</md-dialog>"].join("").replace(/\s\s+/g, ""),
13250                             controller: function() {
13251                                 var n = "prompt" == this.$type;
13252                                 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
13253                                     e.hide(!n || this.result)
13254                                 }, this.abort = function() {
13255                                     e.cancel()
13256                                 }, this.keypress = function(n) {
13257                                     n.keyCode === t.KEY_CODE.ENTER && e.hide(this.result)
13258                                 }
13259                             },
13260                             controllerAs: "dialog",
13261                             bindToController: !0
13262                         }
13263                     }
13264
13265                     function i(e, r, i, s, c, l, u, d, f, h, p, m, g) {
13266                         function v(e) {
13267                             var n;
13268                             e.targetEvent && e.targetEvent.target && (n = t.element(e.targetEvent.target));
13269                             var r = n && n.controller("mdTheme");
13270                             if (r) {
13271                                 e.themeWatch = r.$shouldWatch;
13272                                 var i = e.theme || r.$mdTheme;
13273                                 i && (e.scope.theme = i);
13274                                 var o = r.registerChanges(function(t) {
13275                                     e.scope.theme = t, e.themeWatch || o()
13276                                 })
13277                             }
13278                         }
13279
13280                         function b(e) {
13281                             function r(e, r) {
13282                                 var i = t.element(e || {});
13283                                 if (i && i.length) {
13284                                     var o = {
13285                                             top: 0,
13286                                             left: 0,
13287                                             height: 0,
13288                                             width: 0
13289                                         },
13290                                         a = t.isFunction(i[0].getBoundingClientRect);
13291                                     return t.extend(r || {}, {
13292                                         element: a ? i : n,
13293                                         bounds: a ? i[0].getBoundingClientRect() : t.extend({}, o, i[0]),
13294                                         focus: t.bind(i, i.focus)
13295                                     })
13296                                 }
13297                             }
13298
13299                             function i(e, n) {
13300                                 return t.isString(e) && (e = l[0].querySelector(e)), t.element(e || n)
13301                             }
13302                             e.origin = t.extend({
13303                                 element: null,
13304                                 bounds: null,
13305                                 focus: t.noop
13306                             }, e.origin || {}), e.parent = i(e.parent, d), e.closeTo = r(i(e.closeTo)), e.openFrom = r(i(e.openFrom)), e.targetEvent && (e.origin = r(e.targetEvent.target, e.origin), e.originInteraction = g.getLastInteractionType())
13307                         }
13308
13309                         function y(n, r) {
13310                             var o = t.element(u),
13311                                 a = i.debounce(function() {
13312                                     E(n, r)
13313                                 }, 60),
13314                                 c = [],
13315                                 l = function() {
13316                                     var t = "alert" == r.$type ? e.hide : e.cancel;
13317                                     i.nextTick(t, !0)
13318                                 };
13319                             if (r.escapeToClose) {
13320                                 var d = r.parent,
13321                                     f = function(e) {
13322                                         e.keyCode === s.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), l())
13323                                     };
13324                                 n.on("keydown", f), d.on("keydown", f), c.push(function() {
13325                                     n.off("keydown", f), d.off("keydown", f)
13326                                 })
13327                             }
13328                             if (o.on("resize", a), c.push(function() {
13329                                     o.off("resize", a)
13330                                 }), r.clickOutsideToClose) {
13331                                 var h, p = n,
13332                                     m = function(e) {
13333                                         h = e.target
13334                                     },
13335                                     g = function(e) {
13336                                         h === p[0] && e.target === p[0] && (e.stopPropagation(), e.preventDefault(), l())
13337                                     };
13338                                 p.on("mousedown", m), p.on("mouseup", g), c.push(function() {
13339                                     p.off("mousedown", m), p.off("mouseup", g)
13340                                 })
13341                             }
13342                             r.deactivateListeners = function() {
13343                                 c.forEach(function(e) {
13344                                     e()
13345                                 }), r.deactivateListeners = null
13346                             }
13347                         }
13348
13349                         function $(e, t, n) {
13350                             n.disableParentScroll && (n.restoreScroll = i.disableScrollAround(t, n.parent)), n.hasBackdrop && (n.backdrop = i.createBackdrop(e, "md-dialog-backdrop md-opaque"), c.enter(n.backdrop, n.parent)), n.hideBackdrop = function(e) {
13351                                 n.backdrop && (e ? n.backdrop.remove() : c.leave(n.backdrop)), n.disableParentScroll && (n.restoreScroll && n.restoreScroll(), delete n.restoreScroll), n.hideBackdrop = null
13352                             }
13353                         }
13354
13355                         function _(e, t) {
13356                             var n = "alert" === t.$type ? "alertdialog" : "dialog",
13357                                 s = e.find("md-dialog-content"),
13358                                 c = e.attr("id"),
13359                                 l = "dialogContent_" + (c || i.nextUid());
13360                             e.attr({
13361                                 role: n,
13362                                 tabIndex: "-1"
13363                             }), 0 === s.length && (s = e, c && (l = c)), s.attr("id", l), e.attr("aria-describedby", l), t.ariaLabel ? r.expect(e, "aria-label", t.ariaLabel) : r.expectAsync(e, "aria-label", function() {
13364                                 var e = s.text().split(/\s+/);
13365                                 return e.length > 3 && (e = e.slice(0, 3).concat("...")), e.join(" ")
13366                             }), (o = document.createElement("div")).classList.add("md-dialog-focus-trap"), o.tabIndex = 0, a = o.cloneNode(!1);
13367                             var u = function() {
13368                                 e.focus()
13369                             };
13370                             o.addEventListener("focus", u), a.addEventListener("focus", u), e[0].parentNode.insertBefore(o, e[0]), e.after(a)
13371                         }
13372
13373                         function w(e, t) {
13374                             function n(e) {
13375                                 for (; e.parentNode;) {
13376                                     if (e === document.body) return;
13377                                     for (var t = e.parentNode.children, i = 0; i < t.length; i++) e === t[i] || k(t[i], ["SCRIPT", "STYLE"]) || t[i].setAttribute("aria-hidden", r);
13378                                     n(e = e.parentNode)
13379                                 }
13380                             }
13381                             var r = !0;
13382                             n(e[0]), t.unlockScreenReader = function() {
13383                                 r = !1, n(e[0]), t.unlockScreenReader = null
13384                             }
13385                         }
13386
13387                         function E(e, t) {
13388                             var n = "fixed" == u.getComputedStyle(l[0].body).position,
13389                                 r = t.backdrop ? u.getComputedStyle(t.backdrop[0]) : null,
13390                                 i = r ? Math.min(l[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
13391                                 o = {
13392                                     top: e.css("top"),
13393                                     height: e.css("height")
13394                                 },
13395                                 a = Math.abs(t.parent[0].getBoundingClientRect().top);
13396                             return e.css({
13397                                     top: (n ? a : 0) + "px",
13398                                     height: i ? i + "px" : "100%"
13399                                 }),
13400                                 function() {
13401                                     e.css(o)
13402                                 }
13403                         }
13404
13405                         function C(e, t) {
13406                             t.parent.append(e), t.reverseContainerStretch = E(e, t);
13407                             var n = e.find("md-dialog"),
13408                                 r = i.dom.animator,
13409                                 o = r.calculateZoomToOrigin,
13410                                 a = {
13411                                     transitionInClass: "md-transition-in",
13412                                     transitionOutClass: "md-transition-out"
13413                                 },
13414                                 s = r.toTransformCss(o(n, t.openFrom || t.origin)),
13415                                 c = r.toTransformCss("");
13416                             return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, s, c, a).then(function(e) {
13417                                 return t.reverseAnimate = function() {
13418                                     return delete t.reverseAnimate, t.closeTo ? (a = {
13419                                         transitionInClass: "md-transition-out",
13420                                         transitionOutClass: "md-transition-in"
13421                                     }, s = c, c = r.toTransformCss(o(n, t.closeTo)), r.translate3d(n, s, c, a)) : e(c = r.toTransformCss(o(n, t.origin)))
13422                                 }, t.clearAnimate = function() {
13423                                     return delete t.clearAnimate, n.removeClass([a.transitionOutClass, a.transitionInClass].join(" ")), r.translate3d(n, c, r.toTransformCss(""), {})
13424                                 }, !0
13425                             })
13426                         }
13427
13428                         function x(e, t) {
13429                             return t.reverseAnimate().then(function() {
13430                                 t.contentElement && t.clearAnimate()
13431                             })
13432                         }
13433
13434                         function k(e, t) {
13435                             if (-1 !== t.indexOf(e.nodeName)) return !0
13436                         }
13437                         return {
13438                             hasBackdrop: !0,
13439                             isolateScope: !0,
13440                             onCompiling: function(e) {
13441                                 e.defaultTheme = p.defaultTheme(), v(e)
13442                             },
13443                             onShow: function(e, n, r, o) {
13444                                 function a() {
13445                                     n[0].querySelector(".md-actions") && f.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>.")
13446                                 }
13447
13448                                 function s() {
13449                                     r.focusOnOpen && (i.findFocusTarget(n) || n[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || c).focus()
13450                                 }
13451                                 t.element(l[0].body).addClass("md-dialog-is-showing");
13452                                 var c = n.find("md-dialog");
13453                                 c.hasClass("ng-cloak") && f.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", n[0]);
13454                                 return b(r), _(c, r), $(e, n, r), y(n, r), C(n, r).then(function() {
13455                                     w(n, r), a(), s()
13456                                 })
13457                             },
13458                             onShowing: function(e, t, n, r) {
13459                                 if (r) {
13460                                     var i = r.htmlContent || n.htmlContent || "",
13461                                         o = r.textContent || n.textContent || r.content || n.content || "";
13462                                     if (i && !h.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
13463                                     if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
13464                                     r.mdHtmlContent = i, r.mdTextContent = o
13465                                 }
13466                             },
13467                             onRemove: function(e, n, r) {
13468                                 function i() {
13469                                     t.element(l[0].body).removeClass("md-dialog-is-showing"), r.contentElement && r.reverseContainerStretch(), r.cleanupElement(), r.$destroy || "keyboard" !== r.originInteraction || r.origin.focus()
13470                                 }
13471                                 return r.deactivateListeners(), r.unlockScreenReader(), r.hideBackdrop(r.$destroy), o && o.parentNode && o.parentNode.removeChild(o), a && a.parentNode && a.parentNode.removeChild(a), r.$destroy ? i() : x(0, r).then(i)
13472                             },
13473                             clickOutsideToClose: !1,
13474                             escapeToClose: !0,
13475                             targetEvent: null,
13476                             closeTo: null,
13477                             openFrom: null,
13478                             focusOnOpen: !0,
13479                             disableParentScroll: !0,
13480                             autoWrap: !0,
13481                             fullscreen: !1,
13482                             transformTemplate: function(e, t) {
13483                                 var n = m.startSymbol(),
13484                                     r = m.endSymbol();
13485                                 return '<div class="md-dialog-container" tabindex="-1" md-theme="' + (n + (t.themeWatch ? "" : "::") + "theme" + r) + '">' + function(e) {
13486                                     return t.autoWrap && !/<\/md-dialog>/g.test(e) ? "<md-dialog>" + (e || "") + "</md-dialog>" : e || ""
13487                                 }(e) + "</div>"
13488                             }
13489                         }
13490                     }
13491                     r.$inject = ["$mdDialog", "$mdConstant"], i.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"];
13492                     var o, a;
13493                     return e("$mdDialog").setDefaults({
13494                         methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
13495                         options: i
13496                     }).addPreset("alert", {
13497                         methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
13498                         options: r
13499                     }).addPreset("confirm", {
13500                         methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
13501                         options: r
13502                     }).addPreset("prompt", {
13503                         methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css"],
13504                         options: r
13505                     })
13506                 }
13507                 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], r.$inject = ["$$interimElementProvider"], t.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", r)
13508             }(),
13509             function() {
13510                 function e(e) {
13511                     return {
13512                         restrict: "E",
13513                         link: e
13514                     }
13515                 }
13516                 e.$inject = ["$mdTheming"], t.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
13517             }(),
13518             function() {
13519                 function e(e) {
13520                     return {
13521                         restrict: "E",
13522                         require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
13523                         compile: function(t, n) {
13524                             var r = t.children();
13525                             e.prefixer().hasAttribute(r, "ng-repeat") ? r.addClass("md-fab-action-item") : r.wrap('<div class="md-fab-action-item">')
13526                         }
13527                     }
13528                 }
13529                 e.$inject = ["$mdUtil"], t.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
13530             }(),
13531             function() {
13532                 function e(e, n, r, i, o, a) {
13533                     function s() {
13534                         A.direction = A.direction || "down", A.isOpen = A.isOpen || !1, u(), n.addClass("md-animations-waiting")
13535                     }
13536
13537                     function c() {
13538                         var r = ["click", "focusin", "focusout"];
13539                         t.forEach(r, function(e) {
13540                             n.on(e, l)
13541                         }), e.$on("$destroy", function() {
13542                             t.forEach(r, function(e) {
13543                                 n.off(e, l)
13544                             }), p()
13545                         })
13546                     }
13547
13548                     function l(e) {
13549                         "click" == e.type && T(e), "focusout" != e.type || D || (D = a(function() {
13550                             A.close()
13551                         }, 100, !1)), "focusin" == e.type && D && (a.cancel(D), D = null)
13552                     }
13553
13554                     function u() {
13555                         A.currentActionIndex = -1
13556                     }
13557
13558                     function d() {
13559                         e.$watch("vm.direction", function(e, t) {
13560                             r.removeClass(n, "md-" + t), r.addClass(n, "md-" + e), u()
13561                         });
13562                         var t, i;
13563                         e.$watch("vm.isOpen", function(e) {
13564                             u(), t && i || (t = M(), i = S()), e ? h() : p();
13565                             var o = e ? "md-is-open" : "",
13566                                 a = e ? "" : "md-is-open";
13567                             t.attr("aria-haspopup", !0), t.attr("aria-expanded", e), i.attr("aria-hidden", !e), r.setClass(n, o, a)
13568                         })
13569                     }
13570
13571                     function f() {
13572                         n[0].scrollHeight > 0 ? r.addClass(n, "_md-animations-ready").then(function() {
13573                             n.removeClass("md-animations-waiting")
13574                         }) : O < 10 && (a(f, 100), O += 1)
13575                     }
13576
13577                     function h() {
13578                         n.on("keydown", g), i.nextTick(function() {
13579                             t.element(document).on("click touchend", m)
13580                         })
13581                     }
13582
13583                     function p() {
13584                         n.off("keydown", g), t.element(document).off("click touchend", m)
13585                     }
13586
13587                     function m(e) {
13588                         if (e.target) {
13589                             var t = i.getClosest(e.target, "md-fab-trigger"),
13590                                 n = i.getClosest(e.target, "md-fab-actions");
13591                             t || n || A.close()
13592                         }
13593                     }
13594
13595                     function g(e) {
13596                         switch (e.which) {
13597                             case o.KEY_CODE.ESCAPE:
13598                                 return A.close(), e.preventDefault(), !1;
13599                             case o.KEY_CODE.LEFT_ARROW:
13600                                 return _(e), !1;
13601                             case o.KEY_CODE.UP_ARROW:
13602                                 return w(e), !1;
13603                             case o.KEY_CODE.RIGHT_ARROW:
13604                                 return E(e), !1;
13605                             case o.KEY_CODE.DOWN_ARROW:
13606                                 return C(e), !1
13607                         }
13608                     }
13609
13610                     function v(e) {
13611                         y(e, -1)
13612                     }
13613
13614                     function b(e) {
13615                         y(e, 1)
13616                     }
13617
13618                     function y(e, n) {
13619                         var r = $();
13620                         A.currentActionIndex = A.currentActionIndex + n, A.currentActionIndex = Math.min(r.length - 1, A.currentActionIndex), A.currentActionIndex = Math.max(0, A.currentActionIndex);
13621                         var i = t.element(r[A.currentActionIndex]).children()[0];
13622                         t.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
13623                     }
13624
13625                     function $() {
13626                         var e = S()[0].querySelectorAll(".md-fab-action-item");
13627                         return t.forEach(e, function(e) {
13628                             t.element(t.element(e).children()[0]).attr("tabindex", -1)
13629                         }), e
13630                     }
13631
13632                     function _(e) {
13633                         "left" === A.direction ? b(e) : v(e)
13634                     }
13635
13636                     function w(e) {
13637                         "down" === A.direction ? v(e) : b(e)
13638                     }
13639
13640                     function E(e) {
13641                         "left" === A.direction ? v(e) : b(e)
13642                     }
13643
13644                     function C(e) {
13645                         "up" === A.direction ? v(e) : b(e)
13646                     }
13647
13648                     function x(e) {
13649                         return i.getClosest(e, "md-fab-trigger")
13650                     }
13651
13652                     function k(e) {
13653                         return i.getClosest(e, "md-fab-actions")
13654                     }
13655
13656                     function T(e) {
13657                         x(e.target) && A.toggle(), k(e.target) && A.close()
13658                     }
13659
13660                     function M() {
13661                         return n.find("md-fab-trigger")
13662                     }
13663
13664                     function S() {
13665                         return n.find("md-fab-actions")
13666                     }
13667                     var A = this,
13668                         O = 0;
13669                     A.open = function() {
13670                         e.$evalAsync("vm.isOpen = true")
13671                     }, A.close = function() {
13672                         e.$evalAsync("vm.isOpen = false"), n.find("md-fab-trigger")[0].focus()
13673                     }, A.toggle = function() {
13674                         e.$evalAsync("vm.isOpen = !vm.isOpen")
13675                     }, A.$onInit = function() {
13676                         s(), c(), d(), f()
13677                     }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit();
13678                     var D
13679                 }
13680                 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], t.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
13681             }(),
13682             function() {
13683                 function n(n) {
13684                     function r(e) {
13685                         n(e, i, !1)
13686                     }
13687
13688                     function o(n) {
13689                         if (!n.hasClass("md-animations-waiting") || n.hasClass("_md-animations-ready")) {
13690                             var r = n[0],
13691                                 i = n.controller("mdFabSpeedDial"),
13692                                 o = r.querySelectorAll(".md-fab-action-item"),
13693                                 a = r.querySelector("md-fab-trigger"),
13694                                 s = r.querySelector("._md-css-variables"),
13695                                 c = parseInt(e.getComputedStyle(s).zIndex);
13696                             t.forEach(o, function(e, t) {
13697                                 var n = e.style;
13698                                 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = o.length - t + c
13699                             }), a.style.zIndex = c + o.length + 1, i.isOpen || t.forEach(o, function(e, t) {
13700                                 var n, r, o = e.style,
13701                                     s = (a.clientHeight - e.clientHeight) / 2,
13702                                     c = (a.clientWidth - e.clientWidth) / 2;
13703                                 switch (i.direction) {
13704                                     case "up":
13705                                         n = e.scrollHeight * (t + 1) + s, r = "Y";
13706                                         break;
13707                                     case "down":
13708                                         n = -(e.scrollHeight * (t + 1) + s), r = "Y";
13709                                         break;
13710                                     case "left":
13711                                         n = e.scrollWidth * (t + 1) + c, r = "X";
13712                                         break;
13713                                     case "right":
13714                                         n = -(e.scrollWidth * (t + 1) + c), r = "X"
13715                                 }
13716                                 var l = "translate" + r + "(" + n + "px)";
13717                                 o.transform = o.webkitTransform = l
13718                             })
13719                         }
13720                     }
13721                     return {
13722                         addClass: function(e, t, n) {
13723                             e.hasClass("md-fling") ? (o(e), r(n)) : n()
13724                         },
13725                         removeClass: function(e, t, n) {
13726                             o(e), r(n)
13727                         }
13728                     }
13729                 }
13730
13731                 function r(n) {
13732                     function r(e) {
13733                         n(e, i, !1)
13734                     }
13735
13736                     function o(n) {
13737                         var r = n[0],
13738                             i = n.controller("mdFabSpeedDial"),
13739                             o = r.querySelectorAll(".md-fab-action-item"),
13740                             s = r.querySelector("._md-css-variables"),
13741                             c = parseInt(e.getComputedStyle(s).zIndex);
13742                         t.forEach(o, function(e, t) {
13743                             var n = e.style,
13744                                 r = t * a;
13745                             n.opacity = i.isOpen ? 1 : 0, n.transform = n.webkitTransform = i.isOpen ? "scale(1)" : "scale(0)", n.transitionDelay = (i.isOpen ? r : o.length - r) + "ms", n.zIndex = o.length - t + c
13746                         })
13747                     }
13748                     var a = 65;
13749                     return {
13750                         addClass: function(e, t, n) {
13751                             o(e), r(n)
13752                         },
13753                         removeClass: function(e, t, n) {
13754                             o(e), r(n)
13755                         }
13756                     }
13757                 }
13758                 n.$inject = ["$timeout"], r.$inject = ["$timeout"];
13759                 var i = 300;
13760                 t.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
13761                     return {
13762                         restrict: "E",
13763                         scope: {
13764                             direction: "@?mdDirection",
13765                             isOpen: "=?mdOpen"
13766                         },
13767                         bindToController: !0,
13768                         controller: "MdFabController",
13769                         controllerAs: "vm",
13770                         link: function(e, t) {
13771                             t.prepend('<div class="_md-css-variables"></div>')
13772                         }
13773                     }
13774                 }).animation(".md-fling", n).animation(".md-scale", r).service("mdFabSpeedDialFlingAnimation", n).service("mdFabSpeedDialScaleAnimation", r)
13775             }(),
13776             function() {
13777                 function n() {
13778                     function n(n, r, i) {
13779                         if (r) {
13780                             var o = n[0],
13781                                 a = n.controller("mdFabToolbar"),
13782                                 s = o.querySelector(".md-fab-toolbar-background"),
13783                                 c = o.querySelector("md-fab-trigger button"),
13784                                 l = o.querySelector("md-toolbar"),
13785                                 u = o.querySelector("md-fab-trigger button md-icon"),
13786                                 d = n.find("md-fab-actions").children();
13787                             if (c && s) {
13788                                 var f = e.getComputedStyle(c).getPropertyValue("background-color"),
13789                                     h = o.offsetWidth,
13790                                     p = (o.offsetHeight, h / c.offsetWidth * 2);
13791                                 s.style.backgroundColor = f, s.style.borderRadius = h + "px", a.isOpen ? (l.style.pointerEvents = "inherit", s.style.width = c.offsetWidth + "px", s.style.height = c.offsetHeight + "px", s.style.transform = "scale(" + p + ")", s.style.transitionDelay = "0ms", u && (u.style.transitionDelay = ".3s"), t.forEach(d, function(e, t) {
13792                                     e.style.transitionDelay = 25 * (d.length - t) + "ms"
13793                                 })) : (l.style.pointerEvents = "none", s.style.transform = "scale(1)", s.style.top = "0", n.hasClass("md-right") && (s.style.left = "0", s.style.right = null), n.hasClass("md-left") && (s.style.right = "0", s.style.left = null), s.style.transitionDelay = "200ms", u && (u.style.transitionDelay = "0ms"), t.forEach(d, function(e, t) {
13794                                     e.style.transitionDelay = 200 + 25 * t + "ms"
13795                                 }))
13796                             }
13797                         }
13798                     }
13799                     return {
13800                         addClass: function(e, t, r) {
13801                             n(e, t), r()
13802                         },
13803                         removeClass: function(e, t, r) {
13804                             n(e, t), r()
13805                         }
13806                     }
13807                 }
13808                 t.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
13809                     return {
13810                         restrict: "E",
13811                         transclude: !0,
13812                         template: '<div class="md-fab-toolbar-wrapper">  <div class="md-fab-toolbar-content" ng-transclude></div></div>',
13813                         scope: {
13814                             direction: "@?mdDirection",
13815                             isOpen: "=?mdOpen"
13816                         },
13817                         bindToController: !0,
13818                         controller: "MdFabController",
13819                         controllerAs: "vm",
13820                         link: function(e, t, n) {
13821                             t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
13822                         }
13823                     }
13824                 }).animation(".md-fab-toolbar", n).service("mdFabToolbarAnimation", n)
13825             }(),
13826             function() {
13827                 function e(e, r, i, o) {
13828                     return {
13829                         restrict: "E",
13830                         controller: n,
13831                         scope: {
13832                             mdOnLayout: "&"
13833                         },
13834                         link: function(n, a, s, c) {
13835                             function l(e) {
13836                                 null == e ? c.invalidateLayout() : o(e) && c.invalidateLayout()
13837                             }
13838
13839                             function u(e) {
13840                                 return E + e + C
13841                             }
13842
13843                             function d(e, t, n, r, i, o, a) {
13844                                 var s = 1 / n * 100,
13845                                     c = (n - 1) / n,
13846                                     l = x({
13847                                         share: s,
13848                                         gutterShare: c,
13849                                         gutter: i
13850                                     }),
13851                                     u = "rtl" != document.dir && "rtl" != document.body.dir ? {
13852                                         left: k({
13853                                             unit: l,
13854                                             offset: e.col,
13855                                             gutter: i
13856                                         }),
13857                                         width: T({
13858                                             unit: l,
13859                                             span: t.col,
13860                                             gutter: i
13861                                         }),
13862                                         paddingTop: "",
13863                                         marginTop: "",
13864                                         top: "",
13865                                         height: ""
13866                                     } : {
13867                                         right: k({
13868                                             unit: l,
13869                                             offset: e.col,
13870                                             gutter: i
13871                                         }),
13872                                         width: T({
13873                                             unit: l,
13874                                             span: t.col,
13875                                             gutter: i
13876                                         }),
13877                                         paddingTop: "",
13878                                         marginTop: "",
13879                                         top: "",
13880                                         height: ""
13881                                     };
13882                                 switch (o) {
13883                                     case "fixed":
13884                                         u.top = k({
13885                                             unit: a,
13886                                             offset: e.row,
13887                                             gutter: i
13888                                         }), u.height = T({
13889                                             unit: a,
13890                                             span: t.row,
13891                                             gutter: i
13892                                         });
13893                                         break;
13894                                     case "ratio":
13895                                         f = x({
13896                                             share: d = s / a,
13897                                             gutterShare: c,
13898                                             gutter: i
13899                                         }), u.paddingTop = T({
13900                                             unit: f,
13901                                             span: t.row,
13902                                             gutter: i
13903                                         }), u.marginTop = k({
13904                                             unit: f,
13905                                             offset: e.row,
13906                                             gutter: i
13907                                         });
13908                                         break;
13909                                     case "fit":
13910                                         var d = 1 / r * 100,
13911                                             f = x({
13912                                                 share: d,
13913                                                 gutterShare: (r - 1) / r,
13914                                                 gutter: i
13915                                             });
13916                                         u.top = k({
13917                                             unit: f,
13918                                             offset: e.row,
13919                                             gutter: i
13920                                         }), u.height = T({
13921                                             unit: f,
13922                                             span: t.row,
13923                                             gutter: i
13924                                         })
13925                                 }
13926                                 return u
13927                             }
13928
13929                             function f(e, t, n, r, i) {
13930                                 var o = {};
13931                                 switch (r) {
13932                                     case "fixed":
13933                                         o.height = T({
13934                                             unit: i,
13935                                             span: t,
13936                                             gutter: n
13937                                         }), o.paddingBottom = "";
13938                                         break;
13939                                     case "ratio":
13940                                         var a = x({
13941                                             share: 1 / e * 100 * (1 / i),
13942                                             gutterShare: 1 === e ? 0 : (e - 1) / e,
13943                                             gutter: n
13944                                         });
13945                                         o.height = "", o.paddingBottom = T({
13946                                             unit: a,
13947                                             span: t,
13948                                             gutter: n
13949                                         })
13950                                 }
13951                                 return o
13952                             }
13953
13954                             function h() {
13955                                 return [].filter.call(a.children(), function(e) {
13956                                     return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
13957                                 })
13958                             }
13959
13960                             function p(e) {
13961                                 return [].map.call(e, function(e) {
13962                                     var n = t.element(e).controller("mdGridTile");
13963                                     return {
13964                                         row: parseInt(o.getResponsiveAttribute(n.$attrs, "md-rowspan"), 10) || 1,
13965                                         col: parseInt(o.getResponsiveAttribute(n.$attrs, "md-colspan"), 10) || 1
13966                                     }
13967                                 })
13968                             }
13969
13970                             function m() {
13971                                 var e = parseInt(o.getResponsiveAttribute(s, "md-cols"), 10);
13972                                 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
13973                                 return e
13974                             }
13975
13976                             function g() {
13977                                 return y(o.getResponsiveAttribute(s, "md-gutter") || 1)
13978                             }
13979
13980                             function v() {
13981                                 var e = o.getResponsiveAttribute(s, "md-row-height");
13982                                 if (!e) throw "md-grid-list: md-row-height attribute was not found";
13983                                 switch (b()) {
13984                                     case "fixed":
13985                                         return y(e);
13986                                     case "ratio":
13987                                         var t = e.split(":");
13988                                         return parseFloat(t[0]) / parseFloat(t[1]);
13989                                     case "fit":
13990                                         return 0
13991                                 }
13992                             }
13993
13994                             function b() {
13995                                 var e = o.getResponsiveAttribute(s, "md-row-height");
13996                                 if (!e) throw "md-grid-list: md-row-height attribute was not found";
13997                                 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
13998                             }
13999
14000                             function y(e) {
14001                                 return /\D$/.test(e) ? e : e + "px"
14002                             }
14003                             a.addClass("_md"), a.attr("role", "list"), c.layoutDelegate = function(e) {
14004                                 var r = h(),
14005                                     o = {
14006                                         tileSpans: p(r),
14007                                         colCount: m(),
14008                                         rowMode: b(),
14009                                         rowHeight: v(),
14010                                         gutter: g()
14011                                     };
14012                                 if (e || !t.equals(o, w)) {
14013                                     var s = i(o.colCount, o.tileSpans, r).map(function(e, n) {
14014                                         return {
14015                                             grid: {
14016                                                 element: a,
14017                                                 style: f(o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
14018                                             },
14019                                             tiles: e.map(function(e, i) {
14020                                                 return {
14021                                                     element: t.element(r[i]),
14022                                                     style: d(e.position, e.spans, o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
14023                                                 }
14024                                             })
14025                                         }
14026                                     }).reflow().performance();
14027                                     n.mdOnLayout({
14028                                         $event: {
14029                                             performance: s
14030                                         }
14031                                     }), w = o
14032                                 }
14033                             };
14034                             var $ = t.bind(c, c.invalidateLayout),
14035                                 _ = function() {
14036                                     for (var e in r.MEDIA) o(e), o.getQuery(r.MEDIA[e]).addListener($);
14037                                     return o.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], s, l)
14038                                 }();
14039                             n.$on("$destroy", function() {
14040                                 c.layoutDelegate = t.noop, _();
14041                                 for (var e in r.MEDIA) o.getQuery(r.MEDIA[e]).removeListener($)
14042                             });
14043                             var w, E = e.startSymbol(),
14044                                 C = e.endSymbol(),
14045                                 x = e(u("share") + "% - (" + u("gutter") + " * " + u("gutterShare") + ")"),
14046                                 k = e("calc((" + u("unit") + " + " + u("gutter") + ") * " + u("offset") + ")"),
14047                                 T = e("calc((" + u("unit") + ") * " + u("span") + " + (" + u("span") + " - 1) * " + u("gutter") + ")")
14048                         }
14049                     }
14050                 }
14051
14052                 function n(e) {
14053                     this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = t.noop
14054                 }
14055
14056                 function r(e) {
14057                     function n(t, n) {
14058                         var r, a, s, c, l, u;
14059                         return c = e.time(function() {
14060                             a = i(t, n)
14061                         }), r = {
14062                             layoutInfo: function() {
14063                                 return a
14064                             },
14065                             map: function(t) {
14066                                 return l = e.time(function() {
14067                                     var e = r.layoutInfo();
14068                                     s = t(e.positioning, e.rowCount)
14069                                 }), r
14070                             },
14071                             reflow: function(t) {
14072                                 return u = e.time(function() {
14073                                     (t || o)(s.grid, s.tiles)
14074                                 }), r
14075                             },
14076                             performance: function() {
14077                                 return {
14078                                     tileCount: n.length,
14079                                     layoutTime: c,
14080                                     mapTime: l,
14081                                     reflowTime: u,
14082                                     totalTime: c + l + u
14083                                 }
14084                             }
14085                         }
14086                     }
14087
14088                     function r(e, t) {
14089                         e.element.css(e.style), t.forEach(function(e) {
14090                             e.element.css(e.style)
14091                         })
14092                     }
14093
14094                     function i(e, t) {
14095                         function n(t, n) {
14096                             if (t.col > e) throw "md-grid-list: Tile at position " + n + " has a colspan (" + t.col + ") that exceeds the column count (" + e + ")";
14097                             for (var l = 0, u = 0; u - l < t.col;) a >= e ? r() : -1 !== (l = c.indexOf(0, a)) && -1 !== (u = o(l + 1)) ? a = u + 1 : (l = u = 0, r());
14098                             return i(l, t.col, t.row), a = l + t.col, {
14099                                 col: l,
14100                                 row: s
14101                             }
14102                         }
14103
14104                         function r() {
14105                             a = 0, s++, i(0, e, -1)
14106                         }
14107
14108                         function i(e, t, n) {
14109                             for (var r = e; r < e + t; r++) c[r] = Math.max(c[r] + n, 0)
14110                         }
14111
14112                         function o(e) {
14113                             var t;
14114                             for (t = e; t < c.length; t++)
14115                                 if (0 !== c[t]) return t;
14116                             if (t === c.length) return t
14117                         }
14118                         var a = 0,
14119                             s = 0,
14120                             c = function() {
14121                                 for (var t = [], n = 0; n < e; n++) t.push(0);
14122                                 return t
14123                             }();
14124                         return {
14125                             positioning: t.map(function(e, t) {
14126                                 return {
14127                                     spans: e,
14128                                     position: n(e, t)
14129                                 }
14130                             }),
14131                             rowCount: s + Math.max.apply(Math, c)
14132                         }
14133                     }
14134                     var o = r;
14135                     return n.animateWith = function(e) {
14136                         o = t.isFunction(e) ? e : r
14137                     }, n
14138                 }
14139
14140                 function i(e) {
14141                     return {
14142                         restrict: "E",
14143                         require: "^mdGridList",
14144                         template: "<figure ng-transclude></figure>",
14145                         transclude: !0,
14146                         scope: {},
14147                         controller: ["$attrs", function(e) {
14148                             this.$attrs = e
14149                         }],
14150                         link: function(n, r, i, o) {
14151                             r.attr("role", "listitem");
14152                             var a = e.watchResponsiveAttributes(["md-colspan", "md-rowspan"], i, t.bind(o, o.invalidateLayout));
14153                             o.invalidateTiles(), n.$on("$destroy", function() {
14154                                 r[0].$$mdDestroyed = !0, a(), o.invalidateLayout()
14155                             }), t.isDefined(n.$parent.$index) && n.$watch(function() {
14156                                 return n.$parent.$index
14157                             }, function(e, t) {
14158                                 e !== t && o.invalidateTiles()
14159                             })
14160                         }
14161                     }
14162                 }
14163
14164                 function o() {
14165                     return {
14166                         template: "<figcaption ng-transclude></figcaption>",
14167                         transclude: !0
14168                     }
14169                 }
14170                 n.$inject = ["$mdUtil"], r.$inject = ["$mdUtil"], e.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia"], i.$inject = ["$mdMedia"], t.module("material.components.gridList", ["material.core"]).directive("mdGridList", e).directive("mdGridTile", i).directive("mdGridTileFooter", o).directive("mdGridTileHeader", o).factory("$mdGridLayout", r), n.prototype = {
14171                     invalidateTiles: function() {
14172                         this.tilesInvalidated = !0, this.invalidateLayout()
14173                     },
14174                     invalidateLayout: function() {
14175                         this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(t.bind(this, this.layout)))
14176                     },
14177                     layout: function() {
14178                         try {
14179                             this.layoutDelegate(this.tilesInvalidated)
14180                         } finally {
14181                             this.layoutInvalidated = !1, this.tilesInvalidated = !1
14182                         }
14183                     }
14184                 }
14185             }(), t.module("material.components.icon", ["material.core"]),
14186             function() {
14187                 function n(e, t) {
14188                     function n(e, n, r, i) {
14189                         var o = this;
14190                         o.isErrorGetter = r.mdIsError && t(r.mdIsError), o.delegateClick = function() {
14191                             o.input.focus()
14192                         }, o.element = n, o.setFocused = function(e) {
14193                             n.toggleClass("md-input-focused", !!e)
14194                         }, o.setHasValue = function(e) {
14195                             n.toggleClass("md-input-has-value", !!e)
14196                         }, o.setHasPlaceholder = function(e) {
14197                             n.toggleClass("md-input-has-placeholder", !!e)
14198                         }, o.setInvalid = function(e) {
14199                             e ? i.addClass(n, "md-input-invalid") : i.removeClass(n, "md-input-invalid")
14200                         }, e.$watch(function() {
14201                             return o.label && o.input
14202                         }, function(e) {
14203                             e && !o.label.attr("for") && o.label.attr("for", o.input.attr("id"))
14204                         })
14205                     }
14206                     n.$inject = ["$scope", "$element", "$attrs", "$animate"];
14207                     var r = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
14208                         i = r.reduce(function(e, t) {
14209                             return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
14210                         }, []).join(","),
14211                         o = r.reduce(function(e, t) {
14212                             return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
14213                         }, []).join(",");
14214                     return {
14215                         restrict: "E",
14216                         compile: function(t) {
14217                             var n = t[0].querySelector(i),
14218                                 r = t[0].querySelector(o);
14219                             return n && t.addClass("md-icon-left"), r && t.addClass("md-icon-right"),
14220                                 function(t, n) {
14221                                     e(n)
14222                                 }
14223                         },
14224                         controller: n
14225                     }
14226                 }
14227
14228                 function r(e, n, r, i, o) {
14229                     return {
14230                         restrict: "E",
14231                         require: ["^?mdInputContainer", "?ngModel", "?^form"],
14232                         link: function(a, s, c, l) {
14233                             function u(e) {
14234                                 return f.setHasValue(!p.$isEmpty(e)), e
14235                             }
14236
14237                             function d() {
14238                                 f.setHasValue(s.val().length > 0 || (s[0].validity || {}).badInput)
14239                             }
14240                             var f = l[0],
14241                                 h = !!l[1],
14242                                 p = l[1] || e.fakeNgModel(),
14243                                 m = l[2],
14244                                 g = t.isDefined(c.readonly),
14245                                 v = e.parseAttributeBoolean(c.mdNoAsterisk),
14246                                 b = s[0].tagName.toLowerCase();
14247                             if (f)
14248                                 if ("hidden" !== c.type) {
14249                                     if (f.input) {
14250                                         if (f.input[0].contains(s[0])) return;
14251                                         throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
14252                                     }
14253                                     f.input = s, f.label && c.$observe("required", function(e) {
14254                                         f.label.toggleClass("md-required", e && !v)
14255                                     });
14256                                     var y = t.element('<div class="md-errors-spacer">');
14257                                     s.after(y), f.label || r.expect(s, "aria-label", c.placeholder), s.addClass("md-input"), s.attr("id") || s.attr("id", "input_" + e.nextUid()), "input" === b && "number" === c.type && c.min && c.max && !c.step ? s.attr("step", "any") : "textarea" === b && function() {
14258                                         function r() {
14259                                             s.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
14260                                             var e = l();
14261                                             if (!y) {
14262                                                 var t = s[0].style.padding || "";
14263                                                 y = s.css("padding", 0).prop("offsetHeight"), s[0].style.padding = t
14264                                             }
14265                                             if (g && y && (e = Math.max(e, y * g)), v && y) {
14266                                                 var n = y * v;
14267                                                 n < e ? (s.attr("md-no-autogrow", ""), e = n) : s.removeAttr("md-no-autogrow")
14268                                             }
14269                                             y && s.attr("rows", Math.round(e / y)), s.css("height", e + "px").removeClass("md-no-flex")
14270                                         }
14271
14272                                         function l() {
14273                                             var e = $.offsetHeight,
14274                                                 t = $.scrollHeight - e;
14275                                             return e + Math.max(t, 0)
14276                                         }
14277
14278                                         function u(t) {
14279                                             return e.nextTick(r), t
14280                                         }
14281
14282                                         function d() {
14283                                             if (m && (m = !1, t.element(n).off("resize", r), b && b(), s.attr("md-no-autogrow", "").off("input", r), h)) {
14284                                                 var e = p.$formatters.indexOf(u);
14285                                                 e > -1 && p.$formatters.splice(e, 1)
14286                                             }
14287                                         }
14288                                         var m = !c.hasOwnProperty("mdNoAutogrow");
14289                                         if (function() {
14290                                                 function e(e) {
14291                                                     e.preventDefault(), u = !0, h = e.clientY, p = parseFloat(s.css("height")) || s.prop("offsetHeight")
14292                                                 }
14293
14294                                                 function n(e) {
14295                                                     u && (e.preventDefault(), d(), m.addClass("md-input-resized"))
14296                                                 }
14297
14298                                                 function r(e) {
14299                                                     u && s.css("height", p + e.pointer.distanceY + "px")
14300                                                 }
14301
14302                                                 function i(e) {
14303                                                     u && (u = !1, m.removeClass("md-input-resized"))
14304                                                 }
14305                                                 if (!c.hasOwnProperty("mdNoResize")) {
14306                                                     var l = t.element('<div class="md-resize-handle"></div>'),
14307                                                         u = !1,
14308                                                         h = null,
14309                                                         p = 0,
14310                                                         m = f.element,
14311                                                         g = o.register(l, "drag", {
14312                                                             horizontal: !1
14313                                                         });
14314                                                     s.wrap('<div class="md-resize-wrapper">').after(l), l.on("mousedown", e), m.on("$md.dragstart", n).on("$md.drag", r).on("$md.dragend", i), a.$on("$destroy", function() {
14315                                                         l.off("mousedown", e).remove(), m.off("$md.dragstart", n).off("$md.drag", r).off("$md.dragend", i), g(), l = null, m = null, g = null
14316                                                     })
14317                                                 }
14318                                             }(), m) {
14319                                             var g = c.hasOwnProperty("rows") ? parseInt(c.rows) : NaN,
14320                                                 v = c.hasOwnProperty("maxRows") ? parseInt(c.maxRows) : NaN,
14321                                                 b = a.$on("md-resize-textarea", r),
14322                                                 y = null,
14323                                                 $ = s[0];
14324                                             if (i(function() {
14325                                                     e.nextTick(r)
14326                                                 }, 10, !1), s.on("input", r), h && p.$formatters.push(u), g || s.attr("rows", 1), t.element(n).on("resize", r), a.$on("$destroy", d), c.hasOwnProperty("mdDetectHidden")) {
14327                                                 var _ = function() {
14328                                                     var e = !1;
14329                                                     return function() {
14330                                                         var t = 0 === $.offsetHeight;
14331                                                         !1 === t && !0 === e && r(), e = t
14332                                                     }
14333                                                 }();
14334                                                 a.$watch(function() {
14335                                                     return e.nextTick(_, !1), !0
14336                                                 })
14337                                             }
14338                                         }
14339                                     }(), h || d();
14340                                     var $ = f.isErrorGetter || function() {
14341                                         return p.$invalid && (p.$touched || m && m.$submitted)
14342                                     };
14343                                     a.$watch($, f.setInvalid), c.ngValue && c.$observe("value", d), p.$parsers.push(u), p.$formatters.push(u), s.on("input", d), g || s.on("focus", function(t) {
14344                                         e.nextTick(function() {
14345                                             f.setFocused(!0)
14346                                         })
14347                                     }).on("blur", function(t) {
14348                                         e.nextTick(function() {
14349                                             f.setFocused(!1), d()
14350                                         })
14351                                     }), a.$on("$destroy", function() {
14352                                         f.setFocused(!1), f.setHasValue(!1), f.input = null
14353                                     })
14354                                 } else s.attr("aria-hidden", "true")
14355                         }
14356                     }
14357                 }
14358
14359                 function i(e, n) {
14360                     return {
14361                         restrict: "A",
14362                         require: ["ngModel", "^mdInputContainer"],
14363                         link: function(r, i, o, a) {
14364                             function s(e) {
14365                                 return l.parent ? (l.text(String(i.val() || e || "").length + " / " + c), e) : e
14366                             }
14367                             var c, l, u, d = a[0],
14368                                 f = a[1];
14369                             n.nextTick(function() {
14370                                 u = t.element(f.element[0].querySelector(".md-errors-spacer")), l = t.element('<div class="md-char-counter">'), u.append(l), o.$set("ngTrim", "false"), r.$watch(o.mdMaxlength, function(n) {
14371                                     c = n, t.isNumber(n) && n > 0 ? (l.parent().length || e.enter(l, u), s()) : e.leave(l)
14372                                 }), d.$validators["md-maxlength"] = function(e, n) {
14373                                     return !t.isNumber(c) || c < 0 || (s(), (e || i.val() || n || "").length <= c)
14374                                 }
14375                             })
14376                         }
14377                     }
14378                 }
14379
14380                 function o(e) {
14381                     return {
14382                         restrict: "A",
14383                         require: "^^?mdInputContainer",
14384                         priority: 200,
14385                         link: {
14386                             pre: function(n, r, i, o) {
14387                                 if (o) {
14388                                     var a = o.element.find("label"),
14389                                         s = o.element.attr("md-no-float");
14390                                     if (a && a.length || "" === s || n.$eval(s)) o.setHasPlaceholder(!0);
14391                                     else if ("MD-SELECT" != r[0].nodeName) {
14392                                         var c = t.element('<label ng-click="delegateClick()" tabindex="-1">' + i.placeholder + "</label>");
14393                                         i.$set("placeholder", null), o.element.addClass("md-icon-float").prepend(c), e(c)(n)
14394                                     }
14395                                 }
14396                             }
14397                         }
14398                     }
14399                 }
14400
14401                 function a(e) {
14402                     return {
14403                         restrict: "A",
14404                         link: function(t, n, r) {
14405                             function i() {
14406                                 a = !0, e(function() {
14407                                     n[0].select(), a = !1
14408                                 }, 1, !1)
14409                             }
14410
14411                             function o(e) {
14412                                 a && e.preventDefault()
14413                             }
14414                             if ("INPUT" === n[0].nodeName || "TEXTAREA" === n[0].nodeName) {
14415                                 var a = !1;
14416                                 n.on("focus", i).on("mouseup", o), t.$on("$destroy", function() {
14417                                     n.off("focus", i).off("mouseup", o)
14418                                 })
14419                             }
14420                         }
14421                     }
14422                 }
14423
14424                 function s(e) {
14425                     return {
14426                         restrict: "EA",
14427                         compile: function(t) {
14428                             function n(t) {
14429                                 return !!e.getClosest(t, "md-input-container")
14430                             }
14431
14432                             function r(e) {
14433                                 e.toggleClass("md-input-message-animation", !0)
14434                             }
14435                             if (n(t)) r(t);
14436                             else if (function() {
14437                                     for (var e = t[0]; e = e.parentNode;)
14438                                         if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
14439                                     return !1
14440                                 }()) return function(e, i) {
14441                                 n(i) && r(t)
14442                             }
14443                         },
14444                         priority: 100
14445                     }
14446                 }
14447
14448                 function c(e, t, n, r) {
14449                     return v(e, t, n, r), {
14450                         addClass: function(e, t, n) {
14451                             d(e, n)
14452                         }
14453                     }
14454                 }
14455
14456                 function l(e, t, n, r) {
14457                     return v(e, t, n, r), {
14458                         enter: function(e, t) {
14459                             d(e, t)
14460                         },
14461                         leave: function(e, t) {
14462                             f(e, t)
14463                         },
14464                         addClass: function(e, t, n) {
14465                             "ng-hide" == t ? f(e, n) : n()
14466                         },
14467                         removeClass: function(e, t, n) {
14468                             "ng-hide" == t ? d(e, n) : n()
14469                         }
14470                     }
14471                 }
14472
14473                 function u(e, t, n, r) {
14474                     return v(e, t, n, r), {
14475                         enter: function(e, t) {
14476                             h(e).start().done(t)
14477                         },
14478                         leave: function(e, t) {
14479                             p(e).start().done(t)
14480                         }
14481                     }
14482                 }
14483
14484                 function d(e, n) {
14485                     var r, i = [],
14486                         o = g(e),
14487                         a = o.children();
14488                     if (0 == o.length || 0 == a.length) return w.warn("mdInput messages show animation called on invalid messages element: ", e), void n();
14489                     t.forEach(a, function(e) {
14490                         r = h(t.element(e)), i.push(r.start())
14491                     }), y.all(i, n)
14492                 }
14493
14494                 function f(e, n) {
14495                     var r, i = [],
14496                         o = g(e),
14497                         a = o.children();
14498                     if (0 == o.length || 0 == a.length) return w.warn("mdInput messages hide animation called on invalid messages element: ", e), void n();
14499                     t.forEach(a, function(e) {
14500                         r = p(t.element(e)), i.push(r.start())
14501                     }), y.all(i, n)
14502                 }
14503
14504                 function h(t) {
14505                     var n = parseInt(e.getComputedStyle(t[0]).height),
14506                         r = parseInt(e.getComputedStyle(t[0]).marginTop),
14507                         i = g(t),
14508                         o = m(t);
14509                     return r > -n || i.hasClass("md-auto-hide") && !o.hasClass("md-input-invalid") ? $(t, {}) : $(t, {
14510                         event: "enter",
14511                         structural: !0,
14512                         from: {
14513                             opacity: 0,
14514                             "margin-top": -n + "px"
14515                         },
14516                         to: {
14517                             opacity: 1,
14518                             "margin-top": "0"
14519                         },
14520                         duration: .3
14521                     })
14522                 }
14523
14524                 function p(t) {
14525                     var n = t[0].offsetHeight,
14526                         r = e.getComputedStyle(t[0]);
14527                     return 0 === parseInt(r.opacity) ? $(t, {}) : $(t, {
14528                         event: "leave",
14529                         structural: !0,
14530                         from: {
14531                             opacity: 1,
14532                             "margin-top": 0
14533                         },
14534                         to: {
14535                             opacity: 0,
14536                             "margin-top": -n + "px"
14537                         },
14538                         duration: .3
14539                     })
14540                 }
14541
14542                 function m(e) {
14543                     return e.controller("mdInputContainer").element
14544                 }
14545
14546                 function g(e) {
14547                     return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? t.element(_.getClosest(e, function(e) {
14548                         return e.classList.contains("md-input-messages-animation")
14549                     })) : t.element(e[0].querySelector(".md-input-messages-animation"))
14550                 }
14551
14552                 function v(e, t, n, r) {
14553                     y = e, $ = t, _ = n, w = r
14554                 }
14555                 n.$inject = ["$mdTheming", "$parse"], r.$inject = ["$mdUtil", "$window", "$mdAria", "$timeout", "$mdGesture"], i.$inject = ["$animate", "$mdUtil"], o.$inject = ["$compile"], s.$inject = ["$mdUtil"], a.$inject = ["$timeout"], c.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"], l.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"], u.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"];
14556                 var b = t.module("material.components.input", ["material.core"]).directive("mdInputContainer", n).directive("label", function() {
14557                     return {
14558                         restrict: "E",
14559                         require: "^?mdInputContainer",
14560                         link: function(e, t, n, r) {
14561                             !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
14562                                 r.label = null
14563                             }))
14564                         }
14565                     }
14566                 }).directive("input", r).directive("textarea", r).directive("mdMaxlength", i).directive("placeholder", o).directive("ngMessages", function() {
14567                     function e(e) {
14568                         return E.some(function(t) {
14569                             return e[t]
14570                         })
14571                     }
14572                     return {
14573                         restrict: "EA",
14574                         link: function(t, n, r, i) {
14575                             i && (n.toggleClass("md-input-messages-animation", !0), n.toggleClass("md-auto-hide", !0), ("false" == r.mdAutoHide || e(r)) && n.toggleClass("md-auto-hide", !1))
14576                         },
14577                         require: "^^?mdInputContainer"
14578                     }
14579                 }).directive("ngMessage", s).directive("ngMessageExp", s).directive("mdSelectOnFocus", a).animation(".md-input-invalid", c).animation(".md-input-messages-animation", l).animation(".md-input-message-animation", u);
14580                 e._mdMocksIncluded && b.service("$$mdInput", function() {
14581                     return {
14582                         messages: {
14583                             show: d,
14584                             hide: f,
14585                             getElement: g
14586                         }
14587                     }
14588                 }).service("mdInputInvalidAnimation", c).service("mdInputMessagesAnimation", l).service("mdInputMessageAnimation", u);
14589                 var y, $, _, w, E = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"]
14590             }(),
14591             function() {
14592                 function e(e) {
14593                     return {
14594                         restrict: "E",
14595                         compile: function(t) {
14596                             return t[0].setAttribute("role", "list"), e
14597                         }
14598                     }
14599                 }
14600
14601                 function n(e, n, r, i) {
14602                     var o = ["md-checkbox", "md-switch", "md-menu"];
14603                     return {
14604                         restrict: "E",
14605                         controller: "MdListController",
14606                         compile: function(a, s) {
14607                             function c(n) {
14608                                 if ("div" == n)(v = t.element('<div class="md-no-style md-list-item-inner">')).append(a.contents()), a.addClass("md-proxy-focus");
14609                                 else {
14610                                     v = t.element('<div class="md-button md-no-style">   <div class="md-list-item-inner"></div></div>');
14611                                     var r = t.element('<md-button class="md-no-style"></md-button>');
14612                                     u(a[0], r[0]), r.attr("aria-label") || r.attr("aria-label", e.getText(a)), a.hasClass("md-no-focus") && r.addClass("md-no-focus"), v.prepend(r), v.children().eq(1).append(a.contents()), a.addClass("_md-button-wrap")
14613                                 }
14614                                 a[0].setAttribute("tabindex", "-1"), a.append(v)
14615                             }
14616
14617                             function l(n, r) {
14618                                 if (n && !f(n) && n.hasAttribute("ng-click")) {
14619                                     e.expect(n, "aria-label");
14620                                     var i = t.element('<md-button class="md-secondary md-icon-button">');
14621                                     u(n, i[0], ["ng-if", "ng-hide", "ng-show"]), n.setAttribute("tabindex", "-1"), i.append(n), n = i[0]
14622                                 }
14623                                 n && (!h(n) || !s.ngClick && d(n)) && t.element(n).removeClass("md-secondary"), a.addClass("md-with-secondary"), r.append(n)
14624                             }
14625
14626                             function u(e, n, i) {
14627                                 var o = r.prefixer(["ng-if", "ng-click", "ng-dblclick", "aria-label", "ng-disabled", "ui-sref", "href", "ng-href", "target", "ng-attr-ui-sref", "ui-sref-opts"]);
14628                                 i && (o = o.concat(r.prefixer(i))), t.forEach(o, function(t) {
14629                                     e.hasAttribute(t) && (n.setAttribute(t, e.getAttribute(t)), e.removeAttribute(t))
14630                                 })
14631                             }
14632
14633                             function d(e) {
14634                                 return -1 != o.indexOf(e.nodeName.toLowerCase())
14635                             }
14636
14637                             function f(e) {
14638                                 var t = e.nodeName.toUpperCase();
14639                                 return "MD-BUTTON" == t || "BUTTON" == t
14640                             }
14641
14642                             function h(e) {
14643                                 for (var t = e.attributes, n = 0; n < t.length; n++)
14644                                     if ("ngClick" === s.$normalize(t[n].name)) return !0;
14645                                 return !1
14646                             }
14647                             var p, m, g = a[0].querySelectorAll(".md-secondary"),
14648                                 v = a;
14649                             if (a[0].setAttribute("role", "listitem"), s.ngClick || s.ngDblclick || s.ngHref || s.href || s.uiSref || s.ngAttrUiSref) c("button");
14650                             else if (!a.hasClass("md-no-proxy")) {
14651                                 for (var b, y = 0; b = o[y]; ++y)
14652                                     if (m = a[0].querySelector(b)) {
14653                                         p = !0;
14654                                         break
14655                                     }
14656                                 p ? c("div") : a.addClass("md-no-proxy")
14657                             }
14658                             return function() {
14659                                     var e = t.element('<div class="md-secondary-container">');
14660                                     t.forEach(g, function(t) {
14661                                         l(t, e)
14662                                     }), v.append(e)
14663                                 }(),
14664                                 function() {
14665                                     for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
14666                                         if ((e = a.find(t)[0]) && !e.hasAttribute("aria-label")) {
14667                                             var i = a.find("p")[0];
14668                                             if (!i) return;
14669                                             e.setAttribute("aria-label", "Toggle " + i.textContent)
14670                                         }
14671                                 }(), p && "MD-MENU" === m.nodeName && function() {
14672                                     var e = t.element(m),
14673                                         n = "left";
14674                                     (e.parent().hasClass("md-secondary-container") || m.parentNode.firstElementChild !== m) && (n = "right"), e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
14675                                     var r = e.children().eq(0);
14676                                     h(r[0]) || r.attr("ng-click", "$mdMenu.open($event)"), r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
14677                                 }(),
14678                                 function(e, a, s, c) {
14679                                     function l(e) {
14680                                         var t = ["md-slider"];
14681                                         if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
14682                                         for (var n = e.path.indexOf(a.children()[0]), r = 0; r < n; r++)
14683                                             if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
14684                                     }
14685                                     a.addClass("_md");
14686                                     var u = [],
14687                                         d = a[0].firstElementChild,
14688                                         f = a.hasClass("_md-button-wrap") ? d.firstElementChild : d,
14689                                         p = f && h(f),
14690                                         m = a.hasClass("md-no-proxy");
14691                                     d && d.children && !p && !m && t.forEach(o, function(e) {
14692                                         t.forEach(d.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
14693                                             u.push(e)
14694                                         })
14695                                     }), (1 == u.length || p) && (a.addClass("md-clickable"), p || c.attachRipple(e, t.element(a[0].querySelector(".md-no-style")))), u.length && t.forEach(u, function(n) {
14696                                         n = t.element(n), e.mouseActive = !1, n.on("mousedown", function() {
14697                                             e.mouseActive = !0, i(function() {
14698                                                 e.mouseActive = !1
14699                                             }, 100)
14700                                         }).on("focus", function() {
14701                                             !1 === e.mouseActive && a.addClass("md-focused"), n.on("blur", function e() {
14702                                                 a.removeClass("md-focused"), n.off("blur", e)
14703                                             })
14704                                         })
14705                                     });
14706                                     var g = function(e) {
14707                                         "INPUT" == e.target.nodeName || "TEXTAREA" == e.target.nodeName || e.target.isContentEditable || (e.which || e.keyCode) == n.KEY_CODE.SPACE && f && (f.click(), e.preventDefault(), e.stopPropagation())
14708                                     };
14709                                     p || u.length || f && f.addEventListener("keypress", g), a.off("click"), a.off("keypress"), 1 == u.length && f && a.children().eq(0).on("click", function(e) {
14710                                         l(e) || !r.getClosest(e.target, "BUTTON") && f.contains(e.target) && t.forEach(u, function(n) {
14711                                             e.target === n || n.contains(e.target) || ("MD-MENU" === n.nodeName && (n = n.children[0]), t.element(n).triggerHandler("click"))
14712                                         })
14713                                     }), e.$on("$destroy", function() {
14714                                         f && f.removeEventListener("keypress", g)
14715                                     })
14716                                 }
14717                         }
14718                     }
14719                 }
14720
14721                 function r(e, t, n) {
14722                     this.attachRipple = function(e, t) {
14723                         var r = {};
14724                         n.attach(e, t, r)
14725                     }
14726                 }
14727                 r.$inject = ["$scope", "$element", "$mdListInkRipple"], e.$inject = ["$mdTheming"], n.$inject = ["$mdAria", "$mdConstant", "$mdUtil", "$timeout"], t.module("material.components.list", ["material.core"]).controller("MdListController", r).directive("mdList", e).directive("mdListItem", n)
14728             }(), t.module("material.components.menu", ["material.core", "material.components.backdrop"]), t.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
14729             function() {
14730                 function e(e, n) {
14731                     return {
14732                         restrict: "E",
14733                         transclude: !0,
14734                         controller: r,
14735                         controllerAs: "ctrl",
14736                         bindToController: !0,
14737                         scope: {
14738                             mdSelectedNavItem: "=?",
14739                             mdNoInkBar: "=?",
14740                             navBarAriaLabel: "@?"
14741                         },
14742                         template: '<div class="md-nav-bar"><nav role="navigation"><ul class="_md-nav-bar-list" ng-transclude role="listbox"tabindex="0"ng-focus="ctrl.onFocus()"ng-keydown="ctrl.onKeydown($event)"aria-label="{{ctrl.navBarAriaLabel}}"></ul></nav><md-nav-ink-bar ng-hide="ctrl.mdNoInkBar"></md-nav-ink-bar></div>',
14743                         link: function(r, i, o, a) {
14744                             n(i), a.navBarAriaLabel || e.expectAsync(i, "aria-label", t.noop)
14745                         }
14746                     }
14747                 }
14748
14749                 function r(e, t, n, r) {
14750                     this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
14751                     var i = this,
14752                         o = this._$scope.$watch(function() {
14753                             return i._navBarEl.querySelectorAll("._md-nav-button").length
14754                         }, function(e) {
14755                             e > 0 && (i._initTabs(), o())
14756                         })
14757                 }
14758
14759                 function i(e, n) {
14760                     return {
14761                         restrict: "E",
14762                         require: ["mdNavItem", "^mdNavBar"],
14763                         controller: o,
14764                         bindToController: !0,
14765                         controllerAs: "ctrl",
14766                         replace: !0,
14767                         transclude: !0,
14768                         template: function(e, t) {
14769                             var n, r, i, o = t.mdNavClick,
14770                                 a = t.mdNavHref,
14771                                 s = t.mdNavSref,
14772                                 c = t.srefOpts;
14773                             if ((o ? 1 : 0) + (a ? 1 : 0) + (s ? 1 : 0) > 1) throw Error("Must not specify more than one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
14774                             return o ? n = 'ng-click="ctrl.mdNavClick()"' : a ? n = 'ng-href="{{ctrl.mdNavHref}}"' : s && (n = 'ui-sref="{{ctrl.mdNavSref}}"'), r = c ? 'ui-sref-opts="{{ctrl.srefOpts}}" ' : "", n && (i = '<md-button class="_md-nav-button md-accent" ng-class="ctrl.getNgClassMap()" ng-blur="ctrl.setFocused(false)" tabindex="-1" ' + r + n + '><span ng-transclude class="_md-nav-button-text"></span></md-button>'), '<li class="md-nav-item" role="option" aria-selected="{{ctrl.isSelected()}}">' + (i || "") + "</li>"
14775                         },
14776                         scope: {
14777                             mdNavClick: "&?",
14778                             mdNavHref: "@?",
14779                             mdNavSref: "@?",
14780                             srefOpts: "=?",
14781                             name: "@"
14782                         },
14783                         link: function(r, i, o, a) {
14784                             n(function() {
14785                                 var n = a[0],
14786                                     o = a[1],
14787                                     s = t.element(i[0].querySelector("._md-nav-button"));
14788                                 n.name || (n.name = t.element(i[0].querySelector("._md-nav-button-text")).text().trim()), s.on("click", function() {
14789                                     o.mdSelectedNavItem = n.name, r.$apply()
14790                                 }), e.expectWithText(i, "aria-label")
14791                             })
14792                         }
14793                     }
14794                 }
14795
14796                 function o(e) {
14797                     this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this._selected = !1, this._focused = !1
14798                 }
14799                 r.$inject = ["$element", "$scope", "$timeout", "$mdConstant"], i.$inject = ["$mdAria", "$$rAF"], o.$inject = ["$element"], e.$inject = ["$mdAria", "$mdTheming"], t.module("material.components.navBar", ["material.core"]).controller("MdNavBarController", r).directive("mdNavBar", e).controller("MdNavItemController", o).directive("mdNavItem", i), r.prototype._initTabs = function() {
14800                     this._inkbar = t.element(this._navBarEl.querySelector("md-nav-ink-bar"));
14801                     var e = this;
14802                     this._$timeout(function() {
14803                         e._updateTabs(e.mdSelectedNavItem, n)
14804                     }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(t, n) {
14805                         e._$timeout(function() {
14806                             e._updateTabs(t, n)
14807                         })
14808                     })
14809                 }, r.prototype._updateTabs = function(e, t) {
14810                     var n = this,
14811                         r = this._getTabs();
14812                     if (r) {
14813                         var i = -1,
14814                             o = -1,
14815                             a = this._getTabByName(e),
14816                             s = this._getTabByName(t);
14817                         s && (s.setSelected(!1), i = r.indexOf(s)), a && (a.setSelected(!0), o = r.indexOf(a)), this._$timeout(function() {
14818                             n._updateInkBarStyles(a, o, i)
14819                         })
14820                     }
14821                 }, r.prototype._updateInkBarStyles = function(e, t, n) {
14822                     if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", t > n), this._inkbar.css({
14823                             display: t < 0 ? "none" : ""
14824                         }), e) {
14825                         var r = e.getButtonEl(),
14826                             i = r.offsetLeft;
14827                         this._inkbar.css({
14828                             left: i + "px",
14829                             width: r.offsetWidth + "px"
14830                         })
14831                     }
14832                 }, r.prototype._getTabs = function() {
14833                     var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
14834                         return t.element(e).controller("mdNavItem")
14835                     });
14836                     return e.indexOf(n) ? e : null
14837                 }, r.prototype._getTabByName = function(e) {
14838                     return this._findTab(function(t) {
14839                         return t.getName() == e
14840                     })
14841                 }, r.prototype._getSelectedTab = function() {
14842                     return this._findTab(function(e) {
14843                         return e.isSelected()
14844                     })
14845                 }, r.prototype.getFocusedTab = function() {
14846                     return this._findTab(function(e) {
14847                         return e.hasFocus()
14848                     })
14849                 }, r.prototype._findTab = function(e) {
14850                     for (var t = this._getTabs(), n = 0; n < t.length; n++)
14851                         if (e(t[n])) return t[n];
14852                     return null
14853                 }, r.prototype.onFocus = function() {
14854                     var e = this._getSelectedTab();
14855                     e && e.setFocused(!0)
14856                 }, r.prototype._moveFocus = function(e, t) {
14857                     e.setFocused(!1), t.setFocused(!0)
14858                 }, r.prototype.onKeydown = function(e) {
14859                     var t = this._$mdConstant.KEY_CODE,
14860                         n = this._getTabs(),
14861                         r = this.getFocusedTab();
14862                     if (r) {
14863                         var i = n.indexOf(r);
14864                         switch (e.keyCode) {
14865                             case t.UP_ARROW:
14866                             case t.LEFT_ARROW:
14867                                 i > 0 && this._moveFocus(r, n[i - 1]);
14868                                 break;
14869                             case t.DOWN_ARROW:
14870                             case t.RIGHT_ARROW:
14871                                 i < n.length - 1 && this._moveFocus(r, n[i + 1]);
14872                                 break;
14873                             case t.SPACE:
14874                             case t.ENTER:
14875                                 this._$timeout(function() {
14876                                     r.getButtonEl().click()
14877                                 })
14878                         }
14879                     }
14880                 }, o.prototype.getNgClassMap = function() {
14881                     return {
14882                         "md-active": this._selected,
14883                         "md-primary": this._selected,
14884                         "md-unselected": !this._selected,
14885                         "md-focused": this._focused
14886                     }
14887                 }, o.prototype.getName = function() {
14888                     return this.name
14889                 }, o.prototype.getButtonEl = function() {
14890                     return this._$element[0].querySelector("._md-nav-button")
14891                 }, o.prototype.setSelected = function(e) {
14892                     this._selected = e
14893                 }, o.prototype.isSelected = function() {
14894                     return this._selected
14895                 }, o.prototype.setFocused = function(e) {
14896                     this._focused = e, e && this.getButtonEl().focus()
14897                 }, o.prototype.hasFocus = function() {
14898                     return this._focused
14899                 }
14900             }(), t.module("material.components.progressCircular", ["material.core"]),
14901             function() {
14902                 function e(e, t) {
14903                     if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
14904                     if (p.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
14905                     delete t.id, delete t.position, delete t.animation, p[e] = t
14906                 }
14907
14908                 function r() {
14909                     return t.copy(p)
14910                 }
14911
14912                 function i() {
14913                     p = {}
14914                 }
14915
14916                 function o() {
14917                     return ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
14918                         return new a(p, e, t, n, r)
14919                     }]
14920                 }
14921
14922                 function a(e, n, r, i, o) {
14923                     this._defaultConfigOptions = {
14924                         bindToController: !0,
14925                         clickOutsideToClose: !1,
14926                         disableParentScroll: !1,
14927                         escapeToClose: !1,
14928                         focusOnOpen: !0,
14929                         fullscreen: !1,
14930                         hasBackdrop: !1,
14931                         propagateContainerEvents: !1,
14932                         transformTemplate: t.bind(this, this._wrapTemplate),
14933                         trapFocus: !1,
14934                         zIndex: f
14935                     }, this._config = {}, this._presets = e, this._$rootElement = n, this._$rootScope = r, this._$injector = i, this._$window = o, this._$mdUtil = this._$injector.get("$mdUtil"), this._trackedPanels = {}, this._groups = Object.create(null), this.animation = l.animation, this.xPosition = c.xPosition, this.yPosition = c.yPosition, this.interceptorTypes = s.interceptorTypes, this.closeReasons = s.closeReasons, this.absPosition = c.absPosition
14936                 }
14937
14938                 function s(e, t) {
14939                     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 = {
14940                         styles: "",
14941                         classes: ""
14942                     }
14943                 }
14944
14945                 function c(e) {
14946                     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
14947                 }
14948
14949                 function l(e) {
14950                     this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
14951                 }
14952
14953                 function u(e) {
14954                     var n = t.isString(e) ? document.querySelector(e) : e;
14955                     return t.element(n)
14956                 }
14957
14958                 function d(e, t) {
14959                     var n = getComputedStyle(e[0] || e)[t],
14960                         r = n.indexOf("("),
14961                         i = n.lastIndexOf(")"),
14962                         o = {
14963                             x: 0,
14964                             y: 0
14965                         };
14966                     if (r > -1 && i > -1) {
14967                         var a = n.substring(r + 1, i).split(", ").slice(-2);
14968                         o.x = parseInt(a[0]), o.y = parseInt(a[1])
14969                     }
14970                     return o
14971                 }
14972                 a.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], t.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
14973                     return {
14974                         definePreset: e,
14975                         getAllPresets: r,
14976                         clearPresets: i,
14977                         $get: o()
14978                     }
14979                 });
14980                 var f = 80,
14981                     h = t.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
14982                     p = {};
14983                 a.prototype.create = function(e, n) {
14984                     if ("string" == typeof e ? e = this._getPresetByName(e) : "object" != typeof e || !t.isUndefined(n) && n || (n = e, e = {}), e = e || {}, n = n || {}, t.isDefined(n.id) && this._trackedPanels[n.id]) {
14985                         var r = this._trackedPanels[n.id];
14986                         return t.extend(r.config, n), r
14987                     }
14988                     this._config = t.extend({
14989                         id: n.id || "panel_" + this._$mdUtil.nextUid(),
14990                         scope: this._$rootScope.$new(!0),
14991                         attachTo: this._$rootElement
14992                     }, this._defaultConfigOptions, n, e);
14993                     var i = new s(this._config, this._$injector);
14994                     return this._trackedPanels[n.id] = i, this._config.groupName && (t.isString(this._config.groupName) && (this._config.groupName = [this._config.groupName]), t.forEach(this._config.groupName, function(e) {
14995                         i.addToGroup(e)
14996                     })), this._config.scope.$on("$destroy", t.bind(i, i.detach)), i
14997                 }, a.prototype.open = function(e, t) {
14998                     var n = this.create(e, t);
14999                     return n.open().then(function() {
15000                         return n
15001                     })
15002                 }, a.prototype._getPresetByName = function(e) {
15003                     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.");
15004                     return this._presets[e]
15005                 }, a.prototype.newPanelPosition = function() {
15006                     return new c(this._$injector)
15007                 }, a.prototype.newPanelAnimation = function() {
15008                     return new l(this._$injector)
15009                 }, a.prototype.newPanelGroup = function(e, t) {
15010                     if (!this._groups[e]) {
15011                         var n = {
15012                             panels: [],
15013                             openPanels: [],
15014                             maxOpen: (t = t || {}).maxOpen > 0 ? t.maxOpen : 1 / 0
15015                         };
15016                         this._groups[e] = n
15017                     }
15018                     return this._groups[e]
15019                 }, a.prototype.setGroupMaxOpen = function(e, t) {
15020                     if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
15021                     this._groups[e].maxOpen = t
15022                 }, a.prototype._openCountExceedsMaxOpen = function(e) {
15023                     if (this._groups[e]) {
15024                         var t = this._groups[e];
15025                         return t.maxOpen > 0 && t.openPanels.length > t.maxOpen
15026                     }
15027                     return !1
15028                 }, a.prototype._closeFirstOpenedPanel = function(e) {
15029                     this._groups[e].openPanels[0].close()
15030                 }, a.prototype._wrapTemplate = function(e) {
15031                     return '<div class="md-panel-outer-wrapper">  <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
15032                 }, a.prototype._wrapContentElement = function(e) {
15033                     var n = t.element('<div class="md-panel-outer-wrapper">');
15034                     return e.addClass("md-panel _md-panel-offscreen"), n.append(e), n
15035                 }, s.interceptorTypes = {
15036                     CLOSE: "onClose"
15037                 }, s.prototype.open = function() {
15038                     var e = this;
15039                     return this._$q(function(n, r) {
15040                         var i = e._done(n, e),
15041                             o = e._simpleBind(e.show, e);
15042                         e.attach().then(o).then(function() {
15043                             e.config.groupName && t.forEach(e.config.groupName, function(t) {
15044                                 e._$mdPanel._openCountExceedsMaxOpen(t) && e._$mdPanel._closeFirstOpenedPanel(t)
15045                             })
15046                         }).then(i).catch(r)
15047                     })
15048                 }, s.prototype.close = function(e) {
15049                     var n = this;
15050                     return this._$q(function(r, i) {
15051                         n._callInterceptors(s.interceptorTypes.CLOSE).then(function() {
15052                             var o = n._done(r, n),
15053                                 a = n._simpleBind(n.detach, n),
15054                                 s = n.config.onCloseSuccess || t.noop;
15055                             s = t.bind(n, s, n, e), n.hide().then(a).then(o).then(s).catch(i)
15056                         }, i)
15057                     })
15058                 }, s.prototype.attach = function() {
15059                     if (this.isAttached && this.panelEl) return this._$q.when(this);
15060                     var e = this;
15061                     return this._$q(function(n, r) {
15062                         var i = e._done(n, e),
15063                             o = e.config.onDomAdded || t.noop;
15064                         e._$q.all([e._createBackdrop(), e._createPanel().then(function(t) {
15065                             return e.isAttached = !0, e._addEventListeners(), t
15066                         }).catch(r)]).then(o).then(i).catch(r)
15067                     })
15068                 }, s.prototype.detach = function() {
15069                     if (!this.isAttached) return this._$q.when(this);
15070                     var e = this,
15071                         n = e.config.onDomRemoved || t.noop,
15072                         r = function() {
15073                             return e._removeEventListeners(), e._topFocusTrap && e._topFocusTrap.parentNode && e._topFocusTrap.parentNode.removeChild(e._topFocusTrap), e._bottomFocusTrap && e._bottomFocusTrap.parentNode && e._bottomFocusTrap.parentNode.removeChild(e._bottomFocusTrap), e._restoreCache.classes && (e.panelEl[0].className = e._restoreCache.classes), e.panelEl[0].style.cssText = e._restoreCache.styles || "", e._compilerCleanup(), e.panelContainer.remove(), e.isAttached = !1, e._$q.when(e)
15074                         };
15075                     return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(t, i) {
15076                         var o = e._done(t, e);
15077                         e._$q.all([r(), !e._backdropRef || e._backdropRef.detach()]).then(n).then(o).catch(i)
15078                     })
15079                 }, s.prototype.destroy = function() {
15080                     var e = this;
15081                     this.config.groupName && t.forEach(this.config.groupName, function(t) {
15082                         e.removeFromGroup(t)
15083                     }), this.config.scope.$destroy(), this.config.locals = null, this._interceptors = null
15084                 }, s.prototype.show = function() {
15085                     if (!this.panelContainer) return this._$q(function(e, t) {
15086                         t("mdPanel: Panel does not exist yet. Call open() or attach().")
15087                     });
15088                     if (!this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
15089                     var e = this,
15090                         n = function() {
15091                             return e.panelContainer.removeClass("_md-panel-hidden"), e._animateOpen()
15092                         };
15093                     return this._$q(function(r, i) {
15094                         var o = e._done(r, e),
15095                             a = e.config.onOpenComplete || t.noop;
15096                         e._$q.all([e._backdropRef ? e._backdropRef.show() : e, n().then(function() {
15097                             e._focusOnOpen()
15098                         }, i)]).then(a).then(function() {
15099                             e.config.groupName && t.forEach(e.config.groupName, function(t) {
15100                                 e._$mdPanel._groups[t].openPanels.push(e)
15101                             })
15102                         }).then(o).catch(i)
15103                     })
15104                 }, s.prototype.hide = function() {
15105                     if (!this.panelContainer) return this._$q(function(e, t) {
15106                         t("mdPanel: Panel does not exist yet. Call open() or attach().")
15107                     });
15108                     if (this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
15109                     var e = this;
15110                     return this._$q(function(n, r) {
15111                         var i = e._done(n, e),
15112                             o = e.config.onRemoving || t.noop;
15113                         e._$q.all([e._backdropRef ? e._backdropRef.hide() : e, e._animateClose().then(o).then(function() {
15114                             e.panelContainer.addClass("_md-panel-hidden")
15115                         }).then(function() {
15116                             if (e.config.groupName) {
15117                                 var n;
15118                                 t.forEach(e.config.groupName, function(t) {
15119                                     t = e._$mdPanel._groups[t], (n = t.openPanels.indexOf(e)) > -1 && t.openPanels.splice(n, 1)
15120                                 })
15121                             }
15122                         }).then(function() {
15123                             var t = e.config.origin;
15124                             t && u(t).focus()
15125                         }).catch(r)]).then(i, r)
15126                     })
15127                 }, s.prototype.addClass = function(e, t) {
15128                     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().");
15129                     t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
15130                 }, s.prototype.removeClass = function(e, t) {
15131                     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().");
15132                     !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
15133                 }, s.prototype.toggleClass = function(e, t) {
15134                     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().");
15135                     t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
15136                 }, s.prototype._compile = function() {
15137                     var e = this;
15138                     return e._$mdCompiler.compile(e.config).then(function(n) {
15139                         var r = e.config;
15140                         if (r.contentElement) {
15141                             var i = n.element;
15142                             e._restoreCache.styles = i[0].style.cssText, e._restoreCache.classes = i[0].className, e.panelContainer = e._$mdPanel._wrapContentElement(i), e.panelEl = i
15143                         } else e.panelContainer = n.link(r.scope), e.panelEl = t.element(e.panelContainer[0].querySelector(".md-panel"));
15144                         return e._compilerCleanup = n.cleanup, u(e.config.attachTo).append(e.panelContainer), e
15145                     })
15146                 }, s.prototype._createPanel = function() {
15147                     var e = this;
15148                     return this._$q(function(t, n) {
15149                         e.config.locals || (e.config.locals = {}), e.config.locals.mdPanelRef = e, e._compile().then(function() {
15150                             e.config.disableParentScroll && (e._restoreScroll = e._$mdUtil.disableScrollAround(null, e.panelContainer, {
15151                                 disableScrollMask: !0
15152                             })), e.config.panelClass && e.panelEl.addClass(e.config.panelClass), e.config.propagateContainerEvents && e.panelContainer.css("pointer-events", "none"), e._$animate.pin && e._$animate.pin(e.panelContainer, u(e.config.attachTo)), e._configureTrapFocus(), e._addStyles().then(function() {
15153                                 t(e)
15154                             }, n)
15155                         }, n)
15156                     })
15157                 }, s.prototype._addStyles = function() {
15158                     var e = this;
15159                     return this._$q(function(t) {
15160                         e.panelContainer.css("z-index", e.config.zIndex), e.panelEl.css("z-index", e.config.zIndex + 1);
15161                         var n = function() {
15162                             e._setTheming(), e.panelEl.removeClass("_md-panel-offscreen"), e.panelContainer.addClass("_md-panel-hidden"), t(e)
15163                         };
15164                         if (e.config.fullscreen) return e.panelEl.addClass("_md-panel-fullscreen"), void n();
15165                         e.config.position ? e._$rootScope.$$postDigest(function() {
15166                             e._updatePosition(!0), e._setTheming(), t(e)
15167                         }) : n()
15168                     })
15169                 }, s.prototype._setTheming = function() {
15170                     this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
15171                 }, s.prototype.updatePosition = function(e) {
15172                     if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
15173                     this.config.position = e, this._updatePosition()
15174                 }, s.prototype._updatePosition = function(e) {
15175                     var t = this.config.position;
15176                     t && (t._setPanelPosition(this.panelEl), e && (this.panelEl.removeClass("_md-panel-offscreen"), this.panelContainer.addClass("_md-panel-hidden")), this.panelEl.css(c.absPosition.TOP, t.getTop()), this.panelEl.css(c.absPosition.BOTTOM, t.getBottom()), this.panelEl.css(c.absPosition.LEFT, t.getLeft()), this.panelEl.css(c.absPosition.RIGHT, t.getRight()))
15177                 }, s.prototype._focusOnOpen = function() {
15178                     if (this.config.focusOnOpen) {
15179                         var e = this;
15180                         this._$rootScope.$$postDigest(function() {
15181                             (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
15182                         })
15183                     }
15184                 }, s.prototype._createBackdrop = function() {
15185                     if (this.config.hasBackdrop) {
15186                         if (!this._backdropRef) {
15187                             var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
15188                                 open: "_md-opaque-enter",
15189                                 close: "_md-opaque-leave"
15190                             });
15191                             this.config.animation && e.duration(this.config.animation._rawDuration);
15192                             var t = {
15193                                 animation: e,
15194                                 attachTo: this.config.attachTo,
15195                                 focusOnOpen: !1,
15196                                 panelClass: "_md-panel-backdrop",
15197                                 zIndex: this.config.zIndex - 1
15198                             };
15199                             this._backdropRef = this._$mdPanel.create(t)
15200                         }
15201                         if (!this._backdropRef.isAttached) return this._backdropRef.attach()
15202                     }
15203                 }, s.prototype._addEventListeners = function() {
15204                     this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
15205                 }, s.prototype._removeEventListeners = function() {
15206                     this._removeListeners && this._removeListeners.forEach(function(e) {
15207                         e()
15208                     }), this._removeListeners = []
15209                 }, s.prototype._configureEscapeToClose = function() {
15210                     if (this.config.escapeToClose) {
15211                         var e = u(this.config.attachTo),
15212                             t = this,
15213                             n = function(e) {
15214                                 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(s.closeReasons.ESCAPE))
15215                             };
15216                         this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
15217                             t.panelContainer.off("keydown", n), e.off("keydown", n)
15218                         })
15219                     }
15220                 }, s.prototype._configureClickOutsideToClose = function() {
15221                     if (this.config.clickOutsideToClose) {
15222                         var e, n = this.config.propagateContainerEvents ? t.element(document.body) : this.panelContainer,
15223                             r = function(t) {
15224                                 e = t.target
15225                             },
15226                             i = this,
15227                             o = function(t) {
15228                                 i.config.propagateContainerEvents ? e === i.panelEl[0] || i.panelEl[0].contains(e) || i.close() : e === n[0] && t.target === n[0] && (t.stopPropagation(), t.preventDefault(), i.close(s.closeReasons.CLICK_OUTSIDE))
15229                             };
15230                         n.on("mousedown", r), n.on("mouseup", o), this._removeListeners.push(function() {
15231                             n.off("mousedown", r), n.off("mouseup", o)
15232                         })
15233                     }
15234                 }, s.prototype._configureScrollListener = function() {
15235                     if (!this.config.disableParentScroll) {
15236                         var e = t.bind(this, this._updatePosition),
15237                             n = this._$$rAF.throttle(e),
15238                             r = this,
15239                             i = function() {
15240                                 n()
15241                             };
15242                         this._$window.addEventListener("scroll", i, !0), this._removeListeners.push(function() {
15243                             r._$window.removeEventListener("scroll", i, !0)
15244                         })
15245                     }
15246                 }, s.prototype._configureTrapFocus = function() {
15247                     if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
15248                         var e = this.panelEl;
15249                         this._topFocusTrap = h.clone()[0], this._bottomFocusTrap = h.clone()[0];
15250                         var t = function() {
15251                             e.focus()
15252                         };
15253                         this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
15254                             this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
15255                         }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
15256                     }
15257                 }, s.prototype.updateAnimation = function(e) {
15258                     this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
15259                 }, s.prototype._animateOpen = function() {
15260                     this.panelContainer.addClass("md-panel-is-showing");
15261                     var e = this.config.animation;
15262                     if (!e) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
15263                     var t = this;
15264                     return this._$q(function(n) {
15265                         var r = t._done(n, t);
15266                         e.animateOpen(t.panelEl).then(r, function() {
15267                             t._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), r()
15268                         })
15269                     })
15270                 }, s.prototype._animateClose = function() {
15271                     var e = this.config.animation;
15272                     if (!e) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
15273                     var t = this;
15274                     return this._$q(function(n) {
15275                         var r = function() {
15276                             t.panelContainer.removeClass("md-panel-is-showing"), n(t)
15277                         };
15278                         e.animateClose(t.panelEl).then(r, function() {
15279                             t._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), r()
15280                         })
15281                     })
15282                 }, s.prototype.registerInterceptor = function(e, n) {
15283                     var r = null;
15284                     if (t.isString(e) ? t.isFunction(n) || (r = "Interceptor callback must be a function, instead got " + typeof n) : r = "Interceptor type must be a string, instead got " + typeof e, r) throw new Error("MdPanel: " + r);
15285                     var i = this._interceptors[e] = this._interceptors[e] || [];
15286                     return -1 === i.indexOf(n) && i.push(n), this
15287                 }, s.prototype.removeInterceptor = function(e, t) {
15288                     var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
15289                     return n > -1 && this._interceptors[e].splice(n, 1), this
15290                 }, s.prototype.removeAllInterceptors = function(e) {
15291                     return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
15292                 }, s.prototype._callInterceptors = function(e) {
15293                     var n = this,
15294                         r = n._$q;
15295                     return (n._interceptors && n._interceptors[e] || []).reduceRight(function(e, i) {
15296                         var o = i && t.isFunction(i.then) ? i : null;
15297                         return e.then(function() {
15298                             if (!o) try {
15299                                 o = i(n)
15300                             } catch (e) {
15301                                 o = r.reject(e)
15302                             }
15303                             return o
15304                         })
15305                     }, r.resolve(n))
15306                 }, s.prototype._simpleBind = function(e, t) {
15307                     return function(n) {
15308                         return e.apply(t, n)
15309                     }
15310                 }, s.prototype._done = function(e, t) {
15311                     return function() {
15312                         e(t)
15313                     }
15314                 }, s.prototype.addToGroup = function(e) {
15315                     this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
15316                     var t = this._$mdPanel._groups[e];
15317                     t.panels.indexOf(this) < 0 && t.panels.push(this)
15318                 }, s.prototype.removeFromGroup = function(e) {
15319                     if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
15320                     var t = this._$mdPanel._groups[e],
15321                         n = t.panels.indexOf(this);
15322                     n > -1 && t.panels.splice(n, 1)
15323                 }, s.closeReasons = {
15324                     CLICK_OUTSIDE: "clickOutsideToClose",
15325                     ESCAPE: "escapeToClose"
15326                 }, c.xPosition = {
15327                     CENTER: "center",
15328                     ALIGN_START: "align-start",
15329                     ALIGN_END: "align-end",
15330                     OFFSET_START: "offset-start",
15331                     OFFSET_END: "offset-end"
15332                 }, c.yPosition = {
15333                     CENTER: "center",
15334                     ALIGN_TOPS: "align-tops",
15335                     ALIGN_BOTTOMS: "align-bottoms",
15336                     ABOVE: "above",
15337                     BELOW: "below"
15338                 }, c.absPosition = {
15339                     TOP: "top",
15340                     RIGHT: "right",
15341                     BOTTOM: "bottom",
15342                     LEFT: "left"
15343                 }, c.viewportMargin = 8, c.prototype.absolute = function() {
15344                     return this._absolute = !0, this
15345                 }, c.prototype._setPosition = function(e, n) {
15346                     if (e === c.absPosition.RIGHT || e === c.absPosition.LEFT) this._left = this._right = "";
15347                     else {
15348                         if (e !== c.absPosition.BOTTOM && e !== c.absPosition.TOP) {
15349                             var r = Object.keys(c.absPosition).join().toLowerCase();
15350                             throw new Error("mdPanel: Position must be one of " + r + ".")
15351                         }
15352                         this._top = this._bottom = ""
15353                     }
15354                     return this["_" + e] = t.isString(n) ? n : "0", this
15355                 }, c.prototype.top = function(e) {
15356                     return this._setPosition(c.absPosition.TOP, e)
15357                 }, c.prototype.bottom = function(e) {
15358                     return this._setPosition(c.absPosition.BOTTOM, e)
15359                 }, c.prototype.start = function(e) {
15360                     var t = this._isRTL ? c.absPosition.RIGHT : c.absPosition.LEFT;
15361                     return this._setPosition(t, e)
15362                 }, c.prototype.end = function(e) {
15363                     var t = this._isRTL ? c.absPosition.LEFT : c.absPosition.RIGHT;
15364                     return this._setPosition(t, e)
15365                 }, c.prototype.left = function(e) {
15366                     return this._setPosition(c.absPosition.LEFT, e)
15367                 }, c.prototype.right = function(e) {
15368                     return this._setPosition(c.absPosition.RIGHT, e)
15369                 }, c.prototype.centerHorizontally = function() {
15370                     return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
15371                 }, c.prototype.centerVertically = function() {
15372                     return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
15373                 }, c.prototype.center = function() {
15374                     return this.centerHorizontally().centerVertically()
15375                 }, c.prototype.relativeTo = function(e) {
15376                     return this._absolute = !1, this._relativeToEl = u(e), this
15377                 }, c.prototype.addPanelPosition = function(e, t) {
15378                     if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
15379                     return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
15380                         x: e,
15381                         y: t
15382                     }), this
15383                 }, c.prototype._validateYPosition = function(e) {
15384                     if (null != e) {
15385                         for (var t, n = Object.keys(c.yPosition), r = [], i = 0; t = n[i]; i++) {
15386                             var o = c.yPosition[t];
15387                             if (r.push(o), o === e) return
15388                         }
15389                         throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
15390                     }
15391                 }, c.prototype._validateXPosition = function(e) {
15392                     if (null != e) {
15393                         for (var t, n = Object.keys(c.xPosition), r = [], i = 0; t = n[i]; i++) {
15394                             var o = c.xPosition[t];
15395                             if (r.push(o), o === e) return
15396                         }
15397                         throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
15398                     }
15399                 }, c.prototype.withOffsetX = function(e) {
15400                     return this._translateX.push(e), this
15401                 }, c.prototype.withOffsetY = function(e) {
15402                     return this._translateY.push(e), this
15403                 }, c.prototype.getTop = function() {
15404                     return this._top
15405                 }, c.prototype.getBottom = function() {
15406                     return this._bottom
15407                 }, c.prototype.getLeft = function() {
15408                     return this._left
15409                 }, c.prototype.getRight = function() {
15410                     return this._right
15411                 }, c.prototype.getTransform = function() {
15412                     return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
15413                 }, c.prototype._setTransform = function(e) {
15414                     return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
15415                 }, c.prototype._isOnscreen = function(e) {
15416                     var t = parseInt(this.getLeft()),
15417                         n = parseInt(this.getTop());
15418                     if (this._translateX.length || this._translateY.length) {
15419                         var r = d(e, this._$mdConstant.CSS.TRANSFORM);
15420                         t += r.x, n += r.y
15421                     }
15422                     var i = t + e[0].offsetWidth,
15423                         o = n + e[0].offsetHeight;
15424                     return t >= 0 && n >= 0 && o <= this._$window.innerHeight && i <= this._$window.innerWidth
15425                 }, c.prototype.getActualPosition = function() {
15426                     return this._actualPosition
15427                 }, c.prototype._reduceTranslateValues = function(e, n) {
15428                     return n.map(function(n) {
15429                         var r = t.isFunction(n) ? n(this) : n;
15430                         return e + "(" + r + ")"
15431                     }, this).join(" ")
15432                 }, c.prototype._setPanelPosition = function(e) {
15433                     if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
15434                     else {
15435                         if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
15436                         for (var t = 0; t < this._positions.length; t++)
15437                             if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
15438                         this._constrainToViewport(e)
15439                     }
15440                 }, c.prototype._constrainToViewport = function(e) {
15441                     var t = c.viewportMargin,
15442                         n = this._top,
15443                         r = this._left;
15444                     if (this.getTop()) {
15445                         var i = parseInt(this.getTop()),
15446                             o = e[0].offsetHeight + i,
15447                             a = this._$window.innerHeight;
15448                         i < t ? this._top = t + "px" : o > a && (this._top = i - (o - a + t) + "px")
15449                     }
15450                     if (this.getLeft()) {
15451                         var s = parseInt(this.getLeft()),
15452                             l = e[0].offsetWidth + s,
15453                             u = this._$window.innerWidth;
15454                         s < t ? this._left = t + "px" : l > u && (this._left = s - (l - u + t) + "px")
15455                     }
15456                     e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
15457                 }, c.prototype._reverseXPosition = function(e) {
15458                     if (e !== c.xPosition.CENTER) {
15459                         return e.indexOf("start") > -1 ? e.replace("start", "end") : e.replace("end", "start")
15460                     }
15461                 }, c.prototype._bidi = function(e) {
15462                     return this._isRTL ? this._reverseXPosition(e) : e
15463                 }, c.prototype._calculatePanelPosition = function(e, t) {
15464                     var n = e[0].getBoundingClientRect(),
15465                         r = n.width,
15466                         i = n.height,
15467                         o = this._relativeToEl[0].getBoundingClientRect(),
15468                         a = o.left,
15469                         s = o.right,
15470                         l = o.width;
15471                     switch (this._bidi(t.x)) {
15472                         case c.xPosition.OFFSET_START:
15473                             this._left = a - r + "px";
15474                             break;
15475                         case c.xPosition.ALIGN_END:
15476                             this._left = s - r + "px";
15477                             break;
15478                         case c.xPosition.CENTER:
15479                             var u = a + .5 * l - .5 * r;
15480                             this._left = u + "px";
15481                             break;
15482                         case c.xPosition.ALIGN_START:
15483                             this._left = a + "px";
15484                             break;
15485                         case c.xPosition.OFFSET_END:
15486                             this._left = s + "px"
15487                     }
15488                     var d = o.top,
15489                         f = o.bottom,
15490                         h = o.height;
15491                     switch (t.y) {
15492                         case c.yPosition.ABOVE:
15493                             this._top = d - i + "px";
15494                             break;
15495                         case c.yPosition.ALIGN_BOTTOMS:
15496                             this._top = f - i + "px";
15497                             break;
15498                         case c.yPosition.CENTER:
15499                             var p = d + .5 * h - .5 * i;
15500                             this._top = p + "px";
15501                             break;
15502                         case c.yPosition.ALIGN_TOPS:
15503                             this._top = d + "px";
15504                             break;
15505                         case c.yPosition.BELOW:
15506                             this._top = f + "px"
15507                     }
15508                 }, l.animation = {
15509                     SLIDE: "md-panel-animate-slide",
15510                     SCALE: "md-panel-animate-scale",
15511                     FADE: "md-panel-animate-fade"
15512                 }, l.prototype.openFrom = function(e) {
15513                     return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
15514                 }, l.prototype.closeTo = function(e) {
15515                     return this._closeTo = this._getPanelAnimationTarget(e), this
15516                 }, l.prototype.duration = function(e) {
15517                     function n(e) {
15518                         if (t.isNumber(e)) return e / 1e3
15519                     }
15520                     return e && (t.isNumber(e) ? this._openDuration = this._closeDuration = n(e) : t.isObject(e) && (this._openDuration = n(e.open), this._closeDuration = n(e.close))), this._rawDuration = e, this
15521                 }, l.prototype._getPanelAnimationTarget = function(e) {
15522                     return t.isDefined(e.top) || t.isDefined(e.left) ? {
15523                         element: n,
15524                         bounds: {
15525                             top: e.top || 0,
15526                             left: e.left || 0
15527                         }
15528                     } : this._getBoundingClientRect(u(e))
15529                 }, l.prototype.withAnimation = function(e) {
15530                     return this._animationClass = e, this
15531                 }, l.prototype.animateOpen = function(e) {
15532                     var n = this._$mdUtil.dom.animator;
15533                     this._fixBounds(e);
15534                     var r = {},
15535                         i = e[0].style.transform || "",
15536                         o = n.toTransformCss(i),
15537                         a = n.toTransformCss(i);
15538                     switch (this._animationClass) {
15539                         case l.animation.SLIDE:
15540                             e.css("opacity", "1"), r = {
15541                                 transitionInClass: "_md-panel-animate-enter"
15542                             };
15543                             var s = n.calculateSlideToOrigin(e, this._openFrom) || "";
15544                             o = n.toTransformCss(s + " " + i);
15545                             break;
15546                         case l.animation.SCALE:
15547                             r = {
15548                                 transitionInClass: "_md-panel-animate-enter"
15549                             };
15550                             var c = n.calculateZoomToOrigin(e, this._openFrom) || "";
15551                             o = n.toTransformCss(c + " " + i);
15552                             break;
15553                         case l.animation.FADE:
15554                             r = {
15555                                 transitionInClass: "_md-panel-animate-enter"
15556                             };
15557                             break;
15558                         default:
15559                             r = t.isString(this._animationClass) ? {
15560                                 transitionInClass: this._animationClass
15561                             } : {
15562                                 transitionInClass: this._animationClass.open,
15563                                 transitionOutClass: this._animationClass.close
15564                             }
15565                     }
15566                     return r.duration = this._openDuration, n.translate3d(e, o, a, r)
15567                 }, l.prototype.animateClose = function(e) {
15568                     var n = this._$mdUtil.dom.animator,
15569                         r = {},
15570                         i = e[0].style.transform || "",
15571                         o = n.toTransformCss(i),
15572                         a = n.toTransformCss(i);
15573                     switch (this._animationClass) {
15574                         case l.animation.SLIDE:
15575                             e.css("opacity", "1"), r = {
15576                                 transitionInClass: "_md-panel-animate-leave"
15577                             };
15578                             var s = n.calculateSlideToOrigin(e, this._closeTo) || "";
15579                             a = n.toTransformCss(s + " " + i);
15580                             break;
15581                         case l.animation.SCALE:
15582                             r = {
15583                                 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
15584                             };
15585                             var c = n.calculateZoomToOrigin(e, this._closeTo) || "";
15586                             a = n.toTransformCss(c + " " + i);
15587                             break;
15588                         case l.animation.FADE:
15589                             r = {
15590                                 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
15591                             };
15592                             break;
15593                         default:
15594                             r = t.isString(this._animationClass) ? {
15595                                 transitionOutClass: this._animationClass
15596                             } : {
15597                                 transitionInClass: this._animationClass.close,
15598                                 transitionOutClass: this._animationClass.open
15599                             }
15600                     }
15601                     return r.duration = this._closeDuration, n.translate3d(e, o, a, r)
15602                 }, l.prototype._fixBounds = function(e) {
15603                     var t = e[0].offsetWidth,
15604                         n = e[0].offsetHeight;
15605                     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)
15606                 }, l.prototype._getBoundingClientRect = function(e) {
15607                     if (e instanceof t.element) return {
15608                         element: e,
15609                         bounds: e[0].getBoundingClientRect()
15610                     }
15611                 }
15612             }(),
15613             function() {
15614                 function e(e, n, r) {
15615                     function i(r, i, d) {
15616                         function f() {
15617                             var e = (d.mdMode || "").trim();
15618                             if (e) switch (e) {
15619                                 case a:
15620                                 case s:
15621                                 case c:
15622                                 case l:
15623                                     break;
15624                                 default:
15625                                     e = s
15626                             }
15627                             return e
15628                         }
15629
15630                         function h(e, r) {
15631                             if (!m && f()) {
15632                                 var i = n.supplant("translateX({0}%) scale({1},1)", [(r - 100) / 2, r / 100]),
15633                                     o = g({
15634                                         transform: i
15635                                     });
15636                                 t.element(e).css(o)
15637                             }
15638                         }
15639                         e(i);
15640                         var p, m = d.hasOwnProperty("disabled"),
15641                             g = n.dom.animator.toCss,
15642                             v = t.element(i[0].querySelector(".md-bar1")),
15643                             b = t.element(i[0].querySelector(".md-bar2")),
15644                             y = t.element(i[0].querySelector(".md-container"));
15645                         i.attr("md-mode", f()).toggleClass(u, m),
15646                             function() {
15647                                 if (t.isUndefined(d.mdMode)) {
15648                                     var e = t.isDefined(d.value) ? a : s;
15649                                     i.attr("md-mode", e), d.mdMode = e
15650                                 }
15651                             }(), d.$observe("value", function(e) {
15652                                 var t = o(e);
15653                                 i.attr("aria-valuenow", t), f() != l && h(b, t)
15654                             }), d.$observe("mdBufferValue", function(e) {
15655                                 h(v, o(e))
15656                             }), d.$observe("disabled", function(e) {
15657                                 m = !0 === e || !1 === e ? !!e : t.isDefined(e), i.toggleClass(u, m), y.toggleClass(p, !m)
15658                             }), d.$observe("mdMode", function(e) {
15659                                 switch (p && y.removeClass(p), e) {
15660                                     case l:
15661                                     case c:
15662                                     case a:
15663                                     case s:
15664                                         y.addClass(p = "md-mode-" + e);
15665                                         break;
15666                                     default:
15667                                         y.addClass(p = "md-mode-" + s)
15668                                 }
15669                             })
15670                     }
15671
15672                     function o(e) {
15673                         return Math.max(0, Math.min(e || 0, 100))
15674                     }
15675                     var a = "determinate",
15676                         s = "indeterminate",
15677                         c = "buffer",
15678                         l = "query",
15679                         u = "_md-progress-linear-disabled";
15680                     return {
15681                         restrict: "E",
15682                         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>',
15683                         compile: function(e, t, n) {
15684                             return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), i
15685                         }
15686                     }
15687                 }
15688                 e.$inject = ["$mdTheming", "$mdUtil", "$log"], t.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
15689             }(),
15690             function() {
15691                 function e(e, n, r, i) {
15692                     function o(e) {
15693                         this._radioButtonRenderFns = [], this.$element = e
15694                     }
15695
15696                     function a(n, r) {
15697                         var i = e.iterator(n[0].querySelectorAll("md-radio-button"), !0);
15698                         if (i.count()) {
15699                             var o = n[0].querySelector("md-radio-button.md-checked"),
15700                                 a = i[r < 0 ? "previous" : "next"](o, function(e) {
15701                                     return !t.element(e).attr("disabled")
15702                                 }) || i.first();
15703                             t.element(a).triggerHandler("click")
15704                         }
15705                     }
15706                     return o.prototype = {
15707                         init: function(e) {
15708                             this._ngModelCtrl = e, this._ngModelCtrl.$render = t.bind(this, this.render)
15709                         },
15710                         add: function(e) {
15711                             this._radioButtonRenderFns.push(e)
15712                         },
15713                         remove: function(e) {
15714                             var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
15715                         },
15716                         render: function() {
15717                             this._radioButtonRenderFns.forEach(function(e) {
15718                                 e()
15719                             })
15720                         },
15721                         setViewValue: function(e, t) {
15722                             this._ngModelCtrl.$setViewValue(e, t), this.render()
15723                         },
15724                         getViewValue: function() {
15725                             return this._ngModelCtrl.$viewValue
15726                         },
15727                         selectNext: function() {
15728                             return a(this.$element, 1)
15729                         },
15730                         selectPrevious: function() {
15731                             return a(this.$element, -1)
15732                         },
15733                         setActiveDescendant: function(e) {
15734                             this.$element.attr("aria-activedescendant", e)
15735                         },
15736                         isDisabled: function() {
15737                             return this.$element[0].hasAttribute("disabled")
15738                         }
15739                     }, {
15740                         restrict: "E",
15741                         controller: ["$element", o],
15742                         require: ["mdRadioGroup", "?ngModel"],
15743                         link: {
15744                             pre: function(o, a, s, c) {
15745                                 function l() {
15746                                     a.hasClass("md-focused") || a.addClass("md-focused")
15747                                 }
15748                                 a.addClass("_md"), r(a);
15749                                 var u = c[0],
15750                                     d = c[1] || e.fakeNgModel();
15751                                 u.init(d), o.mouseActive = !1, a.attr({
15752                                     role: "radiogroup",
15753                                     tabIndex: a.attr("tabindex") || "0"
15754                                 }).on("keydown", function(r) {
15755                                     var i = r.which || r.keyCode;
15756                                     if (i == n.KEY_CODE.ENTER || r.currentTarget == r.target) switch (i) {
15757                                         case n.KEY_CODE.LEFT_ARROW:
15758                                         case n.KEY_CODE.UP_ARROW:
15759                                             r.preventDefault(), u.selectPrevious(), l();
15760                                             break;
15761                                         case n.KEY_CODE.RIGHT_ARROW:
15762                                         case n.KEY_CODE.DOWN_ARROW:
15763                                             r.preventDefault(), u.selectNext(), l();
15764                                             break;
15765                                         case n.KEY_CODE.ENTER:
15766                                             var o = t.element(e.getClosest(a[0], "form"));
15767                                             o.length > 0 && o.triggerHandler("submit")
15768                                     }
15769                                 }).on("mousedown", function(e) {
15770                                     o.mouseActive = !0, i(function() {
15771                                         o.mouseActive = !1
15772                                     }, 100)
15773                                 }).on("focus", function() {
15774                                     !1 === o.mouseActive && u.$element.addClass("md-focused")
15775                                 }).on("blur", function() {
15776                                     u.$element.removeClass("md-focused")
15777                                 })
15778                             }
15779                         }
15780                     }
15781                 }
15782
15783                 function n(e, t, n) {
15784                     var r = "md-checked";
15785                     return {
15786                         restrict: "E",
15787                         require: "^mdRadioGroup",
15788                         transclude: !0,
15789                         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>',
15790                         link: function(i, o, a, s) {
15791                             function c() {
15792                                 if (!s) throw "RadioButton: No RadioGroupController could be found.";
15793                                 s.add(u), a.$observe("value", u), o.on("click", l).on("$destroy", function() {
15794                                     s.remove(u)
15795                                 })
15796                             }
15797
15798                             function l(e) {
15799                                 o[0].hasAttribute("disabled") || s.isDisabled() || i.$apply(function() {
15800                                     s.setViewValue(a.value, e && e.type)
15801                                 })
15802                             }
15803
15804                             function u() {
15805                                 var e = s.getViewValue() == a.value;
15806                                 e !== d && ("md-radio-group" !== o[0].parentNode.nodeName.toLowerCase() && o.parent().toggleClass(r, e), e && s.setActiveDescendant(o.attr("id")), d = e, o.attr("aria-checked", e).toggleClass(r, e))
15807                             }
15808                             var d;
15809                             n(o),
15810                                 function(n, r) {
15811                                     n.attr({
15812                                         id: a.id || "radio_" + t.nextUid(),
15813                                         role: "radio",
15814                                         "aria-checked": "false"
15815                                     }), e.expectWithText(n, "aria-label")
15816                                 }(o), a.ngValue ? t.nextTick(c, !1) : c()
15817                         }
15818                     }
15819                 }
15820                 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], n.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], t.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", n)
15821             }(),
15822             function() {
15823                 function e(e, t) {
15824                     return ["$mdUtil", "$window", function(n, r) {
15825                         return {
15826                             restrict: "A",
15827                             multiElement: !0,
15828                             link: function(i, o, a) {
15829                                 var s = i.$on("$md-resize-enable", function() {
15830                                     s();
15831                                     var c = o[0],
15832                                         l = c.nodeType === r.Node.ELEMENT_NODE ? r.getComputedStyle(c) : {};
15833                                     i.$watch(a[e], function(e) {
15834                                         if (!!e === t) {
15835                                             n.nextTick(function() {
15836                                                 i.$broadcast("$md-resize")
15837                                             });
15838                                             var r = {
15839                                                 cachedTransitionStyles: l
15840                                             };
15841                                             n.dom.animator.waitTransitionEnd(o, r).then(function() {
15842                                                 i.$broadcast("$md-resize")
15843                                             })
15844                                         }
15845                                     })
15846                                 })
15847                             }
15848                         }
15849                     }]
15850                 }
15851                 t.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
15852             }(),
15853             function() {
15854                 function e(e, r, i, o) {
15855                     function a(e, n) {
15856                         var o = function() {
15857                                 return !1
15858                             },
15859                             a = function() {
15860                                 return i.when(r.supplant(c, [n || ""]))
15861                             };
15862                         return t.extend({
15863                             isLockedOpen: o,
15864                             isOpen: o,
15865                             toggle: a,
15866                             open: a,
15867                             close: a,
15868                             onClose: t.noop,
15869                             then: function(e) {
15870                                 return s(n).then(e || t.noop)
15871                             }
15872                         }, e)
15873                     }
15874
15875                     function s(t) {
15876                         return e.when(t).catch(o.error)
15877                     }
15878                     var c = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
15879                         l = {
15880                             find: function(t, i) {
15881                                 var a = e.get(t);
15882                                 return a || i ? a : (o.error(r.supplant(c, [t || ""])), n)
15883                             },
15884                             waitFor: s
15885                         };
15886                     return function(e, n) {
15887                         if (t.isUndefined(e)) return l;
15888                         var r = !0 === n,
15889                             i = l.find(e, r);
15890                         return !i && r ? l.waitFor(e) : !i && t.isUndefined(n) ? a(l, e) : i
15891                     }
15892                 }
15893
15894                 function r(e, r, i, o, a, s, c, l, u, d, f, h, p) {
15895                     function m(c, m, g, v) {
15896                         function b(e, t) {
15897                             var n = m[0],
15898                                 r = e[0].scrollTop;
15899                             if (t && r) {
15900                                 x = {
15901                                     top: n.style.top,
15902                                     bottom: n.style.bottom,
15903                                     height: n.style.height
15904                                 };
15905                                 var i = {
15906                                     top: r + "px",
15907                                     bottom: "auto",
15908                                     height: e[0].clientHeight + "px"
15909                                 };
15910                                 m.css(i), E.css(i)
15911                             }
15912                             if (!t && x) return function() {
15913                                 n.style.top = x.top, n.style.bottom = x.bottom, n.style.height = x.height, E[0].style.top = null, E[0].style.bottom = null, E[0].style.height = null, x = null
15914                             }
15915                         }
15916
15917                         function y(e) {
15918                             e && !w ? (w = k.css("overflow"), k.css("overflow", "hidden")) : t.isDefined(w) && (k.css("overflow", w), w = n)
15919                         }
15920
15921                         function $(e) {
15922                             return e.keyCode === i.KEY_CODE.ESCAPE ? _(e) : d.when(!0)
15923                         }
15924
15925                         function _(e) {
15926                             return e.preventDefault(), v.close()
15927                         }
15928                         var w, E, C, x, k = null,
15929                             T = null,
15930                             M = d.when(!0),
15931                             S = l(g.mdIsLockedOpen),
15932                             A = t.element(h);
15933                         g.mdDisableScrollTarget && ((k = f[0].querySelector(g.mdDisableScrollTarget)) ? k = t.element(k) : u.warn(r.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.', {
15934                             selector: g.mdDisableScrollTarget
15935                         }))), k || (k = m.parent()), g.hasOwnProperty("mdDisableBackdrop") || (E = r.createBackdrop(c, "md-sidenav-backdrop md-opaque ng-enter")), m.addClass("_md"), o(m), E && o.inherit(E, m), m.on("$destroy", function() {
15936                             E && E.remove(), v.destroy()
15937                         }), c.$on("$destroy", function() {
15938                             E && E.remove()
15939                         }), c.$watch(function() {
15940                             return S(c.$parent, {
15941                                 $media: function(t) {
15942                                     return u.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), e(t)
15943                                 },
15944                                 $mdMedia: e
15945                             })
15946                         }, function(e, t) {
15947                             c.isLockedOpen = e, e === t ? m.toggleClass("md-locked-open", !!e) : s[e ? "addClass" : "removeClass"](m, "md-locked-open"), E && E.toggleClass("md-locked-open", !!e)
15948                         }), c.$watch("isOpen", function(e) {
15949                             var t = r.findFocusTarget(m) || r.findFocusTarget(m, "[md-sidenav-focus]") || m,
15950                                 n = m.parent();
15951                             n[e ? "on" : "off"]("keydown", $), E && E[e ? "on" : "off"]("click", _);
15952                             var i = b(n, e);
15953                             return e && (T = f[0].activeElement, C = a.getLastInteractionType()), y(e), M = d.all([e && E ? s.enter(E, n) : E ? s.leave(E) : d.when(!0), s[e ? "removeClass" : "addClass"](m, "md-closed")]).then(function() {
15954                                 c.isOpen && (p(function() {
15955                                     A.triggerHandler("resize")
15956                                 }), t && t.focus()), i && i()
15957                             })
15958                         }), v.$toggleOpen = function(e) {
15959                             return c.isOpen == e ? d.when(!0) : (c.isOpen && v.onCloseCb && v.onCloseCb(), d(function(t) {
15960                                 c.isOpen = e, r.nextTick(function() {
15961                                     M.then(function(e) {
15962                                         !c.isOpen && T && "keyboard" === C && (T.focus(), T = null), t(e)
15963                                     })
15964                                 })
15965                             }))
15966                         }
15967                     }
15968                     return {
15969                         restrict: "E",
15970                         scope: {
15971                             isOpen: "=?mdIsOpen"
15972                         },
15973                         controller: "$mdSidenavController",
15974                         compile: function(e) {
15975                             return e.addClass("md-closed").attr("tabIndex", "-1"), m
15976                         }
15977                     }
15978                 }
15979
15980                 function i(e, t, n, r, i) {
15981                     var o = this;
15982                     o.isOpen = function() {
15983                         return !!e.isOpen
15984                     }, o.isLockedOpen = function() {
15985                         return !!e.isLockedOpen
15986                     }, o.onClose = function(e) {
15987                         return o.onCloseCb = e, o
15988                     }, o.open = function() {
15989                         return o.$toggleOpen(!0)
15990                     }, o.close = function() {
15991                         return o.$toggleOpen(!1)
15992                     }, o.toggle = function() {
15993                         return o.$toggleOpen(!e.isOpen)
15994                     }, o.$toggleOpen = function(t) {
15995                         return r.when(e.isOpen = t)
15996                     };
15997                     var a = t.mdComponentId,
15998                         s = a && a.indexOf(i.startSymbol()) > -1,
15999                         c = s ? i(a)(e.$parent) : a;
16000                     o.destroy = n.register(o, c), s && t.$observe("mdComponentId", function(e) {
16001                         e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
16002                     })
16003                 }
16004                 e.$inject = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"], r.$inject = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$mdInteraction", "$animate", "$compile", "$parse", "$log", "$q", "$document", "$window", "$$rAF"], i.$inject = ["$scope", "$attrs", "$mdComponentRegistry", "$q", "$interpolate"], t.module("material.components.sidenav", ["material.core", "material.components.backdrop"]).factory("$mdSidenav", e).directive("mdSidenav", r).directive("mdSidenavFocus", function() {
16005                     return {
16006                         restrict: "A",
16007                         require: "^mdSidenav",
16008                         link: function(e, t, n, r) {}
16009                     }
16010                 }).controller("$mdSidenavController", i)
16011             }(),
16012             function() {
16013                 function r(e, r, i, o, a, c, l, u) {
16014                     var d = i.KEY_CODE;
16015                     d.SPACE, d.ENTER, d.UP_ARROW, d.DOWN_ARROW;
16016                     return {
16017                         restrict: "E",
16018                         require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
16019                         compile: function(u, d) {
16020                             var f = t.element("<md-select-value><span></span></md-select-value>");
16021                             if (f.append('<span class="md-select-icon" aria-hidden="true"></span>'), f.addClass("md-select-value"), f[0].hasAttribute("id") || f.attr("id", "select_value_label_" + r.nextUid()), u.find("md-content").length || u.append(t.element("<md-content>").append(u.contents())), d.mdOnOpen && (u.find("md-content").prepend(t.element('<div> <md-progress-circular md-mode="indeterminate" ng-if="$$loadingAsyncDone === false" md-diameter="25px"></md-progress-circular></div>')), u.find("md-option").attr("ng-show", "$$loadingAsyncDone")), d.name) {
16022                                 var h = t.element('<select class="md-visually-hidden">');
16023                                 h.attr({
16024                                     name: d.name,
16025                                     "aria-hidden": "true",
16026                                     tabindex: "-1"
16027                                 });
16028                                 var p = u.find("md-option");
16029                                 t.forEach(p, function(e) {
16030                                     var n = t.element("<option>" + e.innerHTML + "</option>");
16031                                     e.hasAttribute("ng-value") ? n.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && n.attr("value", e.getAttribute("value")), h.append(n)
16032                                 }), h.append('<option ng-value="' + d.ngModel + '" selected></option>'), u.parent().append(h)
16033                             }
16034                             var m = r.parseAttributeBoolean(d.multiple),
16035                                 g = m ? "multiple" : "",
16036                                 v = '<div class="md-select-menu-container" aria-hidden="true"><md-select-menu {0}>{1}</md-select-menu></div>';
16037                             return v = r.supplant(v, [g, u.html()]), u.empty().append(f), u.append(v), d.tabindex || d.$set("tabindex", 0),
16038                                 function(u, d, f, h) {
16039                                     function p() {
16040                                         var e = d.attr("aria-label") || d.attr("placeholder");
16041                                         !e && C && C.label && (e = C.label.text()), w = e, a.expect(d, "aria-label", e)
16042                                     }
16043
16044                                     function g() {
16045                                         D && (I = I || D.find("md-select-menu").controller("mdSelectMenu"), x.setLabelText(I.selectedLabels()))
16046                                     }
16047
16048                                     function v() {
16049                                         if (w) {
16050                                             var e = I.selectedLabels({
16051                                                 mode: "aria"
16052                                             });
16053                                             d.attr("aria-label", e.length ? w + ": " + e : w)
16054                                         }
16055                                     }
16056
16057                                     function b() {
16058                                         C && C.setHasValue(I.selectedLabels().length > 0 || (d[0].validity || {}).badInput)
16059                                     }
16060
16061                                     function y(e) {
16062                                         if (i.isNavigationKey(e)) e.preventDefault(), $();
16063                                         else if (s(e, i)) {
16064                                             e.preventDefault();
16065                                             var n = I.optNodeForKeyboardSearch(e);
16066                                             if (!n || n.hasAttribute("disabled")) return;
16067                                             var r = t.element(n).controller("mdOption");
16068                                             I.isMultiple || I.deselect(Object.keys(I.selected)[0]), I.select(r.hashKey, r.value), I.refreshViewValue()
16069                                         }
16070                                     }
16071
16072                                     function $() {
16073                                         N._mdSelectIsOpen = !0, d.attr("aria-expanded", "true"), e.show({
16074                                             scope: N,
16075                                             preserveScope: !0,
16076                                             skipCompile: !0,
16077                                             element: D,
16078                                             target: d[0],
16079                                             selectCtrl: x,
16080                                             preserveElement: !0,
16081                                             hasBackdrop: !0,
16082                                             loadingAsync: !!f.mdOnOpen && (u.$eval(f.mdOnOpen) || !0)
16083                                         }).finally(function() {
16084                                             N._mdSelectIsOpen = !1, d.focus(), d.attr("aria-expanded", "false"), k.$setTouched()
16085                                         })
16086                                     }
16087                                     var _, w, E = !0,
16088                                         C = h[0],
16089                                         x = h[1],
16090                                         k = h[2],
16091                                         T = h[3],
16092                                         M = d.find("md-select-value"),
16093                                         S = t.isDefined(f.readonly),
16094                                         A = r.parseAttributeBoolean(f.mdNoAsterisk);
16095                                     if (A && d.addClass("md-no-asterisk"), C) {
16096                                         var O = C.isErrorGetter || function() {
16097                                             return k.$invalid && (k.$touched || T && T.$submitted)
16098                                         };
16099                                         if (C.input && d.find("md-select-header").find("input")[0] !== C.input[0]) throw new Error("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");
16100                                         C.input = d, C.label || a.expect(d, "aria-label", d.attr("placeholder")), u.$watch(O, C.setInvalid)
16101                                     }
16102                                     var D, N, I;
16103                                     ! function() {
16104                                         if (D = t.element(d[0].querySelector(".md-select-menu-container")), N = u, f.mdContainerClass) {
16105                                             var e = D[0].getAttribute("class") + " " + f.mdContainerClass;
16106                                             D[0].setAttribute("class", e)
16107                                         }(I = D.find("md-select-menu").controller("mdSelectMenu")).init(k, f.ngModel), d.on("$destroy", function() {
16108                                             D.remove()
16109                                         })
16110                                     }(), o(d), T && t.isDefined(f.multiple) && r.nextTick(function() {
16111                                         (k.$modelValue || k.$viewValue) && T.$setPristine()
16112                                     });
16113                                     var R = k.$render;
16114                                     k.$render = function() {
16115                                         R(), g(), v(), b()
16116                                     }, f.$observe("placeholder", k.$render), C && C.label && f.$observe("required", function(e) {
16117                                         C.label.toggleClass("md-required", e && !A)
16118                                     }), x.setLabelText = function(e) {
16119                                         x.setIsPlaceholder(!e);
16120                                         var t = !1;
16121                                         if (f.mdSelectedText && f.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
16122                                         f.mdSelectedText || f.mdSelectedHtml ? (e = c(f.mdSelectedText || f.mdSelectedHtml)(u), t = !0) : e || (e = f.placeholder || (C && C.label ? C.label.text() : "") || "", t = !0);
16123                                         var n = M.children().eq(0);
16124                                         f.mdSelectedHtml ? n.html(l.getTrustedHtml(e)) : t ? n.text(e) : n.html(e)
16125                                     }, x.setIsPlaceholder = function(e) {
16126                                         e ? (M.addClass("md-select-placeholder"), C && C.label && C.label.addClass("md-placeholder")) : (M.removeClass("md-select-placeholder"), C && C.label && C.label.removeClass("md-placeholder"))
16127                                     }, S || (d.on("focus", function(e) {
16128                                         C && C.setFocused(!0)
16129                                     }), d.on("blur", function(e) {
16130                                         E && (E = !1, N._mdSelectIsOpen && e.stopImmediatePropagation()), N._mdSelectIsOpen || (C && C.setFocused(!1), b())
16131                                     })), x.triggerClose = function() {
16132                                         c(f.mdOnClose)(u)
16133                                     }, u.$$postDigest(function() {
16134                                         p(), g(), v()
16135                                     }), u.$watch(function() {
16136                                         return I.selectedLabels()
16137                                     }, g);
16138                                     var P;
16139                                     f.$observe("ngMultiple", function(e) {
16140                                         P && P();
16141                                         var t = c(e);
16142                                         P = u.$watch(function() {
16143                                             return t(u)
16144                                         }, function(e, t) {
16145                                             e === n && t === n || (e ? d.attr("multiple", "multiple") : d.removeAttr("multiple"), d.attr("aria-multiselectable", e ? "true" : "false"), D && (I.setMultiple(e), R = k.$render, k.$render = function() {
16146                                                 R(), g(), v(), b()
16147                                             }, k.$render()))
16148                                         })
16149                                     }), f.$observe("disabled", function(e) {
16150                                         t.isString(e) && (e = !0), _ !== n && _ === e || (_ = e, e ? d.attr({
16151                                             "aria-disabled": "true"
16152                                         }).removeAttr("tabindex").off("click", $).off("keydown", y) : d.attr({
16153                                             tabindex: f.tabindex,
16154                                             "aria-disabled": "false"
16155                                         }).on("click", $).on("keydown", y))
16156                                     }), f.hasOwnProperty("disabled") || f.hasOwnProperty("ngDisabled") || (d.attr({
16157                                         "aria-disabled": "false"
16158                                     }), d.on("click", $), d.on("keydown", y));
16159                                     var H = {
16160                                         role: "listbox",
16161                                         "aria-expanded": "false",
16162                                         "aria-multiselectable": m && !f.ngMultiple ? "true" : "false"
16163                                     };
16164                                     d[0].hasAttribute("id") || (H.id = "select_" + r.nextUid());
16165                                     var j = "select_container_" + r.nextUid();
16166                                     D.attr("id", j), H["aria-owns"] = j, d.attr(H), u.$on("$destroy", function() {
16167                                         e.destroy().finally(function() {
16168                                             C && (C.setFocused(!1), C.setHasValue(!1), C.input = null), k.$setTouched()
16169                                         })
16170                                     })
16171                                 }
16172                         },
16173                         controller: function() {}
16174                     }
16175                 }
16176
16177                 function i(e, r, i, o) {
16178                     function a(o, a, s) {
16179                         function c() {
16180                             var e = d.ngModel.$modelValue || d.ngModel.$viewValue || [];
16181                             if (t.isArray(e)) {
16182                                 var n = Object.keys(d.selected),
16183                                     r = e.map(d.hashGetter);
16184                                 n.filter(function(e) {
16185                                     return -1 === r.indexOf(e)
16186                                 }).forEach(d.deselect), r.forEach(function(t, n) {
16187                                     d.select(t, e[n])
16188                                 })
16189                             }
16190                         }
16191
16192                         function u() {
16193                             var e = d.ngModel.$viewValue || d.ngModel.$modelValue;
16194                             Object.keys(d.selected).forEach(d.deselect), d.select(d.hashGetter(e), e)
16195                         }
16196                         var d = this;
16197                         d.isMultiple = t.isDefined(a.multiple), d.selected = {}, d.options = {}, o.$watchCollection(function() {
16198                             return d.options
16199                         }, function() {
16200                             d.ngModel.$render()
16201                         });
16202                         var f;
16203                         d.setMultiple = function(e) {
16204                             function n(e, n) {
16205                                 return t.isArray(e || n || [])
16206                             }
16207                             var r = d.ngModel;
16208                             f = f || r.$isEmpty, d.isMultiple = e, d.isMultiple ? (r.$validators["md-multiple"] = n, r.$render = c, o.$watchCollection(d.modelBinding, function(e) {
16209                                 n(e) && c(), d.ngModel.$setPristine()
16210                             }), r.$isEmpty = function(e) {
16211                                 return !e || 0 === e.length
16212                             }) : (delete r.$validators["md-multiple"], r.$render = u)
16213                         };
16214                         var h, p, m, g = "";
16215                         d.optNodeForKeyboardSearch = function(e) {
16216                             h && clearTimeout(h), h = setTimeout(function() {
16217                                 h = n, g = "", m = n, p = n
16218                             }, 300);
16219                             var r = e.keyCode - (i.isNumPadKey(e) ? 48 : 0);
16220                             g += String.fromCharCode(r);
16221                             var o = new RegExp("^" + g, "i");
16222                             p || (p = s.find("md-option"), m = new Array(p.length), t.forEach(p, function(e, t) {
16223                                 m[t] = e.textContent.trim()
16224                             }));
16225                             for (var a = 0; a < m.length; ++a)
16226                                 if (o.test(m[a])) return p[a]
16227                         }, d.init = function(n, i) {
16228                             d.ngModel = n, d.modelBinding = i, d.ngModel.$isEmpty = function(e) {
16229                                 return !d.options[d.hashGetter(e)]
16230                             };
16231                             var a = r.getModelOption(n, "trackBy");
16232                             if (a) {
16233                                 var s = {},
16234                                     c = e(a);
16235                                 d.hashGetter = function(e, t) {
16236                                     return s.$value = e, c(t || o, s)
16237                                 }
16238                             } else d.hashGetter = function(e) {
16239                                 return t.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++l)) : e
16240                             };
16241                             d.setMultiple(d.isMultiple)
16242                         }, d.selectedLabels = function(e) {
16243                             var t = (e = e || {}).mode || "html",
16244                                 n = r.nodesToArray(s[0].querySelectorAll("md-option[selected]"));
16245                             if (n.length) {
16246                                 var i;
16247                                 return "html" == t ? i = function(e) {
16248                                     if (e.hasAttribute("md-option-empty")) return "";
16249                                     var t = e.innerHTML,
16250                                         n = e.querySelector(".md-ripple-container");
16251                                     n && (t = t.replace(n.outerHTML, ""));
16252                                     var r = e.querySelector(".md-container");
16253                                     return r && (t = t.replace(r.outerHTML, "")), t
16254                                 } : "aria" == t && (i = function(e) {
16255                                     return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
16256                                 }), r.uniq(n.map(i)).join(", ")
16257                             }
16258                             return ""
16259                         }, d.select = function(e, t) {
16260                             var n = d.options[e];
16261                             n && n.setSelected(!0), d.selected[e] = t
16262                         }, d.deselect = function(e) {
16263                             var t = d.options[e];
16264                             t && t.setSelected(!1), delete d.selected[e]
16265                         }, d.addOption = function(e, n) {
16266                             if (t.isDefined(d.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + n.value + '" found.');
16267                             d.options[e] = n, t.isDefined(d.selected[e]) && (d.select(e, n.value), t.isDefined(d.ngModel.$modelValue) && d.hashGetter(d.ngModel.$modelValue) === e && d.ngModel.$validate(), d.refreshViewValue())
16268                         }, d.removeOption = function(e) {
16269                             delete d.options[e]
16270                         }, d.refreshViewValue = function() {
16271                             var e, n = [];
16272                             for (var i in d.selected)(e = d.options[i]) ? n.push(e.value) : n.push(d.selected[i]);
16273                             var o = r.getModelOption(d.ngModel, "trackBy"),
16274                                 a = d.isMultiple ? n : n[0],
16275                                 s = d.ngModel.$modelValue;
16276                             (o ? t.equals(s, a) : s + "" === a) || (d.ngModel.$setViewValue(a), d.ngModel.$render())
16277                         }
16278                     }
16279                     return a.$inject = ["$scope", "$attrs", "$element"], {
16280                         restrict: "E",
16281                         require: ["mdSelectMenu"],
16282                         scope: !1,
16283                         controller: a,
16284                         link: {
16285                             pre: function(e, n, i, a) {
16286                                 function s(n) {
16287                                     var i = r.getClosest(n.target, "md-option"),
16288                                         o = i && t.element(i).data("$mdOptionController");
16289                                     if (i && o) {
16290                                         if (i.hasAttribute("disabled")) return n.stopImmediatePropagation(), !1;
16291                                         var a = c.hashGetter(o.value),
16292                                             s = t.isDefined(c.selected[a]);
16293                                         e.$apply(function() {
16294                                             c.isMultiple ? s ? c.deselect(a) : c.select(a, o.value) : s || (c.deselect(Object.keys(c.selected)[0]), c.select(a, o.value)), c.refreshViewValue()
16295                                         })
16296                                     }
16297                                 }
16298                                 var c = a[0];
16299                                 n.addClass("_md"), o(n), n.on("click", s), n.on("keypress", function(e) {
16300                                     13 != e.keyCode && 32 != e.keyCode || s(e)
16301                                 })
16302                             }
16303                         }
16304                     }
16305                 }
16306
16307                 function o(e, n, r) {
16308                     function i(e) {
16309                         var t = e.value,
16310                             n = e.ngValue;
16311                         return t || n
16312                     }
16313
16314                     function o(i, o, a, s) {
16315                         function c(e, t, n) {
16316                             if (d.hashGetter) {
16317                                 var r = d.hashGetter(t, i),
16318                                     o = d.hashGetter(e, i);
16319                                 l.hashKey = o, l.value = e, d.removeOption(r, l), d.addOption(o, l)
16320                             } else n || i.$$postDigest(function() {
16321                                 c(e, t, !0)
16322                             })
16323                         }
16324                         var l = s[0],
16325                             d = s[1];
16326                         r(o), d.isMultiple && (o.addClass("md-checkbox-enabled"), o.prepend(u.clone())), t.isDefined(a.ngValue) ? i.$watch(a.ngValue, c) : t.isDefined(a.value) ? c(a.value) : i.$watch(function() {
16327                                 return o.text().trim()
16328                             }, c), a.$observe("disabled", function(e) {
16329                                 e ? o.attr("tabindex", "-1") : o.attr("tabindex", "0")
16330                             }), i.$$postDigest(function() {
16331                                 a.$observe("selected", function(e) {
16332                                     t.isDefined(e) && ("string" == typeof e && (e = !0), e ? (d.isMultiple || d.deselect(Object.keys(d.selected)[0]), d.select(l.hashKey, l.value)) : d.deselect(l.hashKey), d.refreshViewValue())
16333                                 })
16334                             }), e.attach(i, o),
16335                             function() {
16336                                 var e = {
16337                                     role: "option",
16338                                     "aria-selected": "false"
16339                                 };
16340                                 o[0].hasAttribute("id") || (e.id = "select_option_" + n.nextUid()), o.attr(e)
16341                             }(), i.$on("$destroy", function() {
16342                                 d.removeOption(l.hashKey, l)
16343                             })
16344                     }
16345
16346                     function a(e) {
16347                         this.selected = !1, this.setSelected = function(t) {
16348                             t && !this.selected ? e.attr({
16349                                 selected: "selected",
16350                                 "aria-selected": "true"
16351                             }) : !t && this.selected && (e.removeAttr("selected"), e.attr("aria-selected", "false")), this.selected = t
16352                         }
16353                     }
16354                     return a.$inject = ["$element"], {
16355                         restrict: "E",
16356                         require: ["mdOption", "^^mdSelectMenu"],
16357                         controller: a,
16358                         compile: function(e, n) {
16359                             return e.append(t.element('<div class="md-text">').append(e.contents())), e.attr("tabindex", n.tabindex || "0"), i(n) || e.attr("md-option-empty", ""), o
16360                         }
16361                     }
16362                 }
16363
16364                 function a(r) {
16365                     function i(r, i, d, f, h, p, m, g, v) {
16366                         function b(e) {
16367                             var t = e.selectCtrl;
16368                             if (t) {
16369                                 var n = e.selectEl.controller("mdSelectMenu");
16370                                 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
16371                             }
16372                         }
16373
16374                         function y(n, r, i) {
16375                             var s, h = r[0],
16376                                 p = i.target[0].children[0],
16377                                 m = v[0].body,
16378                                 g = i.selectEl[0],
16379                                 b = i.contentEl[0],
16380                                 y = m.getBoundingClientRect(),
16381                                 $ = p.getBoundingClientRect(),
16382                                 _ = {
16383                                     left: y.left + c,
16384                                     top: c,
16385                                     bottom: y.height - c,
16386                                     right: y.width - c - (d.floatingScrollbars() ? 16 : 0)
16387                                 },
16388                                 w = {
16389                                     top: $.top - _.top,
16390                                     left: $.left - _.left,
16391                                     right: _.right - ($.left + $.width),
16392                                     bottom: _.bottom - ($.top + $.height)
16393                                 },
16394                                 E = y.width - 2 * c,
16395                                 C = g.querySelector("md-option[selected]"),
16396                                 x = g.getElementsByTagName("md-option"),
16397                                 k = g.getElementsByTagName("md-optgroup"),
16398                                 T = u(r, b);
16399                             s = o(i.loadingAsync) ? b.firstElementChild || b : C || (k.length ? k[0] : x.length ? x[0] : b.firstElementChild || b), b.offsetWidth > E ? b.style["max-width"] = E + "px" : b.style.maxWidth = null, T && g.classList.add("md-overflow");
16400                             var M = s;
16401                             "MD-OPTGROUP" === (M.tagName || "").toUpperCase() && (s = M = x[0] || b.firstElementChild || b), i.focusedNode = M, h.style.display = "block";
16402                             var S = g.getBoundingClientRect(),
16403                                 A = l(s);
16404                             if (s) {
16405                                 var O = f.getComputedStyle(s);
16406                                 A.paddingLeft = parseInt(O.paddingLeft, 10) || 0, A.paddingRight = parseInt(O.paddingRight, 10) || 0
16407                             }
16408                             if (T) {
16409                                 var D = b.offsetHeight / 2;
16410                                 b.scrollTop = A.top + A.height / 2 - D, w.top < D ? b.scrollTop = Math.min(A.top, b.scrollTop + D - w.top) : w.bottom < D && (b.scrollTop = Math.max(A.top + A.height - S.height, b.scrollTop - D + w.bottom))
16411                             }
16412                             var N, I, R, P, H;
16413                             N = $.left + A.left - A.paddingLeft + 2, I = Math.floor($.top + $.height / 2 - A.height / 2 - A.top + b.scrollTop) + 2, R = A.left + $.width / 2 + "px " + (A.top + A.height / 2 - b.scrollTop) + "px 0px", P = Math.min($.width + A.paddingLeft + A.paddingRight, E), H = e.getComputedStyle(p)["font-size"];
16414                             var j = h.getBoundingClientRect(),
16415                                 L = Math.round(100 * Math.min($.width / S.width, 1)) / 100,
16416                                 F = Math.round(100 * Math.min($.height / S.height, 1)) / 100;
16417                             return {
16418                                 container: {
16419                                     element: t.element(h),
16420                                     styles: {
16421                                         left: Math.floor(a(_.left, N, _.right - j.width)),
16422                                         top: Math.floor(a(_.top, I, _.bottom - j.height)),
16423                                         "min-width": P,
16424                                         "font-size": H
16425                                     }
16426                                 },
16427                                 dropDown: {
16428                                     element: t.element(g),
16429                                     styles: {
16430                                         transformOrigin: R,
16431                                         transform: i.alreadyOpen ? "" : d.supplant("scale({0},{1})", [L, F])
16432                                     }
16433                                 }
16434                             }
16435                         }
16436                         var $ = "$mdSelect.show() expected a target element in options.target but got '{0}'!",
16437                             _ = d.dom.animator,
16438                             w = i.KEY_CODE;
16439                         return {
16440                             parent: "body",
16441                             themable: !0,
16442                             onShow: function(e, o, a) {
16443                                 function c() {
16444                                     return h(function(e) {
16445                                         if (a.isRemoved) return h.reject(!1);
16446                                         var t = y(0, o, a);
16447                                         t.container.element.css(_.toCss(t.container.styles)), t.dropDown.element.css(_.toCss(t.dropDown.styles)), p(function() {
16448                                             o.addClass("md-active"), t.dropDown.element.css(_.toCss({
16449                                                 transform: ""
16450                                             })), l(a.focusedNode), e()
16451                                         })
16452                                     })
16453                                 }
16454
16455                                 function l(e) {
16456                                     e && !e.hasAttribute("disabled") && e.focus()
16457                                 }
16458
16459                                 function u() {
16460                                     var e = function(e, t, n) {
16461                                             return function() {
16462                                                 if (!n.isRemoved) {
16463                                                     var e = y(0, t, n),
16464                                                         r = e.container,
16465                                                         i = e.dropDown;
16466                                                     r.element.css(_.toCss(r.styles)), i.element.css(_.toCss(i.styles))
16467                                                 }
16468                                             }
16469                                         }(0, o, a),
16470                                         n = t.element(f);
16471                                     return n.on("resize", e), n.on("orientationchange", e),
16472                                         function() {
16473                                             n.off("resize", e), n.off("orientationchange", e)
16474                                         }
16475                                 }
16476
16477                                 function b() {
16478                                     function e(e) {
16479                                         e.preventDefault(), e.stopPropagation(), a.restoreFocus = !1, d.nextTick(r.hide, !0)
16480                                     }
16481
16482                                     function t(e) {
16483                                         switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
16484                                             case w.UP_ARROW:
16485                                                 return u();
16486                                             case w.DOWN_ARROW:
16487                                                 return l();
16488                                             case w.SPACE:
16489                                             case w.ENTER:
16490                                                 var t = d.getClosest(e.target, "md-option");
16491                                                 t && (h.triggerHandler({
16492                                                     type: "click",
16493                                                     target: t
16494                                                 }), e.preventDefault()), f(e);
16495                                                 break;
16496                                             case w.TAB:
16497                                             case w.ESCAPE:
16498                                                 e.stopPropagation(), e.preventDefault(), a.restoreFocus = !0, d.nextTick(r.hide, !0);
16499                                                 break;
16500                                             default:
16501                                                 if (s(e, i)) {
16502                                                     var n = h.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
16503                                                     a.focusedNode = n || a.focusedNode, n && n.focus()
16504                                                 }
16505                                         }
16506                                     }
16507
16508                                     function c(e) {
16509                                         var t, r = d.nodesToArray(a.optionNodes),
16510                                             i = r.indexOf(a.focusedNode);
16511                                         do {
16512                                             -1 === i ? i = 0 : "next" === e && i < r.length - 1 ? i++ : "prev" === e && i > 0 && i--, (t = r[i]).hasAttribute("disabled") && (t = n)
16513                                         } while (!t && i < r.length - 1 && i > 0);
16514                                         t && t.focus(), a.focusedNode = t
16515                                     }
16516
16517                                     function l() {
16518                                         c("next")
16519                                     }
16520
16521                                     function u() {
16522                                         c("prev")
16523                                     }
16524
16525                                     function f(e) {
16526                                         if (!(e && "click" == e.type && e.currentTarget != h[0] || function() {
16527                                                 var t = !1;
16528                                                 if (e && e.currentTarget.children.length > 0) {
16529                                                     var n = e.currentTarget.children[0];
16530                                                     n.scrollHeight > n.clientHeight && n.children.length > 0 && e.pageX - e.currentTarget.getBoundingClientRect().left > n.querySelector("md-option").offsetWidth && (t = !0)
16531                                                 }
16532                                                 return t
16533                                             }())) {
16534                                             var t = d.getClosest(e.target, "md-option");
16535                                             t && t.hasAttribute && !t.hasAttribute("disabled") && (e.preventDefault(), e.stopPropagation(), p.isMultiple || (a.restoreFocus = !0, d.nextTick(function() {
16536                                                 r.hide(p.ngModel.$viewValue)
16537                                             }, !0)))
16538                                         }
16539                                     }
16540                                     if (!a.isRemoved) {
16541                                         var h = a.selectEl,
16542                                             p = h.controller("mdSelectMenu") || {};
16543                                         return o.addClass("md-clickable"), a.backdrop && a.backdrop.on("click", e), h.on("keydown", t), h.on("click", f),
16544                                             function() {
16545                                                 a.backdrop && a.backdrop.off("click", e), h.off("keydown", t), h.off("click", f), o.removeClass("md-clickable"), a.isRemoved = !0
16546                                             }
16547                                     }
16548                                 }
16549                                 return a.loadingAsync && !a.isRemoved && (e.$$loadingAsyncDone = !1, h.when(a.loadingAsync).then(function() {
16550                                         e.$$loadingAsyncDone = !0, delete a.loadingAsync
16551                                     }).then(function() {
16552                                         p(c)
16553                                     })),
16554                                     function(e, n) {
16555                                         var r = o.find("md-select-menu");
16556                                         if (!n.target) throw new Error(d.supplant($, [n.target]));
16557                                         t.extend(n, {
16558                                             isRemoved: !1,
16559                                             target: t.element(n.target),
16560                                             parent: t.element(n.parent),
16561                                             selectEl: r,
16562                                             contentEl: o.find("md-content"),
16563                                             optionNodes: r[0].getElementsByTagName("md-option")
16564                                         })
16565                                     }(0, a), a.hideBackdrop = function(e, t, n) {
16566                                         return n.disableParentScroll && !d.getClosest(n.target, "MD-DIALOG") ? n.restoreScroll = d.disableScrollAround(n.element, n.parent) : n.disableParentScroll = !1, n.hasBackdrop && (n.backdrop = d.createBackdrop(e, "md-select-backdrop md-click-catcher"), g.enter(n.backdrop, v[0].body, null, {
16567                                                 duration: 0
16568                                             })),
16569                                             function() {
16570                                                 n.backdrop && n.backdrop.remove(), n.disableParentScroll && n.restoreScroll(), delete n.restoreScroll
16571                                             }
16572                                     }(e, 0, a),
16573                                     function(e, t, n) {
16574                                         return n.parent.append(t), h(function(e, n) {
16575                                             try {
16576                                                 m(t, {
16577                                                     removeClass: "md-leave",
16578                                                     duration: 0
16579                                                 }).start().then(c).then(e)
16580                                             } catch (e) {
16581                                                 n(e)
16582                                             }
16583                                         })
16584                                     }(0, o, a).then(function(e) {
16585                                         return o.attr("aria-hidden", "false"), a.alreadyOpen = !0, a.cleanupInteraction = b(), a.cleanupResizing = u(), e
16586                                     }, a.hideBackdrop)
16587                             },
16588                             onRemove: function(e, t, n) {
16589                                 function r() {
16590                                     t.removeClass("md-active"), t.attr("aria-hidden", "true"), t[0].style.display = "none", b(n), !n.$destroy && n.restoreFocus && n.target.focus()
16591                                 }
16592                                 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? r() : m(t, {
16593                                     addClass: "md-leave"
16594                                 }).start().then(r)
16595                             },
16596                             hasBackdrop: !0,
16597                             disableParentScroll: !0
16598                         }
16599                     }
16600
16601                     function o(e) {
16602                         return e && t.isFunction(e.then)
16603                     }
16604
16605                     function a(e, t, n) {
16606                         return Math.max(e, Math.min(t, n))
16607                     }
16608
16609                     function l(e) {
16610                         return e ? {
16611                             left: e.offsetLeft,
16612                             top: e.offsetTop,
16613                             width: e.offsetWidth,
16614                             height: e.offsetHeight
16615                         } : {
16616                             left: 0,
16617                             top: 0,
16618                             width: 0,
16619                             height: 0
16620                         }
16621                     }
16622
16623                     function u(e, t) {
16624                         var n = !1;
16625                         try {
16626                             var r = e[0].style.display;
16627                             e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
16628                         } finally {}
16629                         return n
16630                     }
16631                     return i.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], r("$mdSelect").setDefaults({
16632                         methods: ["target"],
16633                         options: i
16634                     })
16635                 }
16636
16637                 function s(e, t) {
16638                     var n = String.fromCharCode(e.keyCode),
16639                         r = e.keyCode <= 31;
16640                     return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
16641                 }
16642                 r.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], i.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], o.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], a.$inject = ["$$interimElementProvider"];
16643                 var c = 8,
16644                     l = 0,
16645                     u = t.element('<div class="md-container"><div class="md-icon"></div></div>');
16646                 t.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", r).directive("mdSelectMenu", i).directive("mdOption", o).directive("mdOptgroup", function() {
16647                     return {
16648                         restrict: "E",
16649                         compile: function(e, n) {
16650                             e.parent().find("md-select-header").length || function() {
16651                                 var r = e.find("label");
16652                                 r.length || (r = t.element("<label>"), e.prepend(r)), r.addClass("md-container-ignore"), n.label && r.text(n.label)
16653                             }()
16654                         }
16655                     }
16656                 }).directive("mdSelectHeader", function() {
16657                     return {
16658                         restrict: "E"
16659                     }
16660                 }).provider("$mdSelect", a)
16661             }(),
16662             function() {
16663                 function e(e, n, r, i, o, a, s, c, l, u) {
16664                     function d(r, d, f, h) {
16665                         function p() {
16666                             _(), C()
16667                         }
16668
16669                         function m(e) {
16670                             Z = parseFloat(e), d.attr("aria-valuemin", e), p()
16671                         }
16672
16673                         function g(e) {
16674                             X = parseFloat(e), d.attr("aria-valuemax", e), p()
16675                         }
16676
16677                         function v(e) {
16678                             Q = parseFloat(e)
16679                         }
16680
16681                         function b(e) {
16682                             J = x(parseInt(e), 0, 6)
16683                         }
16684
16685                         function y() {
16686                             if (Y && !H() && !t.isUndefined(Q)) {
16687                                 if (Q <= 0) {
16688                                     var e = "Slider step value must be greater than zero when in discrete mode";
16689                                     throw l.error(e), new Error(e)
16690                                 }
16691                                 var r = Math.floor((X - Z) / Q);
16692                                 ee || (ee = t.element("<canvas>").css("position", "absolute"), V.append(ee), te = ee[0].getContext("2d"));
16693                                 var i = w();
16694                                 !i || i.height || i.width || (_(), i = ne), ee[0].width = i.width, ee[0].height = i.height;
16695                                 for (var o, a = 0; a <= r; a++) {
16696                                     var s = n.getComputedStyle(V[0]);
16697                                     te.fillStyle = s.color || "black", o = Math.floor((W ? i.height : i.width) * (a / r)), te.fillRect(W ? 0 : o - 1, W ? o - 1 : 0, W ? i.width : 2, W ? 2 : i.height)
16698                                 }
16699                             }
16700                         }
16701
16702                         function $() {
16703                             if (ee && te) {
16704                                 var e = w();
16705                                 te.clearRect(0, 0, e.width, e.height)
16706                             }
16707                         }
16708
16709                         function _() {
16710                             ne = q[0].getBoundingClientRect()
16711                         }
16712
16713                         function w() {
16714                             return z(), ne
16715                         }
16716
16717                         function E(e) {
16718                             R.$setViewValue(x(k(e)))
16719                         }
16720
16721                         function C() {
16722                             isNaN(R.$viewValue) && (R.$viewValue = R.$modelValue), R.$viewValue = x(R.$viewValue);
16723                             var e = I(R.$viewValue);
16724                             r.modelValue = R.$viewValue, d.attr("aria-valuenow", R.$viewValue), T(e), L.text(R.$viewValue)
16725                         }
16726
16727                         function x(e, n, r) {
16728                             if (t.isNumber(e)) return n = t.isNumber(n) ? n : Z, r = t.isNumber(r) ? r : X, Math.max(n, Math.min(r, e))
16729                         }
16730
16731                         function k(e) {
16732                             if (t.isNumber(e)) {
16733                                 var n = Math.round((e - Z) / Q) * Q + Z;
16734                                 return n = Math.round(n * Math.pow(10, J)) / Math.pow(10, J), P && P.fitInputWidthToTextLength && i.debounce(function() {
16735                                     P.fitInputWidthToTextLength(n.toString().length)
16736                                 }, 100)(), n
16737                             }
16738                         }
16739
16740                         function T(e) {
16741                             var t = 100 * (e = O(e)) + "%",
16742                                 n = G ? 100 * (1 - e) + "%" : t;
16743                             W ? F.css("bottom", t) : i.bidiProperty(F, "left", "right", t), U.css(W ? "height" : "width", n), d.toggleClass(G ? "md-max" : "md-min", 0 === e), d.toggleClass(G ? "md-min" : "md-max", 1 === e)
16744                         }
16745
16746                         function M(e) {
16747                             Y ? A(W ? e.pointer.y : e.pointer.x) : S(W ? e.pointer.y : e.pointer.x)
16748                         }
16749
16750                         function S(e) {
16751                             r.$evalAsync(function() {
16752                                 E(N(D(e)))
16753                             })
16754                         }
16755
16756                         function A(e) {
16757                             var t = x(k(N(D(e))));
16758                             T(D(e)), L.text(t)
16759                         }
16760
16761                         function O(e) {
16762                             return Math.max(0, Math.min(e || 0, 1))
16763                         }
16764
16765                         function D(e) {
16766                             var t = (e - (W ? ne.top : ne.left)) / (W ? ne.height : ne.width);
16767                             return W || "rtl" !== i.bidi() || (t = 1 - t), Math.max(0, Math.min(1, W ? 1 - t : t))
16768                         }
16769
16770                         function N(e) {
16771                             return Z + (G ? 1 - e : e) * (X - Z)
16772                         }
16773
16774                         function I(e) {
16775                             var t = (e - Z) / (X - Z);
16776                             return G ? 1 - t : t
16777                         }
16778                         a(d);
16779                         var R = h[0] || {
16780                                 $setViewValue: function(e) {
16781                                     this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
16782                                         e()
16783                                     })
16784                                 },
16785                                 $parsers: [],
16786                                 $formatters: [],
16787                                 $viewChangeListeners: []
16788                             },
16789                             P = h[1],
16790                             H = (t.element(i.getClosest(d, "_md-slider-container", !0)), f.ngDisabled ? t.bind(null, c(f.ngDisabled), r.$parent) : function() {
16791                                 return d[0].hasAttribute("disabled")
16792                             }),
16793                             j = t.element(d[0].querySelector(".md-thumb")),
16794                             L = t.element(d[0].querySelector(".md-thumb-text")),
16795                             F = j.parent(),
16796                             q = t.element(d[0].querySelector(".md-track-container")),
16797                             U = t.element(d[0].querySelector(".md-track-fill")),
16798                             V = t.element(d[0].querySelector(".md-track-ticks")),
16799                             B = t.element(d[0].getElementsByClassName("md-slider-wrapper")),
16800                             z = (t.element(d[0].getElementsByClassName("md-slider-content")), i.throttle(_, 5e3)),
16801                             W = t.isDefined(f.mdVertical),
16802                             Y = t.isDefined(f.mdDiscrete),
16803                             G = t.isDefined(f.mdInvert);
16804                         t.isDefined(f.min) ? f.$observe("min", m) : m(0), t.isDefined(f.max) ? f.$observe("max", g) : g(100), t.isDefined(f.step) ? f.$observe("step", v) : v(1), t.isDefined(f.round) ? f.$observe("round", b) : b(3);
16805                         t.noop;
16806                         f.ngDisabled && r.$parent.$watch(f.ngDisabled, function() {
16807                             d.attr("aria-disabled", !!H())
16808                         }), s.register(B, "drag", {
16809                             horizontal: !W
16810                         }), r.mouseActive = !1, B.on("keydown", function(e) {
16811                             if (!H()) {
16812                                 var t;
16813                                 (W ? e.keyCode === o.KEY_CODE.DOWN_ARROW : e.keyCode === o.KEY_CODE.LEFT_ARROW) ? t = -Q: (W ? e.keyCode === o.KEY_CODE.UP_ARROW : e.keyCode === o.KEY_CODE.RIGHT_ARROW) && (t = Q), (t = G ? -t : t) && ((e.metaKey || e.ctrlKey || e.altKey) && (t *= 4), e.preventDefault(), e.stopPropagation(), r.$evalAsync(function() {
16814                                     E(R.$viewValue + t)
16815                                 }))
16816                             }
16817                         }).on("mousedown", function() {
16818                             y(), r.mouseActive = !0, B.removeClass("md-focused"), u(function() {
16819                                 r.mouseActive = !1
16820                             }, 100)
16821                         }).on("focus", function() {
16822                             !1 === r.mouseActive && B.addClass("md-focused")
16823                         }).on("blur", function() {
16824                             B.removeClass("md-focused"), d.removeClass("md-active"), $()
16825                         }).on("$md.pressdown", function(e) {
16826                             if (!H()) {
16827                                 d.addClass("md-active"), d[0].focus(), _();
16828                                 var t = x(k(N(D(W ? e.pointer.y : e.pointer.x))));
16829                                 r.$apply(function() {
16830                                     E(t), T(I(t))
16831                                 })
16832                             }
16833                         }).on("$md.pressup", function(e) {
16834                             if (!H()) {
16835                                 d.removeClass("md-dragging");
16836                                 var t = x(k(N(D(W ? e.pointer.y : e.pointer.x))));
16837                                 r.$apply(function() {
16838                                     E(t), C()
16839                                 })
16840                             }
16841                         }).on("$md.dragstart", function(e) {
16842                             H() || (re = !0, e.stopPropagation(), d.addClass("md-dragging"), M(e))
16843                         }).on("$md.drag", function(e) {
16844                             re && (e.stopPropagation(), M(e))
16845                         }).on("$md.dragend", function(e) {
16846                             re && (e.stopPropagation(), re = !1)
16847                         }), setTimeout(p, 0);
16848                         var K = e.throttle(p);
16849                         t.element(n).on("resize", K), r.$on("$destroy", function() {
16850                             t.element(n).off("resize", K)
16851                         }), R.$render = C, R.$viewChangeListeners.push(C), R.$formatters.push(x), R.$formatters.push(k);
16852                         var Z, X, Q, J, ee, te, ne = {};
16853                         _();
16854                         var re = !1
16855                     }
16856                     return {
16857                         scope: {},
16858                         require: ["?ngModel", "?^mdSliderContainer"],
16859                         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>',
16860                         compile: function(e, n) {
16861                             var i = t.element(e[0].getElementsByClassName("md-slider-wrapper")),
16862                                 o = n.tabindex || 0;
16863                             return i.attr("tabindex", o), (n.disabled || n.ngDisabled) && i.attr("tabindex", -1), i.attr("role", "slider"), r.expect(e, "aria-label"), d
16864                         }
16865                     }
16866                 }
16867                 e.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse", "$log", "$timeout"], t.module("material.components.slider", ["material.core"]).directive("mdSlider", e).directive("mdSliderContainer", function() {
16868                     return {
16869                         controller: function() {},
16870                         compile: function(e) {
16871                             var r = e.find("md-slider");
16872                             if (r) return r.attr("md-vertical") !== n && e.attr("md-vertical", ""), r.attr("flex") || r.attr("flex", ""),
16873                                 function(e, n, r, i) {
16874                                     function o(e) {
16875                                         n.children().attr("disabled", e), n.find("input").attr("disabled", e)
16876                                     }
16877                                     n.addClass("_md");
16878                                     var a = t.noop;
16879                                     r.disabled ? o(!0) : r.ngDisabled && (a = e.$watch(r.ngDisabled, function(e) {
16880                                         o(e)
16881                                     })), e.$on("$destroy", function() {
16882                                         a()
16883                                     });
16884                                     var s;
16885                                     i.fitInputWidthToTextLength = function(e) {
16886                                         var t = n[0].querySelector("md-input-container");
16887                                         if (t) {
16888                                             var r = getComputedStyle(t),
16889                                                 i = parseInt(r.minWidth),
16890                                                 o = 2 * parseInt(r.padding);
16891                                             s = s || parseInt(r.maxWidth);
16892                                             var a = Math.max(s, i + o + i / 2 * e);
16893                                             t.style.maxWidth = a + "px"
16894                                         }
16895                                     }
16896                                 }
16897                         }
16898                     }
16899                 })
16900             }(),
16901             function() {
16902                 function e(e, t, r, i) {
16903                     function o(i) {
16904                         function o() {
16905                             p.items.forEach(s), p.items = p.items.sort(function(e, t) {
16906                                 return e.top < t.top ? -1 : 1
16907                             });
16908                             for (var e, t = f.prop("scrollTop"), n = p.items.length - 1; n >= 0; n--)
16909                                 if (t > p.items[n].top) {
16910                                     e = p.items[n];
16911                                     break
16912                                 }
16913                             l(e)
16914                         }
16915
16916                         function s(e) {
16917                             var t = e.element[0];
16918                             for (e.top = 0, e.left = 0, e.right = 0; t && t !== f[0];) e.top += t.offsetTop, e.left += t.offsetLeft, t.offsetParent && (e.right += t.offsetParent.offsetWidth - t.offsetWidth - t.offsetLeft), t = t.offsetParent;
16919                             e.height = e.element.prop("offsetHeight");
16920                             var i = r.floatingScrollbars() ? "0" : n;
16921                             r.bidi(e.clone, "margin-left", e.left, i), r.bidi(e.clone, "margin-right", i, e.right)
16922                         }
16923
16924                         function c() {
16925                             var e = f.prop("scrollTop"),
16926                                 t = e > (c.prevScrollTop || 0);
16927                             if (c.prevScrollTop = e, 0 !== e) {
16928                                 if (t) {
16929                                     if (p.next && p.next.top <= e) return void l(p.next);
16930                                     if (p.current && p.next && p.next.top - e <= p.next.height) return void d(p.current, e + (p.next.top - p.next.height - e))
16931                                 }
16932                                 if (!t) {
16933                                     if (p.current && p.prev && e < p.current.top) return void l(p.prev);
16934                                     if (p.next && p.current && e >= p.next.top - p.current.height) return void d(p.current, e + (p.next.top - e - p.current.height))
16935                                 }
16936                                 p.current && d(p.current, e)
16937                             } else l(null)
16938                         }
16939
16940                         function l(e) {
16941                             if (p.current !== e) {
16942                                 p.current && (d(p.current, null), u(p.current, null)), e && u(e, "active"), p.current = e;
16943                                 var t = p.items.indexOf(e);
16944                                 p.next = p.items[t + 1], p.prev = p.items[t - 1], u(p.next, "next"), u(p.prev, "prev")
16945                             }
16946                         }
16947
16948                         function u(e, t) {
16949                             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)
16950                         }
16951
16952                         function d(t, i) {
16953                             t && (null === i || i === n ? t.translateY && (t.translateY = null, t.clone.css(e.CSS.TRANSFORM, "")) : (t.translateY = i, r.bidi(t.clone, e.CSS.TRANSFORM, "translate3d(" + t.left + "px," + i + "px,0)", "translateY(" + i + "px)")))
16954                         }
16955                         var f = i.$element,
16956                             h = t.throttle(o);
16957                         a(f), f.on("$scrollstart", h), f.on("$scroll", c);
16958                         var p;
16959                         return p = {
16960                             prev: null,
16961                             current: null,
16962                             next: null,
16963                             items: [],
16964                             add: function(e, t) {
16965                                 t.addClass("md-sticky-clone");
16966                                 var n = {
16967                                     element: e,
16968                                     clone: t
16969                                 };
16970                                 return p.items.push(n), r.nextTick(function() {
16971                                         f.prepend(n.clone)
16972                                     }), h(),
16973                                     function() {
16974                                         p.items.forEach(function(t, n) {
16975                                             t.element[0] === e[0] && (p.items.splice(n, 1), t.clone.remove())
16976                                         }), h()
16977                                     }
16978                             },
16979                             refreshElements: o
16980                         }
16981                     }
16982
16983                     function a(e) {
16984                         function n() {
16985                             +r.now() - o > a ? (i = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), t.throttle(n))
16986                         }
16987                         var i, o, a = 200;
16988                         e.on("scroll touchmove", function() {
16989                             i || (i = !0, t.throttle(n), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), o = +r.now()
16990                         })
16991                     }
16992                     var s = r.checkStickySupport();
16993                     return function(e, t, n) {
16994                         var r = t.controller("mdContent");
16995                         if (r)
16996                             if (s) t.css({
16997                                 position: s,
16998                                 top: 0,
16999                                 "z-index": 2
17000                             });
17001                             else {
17002                                 var a = r.$element.data("$$sticky");
17003                                 a || (a = o(r), r.$element.data("$$sticky", a));
17004                                 var c = n || i(t.clone())(e),
17005                                     l = a.add(t, c);
17006                                 e.$on("$destroy", l)
17007                             }
17008                     }
17009                 }
17010                 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], t.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
17011             }(),
17012             function() {
17013                 function e(e, n, r, i, o) {
17014                     return {
17015                         restrict: "E",
17016                         replace: !0,
17017                         transclude: !0,
17018                         template: '<div class="md-subheader _md">  <div class="md-subheader-inner">    <div class="md-subheader-content"></div>  </div></div>',
17019                         link: function(a, s, c, l, u) {
17020                             function d(e) {
17021                                 return t.element(e[0].querySelector(".md-subheader-content"))
17022                             }
17023                             r(s), s.addClass("_md"), i.prefixer().removeAttribute(s, "ng-repeat");
17024                             var f = s[0].outerHTML;
17025                             c.$set("role", "heading"), o.expect(s, "aria-level", "2"), u(a, function(e) {
17026                                 d(s).append(e)
17027                             }), s.hasClass("md-no-sticky") || u(a, function(t) {
17028                                 var r = n('<div class="md-subheader-wrapper" aria-hidden="true">' + f + "</div>")(a);
17029                                 i.nextTick(function() {
17030                                     d(r).append(t)
17031                                 }), e(a, s, r)
17032                             })
17033                         }
17034                     }
17035                 }
17036                 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], t.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
17037             }(),
17038             function() {
17039                 function e(e, n, r, i, o, a, s) {
17040                     var c = e[0];
17041                     return {
17042                         restrict: "E",
17043                         priority: r.BEFORE_NG_ARIA,
17044                         transclude: !0,
17045                         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>',
17046                         require: ["^?mdInputContainer", "?ngModel", "?^form"],
17047                         compile: function(e, l) {
17048                             var u = c.compile(e, l).post;
17049                             return e.addClass("md-dragging"),
17050                                 function(e, c, l, d) {
17051                                     function f(t) {
17052                                         e.$apply(function() {
17053                                             h.$setViewValue(t), h.$render()
17054                                         })
17055                                     }
17056                                     d[0];
17057                                     var h = d[1] || n.fakeNgModel(),
17058                                         p = (d[2], null);
17059                                     null != l.disabled ? p = function() {
17060                                         return !0
17061                                     } : l.ngDisabled && (p = i(l.ngDisabled));
17062                                     var m = t.element(c[0].querySelector(".md-thumb-container")),
17063                                         g = t.element(c[0].querySelector(".md-container")),
17064                                         v = t.element(c[0].querySelector(".md-label"));
17065                                     o(function() {
17066                                         c.removeClass("md-dragging")
17067                                     }), u(e, c, l, d), p && e.$watch(p, function(e) {
17068                                         c.attr("tabindex", e ? -1 : 0)
17069                                     }), l.$observe("mdInvert", function(e) {
17070                                         var t = n.parseAttributeBoolean(e);
17071                                         t ? c.prepend(v) : c.prepend(g), c.toggleClass("md-inverted", t)
17072                                     }), a.register(g, "drag"), g.on("$md.dragstart", function(t) {
17073                                         p && p(e) || (t.stopPropagation(), c.addClass("md-dragging"), b = {
17074                                             width: m.prop("offsetWidth")
17075                                         })
17076                                     }).on("$md.drag", function(e) {
17077                                         if (b) {
17078                                             e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
17079                                             var t = e.pointer.distanceX / b.width,
17080                                                 n = h.$viewValue ? 1 + t : t;
17081                                             n = Math.max(0, Math.min(1, n)), m.css(r.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), b.translate = n
17082                                         }
17083                                     }).on("$md.dragend", function(t) {
17084                                         b && (t.stopPropagation(), c.removeClass("md-dragging"), m.css(r.CSS.TRANSFORM, ""), (h.$viewValue ? b.translate < .5 : b.translate > .5) && f(!h.$viewValue), b = null, e.skipToggle = !0, s(function() {
17085                                             e.skipToggle = !1
17086                                         }, 1))
17087                                     });
17088                                     var b
17089                                 }
17090                         }
17091                     }
17092                 }
17093                 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], t.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
17094             }(),
17095             function() {
17096                 function e(e) {
17097                     function t(e) {
17098                         return {
17099                             restrict: "A",
17100                             link: function(t, i, o) {
17101                                 i.css("touch-action", o.mdSwipeTouchAction || "none");
17102                                 var a = e(o[n]);
17103                                 i.on(r, function(e) {
17104                                     t.$applyAsync(function() {
17105                                         a(t, {
17106                                             $event: e
17107                                         })
17108                                     })
17109                                 })
17110                             }
17111                         }
17112                     }
17113                     t.$inject = ["$parse"];
17114                     var n = "md" + e,
17115                         r = "$md." + e.toLowerCase();
17116                     return t
17117                 }
17118                 t.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
17119             }(), t.module("material.components.tabs", ["material.core", "material.components.icon"]),
17120             function() {
17121                 function e(e) {
17122                     return {
17123                         restrict: "E",
17124                         link: function(t, n) {
17125                             n.addClass("_md"), t.$on("$destroy", function() {
17126                                 e.destroy()
17127                             })
17128                         }
17129                     }
17130                 }
17131
17132                 function n(e) {
17133                     function n(e) {
17134                         i = e
17135                     }
17136
17137                     function r(e, n, r, o) {
17138                         function a(e) {
17139                             return o("gt-xs") ? "md-toast-open-" + (e.indexOf("top") > -1 ? "top" : "bottom") : "md-toast-open-bottom"
17140                         }
17141                         var s = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
17142                         return {
17143                             onShow: function(t, c, l) {
17144                                 i = l.textContent || l.content;
17145                                 var u = !o("gt-sm");
17146                                 return c = r.extractElementByName(c, "md-toast", !0), l.element = c, l.onSwipe = function(e, t) {
17147                                     var i = e.type.replace("$md.", ""),
17148                                         o = i.replace("swipe", "");
17149                                     "down" === o && -1 != l.position.indexOf("top") && !u || "up" === o && (-1 != l.position.indexOf("bottom") || u) || ("left" !== o && "right" !== o || !u) && (c.addClass("md-" + i), r.nextTick(n.cancel))
17150                                 }, l.openClass = a(l.position), c.addClass(l.toastClass), l.parent.addClass(l.openClass), r.hasComputedStyle(l.parent, "position", "static") && l.parent.css("position", "relative"), c.on(s, l.onSwipe), c.addClass(u ? "md-bottom" : l.position.split(" ").map(function(e) {
17151                                     return "md-" + e
17152                                 }).join(" ")), l.parent && l.parent.addClass("md-toast-animating"), e.enter(c, l.parent).then(function() {
17153                                     l.parent && l.parent.removeClass("md-toast-animating")
17154                                 })
17155                             },
17156                             onRemove: function(t, n, i) {
17157                                 return n.off(s, i.onSwipe), i.parent && i.parent.addClass("md-toast-animating"), i.openClass && i.parent.removeClass(i.openClass), (1 == i.$destroy ? n.remove() : e.leave(n)).then(function() {
17158                                     i.parent && i.parent.removeClass("md-toast-animating"), r.hasComputedStyle(i.parent, "position", "static") && i.parent.css("position", "")
17159                                 })
17160                             },
17161                             toastClass: "",
17162                             position: "bottom left",
17163                             themable: !0,
17164                             hideDelay: 3e3,
17165                             autoWrap: !0,
17166                             transformTemplate: function(e, n) {
17167                                 if (n.autoWrap && e && !/md-toast-content/g.test(e)) {
17168                                     var r = document.createElement("md-template");
17169                                     r.innerHTML = e;
17170                                     for (var i = 0; i < r.children.length; i++)
17171                                         if ("MD-TOAST" === r.children[i].nodeName) {
17172                                             var o = t.element('<div class="md-toast-content">');
17173                                             o.append(t.element(r.children[i].childNodes)), r.children[i].appendChild(o[0])
17174                                         }
17175                                     return r.innerHTML
17176                                 }
17177                                 return e || ""
17178                             }
17179                         }
17180                     }
17181                     r.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia"];
17182                     var i;
17183                     return e("$mdToast").setDefaults({
17184                         methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
17185                         options: r
17186                     }).addPreset("simple", {
17187                         argOption: "textContent",
17188                         methods: ["textContent", "content", "action", "highlightAction", "highlightClass", "theme", "parent"],
17189                         options: ["$mdToast", "$mdTheming", function(e, t) {
17190                             return {
17191                                 template: '<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}">  <div class="md-toast-content">    <span class="md-toast-text" role="alert" aria-relevant="all" aria-atomic="true">      {{ toast.content }}    </span>    <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()"         ng-class="highlightClasses">      {{ toast.action }}    </md-button>  </div></md-toast>',
17192                                 controller: ["$scope", function(t) {
17193                                     var n = this;
17194                                     n.highlightAction && (t.highlightClasses = ["md-highlight", n.highlightClass]), t.$watch(function() {
17195                                         return i
17196                                     }, function() {
17197                                         n.content = i
17198                                     }), this.resolve = function() {
17199                                         e.hide("ok")
17200                                     }
17201                                 }],
17202                                 theme: t.defaultTheme(),
17203                                 controllerAs: "toast",
17204                                 bindToController: !0
17205                             }
17206                         }]
17207                     }).addMethod("updateTextContent", n).addMethod("updateContent", n)
17208                 }
17209                 e.$inject = ["$mdToast"], n.$inject = ["$$interimElementProvider"], t.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", n)
17210             }(),
17211             function() {
17212                 function e(e, n, r, i, o) {
17213                     var a = t.bind(null, r.supplant, "translate3d(0,{0}px,0)");
17214                     return {
17215                         template: "",
17216                         restrict: "E",
17217                         link: function(s, c, l) {
17218                             c.addClass("_md"), i(c), r.nextTick(function() {
17219                                 c.addClass("_md-toolbar-transitions")
17220                             }, !1), t.isDefined(l.mdScrollShrink) && function() {
17221                                 function i(e, t) {
17222                                     t && c.parent()[0] === t.parent()[0] && (p && p.off("scroll", y), p = t, m = d())
17223                                 }
17224
17225                                 function u(e) {
17226                                     var t = e ? e.target.scrollTop : v;
17227                                     $(), g = Math.min(h / b, Math.max(0, g + t - v)), c.css(n.CSS.TRANSFORM, a([-g * b])), p.css(n.CSS.TRANSFORM, a([(h - g) * b])), v = t, r.nextTick(function() {
17228                                         var e = c.hasClass("md-whiteframe-z1");
17229                                         e && !g ? o.removeClass(c, "md-whiteframe-z1") : !e && g && o.addClass(c, "md-whiteframe-z1")
17230                                     })
17231                                 }
17232
17233                                 function d() {
17234                                     return p ? (p.on("scroll", y), p.attr("scroll-shrink", "true"), r.nextTick(f, !1), function() {
17235                                         p.off("scroll", y), p.attr("scroll-shrink", "false"), f()
17236                                     }) : t.noop
17237                                 }
17238
17239                                 function f() {
17240                                     var e = -(h = c.prop("offsetHeight")) * b + "px";
17241                                     p.css({
17242                                         "margin-top": e,
17243                                         "margin-bottom": e
17244                                     }), u()
17245                                 }
17246                                 var h, p, m = t.noop,
17247                                     g = 0,
17248                                     v = 0,
17249                                     b = l.mdShrinkSpeedFactor || .5,
17250                                     y = e.throttle(u),
17251                                     $ = r.debounce(f, 5e3);
17252                                 s.$on("$mdContentLoaded", i), l.$observe("mdScrollShrink", function(e) {
17253                                     var t = c.parent().find("md-content");
17254                                     !p && t.length && i(0, t), !1 === (e = s.$eval(e)) ? m() : m = d()
17255                                 }), l.ngShow && s.$watch(l.ngShow, f), l.ngHide && s.$watch(l.ngHide, f), s.$on("$destroy", m)
17256                             }()
17257                         }
17258                     }
17259                 }
17260                 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], t.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
17261             }(),
17262             function() {
17263                 function n(e, n, r, i, o, a, s, c) {
17264                     var l = "focus touchstart mouseenter",
17265                         u = "blur touchcancel mouseleave",
17266                         d = 100,
17267                         f = 0,
17268                         h = "bottom",
17269                         p = {
17270                             top: {
17271                                 x: s.xPosition.CENTER,
17272                                 y: s.yPosition.ABOVE
17273                             },
17274                             right: {
17275                                 x: s.xPosition.OFFSET_END,
17276                                 y: s.yPosition.CENTER
17277                             },
17278                             bottom: {
17279                                 x: s.xPosition.CENTER,
17280                                 y: s.yPosition.BELOW
17281                             },
17282                             left: {
17283                                 x: s.xPosition.OFFSET_START,
17284                                 y: s.yPosition.CENTER
17285                             }
17286                         };
17287                     return {
17288                         restrict: "E",
17289                         priority: 210,
17290                         scope: {
17291                             mdZIndex: "=?mdZIndex",
17292                             mdDelay: "=?mdDelay",
17293                             mdVisible: "=?mdVisible",
17294                             mdAutohide: "=?mdAutohide",
17295                             mdDirection: "@?mdDirection"
17296                         },
17297                         link: function(m, g, v) {
17298                             function b() {
17299                                 m.mdZIndex = m.mdZIndex || d, m.mdDelay = m.mdDelay || f, p[m.mdDirection] || (m.mdDirection = h)
17300                             }
17301
17302                             function y(e) {
17303                                 var t = e || o(g.text().trim())(m.$parent);
17304                                 (!D.attr("aria-label") && !D.attr("aria-labelledby") || D.attr("md-labeled-by-tooltip")) && (D.attr("aria-label", t), D.attr("md-labeled-by-tooltip") || D.attr("md-labeled-by-tooltip", O))
17305                             }
17306
17307                             function $() {
17308                                 b(), M && M.panelEl && M.panelEl.removeClass(x), x = "md-origin-" + m.mdDirection, k = p[m.mdDirection], T = s.newPanelPosition().relativeTo(D).addPanelPosition(k.x, k.y), M && M.panelEl && (M.panelEl.addClass(x), M.updatePosition(T))
17309                             }
17310
17311                             function _(t) {
17312                                 _.queued && _.value === !!t || !_.queued && m.mdVisible === !!t || (_.value = !!t, _.queued || (t ? (_.queued = !0, A = e(function() {
17313                                     m.mdVisible = _.value, _.queued = !1, A = null, m.visibleWatcher || w(m.mdVisible)
17314                                 }, m.mdDelay)) : a.nextTick(function() {
17315                                     m.mdVisible = !1, m.visibleWatcher || w(!1)
17316                                 })))
17317                             }
17318
17319                             function w(e) {
17320                                 e ? E() : C()
17321                             }
17322
17323                             function E() {
17324                                 if (!g[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
17325                                 if (!M) {
17326                                     var e = t.element(document.body),
17327                                         n = s.newPanelAnimation().openFrom(D).closeTo(D).withAnimation({
17328                                             open: "md-show",
17329                                             close: "md-hide"
17330                                         }),
17331                                         r = {
17332                                             id: O,
17333                                             attachTo: e,
17334                                             contentElement: g,
17335                                             propagateContainerEvents: !0,
17336                                             panelClass: "md-tooltip " + x,
17337                                             animation: n,
17338                                             position: T,
17339                                             zIndex: m.mdZIndex,
17340                                             focusOnOpen: !1
17341                                         };
17342                                     M = s.create(r)
17343                                 }
17344                                 M.open().then(function() {
17345                                     M.panelEl.attr("role", "tooltip")
17346                                 })
17347                             }
17348
17349                             function C() {
17350                                 M && M.close()
17351                             }
17352                             var x, k, T, M, S, A, O = "md-tooltip-" + a.nextUid(),
17353                                 D = a.getParentWithPointerEvents(g),
17354                                 N = r.throttle($),
17355                                 I = !1,
17356                                 R = null;
17357                             b(), y(), g.detach(), $(),
17358                                 function() {
17359                                     function t(e) {
17360                                         return e.some(function(e) {
17361                                             return "disabled" === e.attributeName && D[0].disabled
17362                                         }), !1
17363                                     }
17364
17365                                     function r() {
17366                                         _(!1)
17367                                     }
17368
17369                                     function o() {
17370                                         R = document.activeElement === D[0]
17371                                     }
17372
17373                                     function s(e) {
17374                                         "focus" === e.type && R ? R = !1 : m.mdVisible || (D.on(u, d), _(!0), "touchstart" === e.type && D.one("touchend", function() {
17375                                             a.nextTick(function() {
17376                                                 i.one("touchend", d)
17377                                             }, !1)
17378                                         }))
17379                                     }
17380
17381                                     function d() {
17382                                         ((S = m.hasOwnProperty("mdAutohide") ? m.mdAutohide : v.hasOwnProperty("mdAutohide")) || I || i[0].activeElement !== D[0]) && (A && (e.cancel(A), _.queued = !1, A = null), D.off(u, d), D.triggerHandler("blur"), _(!1)), I = !1
17383                                     }
17384
17385                                     function f() {
17386                                         I = !0
17387                                     }
17388                                     if (D[0] && "MutationObserver" in n) {
17389                                         var h = new MutationObserver(function(e) {
17390                                             t(e) && a.nextTick(function() {
17391                                                 _(!1)
17392                                             })
17393                                         });
17394                                         h.observe(D[0], {
17395                                             attributes: !0
17396                                         })
17397                                     }
17398                                     R = !1, c.register("scroll", r, !0), c.register("blur", o), c.register("resize", N), m.$on("$destroy", function() {
17399                                         c.deregister("scroll", r, !0), c.deregister("blur", o), c.deregister("resize", N), D.off(l, s).off(u, d).off("mousedown", f), d(), h && h.disconnect()
17400                                     }), D.on("mousedown", f), D.on(l, s)
17401                                 }(),
17402                                 function() {
17403                                     function e() {
17404                                         m.$destroy()
17405                                     }
17406                                     if (g[0] && "MutationObserver" in n) {
17407                                         var t = new MutationObserver(function(e) {
17408                                             e.forEach(function(e) {
17409                                                 "md-visible" !== e.attributeName || m.visibleWatcher || (m.visibleWatcher = m.$watch("mdVisible", w))
17410                                             })
17411                                         });
17412                                         t.observe(g[0], {
17413                                             attributes: !0
17414                                         }), v.hasOwnProperty("mdVisible") && (m.visibleWatcher = m.$watch("mdVisible", w))
17415                                     } else m.visibleWatcher = m.$watch("mdVisible", w);
17416                                     m.$watch("mdDirection", $), g.one("$destroy", e), D.one("$destroy", e), m.$on("$destroy", function() {
17417                                         _(!1), M && M.destroy(), t && t.disconnect(), g.remove()
17418                                     }), g.text().indexOf(o.startSymbol()) > -1 && m.$watch(function() {
17419                                         return g.text().trim()
17420                                     }, y)
17421                                 }()
17422                         }
17423                     }
17424                 }
17425                 n.$inject = ["$timeout", "$window", "$$rAF", "$document", "$interpolate", "$mdUtil", "$mdPanel", "$$mdTooltipRegistry"], t.module("material.components.tooltip", ["material.core", "material.components.panel"]).directive("mdTooltip", n).service("$$mdTooltipRegistry", function() {
17426                     function n(e) {
17427                         r[e.type] && r[e.type].forEach(function(t) {
17428                             t.call(this, e)
17429                         }, this)
17430                     }
17431                     var r = {},
17432                         i = t.element(e);
17433                     return {
17434                         register: function(t, o, a) {
17435                             var s = r[t] = r[t] || [];
17436                             s.length || (a ? e.addEventListener(t, n, !0) : i.on(t, n)), -1 === s.indexOf(o) && s.push(o)
17437                         },
17438                         deregister: function(t, o, a) {
17439                             var s = r[t],
17440                                 c = s ? s.indexOf(o) : -1;
17441                             c > -1 && (s.splice(c, 1), 0 === s.length && (a ? e.removeEventListener(t, n, !0) : i.off(t, n)))
17442                         }
17443                     }
17444                 })
17445             }(),
17446             function() {
17447                 function e(e) {
17448                     e.addClass("md-truncate")
17449                 }
17450                 e.$inject = ["$element"], t.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
17451                     return {
17452                         restrict: "AE",
17453                         controller: e,
17454                         controllerAs: "$ctrl",
17455                         bindToController: !0
17456                     }
17457                 })
17458             }(),
17459             function() {
17460                 function e(e) {
17461                     return '<div class="md-virtual-repeat-scroller"><div class="md-virtual-repeat-sizer"></div><div class="md-virtual-repeat-offsetter">' + e[0].innerHTML + "</div></div>"
17462                 }
17463
17464                 function n(e, n, r, i, o, a, s, c, l) {
17465                     this.$rootScope = o, this.$scope = s, this.$element = c, this.$attrs = l, this.size = 0, this.scrollSize = 0, this.scrollOffset = 0, this.horizontal = this.$attrs.hasOwnProperty("mdOrientHorizontal"), this.repeater = null, this.autoShrink = this.$attrs.hasOwnProperty("mdAutoShrink"), this.autoShrinkMin = parseInt(this.$attrs.mdAutoShrinkMin, 10) || 0, this.originalSize = null, this.offsetSize = parseInt(this.$attrs.mdOffsetSize, 10) || 0, this.oldElementSize = null, this.maxElementPixels = r.ELEMENT_MAX_PIXELS, this.$attrs.mdTopIndex ? (this.bindTopIndex = i(this.$attrs.mdTopIndex), this.topIndex = this.bindTopIndex(this.$scope), t.isDefined(this.topIndex) || (this.topIndex = 0, this.bindTopIndex.assign(this.$scope, 0)), this.$scope.$watch(this.bindTopIndex, t.bind(this, function(e) {
17466                         e !== this.topIndex && this.scrollToIndex(e)
17467                     }))) : this.topIndex = 0, this.scroller = c[0].querySelector(".md-virtual-repeat-scroller"), this.sizer = this.scroller.querySelector(".md-virtual-repeat-sizer"), this.offsetter = this.scroller.querySelector(".md-virtual-repeat-offsetter");
17468                     var u = t.bind(this, this.updateSize);
17469                     e(t.bind(this, function() {
17470                         u();
17471                         var e = n.debounce(u, 10, null, !1),
17472                             r = t.element(a);
17473                         this.size || e(), r.on("resize", e), s.$on("$destroy", function() {
17474                             r.off("resize", e)
17475                         }), s.$emit("$md-resize-enable"), s.$on("$md-resize", u)
17476                     }))
17477                 }
17478
17479                 function r(e) {
17480                     return {
17481                         controller: i,
17482                         priority: 1e3,
17483                         require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
17484                         restrict: "A",
17485                         terminal: !0,
17486                         transclude: "element",
17487                         compile: function(t, n) {
17488                             var r = n.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
17489                                 i = r[1],
17490                                 o = e(r[2]),
17491                                 a = n.mdExtraName && e(n.mdExtraName);
17492                             return function(e, t, n, r, s) {
17493                                 r[0].link_(r[1], s, i, o, a)
17494                             }
17495                         }
17496                     }
17497                 }
17498
17499                 function i(e, n, r, i, o, a, s, c) {
17500                     this.$scope = e, this.$element = n, this.$attrs = r, this.$browser = i, this.$document = o, this.$rootScope = a, this.$$rAF = s, this.onDemand = c.parseAttributeBoolean(r.mdOnDemand), this.browserCheckUrlChange = i.$$checkUrlChange, this.newStartIndex = 0, this.newEndIndex = 0, this.newVisibleEnd = 0, this.startIndex = 0, this.endIndex = 0, this.itemSize = e.$eval(r.mdItemSize) || null, this.isFirstRender = !0, this.isVirtualRepeatUpdating_ = !1, this.itemsLength = 0, this.unwatchItemSize_ = t.noop, this.blocks = {}, this.pooledBlocks = [], e.$on("$destroy", t.bind(this, this.cleanupBlocks_))
17501                 }
17502
17503                 function o(e) {
17504                     if (!t.isFunction(e.getItemAtIndex) || !t.isFunction(e.getLength)) throw Error("When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement functions getItemAtIndex() and getLength() ");
17505                     this.model = e
17506                 }
17507                 n.$inject = ["$$rAF", "$mdUtil", "$mdConstant", "$parse", "$rootScope", "$window", "$scope", "$element", "$attrs"], i.$inject = ["$scope", "$element", "$attrs", "$browser", "$document", "$rootScope", "$$rAF", "$mdUtil"], r.$inject = ["$parse"], t.module("material.components.virtualRepeat", ["material.core", "material.components.showHide"]).directive("mdVirtualRepeatContainer", function() {
17508                     return {
17509                         controller: n,
17510                         template: e,
17511                         compile: function(e, t) {
17512                             e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
17513                         }
17514                     }
17515                 }).directive("mdVirtualRepeat", r);
17516                 n.prototype.register = function(e) {
17517                     this.repeater = e, t.element(this.scroller).on("scroll wheel touchmove touchend", t.bind(this, this.handleScroll_))
17518                 }, n.prototype.isHorizontal = function() {
17519                     return this.horizontal
17520                 }, n.prototype.getSize = function() {
17521                     return this.size
17522                 }, n.prototype.setSize_ = function(e) {
17523                     var t = this.getDimensionName_();
17524                     this.size = e, this.$element[0].style[t] = e + "px"
17525                 }, n.prototype.unsetSize_ = function() {
17526                     this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
17527                 }, n.prototype.updateSize = function() {
17528                     this.originalSize || (this.size = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight, this.handleScroll_(), this.repeater && this.repeater.containerUpdated())
17529                 }, n.prototype.getScrollSize = function() {
17530                     return this.scrollSize
17531                 }, n.prototype.getDimensionName_ = function() {
17532                     return this.isHorizontal() ? "width" : "height"
17533                 }, n.prototype.sizeScroller_ = function(e) {
17534                     var t = this.getDimensionName_(),
17535                         n = this.isHorizontal() ? "height" : "width";
17536                     if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
17537                     else {
17538                         this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
17539                         var r = Math.floor(e / this.maxElementPixels),
17540                             i = document.createElement("div");
17541                         i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
17542                         for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
17543                         i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
17544                     }
17545                 }, n.prototype.autoShrink_ = function(e) {
17546                     var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
17547                     if (this.autoShrink && t !== this.size) {
17548                         null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
17549                         var n = this.originalSize || this.size;
17550                         if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
17551                         else if (null !== this.originalSize) {
17552                             this.unsetSize_();
17553                             var r = this.originalSize;
17554                             this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
17555                         }
17556                         this.repeater.containerUpdated()
17557                     }
17558                 }, n.prototype.setScrollSize = function(e) {
17559                     var t = e + this.offsetSize;
17560                     this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
17561                 }, n.prototype.getScrollOffset = function() {
17562                     return this.scrollOffset
17563                 }, n.prototype.scrollTo = function(e) {
17564                     this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
17565                 }, n.prototype.scrollToIndex = function(e) {
17566                     var t = this.repeater.getItemSize(),
17567                         n = this.repeater.itemsLength;
17568                     e > n && (e = n - 1), this.scrollTo(t * e)
17569                 }, n.prototype.resetScroll = function() {
17570                     this.scrollTo(0)
17571                 }, n.prototype.handleScroll_ = function() {
17572                     var e = "rtl" != document.dir && "rtl" != document.body.dir;
17573                     e || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
17574                     var t = this.isHorizontal() ? e ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
17575                     if (!(t === this.scrollOffset || t > this.scrollSize - this.size)) {
17576                         var n = this.repeater.getItemSize();
17577                         if (n) {
17578                             var r = Math.max(0, Math.floor(t / n) - 3),
17579                                 i = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || e ? r * n : -r * n) + "px)";
17580                             if (this.scrollOffset = t, this.offsetter.style.webkitTransform = i, this.offsetter.style.transform = i, this.bindTopIndex) {
17581                                 var o = Math.floor(t / n);
17582                                 o !== this.topIndex && o < this.repeater.getItemCount() && (this.topIndex = o, this.bindTopIndex.assign(this.$scope, o), this.$rootScope.$$phase || this.$scope.$digest())
17583                             }
17584                             this.repeater.containerUpdated()
17585                         }
17586                     }
17587                 }, i.prototype.link_ = function(e, n, r, i, o) {
17588                     this.container = e, this.transclude = n, this.repeatName = r, this.rawRepeatListExpression = i, this.extraName = o, this.sized = !1, this.repeatListExpression = t.bind(this, this.repeatListExpression_), this.container.register(this)
17589                 }, i.prototype.cleanupBlocks_ = function() {
17590                     t.forEach(this.pooledBlocks, function(e) {
17591                         e.element.remove()
17592                     })
17593                 }, i.prototype.readItemSize_ = function() {
17594                     if (!this.itemSize) {
17595                         this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
17596                         var e = this.getBlock_(0);
17597                         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()
17598                     }
17599                 }, i.prototype.repeatListExpression_ = function(e) {
17600                     var t = this.rawRepeatListExpression(e);
17601                     if (this.onDemand && t) {
17602                         var n = new o(t);
17603                         return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
17604                     }
17605                     return t
17606                 }, i.prototype.containerUpdated = function() {
17607                     if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== t.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e) {
17608                         e && e.length && this.readItemSize_()
17609                     })), void(this.$rootScope.$$phase || this.$scope.$digest());
17610                     this.sized || (this.items = this.repeatListExpression(this.$scope)), this.sized || (this.unwatchItemSize_(), this.sized = !0, this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e, t) {
17611                         this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
17612                     }))), this.updateIndexes_(), (this.newStartIndex !== this.startIndex || this.newEndIndex !== this.endIndex || this.container.getScrollOffset() > this.container.getScrollSize()) && (this.items instanceof o && this.items.$$includeIndexes(this.newStartIndex, this.newEndIndex), this.virtualRepeatUpdate_(this.items, this.items))
17613                 }, i.prototype.getItemSize = function() {
17614                     return this.itemSize
17615                 }, i.prototype.getItemCount = function() {
17616                     return this.itemsLength
17617                 }, i.prototype.virtualRepeatUpdate_ = function(e, n) {
17618                     this.isVirtualRepeatUpdating_ = !0;
17619                     var r = e && e.length || 0,
17620                         i = !1;
17621                     if (this.items && r < this.items.length && 0 !== this.container.getScrollOffset()) {
17622                         this.items = e;
17623                         var o = this.container.getScrollOffset();
17624                         this.container.resetScroll(), this.container.scrollTo(o)
17625                     }
17626                     r !== this.itemsLength && (i = !0, this.itemsLength = r), this.items = e, (e !== n || i) && this.updateIndexes_(), this.parentNode = this.$element[0].parentNode, i && this.container.setScrollSize(r * this.itemSize);
17627                     var a, s = !1;
17628                     this.isFirstRender && (s = !0, this.isFirstRender = !1, a = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex, this.container.scrollToIndex(a)), Object.keys(this.blocks).forEach(function(e) {
17629                         var t = parseInt(e, 10);
17630                         (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
17631                     }, this), this.$browser.$$checkUrlChange = t.noop;
17632                     var c, l, u = [],
17633                         d = [];
17634                     for (c = this.newStartIndex; c < this.newEndIndex && null == this.blocks[c]; c++) l = this.getBlock_(c), this.updateBlock_(l, c), u.push(l);
17635                     for (; null != this.blocks[c]; c++) this.updateBlock_(this.blocks[c], c);
17636                     for (var f = c - 1; c < this.newEndIndex; c++) l = this.getBlock_(c), this.updateBlock_(l, c), d.push(l);
17637                     u.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(u), this.$element[0].nextSibling), d.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(d), this.blocks[f] && this.blocks[f].element[0].nextSibling), s && this.container.scrollToIndex(a), this.$browser.$$checkUrlChange = this.browserCheckUrlChange, this.startIndex = this.newStartIndex, this.endIndex = this.newEndIndex, this.isVirtualRepeatUpdating_ = !1
17638                 }, i.prototype.getBlock_ = function(e) {
17639                     if (this.pooledBlocks.length) return this.pooledBlocks.pop();
17640                     var n;
17641                     return this.transclude(t.bind(this, function(t, r) {
17642                         n = {
17643                             element: t,
17644                             new: !0,
17645                             scope: r
17646                         }, this.updateScope_(r, e), this.parentNode.appendChild(t[0])
17647                     })), n
17648                 }, i.prototype.updateBlock_ = function(e, t) {
17649                     this.blocks[t] = e, (e.new || e.scope.$index !== t || e.scope[this.repeatName] !== this.items[t]) && (e.new = !1, this.updateScope_(e.scope, t), this.$rootScope.$$phase || e.scope.$digest())
17650                 }, i.prototype.updateScope_ = function(e, t) {
17651                     e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
17652                 }, i.prototype.poolBlock_ = function(e) {
17653                     this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
17654                 }, i.prototype.domFragmentFromBlocks_ = function(e) {
17655                     var t = this.$document[0].createDocumentFragment();
17656                     return e.forEach(function(e) {
17657                         t.appendChild(e.element[0])
17658                     }), t
17659                 }, i.prototype.updateIndexes_ = function() {
17660                     var e = this.items ? this.items.length : 0,
17661                         t = Math.ceil(this.container.getSize() / this.itemSize);
17662                     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)
17663                 }, o.prototype.$$includeIndexes = function(e, t) {
17664                     for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
17665                     this.length = this.model.getLength()
17666                 }
17667             }(),
17668             function() {
17669                 function e(e) {
17670                     var t = -1,
17671                         n = 1,
17672                         r = 24,
17673                         i = 4;
17674                     return {
17675                         link: function(o, a, s) {
17676                             var c = "";
17677                             s.$observe("mdWhiteframe", function(o) {
17678                                 (o = parseInt(o, 10) || i) != t && (o > r || o < n) && (e.warn("md-whiteframe attribute value is invalid. It should be a number between " + n + " and " + r, a[0]), o = i);
17679                                 var l = o == t ? "" : "md-whiteframe-" + o + "dp";
17680                                 s.$updateClass(l, c), c = l
17681                             })
17682                         }
17683                     }
17684                 }
17685                 e.$inject = ["$log"], t.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
17686             }(),
17687             function() {
17688                 function e(e, s, c, l, u, d, f, h, p, m, g, v) {
17689                     function b() {
17690                         e.requireMatch && ye && ye.$setValidity("md-require-match", !!e.selectedItem || !e.searchText)
17691                     }
17692
17693                     function y() {
17694                         if (!fe) return c.nextTick(y, !1, e);
17695                         var t, n = (e.dropdownItems || i) * r,
17696                             l = fe.wrap.getBoundingClientRect(),
17697                             u = fe.snap.getBoundingClientRect(),
17698                             d = fe.root.getBoundingClientRect(),
17699                             f = u.bottom - d.top,
17700                             h = d.bottom - u.top,
17701                             m = l.left - d.left,
17702                             g = l.width,
17703                             v = function() {
17704                                 var e = 0,
17705                                     t = s.find("md-input-container");
17706                                 if (t.length) {
17707                                     var n = t.find("input");
17708                                     e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
17709                                 }
17710                                 return e
17711                             }(),
17712                             b = e.dropdownPosition;
17713                         if (b || (b = f > h && d.height - f - o < n ? "top" : "bottom"), p.mdFloatingLabel && (m += a, g -= 2 * a), t = {
17714                                 left: m + "px",
17715                                 minWidth: g + "px",
17716                                 maxWidth: Math.max(l.right - d.left, d.right - l.left) - o + "px"
17717                             }, "top" === b) t.top = "auto", t.bottom = h + "px", t.maxHeight = Math.min(n, l.top - d.top - o) + "px";
17718                         else {
17719                             var $ = d.bottom - l.bottom - o + c.getViewportTop();
17720                             t.top = f - v + "px", t.bottom = "auto", t.maxHeight = Math.min(n, $) + "px"
17721                         }
17722                         fe.$.scrollContainer.css(t), c.nextTick(function() {
17723                             var e = fe.scrollContainer.getBoundingClientRect(),
17724                                 t = {};
17725                             e.right > d.right - o && (t.left = l.right - e.width + "px"), fe.$.scrollContainer.css(t)
17726                         }, !1)
17727                     }
17728
17729                     function $() {
17730                         fe.$.root.length && (u(fe.$.scrollContainer), fe.$.scrollContainer.detach(), fe.$.root.append(fe.$.scrollContainer), f.pin && f.pin(fe.$.scrollContainer, h))
17731                     }
17732
17733                     function _() {
17734                         fe.input.focus()
17735                     }
17736
17737                     function w() {
17738                         var n = parseInt(e.delay, 10) || 0;
17739                         p.$observe("disabled", function(e) {
17740                             le.isDisabled = c.parseAttributeBoolean(e, !1)
17741                         }), p.$observe("required", function(e) {
17742                             le.isRequired = c.parseAttributeBoolean(e, !1)
17743                         }), p.$observe("readonly", function(e) {
17744                             le.isReadonly = c.parseAttributeBoolean(e, !1)
17745                         }), e.$watch("searchText", n ? c.debounce(N, n) : N), e.$watch("selectedItem", S), t.element(d).on("resize", $e), e.$on("$destroy", E)
17746                     }
17747
17748                     function E() {
17749                         if (le.hidden || c.enableScrolling(), t.element(d).off("resize", $e), fe) {
17750                             var e = ["ul", "scroller", "scrollContainer", "input"];
17751                             t.forEach(e, function(e) {
17752                                 fe.$[e].remove()
17753                             })
17754                         }
17755                     }
17756
17757                     function C() {
17758                         var e = x();
17759                         (fe = {
17760                             main: s[0],
17761                             scrollContainer: s[0].querySelector(".md-virtual-repeat-container"),
17762                             scroller: s[0].querySelector(".md-virtual-repeat-scroller"),
17763                             ul: s.find("ul")[0],
17764                             input: s.find("input")[0],
17765                             wrap: e.wrap,
17766                             snap: e.snap,
17767                             root: document.body
17768                         }).li = fe.ul.getElementsByTagName("li"), fe.$ = k(fe), ye = fe.$.input.controller("ngModel")
17769                     }
17770
17771                     function x() {
17772                         var e, n;
17773                         for (e = s; e.length && (n = e.attr("md-autocomplete-snap"), !t.isDefined(n)); e = e.parent());
17774                         if (e.length) return {
17775                             snap: e[0],
17776                             wrap: "width" === n.toLowerCase() ? e[0] : s.find("md-autocomplete-wrap")[0]
17777                         };
17778                         var r = s.find("md-autocomplete-wrap")[0];
17779                         return {
17780                             snap: r,
17781                             wrap: r
17782                         }
17783                     }
17784
17785                     function k(e) {
17786                         var n = {};
17787                         for (var r in e) e.hasOwnProperty(r) && (n[r] = t.element(e[r]));
17788                         return n
17789                     }
17790
17791                     function T(e) {
17792                         function t(e) {
17793                             e.preventDefault()
17794                         }
17795                         return e.on("wheel", t), e.on("touchmove", t),
17796                             function() {
17797                                 e.off("wheel", t), e.off("touchmove", t)
17798                             }
17799                     }
17800
17801                     function M() {
17802                         ge || le.hidden || fe.input.focus(), pe = !1, le.hidden = F()
17803                     }
17804
17805                     function S(n, r) {
17806                         b(), n ? P(n).then(function(t) {
17807                             e.searchText = t, D(n, r)
17808                         }) : r && e.searchText && P(r).then(function(n) {
17809                             t.isString(e.searchText) && n.toString().toLowerCase() === e.searchText.toLowerCase() && (e.searchText = "")
17810                         }), n !== r && A()
17811                     }
17812
17813                     function A() {
17814                         t.isFunction(e.itemChange) && e.itemChange(H(e.selectedItem))
17815                     }
17816
17817                     function O() {
17818                         t.isFunction(e.textChange) && e.textChange()
17819                     }
17820
17821                     function D(e, t) {
17822                         me.forEach(function(n) {
17823                             n(e, t)
17824                         })
17825                     }
17826
17827                     function N(t, n) {
17828                         le.index = j(), t !== n && (b(), P(e.selectedItem).then(function(r) {
17829                             t !== r && (e.selectedItem = null, t !== n && O(), G() ? oe() : (le.matches = [], L(!1), J(!1, _e.Count)))
17830                         }))
17831                     }
17832
17833                     function I(e) {
17834                         e && (pe = !1, ge = !1), fe.input.blur()
17835                     }
17836
17837                     function R() {
17838                         return t.isNumber(e.minLength) ? e.minLength : 1
17839                     }
17840
17841                     function P(n) {
17842                         return m.when(function(t) {
17843                             return t && e.itemText ? e.itemText(H(t)) : null
17844                         }(n) || n).then(function(e) {
17845                             return e && !t.isString(e) && g.warn("md-autocomplete: Could not resolve display value to a string. Please check the `md-item-text` attribute."), e
17846                         })
17847                     }
17848
17849                     function H(e) {
17850                         if (!e) return n;
17851                         var t = {};
17852                         return le.itemName && (t[le.itemName] = e), t
17853                     }
17854
17855                     function j() {
17856                         return e.autoselect ? 0 : -1
17857                     }
17858
17859                     function L(e) {
17860                         le.loading != e && (le.loading = e), le.hidden = F()
17861                     }
17862
17863                     function F() {
17864                         return !q() || !B()
17865                     }
17866
17867                     function q() {
17868                         return !(le.loading && !z()) && (!W() && !!ge)
17869                     }
17870
17871                     function U() {
17872                         return V("blur") || !le.hidden || le.loading || V("clear") && e.searchText
17873                     }
17874
17875                     function V(t) {
17876                         return !e.escapeOptions || -1 !== e.escapeOptions.toLowerCase().indexOf(t)
17877                     }
17878
17879                     function B() {
17880                         return G() && z() || ie()
17881                     }
17882
17883                     function z() {
17884                         return !!le.matches.length
17885                     }
17886
17887                     function W() {
17888                         return !!le.scope.selectedItem
17889                     }
17890
17891                     function Y() {
17892                         return P(le.matches[le.index])
17893                     }
17894
17895                     function G() {
17896                         return (e.searchText || "").length >= R()
17897                     }
17898
17899                     function K(t) {
17900                         c.nextTick(function() {
17901                             P(le.matches[t]).then(function(e) {
17902                                 var t = fe.$.input.controller("ngModel");
17903                                 t.$setViewValue(e), t.$render()
17904                             }).finally(function() {
17905                                 e.selectedItem = le.matches[t], L(!1)
17906                             })
17907                         }, !1)
17908                     }
17909
17910                     function Z() {
17911                         le.index = 0, le.matches = []
17912                     }
17913
17914                     function X() {
17915                         L(!0), e.searchText = "";
17916                         var t = document.createEvent("CustomEvent");
17917                         t.initCustomEvent("change", !0, !0, {
17918                             value: ""
17919                         }), fe.input.dispatchEvent(t), fe.input.blur(), e.searchText = "", fe.input.focus()
17920                     }
17921
17922                     function Q(n) {
17923                         function r(t) {
17924                             he[o] = t, (n || "") === (e.searchText || "") && ae(t)
17925                         }
17926                         var i = e.$parent.$eval(de),
17927                             o = n.toLowerCase(),
17928                             a = t.isArray(i),
17929                             s = !!i.then;
17930                         a ? r(i) : s && function(t) {
17931                             t && (t = m.when(t), ve++, L(!0), c.nextTick(function() {
17932                                 t.then(r).finally(function() {
17933                                     0 == --ve && L(!1)
17934                                 })
17935                             }, !0, e))
17936                         }(i)
17937                     }
17938
17939                     function J(e, t) {
17940                         var n = e ? "polite" : "assertive",
17941                             r = [];
17942                         t & _e.Selected && -1 !== le.index && r.push(Y()), t & _e.Count && r.push(m.resolve(ee())), m.all(r).then(function(e) {
17943                             v.announce(e.join(" "), n)
17944                         })
17945                     }
17946
17947                     function ee() {
17948                         switch (le.matches.length) {
17949                             case 0:
17950                                 return "There are no matches available.";
17951                             case 1:
17952                                 return "There is 1 match available.";
17953                             default:
17954                                 return "There are " + le.matches.length + " matches available."
17955                         }
17956                     }
17957
17958                     function te() {
17959                         if (fe.li[0]) {
17960                             var e = fe.li[0].offsetHeight,
17961                                 t = e * le.index,
17962                                 n = t + e,
17963                                 r = fe.scroller.clientHeight,
17964                                 i = fe.scroller.scrollTop;
17965                             t < i ? re(t) : n > i + r && re(n - r)
17966                         }
17967                     }
17968
17969                     function ne() {
17970                         return 0 !== ve
17971                     }
17972
17973                     function re(e) {
17974                         fe.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
17975                     }
17976
17977                     function ie() {
17978                         var e = (le.scope.searchText || "").length;
17979                         return le.hasNotFound && !z() && (!le.loading || ne()) && e >= R() && (ge || pe) && !W()
17980                     }
17981
17982                     function oe() {
17983                         var t = e.searchText || "",
17984                             n = t.toLowerCase();
17985                         !e.noCache && he[n] ? ae(he[n]) : Q(t), le.hidden = F()
17986                     }
17987
17988                     function ae(t) {
17989                         le.matches = t, le.hidden = F(), le.loading && L(!1), e.selectOnMatch && se(), y(), J(!0, _e.Count)
17990                     }
17991
17992                     function se() {
17993                         var t = e.searchText,
17994                             n = le.matches,
17995                             r = n[0];
17996                         1 === n.length && P(r).then(function(n) {
17997                             var r = t == n;
17998                             e.matchInsensitive && !r && (r = t.toLowerCase() == n.toLowerCase()), r && K(0)
17999                         })
18000                     }
18001
18002                     function ce(t, n) {
18003                         p[t] && e.$parent.$eval(p[t], n || {})
18004                     }
18005                     var le = this,
18006                         ue = e.itemsExpr.split(/ in /i),
18007                         de = ue[1],
18008                         fe = null,
18009                         he = {},
18010                         pe = !1,
18011                         me = [],
18012                         ge = !1,
18013                         ve = 0,
18014                         be = null,
18015                         ye = null,
18016                         $e = c.debounce(function() {
18017                             le.hidden || y()
18018                         });
18019                     ! function(e, t, n) {
18020                         Object.defineProperty(le, e, {
18021                             get: function() {
18022                                 return n
18023                             },
18024                             set: function(e) {
18025                                 var r = n;
18026                                 n = e, t(e, r)
18027                             }
18028                         })
18029                     }("hidden", function(e, n) {
18030                         !e && n ? (y(), J(!0, _e.Count | _e.Selected), fe && (c.disableScrollAround(fe.ul), be = T(t.element(fe.wrap)))) : e && !n && (c.enableScrolling(), be && (be(), be = null))
18031                     }, !0), le.scope = e, le.parent = e.$parent, le.itemName = ue[0], le.matches = [], le.loading = !1, le.hidden = !0, le.index = null, le.id = c.nextUid(), le.isDisabled = null, le.isRequired = null, le.isReadonly = null, le.hasNotFound = !1, le.keydown = function(t) {
18032                         switch (t.keyCode) {
18033                             case l.KEY_CODE.DOWN_ARROW:
18034                                 if (le.loading) return;
18035                                 t.stopPropagation(), t.preventDefault(), le.index = Math.min(le.index + 1, le.matches.length - 1), te(), J(!1, _e.Selected);
18036                                 break;
18037                             case l.KEY_CODE.UP_ARROW:
18038                                 if (le.loading) return;
18039                                 t.stopPropagation(), t.preventDefault(), le.index = le.index < 0 ? le.matches.length - 1 : Math.max(0, le.index - 1), te(), J(!1, _e.Selected);
18040                                 break;
18041                             case l.KEY_CODE.TAB:
18042                                 if (M(), le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
18043                                 K(le.index);
18044                                 break;
18045                             case l.KEY_CODE.ENTER:
18046                                 if (le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
18047                                 if (W()) return;
18048                                 t.stopPropagation(), t.preventDefault(), K(le.index);
18049                                 break;
18050                             case l.KEY_CODE.ESCAPE:
18051                                 if (t.preventDefault(), !U()) return;
18052                                 t.stopPropagation(), Z(), e.searchText && V("clear") && X(), le.hidden = !0, V("blur") && I(!0)
18053                         }
18054                     }, le.blur = function(e) {
18055                         ge = !1, pe || (le.hidden = F(), ce("ngBlur", {
18056                             $event: e
18057                         }))
18058                     }, le.focus = function(e) {
18059                         ge = !0, q() && G() && oe(), le.hidden = F(), ce("ngFocus", {
18060                             $event: e
18061                         })
18062                     }, le.clear = function() {
18063                         Z(), X()
18064                     }, le.select = K, le.listEnter = function() {
18065                         pe = !0
18066                     }, le.listLeave = M, le.mouseUp = function() {
18067                         fe.input.focus()
18068                     }, le.getCurrentDisplayValue = Y, le.registerSelectedItemWatcher = function(e) {
18069                         -1 == me.indexOf(e) && me.push(e)
18070                     }, le.unregisterSelectedItemWatcher = function(e) {
18071                         var t = me.indexOf(e); - 1 != t && me.splice(t, 1)
18072                     }, le.notFoundVisible = ie, le.loadingIsVisible = function() {
18073                         return le.loading && !W()
18074                     }, le.positionDropdown = y;
18075                     var _e = {
18076                         Count: 1,
18077                         Selected: 2
18078                     };
18079                     return c.initOptionalProperties(e, p, {
18080                         searchText: "",
18081                         selectedItem: null,
18082                         clearButton: !1
18083                     }), u(s), w(), void c.nextTick(function() {
18084                         C(), $(), e.autofocus && s.on("focus", _)
18085                     })
18086                 }
18087                 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], t.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
18088                 var r = 48,
18089                     i = 5,
18090                     o = 8,
18091                     a = 2
18092             }(),
18093             function() {
18094                 function e(e) {
18095                     return {
18096                         controller: "MdAutocompleteCtrl",
18097                         controllerAs: "$mdAutocompleteCtrl",
18098                         scope: {
18099                             inputName: "@mdInputName",
18100                             inputMinlength: "@mdInputMinlength",
18101                             inputMaxlength: "@mdInputMaxlength",
18102                             searchText: "=?mdSearchText",
18103                             selectedItem: "=?mdSelectedItem",
18104                             itemsExpr: "@mdItems",
18105                             itemText: "&mdItemText",
18106                             placeholder: "@placeholder",
18107                             noCache: "=?mdNoCache",
18108                             requireMatch: "=?mdRequireMatch",
18109                             selectOnMatch: "=?mdSelectOnMatch",
18110                             matchInsensitive: "=?mdMatchCaseInsensitive",
18111                             itemChange: "&?mdSelectedItemChange",
18112                             textChange: "&?mdSearchTextChange",
18113                             minLength: "=?mdMinLength",
18114                             delay: "=?mdDelay",
18115                             autofocus: "=?mdAutofocus",
18116                             floatingLabel: "@?mdFloatingLabel",
18117                             autoselect: "=?mdAutoselect",
18118                             menuClass: "@?mdMenuClass",
18119                             inputId: "@?mdInputId",
18120                             escapeOptions: "@?mdEscapeOptions",
18121                             dropdownItems: "=?mdDropdownItems",
18122                             dropdownPosition: "@?mdDropdownPosition",
18123                             clearButton: "=?mdClearButton"
18124                         },
18125                         compile: function(e, n) {
18126                             var r = ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"],
18127                                 i = e.find("input");
18128                             return r.forEach(function(e) {
18129                                     var t = n[n.$normalize(e)];
18130                                     null !== t && i.attr(e, t)
18131                                 }),
18132                                 function(e, n, r, i) {
18133                                     i.hasNotFound = !!n.attr("md-has-not-found"), t.isDefined(r.mdClearButton) || e.floatingLabel || (e.clearButton = !0)
18134                                 }
18135                         },
18136                         template: function(t, n) {
18137                             var r = function() {
18138                                     var e = t.find("md-not-found").detach(),
18139                                         n = e.length ? e.html() : "";
18140                                     return n ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()"                         md-autocomplete-parent-scope>' + n + "</li>" : ""
18141                                 }(),
18142                                 i = function() {
18143                                     var e = t.find("md-item-template").detach(),
18144                                         n = e.length ? e.html() : t.html();
18145                                     return e.length || t.empty(), "<md-autocomplete-parent-scope md-autocomplete-replace>" + n + "</md-autocomplete-parent-scope>"
18146                                 }(),
18147                                 o = t.html(),
18148                                 a = n.tabindex;
18149                             return r && t.attr("md-has-not-found", !0), t.attr("tabindex", "-1"), "        <md-autocomplete-wrap            ng-class=\"{ 'md-whiteframe-z1': !floatingLabel,                         'md-menu-showing': !$mdAutocompleteCtrl.hidden,                         'md-show-clear-button': !!clearButton }\">          " + (n.mdFloatingLabel ? '            <md-input-container ng-if="floatingLabel">              <label>{{floatingLabel}}</label>              <input type="search"                  ' + (null != a ? 'tabindex="' + a + '"' : "") + '                  id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}"                  name="{{inputName}}"                  autocomplete="off"                  ng-required="$mdAutocompleteCtrl.isRequired"                  ng-readonly="$mdAutocompleteCtrl.isReadonly"                  ng-minlength="inputMinlength"                  ng-maxlength="inputMaxlength"                  ng-disabled="$mdAutocompleteCtrl.isDisabled"                  ng-model="$mdAutocompleteCtrl.scope.searchText"                  ng-model-options="{ allowInvalid: true }"                  ng-keydown="$mdAutocompleteCtrl.keydown($event)"                  ng-blur="$mdAutocompleteCtrl.blur($event)"                  ng-focus="$mdAutocompleteCtrl.focus($event)"                  aria-owns="ul-{{$mdAutocompleteCtrl.id}}"                  aria-label="{{floatingLabel}}"                  aria-autocomplete="list"                  role="combobox"                  aria-haspopup="true"                  aria-activedescendant=""                  aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>              <div md-autocomplete-parent-scope md-autocomplete-replace>' + o + "</div>            </md-input-container>" : '            <input type="search"                ' + (null != a ? 'tabindex="' + a + '"' : "") + '                id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}"                name="{{inputName}}"                ng-if="!floatingLabel"                autocomplete="off"                ng-required="$mdAutocompleteCtrl.isRequired"                ng-disabled="$mdAutocompleteCtrl.isDisabled"                ng-readonly="$mdAutocompleteCtrl.isReadonly"                ng-minlength="inputMinlength"                ng-maxlength="inputMaxlength"                ng-model="$mdAutocompleteCtrl.scope.searchText"                ng-keydown="$mdAutocompleteCtrl.keydown($event)"                ng-blur="$mdAutocompleteCtrl.blur($event)"                ng-focus="$mdAutocompleteCtrl.focus($event)"                placeholder="{{placeholder}}"                aria-owns="ul-{{$mdAutocompleteCtrl.id}}"                aria-label="{{placeholder}}"                aria-autocomplete="list"                role="combobox"                aria-haspopup="true"                aria-activedescendant=""                aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>') + '          <button type="button" aria-label="Clear Input" tabindex="-1" ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText && !$mdAutocompleteCtrl.isDisabled" ng-click="$mdAutocompleteCtrl.clear($event)"><md-icon md-svg-src="' + e.mdClose + '"></md-icon></button>          <md-progress-linear              class="' + (n.mdFloatingLabel ? "md-inline" : "") + '"              ng-if="$mdAutocompleteCtrl.loadingIsVisible()"              md-mode="indeterminate"></md-progress-linear>          <md-virtual-repeat-container              md-auto-shrink              md-auto-shrink-min="1"              ng-mouseenter="$mdAutocompleteCtrl.listEnter()"              ng-mouseleave="$mdAutocompleteCtrl.listLeave()"              ng-mouseup="$mdAutocompleteCtrl.mouseUp()"              ng-hide="$mdAutocompleteCtrl.hidden"              class="md-autocomplete-suggestions-container md-whiteframe-z1"              ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }"              role="presentation">            <ul class="md-autocomplete-suggestions"                ng-class="::menuClass"                id="ul-{{$mdAutocompleteCtrl.id}}">              <li md-virtual-repeat="item in $mdAutocompleteCtrl.matches"                  ng-class="{ selected: $index === $mdAutocompleteCtrl.index }"                  ng-click="$mdAutocompleteCtrl.select($index)"                  md-extra-name="$mdAutocompleteCtrl.itemName">                  ' + i + "                  </li>" + r + "            </ul>          </md-virtual-repeat-container>        </md-autocomplete-wrap>"
18150                         }
18151                     }
18152                 }
18153                 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.autocomplete").directive("mdAutocomplete", e)
18154             }(),
18155             function() {
18156                 function e(e, t) {
18157                     return {
18158                         restrict: "AE",
18159                         compile: function(e, n, r) {
18160                             return function(e, n, i) {
18161                                 function o(n, r) {
18162                                     s[r] = e[n], e.$watch(n, function(e) {
18163                                         t.nextTick(function() {
18164                                             s[r] = e
18165                                         })
18166                                     })
18167                                 }
18168                                 var a = e.$mdAutocompleteCtrl,
18169                                     s = a.parent.$new(),
18170                                     c = a.itemName;
18171                                 o("$index", "$index"), o("item", c),
18172                                     function() {
18173                                         var t = !1,
18174                                             n = !1;
18175                                         e.$watch(function() {
18176                                             n || t || (t = !0, e.$$postDigest(function() {
18177                                                 n || s.$digest(), t = n = !1
18178                                             }))
18179                                         }), s.$watch(function() {
18180                                             n = !0
18181                                         })
18182                                     }(), r(s, function(e) {
18183                                         n.after(e)
18184                                     })
18185                             }
18186                         },
18187                         terminal: !0,
18188                         transclude: "element"
18189                     }
18190                 }
18191                 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
18192             }(),
18193             function() {
18194                 function e(e, t, n) {
18195                     this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
18196                 }
18197                 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(e, t) {
18198                     this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(n) {
18199                         return {
18200                             term: e(n),
18201                             contentText: t(n)
18202                         }
18203                     }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
18204                 }, e.prototype.onRender = function(e, t) {
18205                     var n = e.contentText;
18206                     null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
18207                 }, e.prototype.applyRegex = function(e) {
18208                     var n = this.resolveTokens(e);
18209                     this.$element.empty(), n.forEach(function(e) {
18210                         if (e.isMatch) {
18211                             var n = t.element('<span class="highlight">').text(e.text);
18212                             this.$element.append(n)
18213                         } else this.$element.append(document.createTextNode(e))
18214                     }.bind(this))
18215                 }, e.prototype.resolveTokens = function(e) {
18216                     function t(t, r) {
18217                         var i = e.slice(t, r);
18218                         i && n.push(i)
18219                     }
18220                     var n = [],
18221                         r = 0;
18222                     return e.replace(this.regex, function(e, i) {
18223                         t(r, i), n.push({
18224                             text: e,
18225                             isMatch: !0
18226                         }), r = i + e.length
18227                     }), t(r), n
18228                 }, e.prototype.createRegex = function(e, t) {
18229                     var n = "",
18230                         r = "",
18231                         i = this.sanitizeRegex(e);
18232                     return t.indexOf("^") >= 0 && (n = "^"), t.indexOf("$") >= 0 && (r = "$"), new RegExp(n + i + r, t.replace(/[$\^]/g, ""))
18233                 }, e.prototype.sanitizeRegex = function(e) {
18234                     return e && e.toString().replace(/[\\\^\$\*\+\?\.\(\)\|\{}\[\]]/g, "\\$&")
18235                 }
18236             }(),
18237             function() {
18238                 function e(e, t) {
18239                     return {
18240                         terminal: !0,
18241                         controller: "MdHighlightCtrl",
18242                         compile: function(n, r) {
18243                             var i = t(r.mdHighlightText),
18244                                 o = e(n.html());
18245                             return function(e, t, n, r) {
18246                                 r.init(i, o)
18247                             }
18248                         }
18249                     }
18250                 }
18251                 e.$inject = ["$interpolate", "$parse"], t.module("material.components.autocomplete").directive("mdHighlightText", e)
18252             }(),
18253             function() {
18254                 function r(e, t, r, i, o) {
18255                     this.$scope = e, this.$element = t, this.$mdConstant = r, this.$timeout = i, this.$mdUtil = o, this.isEditting = !1, this.parentController = n, this.enableChipEdit = !1
18256                 }
18257                 r.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], t.module("material.components.chips").controller("MdChipCtrl", r), r.prototype.init = function(e) {
18258                     this.parentController = e, this.enableChipEdit = this.parentController.enableChipEdit, this.enableChipEdit && (this.$element.on("keydown", this.chipKeyDown.bind(this)), this.$element.on("mousedown", this.chipMouseDown.bind(this)), this.getChipContent().addClass("_md-chip-content-edit-is-enabled"))
18259                 }, r.prototype.getChipContent = function() {
18260                     var e = this.$element[0].getElementsByClassName("md-chip-content");
18261                     return t.element(e[0])
18262                 }, r.prototype.getContentElement = function() {
18263                     return t.element(this.getChipContent().children()[0])
18264                 }, r.prototype.getChipIndex = function() {
18265                     return parseInt(this.$element.attr("index"))
18266                 }, r.prototype.goOutOfEditMode = function() {
18267                     if (this.isEditting) {
18268                         this.isEditting = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
18269                         var e = this.getChipIndex();
18270                         this.getContentElement().text() ? (this.parentController.updateChipContents(e, this.getContentElement().text()), this.$mdUtil.nextTick(function() {
18271                             this.parentController.selectedChip === e && this.parentController.focusChip(e)
18272                         }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
18273                     }
18274                 }, r.prototype.selectNodeContents = function(t) {
18275                     var n, r;
18276                     document.body.createTextRange ? ((n = document.body.createTextRange()).moveToElementText(t), n.select()) : e.getSelection && (r = e.getSelection(), (n = document.createRange()).selectNodeContents(t), r.removeAllRanges(), r.addRange(n))
18277                 }, r.prototype.goInEditMode = function() {
18278                     this.isEditting = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
18279                         this.goOutOfEditMode()
18280                     }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
18281                 }, r.prototype.chipKeyDown = function(e) {
18282                     this.isEditting || e.keyCode !== this.$mdConstant.KEY_CODE.ENTER && e.keyCode !== this.$mdConstant.KEY_CODE.SPACE ? this.isEditting && e.keyCode === this.$mdConstant.KEY_CODE.ENTER && (e.preventDefault(), this.goOutOfEditMode()) : (e.preventDefault(), this.goInEditMode())
18283                 }, r.prototype.chipMouseDown = function() {
18284                     this.getChipIndex() == this.parentController.selectedChip && this.enableChipEdit && !this.isEditting && this.goInEditMode()
18285                 }
18286             }(),
18287             function() {
18288                 function e(e, r, i, o) {
18289                     var a = r.processTemplate(n);
18290                     return {
18291                         restrict: "E",
18292                         require: ["^?mdChips", "mdChip"],
18293                         link: function(n, r, s, c) {
18294                             var l = c.shift(),
18295                                 u = c.shift(),
18296                                 d = t.element(r[0].querySelector(".md-chip-content"));
18297                             e(r), l && (u.init(l), d.append(i(a)(n)), d.on("blur", function() {
18298                                 l.resetSelectedChip(), l.$scope.$applyAsync()
18299                             })), o(function() {
18300                                 l && l.shouldFocusLastChip && l.focusLastChipThenInput()
18301                             })
18302                         },
18303                         controller: "MdChipCtrl"
18304                     }
18305                 }
18306                 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], t.module("material.components.chips").directive("mdChip", e);
18307                 var n = '    <span ng-if="!$mdChipsCtrl.readonly" class="md-visually-hidden">      {{$mdChipsCtrl.deleteHint}}    </span>'
18308             }(),
18309             function() {
18310                 function e(e) {
18311                     return {
18312                         restrict: "A",
18313                         require: "^mdChips",
18314                         scope: !1,
18315                         link: function(t, n, r, i) {
18316                             n.on("click", function(e) {
18317                                 t.$apply(function() {
18318                                     i.removeChip(t.$$replacedScope.$index)
18319                                 })
18320                             }), e(function() {
18321                                 n.attr({
18322                                     tabindex: -1,
18323                                     "aria-hidden": !0
18324                                 }), n.find("button").attr("tabindex", "-1")
18325                             })
18326                         }
18327                     }
18328                 }
18329                 e.$inject = ["$timeout"], t.module("material.components.chips").directive("mdChipRemove", e)
18330             }(),
18331             function() {
18332                 function e(e) {
18333                     return {
18334                         restrict: "EA",
18335                         terminal: !0,
18336                         link: function(t, n, r) {
18337                             var i = t.$parent.$mdChipsCtrl,
18338                                 o = i.parent.$new(!1, i.parent);
18339                             o.$$replacedScope = t, o.$chip = t.$chip, o.$index = t.$index, o.$mdChipsCtrl = i;
18340                             var a = i.$scope.$eval(r.mdChipTransclude);
18341                             n.html(a), e(n.contents())(o)
18342                         },
18343                         scope: !1
18344                     }
18345                 }
18346                 e.$inject = ["$compile"], t.module("material.components.chips").directive("mdChipTransclude", e)
18347             }(),
18348             function() {
18349                 function e(e, t, r, i, o, a, s) {
18350                     this.$timeout = a, this.$mdConstant = r, this.$scope = e, this.parent = e.$parent, this.$mdUtil = s, this.$log = i, this.$element = o, this.$attrs = t, this.ngModelCtrl = null, this.userInputNgModelCtrl = null, this.autocompleteCtrl = null, this.userInputElement = null, this.items = [], this.selectedChip = -1, this.enableChipEdit = s.parseAttributeBoolean(t.mdEnableChipEdit), this.addOnBlur = s.parseAttributeBoolean(t.mdAddOnBlur), this.inputAriaLabel = "Chips input.", this.containerHint = "Chips container. Use arrow keys to select chips.", this.deleteHint = "Press delete to remove this chip.", this.deleteButtonLabel = "Remove", this.chipBuffer = "", this.useTransformChip = !1, this.useOnAdd = !1, this.useOnRemove = !1, this.wrapperId = "", this.contentIds = [], this.ariaTabIndex = null, this.chipAppendDelay = n, this.init()
18351                 }
18352                 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil"];
18353                 var n = 300;
18354                 t.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
18355                     var e = this;
18356                     e.wrapperId = "_md-chips-wrapper-" + e.$mdUtil.nextUid(), e.$scope.$watchCollection("$mdChipsCtrl.items", function() {
18357                         e.setupInputAria(), e.setupWrapperAria()
18358                     }), e.$attrs.$observe("mdChipAppendDelay", function(t) {
18359                         e.chipAppendDelay = parseInt(t) || n
18360                     })
18361                 }, e.prototype.setupInputAria = function() {
18362                     var e = this.$element.find("input");
18363                     e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0))
18364                 }, e.prototype.setupWrapperAria = function() {
18365                     var e = this,
18366                         t = this.$element.find("md-chips-wrap");
18367                     this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
18368                         return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
18369                     }), t.attr("aria-owns", this.contentIds.join(" "))) : (t.removeAttr("role"), t.removeAttr("aria-owns"))
18370                 }, e.prototype.inputKeydown = function(e) {
18371                     var t = this.getChipBuffer();
18372                     if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
18373                         if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
18374                             if (0 !== this.getCursorPosition(e.target)) return;
18375                             return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
18376                         }
18377                         if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
18378                             if (this.autocompleteCtrl && this.requireMatch || !t) return;
18379                             if (e.preventDefault(), this.hasMaxChipsReached()) return;
18380                             return this.appendChip(t.trim()), this.resetChipBuffer(), !1
18381                         }
18382                     }
18383                 }, e.prototype.getCursorPosition = function(e) {
18384                     try {
18385                         if (e.selectionStart === e.selectionEnd) return e.selectionStart
18386                     } catch (t) {
18387                         if (!e.value) return 0
18388                     }
18389                 }, e.prototype.updateChipContents = function(e, t) {
18390                     e >= 0 && e < this.items.length && (this.items[e] = t, this.ngModelCtrl.$setDirty())
18391                 }, e.prototype.isEditingChip = function() {
18392                     return !!this.$element[0].querySelector("._md-chip-editing")
18393                 }, e.prototype.isRemovable = function() {
18394                     return !!this.ngModelCtrl && (this.readonly ? this.removable : !t.isDefined(this.removable) || this.removable)
18395                 }, e.prototype.chipKeydown = function(e) {
18396                     if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
18397                         case this.$mdConstant.KEY_CODE.BACKSPACE:
18398                         case this.$mdConstant.KEY_CODE.DELETE:
18399                             if (this.selectedChip < 0) return;
18400                             if (e.preventDefault(), !this.isRemovable()) return;
18401                             this.removeAndSelectAdjacentChip(this.selectedChip);
18402                             break;
18403                         case this.$mdConstant.KEY_CODE.LEFT_ARROW:
18404                             e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 == this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
18405                             break;
18406                         case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
18407                             e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
18408                             break;
18409                         case this.$mdConstant.KEY_CODE.ESCAPE:
18410                         case this.$mdConstant.KEY_CODE.TAB:
18411                             if (this.selectedChip < 0) return;
18412                             e.preventDefault(), this.onFocus()
18413                     }
18414                 }, e.prototype.getPlaceholder = function() {
18415                     return this.items && this.items.length && ("" == this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
18416                 }, e.prototype.removeAndSelectAdjacentChip = function(e) {
18417                     var t = this,
18418                         n = t.getAdjacentChipIndex(e);
18419                     this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
18420                     t.removeChip(e), t.$timeout(function() {
18421                         t.$timeout(function() {
18422                             t.selectAndFocusChipSafe(n)
18423                         })
18424                     })
18425                 }, e.prototype.resetSelectedChip = function() {
18426                     this.selectedChip = -1, this.ariaTabIndex = null
18427                 }, e.prototype.getAdjacentChipIndex = function(e) {
18428                     var t = this.items.length - 1;
18429                     return 0 == t ? -1 : e == t ? e - 1 : e
18430                 }, e.prototype.appendChip = function(e) {
18431                     if (this.shouldFocusLastChip = !0, this.useTransformChip && this.transformChip) {
18432                         var n = this.transformChip({
18433                             $chip: e
18434                         });
18435                         t.isDefined(n) && (e = n)
18436                     }
18437                     if (!(t.isObject(e) && this.items.some(function(n) {
18438                             return t.equals(e, n)
18439                         }) || null == e || this.items.indexOf(e) + 1)) {
18440                         var r = this.items.push(e) - 1;
18441                         this.ngModelCtrl.$setDirty(), this.validateModel(), this.useOnAdd && this.onAdd && this.onAdd({
18442                             $chip: e,
18443                             $index: r
18444                         })
18445                     }
18446                 }, e.prototype.useTransformChipExpression = function() {
18447                     this.useTransformChip = !0
18448                 }, e.prototype.useOnAddExpression = function() {
18449                     this.useOnAdd = !0
18450                 }, e.prototype.useOnRemoveExpression = function() {
18451                     this.useOnRemove = !0
18452                 }, e.prototype.useOnSelectExpression = function() {
18453                     this.useOnSelect = !0
18454                 }, e.prototype.getChipBuffer = function() {
18455                     var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
18456                     return t.isString(e) ? e : ""
18457                 }, e.prototype.resetChipBuffer = function() {
18458                     this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
18459                 }, e.prototype.hasMaxChipsReached = function() {
18460                     return t.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), this.maxChips > 0 && this.items.length >= this.maxChips
18461                 }, e.prototype.validateModel = function() {
18462                     this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached())
18463                 }, e.prototype.removeChip = function(e) {
18464                     var t = this.items.splice(e, 1);
18465                     this.ngModelCtrl.$setDirty(), this.validateModel(), t && t.length && this.useOnRemove && this.onRemove && this.onRemove({
18466                         $chip: t[0],
18467                         $index: e
18468                     })
18469                 }, e.prototype.removeChipAndFocusInput = function(e) {
18470                     this.removeChip(e), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
18471                 }, e.prototype.selectAndFocusChipSafe = function(e) {
18472                     if (!this.items.length || -1 === e) return this.focusInput();
18473                     if (e >= this.items.length) {
18474                         if (!this.readonly) return this.onFocus();
18475                         e = 0
18476                     }
18477                     e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
18478                 }, e.prototype.focusLastChipThenInput = function() {
18479                     var e = this;
18480                     e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
18481                         e.focusInput()
18482                     }, e.chipAppendDelay)
18483                 }, e.prototype.focusInput = function() {
18484                     this.selectChip(-1), this.onFocus()
18485                 }, e.prototype.selectChip = function(e) {
18486                     e >= -1 && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
18487                         $chip: this.items[e]
18488                     })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
18489                 }, e.prototype.selectAndFocusChip = function(e) {
18490                     this.selectChip(e), -1 != e && this.focusChip(e)
18491                 }, e.prototype.focusChip = function(e) {
18492                     var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
18493                     this.ariaTabIndex = e, t.focus()
18494                 }, e.prototype.configureNgModel = function(e) {
18495                     this.ngModelCtrl = e;
18496                     var t = this;
18497                     e.$render = function() {
18498                         t.items = t.ngModelCtrl.$viewValue
18499                     }
18500                 }, e.prototype.onFocus = function() {
18501                     var e = this.$element[0].querySelector("input");
18502                     e && e.focus(), this.resetSelectedChip()
18503                 }, e.prototype.onInputFocus = function() {
18504                     this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
18505                 }, e.prototype.onInputBlur = function() {
18506                     this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
18507                 }, e.prototype.configureUserInput = function(e) {
18508                     this.userInputElement = e;
18509                     var n = e.controller("ngModel");
18510                     n != this.ngModelCtrl && (this.userInputNgModelCtrl = n);
18511                     var r = this.$scope,
18512                         i = this,
18513                         o = function(e, n) {
18514                             r.$evalAsync(t.bind(i, n, e))
18515                         };
18516                     e.attr({
18517                         tabindex: 0
18518                     }).on("keydown", function(e) {
18519                         o(e, i.inputKeydown)
18520                     }).on("focus", function(e) {
18521                         o(e, i.onInputFocus)
18522                     }).on("blur", function(e) {
18523                         o(e, i.onInputBlur)
18524                     })
18525                 }, e.prototype.configureAutocomplete = function(e) {
18526                     e && (this.autocompleteCtrl = e, e.registerSelectedItemWatcher(t.bind(this, function(e) {
18527                         if (e) {
18528                             if (this.hasMaxChipsReached()) return;
18529                             this.appendChip(e), this.resetChipBuffer()
18530                         }
18531                     })), this.$element.find("input").on("focus", t.bind(this, this.onInputFocus)).on("blur", t.bind(this, this.onInputBlur)))
18532                 }, e.prototype.shouldAddOnBlur = function() {
18533                     this.validateModel();
18534                     var e = this.getChipBuffer().trim(),
18535                         t = this.ngModelCtrl.$valid,
18536                         n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
18537                     return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
18538                 }, e.prototype.hasFocus = function() {
18539                     return this.inputHasFocus || this.selectedChip >= 0
18540                 }, e.prototype.contentIdFor = function(e) {
18541                     return this.contentIds[e]
18542                 }
18543             }(),
18544             function() {
18545                 function e(e, t, a, s, c, l) {
18546                     var u = {
18547                         chips: t.processTemplate(n),
18548                         input: t.processTemplate(r),
18549                         default: t.processTemplate(i),
18550                         remove: t.processTemplate(o)
18551                     };
18552                     return {
18553                         template: function(e, t) {
18554                             return t.$mdUserTemplate = e.clone(), u.chips
18555                         },
18556                         require: ["mdChips"],
18557                         restrict: "E",
18558                         controller: "MdChipsCtrl",
18559                         controllerAs: "$mdChipsCtrl",
18560                         bindToController: !0,
18561                         compile: function(n, r) {
18562                             function i(e) {
18563                                 if (r.ngModel) {
18564                                     var t = o[0].querySelector(e);
18565                                     return t && t.outerHTML
18566                                 }
18567                             }
18568                             var o = r.$mdUserTemplate;
18569                             r.$mdUserTemplate = null;
18570                             var d = i("md-chips>md-chip-template"),
18571                                 f = i(t.prefixer().buildList("md-chip-remove").map(function(e) {
18572                                     return "md-chips>*[" + e + "]"
18573                                 }).join(",")) || u.remove,
18574                                 h = d || u.default,
18575                                 p = i("md-chips>md-autocomplete") || i("md-chips>input") || u.input,
18576                                 m = o.find("md-chip");
18577                             return o[0].querySelector("md-chip-template>*[md-chip-remove]") && s.warn("invalid placement of md-chip-remove within md-chip-template."),
18578                                 function(n, i, o, s) {
18579                                     t.initOptionalProperties(n, r), e(i);
18580                                     var g = s[0];
18581                                     if (d && (g.enableChipEdit = !1), g.chipContentsTemplate = h, g.chipRemoveTemplate = f, g.chipInputTemplate = p, g.mdCloseIcon = l.mdClose, i.attr({
18582                                             tabindex: -1
18583                                         }).on("focus", function() {
18584                                             g.onFocus()
18585                                         }), r.ngModel && (g.configureNgModel(i.controller("ngModel")), o.mdTransformChip && g.useTransformChipExpression(), o.mdOnAppend && g.useOnAppendExpression(), o.mdOnAdd && g.useOnAddExpression(), o.mdOnRemove && g.useOnRemoveExpression(), o.mdOnSelect && g.useOnSelectExpression(), p != u.input && n.$watch("$mdChipsCtrl.readonly", function(e) {
18586                                             e || t.nextTick(function() {
18587                                                 if (0 === p.indexOf("<md-autocomplete")) {
18588                                                     var e = i.find("md-autocomplete");
18589                                                     g.configureAutocomplete(e.controller("mdAutocomplete"))
18590                                                 }
18591                                                 g.configureUserInput(i.find("input"))
18592                                             })
18593                                         }), t.nextTick(function() {
18594                                             var e = i.find("input");
18595                                             e && e.toggleClass("md-input", !0)
18596                                         })), m.length > 0) {
18597                                         var v = a(m.clone())(n.$parent);
18598                                         c(function() {
18599                                             i.find("md-chips-wrap").prepend(v)
18600                                         })
18601                                     }
18602                                 }
18603                         },
18604                         scope: {
18605                             readonly: "=readonly",
18606                             removable: "=mdRemovable",
18607                             placeholder: "@",
18608                             secondaryPlaceholder: "@",
18609                             maxChips: "@mdMaxChips",
18610                             transformChip: "&mdTransformChip",
18611                             onAppend: "&mdOnAppend",
18612                             onAdd: "&mdOnAdd",
18613                             onRemove: "&mdOnRemove",
18614                             onSelect: "&mdOnSelect",
18615                             inputAriaLabel: "@",
18616                             containerHint: "@",
18617                             deleteHint: "@",
18618                             deleteButtonLabel: "@",
18619                             separatorKeys: "=?mdSeparatorKeys",
18620                             requireMatch: "=?mdRequireMatch",
18621                             chipAppendDelayString: "@?mdChipAppendDelay"
18622                         }
18623                     }
18624                 }
18625                 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], t.module("material.components.chips").directive("mdChips", e);
18626                 var n = '      <md-chips-wrap          id="{{$mdChipsCtrl.wrapperId}}"          tabindex="{{$mdChipsCtrl.readonly ? 0 : -1}}"          ng-keydown="$mdChipsCtrl.chipKeydown($event)"          ng-class="{ \'md-focused\': $mdChipsCtrl.hasFocus(),                       \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly,                      \'md-removable\': $mdChipsCtrl.isRemovable() }"          aria-setsize="{{$mdChipsCtrl.items.length}}"          class="md-chips">        <span ng-if="$mdChipsCtrl.readonly" class="md-visually-hidden">          {{$mdChipsCtrl.containerHint}}        </span>        <md-chip ng-repeat="$chip in $mdChipsCtrl.items"            index="{{$index}}"            ng-class="{\'md-focused\': $mdChipsCtrl.selectedChip == $index, \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly}">          <div class="md-chip-content"              tabindex="{{$mdChipsCtrl.ariaTabIndex == $index ? 0 : -1}}"              id="{{$mdChipsCtrl.contentIdFor($index)}}"              role="option"              aria-selected="{{$mdChipsCtrl.selectedChip == $index}}"               aria-posinset="{{$index}}"              ng-click="!$mdChipsCtrl.readonly && $mdChipsCtrl.focusChip($index)"              ng-focus="!$mdChipsCtrl.readonly && $mdChipsCtrl.selectChip($index)"              md-chip-transclude="$mdChipsCtrl.chipContentsTemplate"></div>          <div ng-if="$mdChipsCtrl.isRemovable()"               class="md-chip-remove-container"               tabindex="-1"               md-chip-transclude="$mdChipsCtrl.chipRemoveTemplate"></div>        </md-chip>        <div class="md-chip-input-container" ng-if="!$mdChipsCtrl.readonly && $mdChipsCtrl.ngModelCtrl">          <div md-chip-transclude="$mdChipsCtrl.chipInputTemplate"></div>        </div>      </md-chips-wrap>',
18627                     r = '        <input            class="md-input"            tabindex="0"            aria-label="{{$mdChipsCtrl.inputAriaLabel}}"             placeholder="{{$mdChipsCtrl.getPlaceholder()}}"            ng-model="$mdChipsCtrl.chipBuffer"            ng-focus="$mdChipsCtrl.onInputFocus()"            ng-blur="$mdChipsCtrl.onInputBlur()"            ng-keydown="$mdChipsCtrl.inputKeydown($event)">',
18628                     i = "      <span>{{$chip}}</span>",
18629                     o = '      <button          class="md-chip-remove"          ng-if="$mdChipsCtrl.isRemovable()"          ng-click="$mdChipsCtrl.removeChipAndFocusInput($$replacedScope.$index)"          type="button"          tabindex="-1">        <md-icon md-svg-src="{{ $mdChipsCtrl.mdCloseIcon }}"></md-icon>        <span class="md-visually-hidden">          {{$mdChipsCtrl.deleteButtonLabel}}        </span>      </button>'
18630             }(),
18631             function() {
18632                 function e() {
18633                     this.selectedItem = null, this.searchText = ""
18634                 }
18635                 t.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.queryContact = function(e) {
18636                     return this.contactQuery({
18637                         $query: e
18638                     })
18639                 }, e.prototype.itemName = function(e) {
18640                     return e[this.contactName]
18641                 }
18642             }(),
18643             function() {
18644                 function e(e, t) {
18645                     return {
18646                         template: function(e, t) {
18647                             return n
18648                         },
18649                         restrict: "E",
18650                         controller: "MdContactChipsCtrl",
18651                         controllerAs: "$mdContactChipsCtrl",
18652                         bindToController: !0,
18653                         compile: function(n, r) {
18654                             return function(n, i, o, a) {
18655                                 var s = a;
18656                                 t.initOptionalProperties(n, r), e(i), i.attr("tabindex", "-1"), o.$observe("mdChipAppendDelay", function(e) {
18657                                     s.chipAppendDelay = e
18658                                 })
18659                             }
18660                         },
18661                         scope: {
18662                             contactQuery: "&mdContacts",
18663                             placeholder: "@",
18664                             secondaryPlaceholder: "@",
18665                             contactName: "@mdContactName",
18666                             contactImage: "@mdContactImage",
18667                             contactEmail: "@mdContactEmail",
18668                             contacts: "=ngModel",
18669                             requireMatch: "=?mdRequireMatch",
18670                             minLength: "=?mdMinLength",
18671                             highlightFlags: "@?mdHighlightFlags",
18672                             chipAppendDelay: "@?mdChipAppendDelay"
18673                         }
18674                     }
18675                 }
18676                 e.$inject = ["$mdTheming", "$mdUtil"], t.module("material.components.chips").directive("mdContactChips", e);
18677                 var n = '      <md-chips class="md-contact-chips"          ng-model="$mdContactChipsCtrl.contacts"          md-require-match="$mdContactChipsCtrl.requireMatch"          md-chip-append-delay="{{$mdContactChipsCtrl.chipAppendDelay}}"           md-autocomplete-snap>          <md-autocomplete              md-menu-class="md-contact-chips-suggestions"              md-selected-item="$mdContactChipsCtrl.selectedItem"              md-search-text="$mdContactChipsCtrl.searchText"              md-items="item in $mdContactChipsCtrl.queryContact($mdContactChipsCtrl.searchText)"              md-item-text="$mdContactChipsCtrl.itemName(item)"              md-no-cache="true"              md-min-length="$mdContactChipsCtrl.minLength"              md-autoselect              placeholder="{{$mdContactChipsCtrl.contacts.length == 0 ?                  $mdContactChipsCtrl.placeholder : $mdContactChipsCtrl.secondaryPlaceholder}}">            <div class="md-contact-suggestion">              <img                   ng-src="{{item[$mdContactChipsCtrl.contactImage]}}"                  alt="{{item[$mdContactChipsCtrl.contactName]}}"                  ng-if="item[$mdContactChipsCtrl.contactImage]" />              <span class="md-contact-name" md-highlight-text="$mdContactChipsCtrl.searchText"                    md-highlight-flags="{{$mdContactChipsCtrl.highlightFlags}}">                {{item[$mdContactChipsCtrl.contactName]}}              </span>              <span class="md-contact-email" >{{item[$mdContactChipsCtrl.contactEmail]}}</span>            </div>          </md-autocomplete>          <md-chip-template>            <div class="md-contact-avatar">              <img                   ng-src="{{$chip[$mdContactChipsCtrl.contactImage]}}"                  alt="{{$chip[$mdContactChipsCtrl.contactName]}}"                  ng-if="$chip[$mdContactChipsCtrl.contactImage]" />            </div>            <div class="md-contact-name">              {{$chip[$mdContactChipsCtrl.contactName]}}            </div>          </md-chip-template>      </md-chips>'
18678             }(),
18679             function() {
18680                 function e(e, n, i, o, a, s, c, l, u) {
18681                     s(e), this.$element = e, this.$scope = n, this.dateUtil = i, this.$mdUtil = o, this.keyCode = a.KEY_CODE, this.$$rAF = c, this.$mdDateLocale = u, this.today = this.dateUtil.createDateAtMidnight(), this.ngModelCtrl = null, this.SELECTED_DATE_CLASS = "md-calendar-selected-date", this.TODAY_CLASS = "md-calendar-date-today", this.FOCUSED_DATE_CLASS = "md-focus", this.id = r++, this.displayDate = null, this.selectedDate = null, this.firstRenderableDate = null, this.lastRenderableDate = null, this.isInitialized = !1, this.width = 0, this.scrollbarWidth = 0, l.tabindex || e.attr("tabindex", "-1");
18682                     var d, f = t.bind(this, this.handleKeyEvent);
18683                     (d = e.parent().hasClass("md-datepicker-calendar") ? t.element(document.body) : e).on("keydown", f), n.$on("$destroy", function() {
18684                         d.off("keydown", f)
18685                     }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
18686                 }
18687                 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendar", function() {
18688                     return {
18689                         template: function(e, t) {
18690                             return '<div ng-switch="calendarCtrl.currentView" ' + (t.hasOwnProperty("ngIf") ? "" : 'ng-if="calendarCtrl.isInitialized"') + '><md-calendar-year ng-switch-when="year"></md-calendar-year><md-calendar-month ng-switch-default></md-calendar-month></div>'
18691                         },
18692                         scope: {
18693                             minDate: "=mdMinDate",
18694                             maxDate: "=mdMaxDate",
18695                             dateFilter: "=mdDateFilter",
18696                             _currentView: "@mdCurrentView"
18697                         },
18698                         require: ["ngModel", "mdCalendar"],
18699                         controller: e,
18700                         controllerAs: "calendarCtrl",
18701                         bindToController: !0,
18702                         link: function(e, t, n, r) {
18703                             var i = r[0];
18704                             r[1].configureNgModel(i)
18705                         }
18706                     }
18707                 });
18708                 var n = 340,
18709                     r = 0;
18710                 e.prototype.$onInit = function() {
18711                     this.currentView = this._currentView || "month";
18712                     var e = this.$mdDateLocale;
18713                     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
18714                 }, e.prototype.configureNgModel = function(e) {
18715                     var t = this;
18716                     t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
18717                         t.isInitialized = !0
18718                     }), e.$render = function() {
18719                         var e = this.$viewValue;
18720                         t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
18721                     }
18722                 }, e.prototype.setNgModelValue = function(e) {
18723                     var t = this.dateUtil.createDateAtMidnight(e);
18724                     return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
18725                 }, e.prototype.setCurrentView = function(e, n) {
18726                     var r = this;
18727                     r.$mdUtil.nextTick(function() {
18728                         r.currentView = e, n && (r.displayDate = t.isDate(n) ? n : new Date(n))
18729                     })
18730                 }, e.prototype.focus = function(e) {
18731                     if (this.dateUtil.isValidDate(e)) {
18732                         var t = this.$element[0].querySelector(".md-focus");
18733                         t && t.classList.remove(this.FOCUSED_DATE_CLASS);
18734                         var n = this.getDateId(e, this.currentView),
18735                             r = document.getElementById(n);
18736                         r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
18737                     } else {
18738                         var i = this.$element[0].querySelector("[ng-switch]");
18739                         i && i.focus()
18740                     }
18741                 }, e.prototype.getActionFromKeyEvent = function(e) {
18742                     var t = this.keyCode;
18743                     switch (e.which) {
18744                         case t.ENTER:
18745                             return "select";
18746                         case t.RIGHT_ARROW:
18747                             return "move-right";
18748                         case t.LEFT_ARROW:
18749                             return "move-left";
18750                         case t.DOWN_ARROW:
18751                             return e.metaKey ? "move-page-down" : "move-row-down";
18752                         case t.UP_ARROW:
18753                             return e.metaKey ? "move-page-up" : "move-row-up";
18754                         case t.PAGE_DOWN:
18755                             return "move-page-down";
18756                         case t.PAGE_UP:
18757                             return "move-page-up";
18758                         case t.HOME:
18759                             return "start";
18760                         case t.END:
18761                             return "end";
18762                         default:
18763                             return null
18764                     }
18765                 }, e.prototype.handleKeyEvent = function(e) {
18766                     var t = this;
18767                     this.$scope.$apply(function() {
18768                         if (e.which == t.keyCode.ESCAPE || e.which == t.keyCode.TAB) return t.$scope.$emit("md-calendar-close"), void(e.which == t.keyCode.TAB && e.preventDefault());
18769                         var n = t.getActionFromKeyEvent(e);
18770                         n && (e.preventDefault(), e.stopPropagation(), t.$scope.$broadcast("md-calendar-parent-action", n))
18771                     })
18772                 }, e.prototype.hideVerticalScrollbar = function(e) {
18773                     function t() {
18774                         var t = r.width || n,
18775                             i = r.scrollbarWidth,
18776                             a = e.calendarScroller;
18777                         o.style.width = t + "px", a.style.width = t + i + "px", a.style.paddingRight = i + "px"
18778                     }
18779                     var r = this,
18780                         i = e.$element[0],
18781                         o = i.querySelector(".md-calendar-scroll-mask");
18782                     r.width > 0 ? t() : r.$$rAF(function() {
18783                         var n = e.calendarScroller;
18784                         r.scrollbarWidth = n.offsetWidth - n.clientWidth, r.width = i.querySelector("table").offsetWidth, t()
18785                     })
18786                 }, e.prototype.getDateId = function(e, t) {
18787                     if (!t) throw new Error("A namespace for the date id has to be specified.");
18788                     return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
18789                 }, e.prototype.updateVirtualRepeat = function() {
18790                     var e = this.$scope,
18791                         t = e.$on("$md-resize-enable", function() {
18792                             e.$$phase || e.$apply(), t()
18793                         })
18794                 }
18795             }(),
18796             function() {
18797                 function e(e, t, n, r, i, o) {
18798                     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;
18799                     var a = this;
18800                     this.cellClickHandler = function() {
18801                         var e = i.getTimestampFromNode(this);
18802                         a.$scope.$apply(function() {
18803                             a.calendarCtrl.setNgModelValue(e)
18804                         })
18805                     }, this.headerClickHandler = function() {
18806                         a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
18807                     }
18808                 }
18809                 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonth", function() {
18810                     return {
18811                         template: '<table aria-hidden="true" class="md-calendar-day-header"><thead></thead></table><div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container" md-offset-size="' + (r - n) + '"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-month-body role="rowgroup" md-virtual-repeat="i in monthCtrl.items" md-month-offset="$index" class="md-calendar-month" md-start-index="monthCtrl.getSelectedMonthIndex()" md-item-size="' + n + '"><tr aria-hidden="true" style="height:' + n + 'px;"></tr></tbody></table></md-virtual-repeat-container></div>',
18812                         require: ["^^mdCalendar", "mdCalendarMonth"],
18813                         controller: e,
18814                         controllerAs: "monthCtrl",
18815                         bindToController: !0,
18816                         link: function(e, t, n, r) {
18817                             var i = r[0];
18818                             r[1].initialize(i)
18819                         }
18820                     }
18821                 });
18822                 var n = 265,
18823                     r = 45;
18824                 e.prototype.initialize = function(e) {
18825                     this.items = {
18826                         length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
18827                     }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
18828                 }, e.prototype.getSelectedMonthIndex = function() {
18829                     var e = this.calendarCtrl;
18830                     return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
18831                 }, e.prototype.changeSelectedDate = function(e) {
18832                     var t = this.calendarCtrl,
18833                         n = t.selectedDate;
18834                     t.selectedDate = e, this.changeDisplayDate(e).then(function() {
18835                         var r = t.SELECTED_DATE_CLASS;
18836                         if (n) {
18837                             var i = document.getElementById(t.getDateId(n, "month"));
18838                             i && (i.classList.remove(r), i.setAttribute("aria-selected", "false"))
18839                         }
18840                         if (e) {
18841                             var o = document.getElementById(t.getDateId(e, "month"));
18842                             o && (o.classList.add(r), o.setAttribute("aria-selected", "true"))
18843                         }
18844                     })
18845                 }, e.prototype.changeDisplayDate = function(e) {
18846                     if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
18847                     if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
18848                     this.isMonthTransitionInProgress = !0;
18849                     var t = this.animateDateChange(e);
18850                     this.calendarCtrl.displayDate = e;
18851                     var n = this;
18852                     return t.then(function() {
18853                         n.isMonthTransitionInProgress = !1
18854                     }), t
18855                 }, e.prototype.animateDateChange = function(e) {
18856                     if (this.dateUtil.isValidDate(e)) {
18857                         var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
18858                         this.calendarScroller.scrollTop = t * n
18859                     }
18860                     return this.$q.when()
18861                 }, e.prototype.buildWeekHeader = function() {
18862                     for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
18863                         var i = document.createElement("th");
18864                         i.textContent = t[(r + e) % 7], n.appendChild(i)
18865                     }
18866                     this.$element.find("thead").append(n)
18867                 }, e.prototype.attachScopeListeners = function() {
18868                     var e = this;
18869                     e.$scope.$on("md-calendar-parent-changed", function(t, n) {
18870                         e.changeSelectedDate(n)
18871                     }), e.$scope.$on("md-calendar-parent-action", t.bind(this, this.handleKeyEvent))
18872                 }, e.prototype.handleKeyEvent = function(e, t) {
18873                     var n = this.calendarCtrl,
18874                         r = n.displayDate;
18875                     if ("select" === t) n.setNgModelValue(r);
18876                     else {
18877                         var i = null,
18878                             o = this.dateUtil;
18879                         switch (t) {
18880                             case "move-right":
18881                                 i = o.incrementDays(r, 1);
18882                                 break;
18883                             case "move-left":
18884                                 i = o.incrementDays(r, -1);
18885                                 break;
18886                             case "move-page-down":
18887                                 i = o.incrementMonths(r, 1);
18888                                 break;
18889                             case "move-page-up":
18890                                 i = o.incrementMonths(r, -1);
18891                                 break;
18892                             case "move-row-down":
18893                                 i = o.incrementDays(r, 7);
18894                                 break;
18895                             case "move-row-up":
18896                                 i = o.incrementDays(r, -7);
18897                                 break;
18898                             case "start":
18899                                 i = o.getFirstDateOfMonth(r);
18900                                 break;
18901                             case "end":
18902                                 i = o.getLastDateOfMonth(r)
18903                         }
18904                         i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
18905                             n.focus(i)
18906                         }))
18907                     }
18908                 }
18909             }(),
18910             function() {
18911                 function e(e, r) {
18912                     var i = e('<md-icon md-svg-src="' + r.mdTabsArrow + '"></md-icon>')({})[0];
18913                     return {
18914                         require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
18915                         scope: {
18916                             offset: "=mdMonthOffset"
18917                         },
18918                         controller: n,
18919                         controllerAs: "mdMonthBodyCtrl",
18920                         bindToController: !0,
18921                         link: function(e, n, r, o) {
18922                             var a = o[0],
18923                                 s = o[1],
18924                                 c = o[2];
18925                             c.calendarCtrl = a, c.monthCtrl = s, c.arrowIcon = i.cloneNode(!0), e.$watch(function() {
18926                                 return c.offset
18927                             }, function(e) {
18928                                 t.isNumber(e) && c.generateContent()
18929                             })
18930                         }
18931                     }
18932                 }
18933
18934                 function n(e, t, n) {
18935                     this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
18936                 }
18937                 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
18938                     var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
18939                     this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
18940                 }, n.prototype.buildDateCell = function(e) {
18941                     var t = this.monthCtrl,
18942                         n = this.calendarCtrl,
18943                         r = document.createElement("td");
18944                     if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
18945                         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"));
18946                         var i = this.dateLocale.dates[e.getDate()];
18947                         if (this.isDateEnabled(e)) {
18948                             var o = document.createElement("span");
18949                             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)
18950                         } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
18951                     }
18952                     return r
18953                 }, n.prototype.isDateEnabled = function(e) {
18954                     return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!t.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
18955                 }, n.prototype.buildDateRow = function(e) {
18956                     var t = document.createElement("tr");
18957                     return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
18958                 }, n.prototype.buildCalendarForMonth = function(e) {
18959                     var t = this.dateUtil.isValidDate(e) ? e : new Date,
18960                         n = this.dateUtil.getFirstDateOfMonth(t),
18961                         r = this.getLocaleDay_(n),
18962                         i = this.dateUtil.getNumberOfDaysInMonth(t),
18963                         o = document.createDocumentFragment(),
18964                         a = 1,
18965                         s = this.buildDateRow(a);
18966                     o.appendChild(s);
18967                     var c = this.offset === this.monthCtrl.items.length - 1,
18968                         l = 0,
18969                         u = document.createElement("td"),
18970                         d = document.createElement("span");
18971                     if (d.textContent = this.dateLocale.monthHeaderFormatter(t), u.appendChild(d), u.classList.add("md-calendar-month-label"), this.calendarCtrl.maxDate && n > this.calendarCtrl.maxDate ? u.classList.add("md-calendar-month-label-disabled") : (u.addEventListener("click", this.monthCtrl.headerClickHandler), u.setAttribute("data-timestamp", n.getTime()), u.setAttribute("aria-label", this.dateLocale.monthFormatter(t)), u.appendChild(this.arrowIcon.cloneNode(!0))), r <= 2) {
18972                         u.setAttribute("colspan", "7");
18973                         var f = this.buildDateRow();
18974                         if (f.appendChild(u), o.insertBefore(f, s), c) return o
18975                     } else l = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
18976                     for (var h = l; h < r; h++) s.appendChild(this.buildDateCell());
18977                     for (var p = r, m = n, g = 1; g <= i; g++) {
18978                         if (7 === p) {
18979                             if (c) return o;
18980                             p = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
18981                         }
18982                         m.setDate(g);
18983                         var v = this.buildDateCell(m);
18984                         s.appendChild(v), p++
18985                     }
18986                     for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
18987                     for (; o.childNodes.length < 6;) {
18988                         for (var b = this.buildDateRow(), y = 0; y < 7; y++) b.appendChild(this.buildDateCell());
18989                         o.appendChild(b)
18990                     }
18991                     return o
18992                 }, n.prototype.getLocaleDay_ = function(e) {
18993                     return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
18994                 }
18995             }(),
18996             function() {
18997                 function e(e, t, n, r, i) {
18998                     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;
18999                     var o = this;
19000                     this.cellClickHandler = function() {
19001                         o.calendarCtrl.setCurrentView("month", i.getTimestampFromNode(this))
19002                     }
19003                 }
19004                 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil"], t.module("material.components.datepicker").directive("mdCalendarYear", function() {
19005                     return {
19006                         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" style="height:' + n + 'px;"></tr></tbody></table></md-virtual-repeat-container></div>',
19007                         require: ["^^mdCalendar", "mdCalendarYear"],
19008                         controller: e,
19009                         controllerAs: "yearCtrl",
19010                         bindToController: !0,
19011                         link: function(e, t, n, r) {
19012                             var i = r[0];
19013                             r[1].initialize(i)
19014                         }
19015                     }
19016                 });
19017                 var n = 88;
19018                 e.prototype.initialize = function(e) {
19019                     this.items = {
19020                         length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
19021                     }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
19022                 }, e.prototype.getFocusedYearIndex = function() {
19023                     var e = this.calendarCtrl;
19024                     return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
19025                 }, e.prototype.changeDate = function(e) {
19026                     if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
19027                     if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
19028                         var t = this,
19029                             n = this.animateDateChange(e);
19030                         return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
19031                             t.isMonthTransitionInProgress = !1
19032                         })
19033                     }
19034                 }, e.prototype.animateDateChange = function(e) {
19035                     if (this.dateUtil.isValidDate(e)) {
19036                         var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
19037                         this.calendarScroller.scrollTop = t * n
19038                     }
19039                     return this.$q.when()
19040                 }, e.prototype.handleKeyEvent = function(e, t) {
19041                     var n = this.calendarCtrl,
19042                         r = n.displayDate;
19043                     if ("select" === t) this.changeDate(r).then(function() {
19044                         n.setCurrentView("month", r), n.focus(r)
19045                     });
19046                     else {
19047                         var i = null,
19048                             o = this.dateUtil;
19049                         switch (t) {
19050                             case "move-right":
19051                                 i = o.incrementMonths(r, 1);
19052                                 break;
19053                             case "move-left":
19054                                 i = o.incrementMonths(r, -1);
19055                                 break;
19056                             case "move-row-down":
19057                                 i = o.incrementMonths(r, 6);
19058                                 break;
19059                             case "move-row-up":
19060                                 i = o.incrementMonths(r, -6)
19061                         }
19062                         if (i) {
19063                             var a = n.minDate ? o.getFirstDateOfMonth(n.minDate) : null,
19064                                 s = n.maxDate ? o.getFirstDateOfMonth(n.maxDate) : null;
19065                             i = o.getFirstDateOfMonth(this.dateUtil.clampDate(i, a, s)), this.changeDate(i).then(function() {
19066                                 n.focus(i)
19067                             })
19068                         }
19069                     }
19070                 }, e.prototype.attachScopeListeners = function() {
19071                     var e = this;
19072                     e.$scope.$on("md-calendar-parent-changed", function(t, n) {
19073                         e.changeDate(n)
19074                     }), e.$scope.$on("md-calendar-parent-action", t.bind(e, e.handleKeyEvent))
19075                 }
19076             }(),
19077             function() {
19078                 function e(e, t, n) {
19079                     this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
19080                 }
19081                 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
19082                     return {
19083                         require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
19084                         scope: {
19085                             offset: "=mdYearOffset"
19086                         },
19087                         controller: e,
19088                         controllerAs: "mdYearBodyCtrl",
19089                         bindToController: !0,
19090                         link: function(e, n, r, i) {
19091                             var o = i[0],
19092                                 a = i[1],
19093                                 s = i[2];
19094                             s.calendarCtrl = o, s.yearCtrl = a, e.$watch(function() {
19095                                 return s.offset
19096                             }, function(e) {
19097                                 t.isNumber(e) && s.generateContent()
19098                             })
19099                         }
19100                     }
19101                 }), e.prototype.generateContent = function() {
19102                     var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
19103                     this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
19104                 }, e.prototype.buildMonthCell = function(e, t) {
19105                     var n = this.calendarCtrl,
19106                         r = this.yearCtrl,
19107                         i = this.buildBlankCell(),
19108                         o = new Date(e, t, 1);
19109                     i.setAttribute("aria-label", this.dateLocale.monthFormatter(o)), i.id = n.getDateId(o, "year"), i.setAttribute("data-timestamp", o.getTime()), this.dateUtil.isSameMonthAndYear(o, n.today) && i.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameMonthAndYear(o, n.selectedDate) && (i.classList.add(n.SELECTED_DATE_CLASS), i.setAttribute("aria-selected", "true"));
19110                     var a = this.dateLocale.shortMonths[t];
19111                     if (this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate)) {
19112                         var s = document.createElement("span");
19113                         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)
19114                     } else i.classList.add("md-calendar-date-disabled"), i.textContent = a;
19115                     return i
19116                 }, e.prototype.buildBlankCell = function() {
19117                     var e = document.createElement("td");
19118                     return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
19119                 }, e.prototype.buildCalendarForYear = function(e) {
19120                     var t, n = e.getFullYear(),
19121                         r = document.createDocumentFragment(),
19122                         i = document.createElement("tr"),
19123                         o = document.createElement("td");
19124                     for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
19125                     r.appendChild(i);
19126                     var a = document.createElement("tr");
19127                     for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
19128                     return r.appendChild(a), r
19129                 }
19130             }(), t.module("material.components.datepicker").config(["$provide", function(e) {
19131                 function t() {
19132                     this.months = null, this.shortMonths = null, this.days = null, this.shortDays = null, this.dates = null, this.firstDayOfWeek = 0, this.formatDate = null, this.parseDate = null, this.monthHeaderFormatter = null, this.weekNumberFormatter = null, this.longDateFormatter = null, this.msgCalendar = "", this.msgOpenCalendar = ""
19133                 }
19134                 t.prototype.$get = function(e, t) {
19135                     for (var n = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
19136                             return e.substring(0, 1)
19137                         }), r = Array(32), i = 1; i <= 31; i++) r[i] = i;
19138                     var o = new Date(1880, 0, 1),
19139                         a = new Date(o.getFullYear() + 250, 0, 1),
19140                         s = {
19141                             months: this.months || e.DATETIME_FORMATS.MONTH,
19142                             shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
19143                             days: this.days || e.DATETIME_FORMATS.DAY,
19144                             shortDays: this.shortDays || n,
19145                             dates: this.dates || r,
19146                             firstDayOfWeek: this.firstDayOfWeek || 0,
19147                             formatDate: this.formatDate || function(e, n) {
19148                                 if (!e) return "";
19149                                 var r = e.toLocaleTimeString(),
19150                                     i = e;
19151                                 return 0 !== e.getHours() || -1 === r.indexOf("11:") && -1 === r.indexOf("23:") || (i = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 1, 0, 0)), t("date")(i, "M/d/yyyy", n)
19152                             },
19153                             parseDate: this.parseDate || function(e) {
19154                                 return new Date(e)
19155                             },
19156                             isDateComplete: this.isDateComplete || function(e) {
19157                                 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ \.,]+|[\/\-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
19158                             },
19159                             monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
19160                                 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
19161                             },
19162                             monthFormatter: this.monthFormatter || function(e) {
19163                                 return s.months[e.getMonth()] + " " + e.getFullYear()
19164                             },
19165                             weekNumberFormatter: this.weekNumberFormatter || function(e) {
19166                                 return "Week " + e
19167                             },
19168                             longDateFormatter: this.longDateFormatter || function(e) {
19169                                 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
19170                             },
19171                             msgCalendar: this.msgCalendar || "Calendar",
19172                             msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
19173                             firstRenderableDate: this.firstRenderableDate || o,
19174                             lastRenderableDate: this.lastRenderableDate || a
19175                         };
19176                     return s
19177                 }, t.prototype.$get.$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
19178             }]), t.module("material.components.datepicker").factory("$$mdDateUtil", function() {
19179                 function e(e) {
19180                     return new Date(e.getFullYear(), e.getMonth(), 1)
19181                 }
19182
19183                 function n(e) {
19184                     return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
19185                 }
19186
19187                 function r(e) {
19188                     return new Date(e.getFullYear(), e.getMonth() + 1, 1)
19189                 }
19190
19191                 function i(e) {
19192                     return new Date(e.getFullYear(), e.getMonth() - 1, 1)
19193                 }
19194
19195                 function o(e, t) {
19196                     return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
19197                 }
19198
19199                 function a(e, t) {
19200                     var r = new Date(e.getFullYear(), e.getMonth() + t, 1),
19201                         i = n(r);
19202                     return i < e.getDate() ? r.setDate(i) : r.setDate(e.getDate()), r
19203                 }
19204
19205                 function s(e) {
19206                     return e && e.getTime && !isNaN(e.getTime())
19207                 }
19208
19209                 function c(e) {
19210                     s(e) && e.setHours(0, 0, 0, 0)
19211                 }
19212
19213                 function l(e) {
19214                     var n;
19215                     return n = t.isUndefined(e) ? new Date : new Date(e), c(n), n
19216                 }
19217                 return {
19218                     getFirstDateOfMonth: e,
19219                     getNumberOfDaysInMonth: n,
19220                     getDateInNextMonth: r,
19221                     getDateInPreviousMonth: i,
19222                     isInNextMonth: function(e, t) {
19223                         return o(r(e), t)
19224                     },
19225                     isInPreviousMonth: function(e, t) {
19226                         return o(t, i(e))
19227                     },
19228                     getDateMidpoint: function(e, t) {
19229                         return l((e.getTime() + t.getTime()) / 2)
19230                     },
19231                     isSameMonthAndYear: o,
19232                     getWeekOfMonth: function(t) {
19233                         var n = e(t);
19234                         return Math.floor((n.getDay() + t.getDate() - 1) / 7)
19235                     },
19236                     incrementDays: function(e, t) {
19237                         return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
19238                     },
19239                     incrementMonths: a,
19240                     getLastDateOfMonth: function(e) {
19241                         return new Date(e.getFullYear(), e.getMonth(), n(e))
19242                     },
19243                     isSameDay: function(e, t) {
19244                         return e.getDate() == t.getDate() && o(e, t)
19245                     },
19246                     getMonthDistance: function(e, t) {
19247                         return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
19248                     },
19249                     isValidDate: s,
19250                     setDateTimeToMidnight: c,
19251                     createDateAtMidnight: l,
19252                     isDateWithinRange: function(e, t, n) {
19253                         var r = l(e),
19254                             i = s(t) ? l(t) : null,
19255                             o = s(n) ? l(n) : null;
19256                         return (!i || i <= r) && (!o || o >= r)
19257                     },
19258                     incrementYears: function(e, t) {
19259                         return a(e, 12 * t)
19260                     },
19261                     getYearDistance: function(e, t) {
19262                         return t.getFullYear() - e.getFullYear()
19263                     },
19264                     clampDate: function(e, t, n) {
19265                         var r = e;
19266                         return t && e < t && (r = new Date(t.getTime())), n && e > n && (r = new Date(n.getTime())), r
19267                     },
19268                     getTimestampFromNode: function(e) {
19269                         if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
19270                     },
19271                     isMonthWithinRange: function(e, t, n) {
19272                         var r = e.getMonth(),
19273                             i = e.getFullYear();
19274                         return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
19275                     }
19276                 }
19277             }),
19278             function() {
19279                 function n(e, n, i, c) {
19280                     return {
19281                         template: function(t, n) {
19282                             var r = n.mdHideIcons,
19283                                 i = n.ariaLabel || n.mdPlaceholder,
19284                                 o = "all" === r || "calendar" === r ? "" : '<md-button class="md-datepicker-button md-icon-button" type="button" tabindex="-1" aria-hidden="true" ng-click="ctrl.openCalendarPane($event)"><md-icon class="md-datepicker-calendar-icon" aria-label="md-calendar" md-svg-src="' + e.mdCalendar + '"></md-icon></md-button>',
19285                                 a = "";
19286                             return "all" !== r && "triangle" !== r && (a = '<md-button type="button" md-no-ink class="md-datepicker-triangle-button md-icon-button" ng-click="ctrl.openCalendarPane($event)" aria-label="{{::ctrl.locale.msgOpenCalendar}}"><div class="md-datepicker-expand-triangle"></div></md-button>', t.addClass(s)), o + '<div class="md-datepicker-input-container" ng-class="{\'md-datepicker-focused\': ctrl.isFocused}"><input ' + (i ? 'aria-label="' + i + '" ' : "") + 'class="md-datepicker-input" aria-haspopup="true" aria-expanded="{{ctrl.isCalendarOpen}}" ng-focus="ctrl.setFocused(true)" ng-blur="ctrl.setFocused(false)"> ' + a + '</div><div class="md-datepicker-calendar-pane md-whiteframe-z1" id="{{::ctrl.calendarPaneId}}"><div class="md-datepicker-input-mask"><div class="md-datepicker-input-mask-opaque"></div></div><div class="md-datepicker-calendar"><md-calendar role="dialog" aria-label="{{::ctrl.locale.msgCalendar}}" md-current-view="{{::ctrl.currentView}}"md-min-date="ctrl.minDate"md-max-date="ctrl.maxDate"md-date-filter="ctrl.dateFilter"ng-model="ctrl.date" ng-if="ctrl.isCalendarOpen"></md-calendar></div></div>'
19287                         },
19288                         require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
19289                         scope: {
19290                             minDate: "=mdMinDate",
19291                             maxDate: "=mdMaxDate",
19292                             placeholder: "@mdPlaceholder",
19293                             currentView: "@mdCurrentView",
19294                             dateFilter: "=mdDateFilter",
19295                             isOpen: "=?mdIsOpen",
19296                             debounceInterval: "=mdDebounceInterval",
19297                             dateLocale: "=mdDateLocale"
19298                         },
19299                         controller: r,
19300                         controllerAs: "ctrl",
19301                         bindToController: !0,
19302                         link: function(e, r, s, l) {
19303                             var u = l[0],
19304                                 d = l[1],
19305                                 f = l[2],
19306                                 h = l[3],
19307                                 p = n.parseAttributeBoolean(s.mdNoAsterisk);
19308                             if (d.configureNgModel(u, f, c), f) {
19309                                 var m = r[0].querySelector(".md-errors-spacer");
19310                                 m && r.after(t.element("<div>").append(m)), f.setHasPlaceholder(s.mdPlaceholder), f.input = r, f.element.addClass(o).toggleClass(a, "calendar" !== s.mdHideIcons && "all" !== s.mdHideIcons), f.label ? p || s.$observe("required", function(e) {
19311                                     f.label.toggleClass("md-required", !!e)
19312                                 }) : i.expect(r, "aria-label", s.mdPlaceholder), e.$watch(f.isErrorGetter || function() {
19313                                     return u.$invalid && (u.$touched || h && h.$submitted)
19314                                 }, f.setInvalid)
19315                             } else if (h) var g = e.$watch(function() {
19316                                 return h.$submitted
19317                             }, function(e) {
19318                                 e && (d.updateErrorState(), g())
19319                             })
19320                         }
19321                     }
19322                 }
19323
19324                 function r(n, r, i, o, a, s, l, u, d, f, h) {
19325                     this.$window = o, this.dateUtil = d, this.$mdConstant = a, this.$mdUtil = l, this.$$rAF = f, this.$mdDateLocale = u, this.documentElement = t.element(document.documentElement), this.ngModelCtrl = null, this.inputElement = r[0].querySelector("input"), this.ngInputElement = t.element(this.inputElement), this.inputContainer = r[0].querySelector(".md-datepicker-input-container"), this.calendarPane = r[0].querySelector(".md-datepicker-calendar-pane"), this.calendarButton = r[0].querySelector(".md-datepicker-button"), this.inputMask = t.element(r[0].querySelector(".md-datepicker-input-mask-opaque")), this.$element = r, this.$attrs = i, this.$scope = n, this.date = null, this.isFocused = !1, this.isDisabled, this.setDisabled(r[0].disabled || t.isString(i.disabled)), this.isCalendarOpen = !1, this.openOnFocus = i.hasOwnProperty("mdOpenOnFocus"), this.mdInputContainer = null, this.calendarPaneOpenedFrom = null, this.calendarPaneId = "md-date-pane-" + l.nextUid(), this.bodyClickHandler = t.bind(this, this.handleBodyClick), this.windowEventName = c.test(navigator.userAgent || navigator.vendor || e.opera) ? "orientationchange" : "resize", this.windowEventHandler = l.debounce(t.bind(this, this.closeCalendarPane), 100), this.windowBlurHandler = t.bind(this, this.handleWindowBlur), this.ngDateFilter = h("date"), this.leftMargin = 20, this.topMargin = null, i.tabindex ? (this.ngInputElement.attr("tabindex", i.tabindex), i.$set("tabindex", null)) : i.$set("tabindex", "-1"), i.$set("aria-owns", this.calendarPaneId), s(r), s(t.element(this.calendarPane));
19326                     var p = this;
19327                     n.$on("$destroy", function() {
19328                         p.detachCalendarPane()
19329                     }), i.mdIsOpen && n.$watch("ctrl.isOpen", function(e) {
19330                         e ? p.openCalendarPane({
19331                             target: p.inputElement
19332                         }) : p.closeCalendarPane()
19333                     }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
19334                 }
19335                 r.$inject = ["$scope", "$element", "$attrs", "$window", "$mdConstant", "$mdTheming", "$mdUtil", "$mdDateLocale", "$$mdDateUtil", "$$rAF", "$filter"], n.$inject = ["$$mdSvgRegistry", "$mdUtil", "$mdAria", "inputDirective"], t.module("material.components.datepicker").directive("mdDatepicker", n);
19336                 var i = "md-datepicker-open",
19337                     o = "_md-datepicker-floating-label",
19338                     a = "_md-datepicker-has-calendar-icon",
19339                     s = "_md-datepicker-has-triangle-icon",
19340                     c = /ipad|iphone|ipod|android/i;
19341                 r.prototype.$onInit = function() {
19342                     this.locale = this.dateLocale ? t.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
19343                 }, r.prototype.configureNgModel = function(e, n, r) {
19344                     this.ngModelCtrl = e, this.mdInputContainer = n, this.$attrs.$set("type", "date"), r[0].link.pre(this.$scope, {
19345                         on: t.noop,
19346                         val: t.noop,
19347                         0: {}
19348                     }, this.$attrs, [e]);
19349                     var i = this;
19350                     i.ngModelCtrl.$formatters.push(function(e) {
19351                         var n = t.isDefined(e) ? Date.parse(e) : null;
19352                         if (!isNaN(n) && t.isNumber(n) && (e = new Date(n)), e && !(e instanceof Date)) throw Error("The ng-model for md-datepicker must be a Date instance or a value that can be parsed into a date. Currently the model is of type: " + typeof e);
19353                         return i.onExternalChange(e), e
19354                     }), e.$viewChangeListeners.unshift(t.bind(this, this.updateErrorState));
19355                     var o = i.$mdUtil.getModelOption(e, "updateOn");
19356                     o && this.ngInputElement.on(o, t.bind(this.$element, this.$element.triggerHandler, o))
19357                 }, r.prototype.attachChangeListeners = function() {
19358                     var e = this;
19359                     e.$scope.$on("md-calendar-change", function(t, n) {
19360                         e.setModelValue(n), e.onExternalChange(n), e.closeCalendarPane()
19361                     }), e.ngInputElement.on("input", t.bind(e, e.resizeInputElement));
19362                     var n = t.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
19363                     e.ngInputElement.on("input", e.$mdUtil.debounce(e.handleInputEvent, n, e))
19364                 }, r.prototype.attachInteractionListeners = function() {
19365                     var e = this,
19366                         n = this.$scope,
19367                         r = this.$mdConstant.KEY_CODE;
19368                     e.ngInputElement.on("keydown", function(t) {
19369                         t.altKey && t.keyCode == r.DOWN_ARROW && (e.openCalendarPane(t), n.$digest())
19370                     }), e.openOnFocus && (e.ngInputElement.on("focus", t.bind(e, e.openCalendarPane)), t.element(e.$window).on("blur", e.windowBlurHandler), n.$on("$destroy", function() {
19371                         t.element(e.$window).off("blur", e.windowBlurHandler)
19372                     })), n.$on("md-calendar-close", function() {
19373                         e.closeCalendarPane()
19374                     })
19375                 }, r.prototype.installPropertyInterceptors = function() {
19376                     var e = this;
19377                     if (this.$attrs.ngDisabled) {
19378                         var t = this.$scope.$parent;
19379                         t && t.$watch(this.$attrs.ngDisabled, function(t) {
19380                             e.setDisabled(t)
19381                         })
19382                     }
19383                     Object.defineProperty(this, "placeholder", {
19384                         get: function() {
19385                             return e.inputElement.placeholder
19386                         },
19387                         set: function(t) {
19388                             e.inputElement.placeholder = t || ""
19389                         }
19390                     })
19391                 }, r.prototype.setDisabled = function(e) {
19392                     this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
19393                 }, r.prototype.updateErrorState = function(e) {
19394                     var n = e || this.date;
19395                     if (this.clearErrorState(), this.dateUtil.isValidDate(n)) {
19396                         if (n = this.dateUtil.createDateAtMidnight(n), this.dateUtil.isValidDate(this.minDate)) {
19397                             var r = this.dateUtil.createDateAtMidnight(this.minDate);
19398                             this.ngModelCtrl.$setValidity("mindate", n >= r)
19399                         }
19400                         if (this.dateUtil.isValidDate(this.maxDate)) {
19401                             var i = this.dateUtil.createDateAtMidnight(this.maxDate);
19402                             this.ngModelCtrl.$setValidity("maxdate", n <= i)
19403                         }
19404                         t.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(n))
19405                     } else this.ngModelCtrl.$setValidity("valid", null == n);
19406                     t.element(this.inputContainer).toggleClass("md-datepicker-invalid", !this.ngModelCtrl.$valid)
19407                 }, r.prototype.clearErrorState = function() {
19408                     this.inputContainer.classList.remove("md-datepicker-invalid"), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
19409                         this.ngModelCtrl.$setValidity(e, !0)
19410                     }, this)
19411                 }, r.prototype.resizeInputElement = function() {
19412                     this.inputElement.size = this.inputElement.value.length + 3
19413                 }, r.prototype.handleInputEvent = function() {
19414                     var e = this.inputElement.value,
19415                         t = e ? this.locale.parseDate(e) : null;
19416                     this.dateUtil.setDateTimeToMidnight(t), ("" == e || this.dateUtil.isValidDate(t) && this.locale.isDateComplete(e) && this.isDateEnabled(t)) && (this.setModelValue(t), this.date = t), this.updateErrorState(t)
19417                 }, r.prototype.isDateEnabled = function(e) {
19418                     return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!t.isFunction(this.dateFilter) || this.dateFilter(e))
19419                 }, r.prototype.attachCalendarPane = function() {
19420                     var e = this.calendarPane,
19421                         n = document.body;
19422                     e.style.transform = "", this.$element.addClass(i), this.mdInputContainer && this.mdInputContainer.element.addClass(i), t.element(n).addClass("md-datepicker-is-showing");
19423                     var r = this.inputContainer.getBoundingClientRect(),
19424                         o = n.getBoundingClientRect();
19425                     (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
19426                     var a = r.top - o.top - this.topMargin,
19427                         s = r.left - o.left - this.leftMargin,
19428                         c = o.top < 0 && 0 == document.body.scrollTop ? -o.top : document.body.scrollTop,
19429                         l = o.left < 0 && 0 == document.body.scrollLeft ? -o.left : document.body.scrollLeft,
19430                         u = c + this.$window.innerHeight,
19431                         d = l + this.$window.innerWidth;
19432                     if (this.inputMask.css({
19433                             position: "absolute",
19434                             left: this.leftMargin + "px",
19435                             top: this.topMargin + "px",
19436                             width: r.width - 1 + "px",
19437                             height: r.height - 2 + "px"
19438                         }), s + 360 > d) {
19439                         if (d - 360 > 0) s = d - 360;
19440                         else {
19441                             s = l;
19442                             var f = this.$window.innerWidth / 360;
19443                             e.style.transform = "scale(" + f + ")"
19444                         }
19445                         e.classList.add("md-datepicker-pos-adjusted")
19446                     }
19447                     a + 368 > u && u - 368 > c && (a = u - 368, e.classList.add("md-datepicker-pos-adjusted")), e.style.left = s + "px", e.style.top = a + "px", document.body.appendChild(e), this.$$rAF(function() {
19448                         e.classList.add("md-pane-open")
19449                     })
19450                 }, r.prototype.detachCalendarPane = function() {
19451                     this.$element.removeClass(i), this.mdInputContainer && this.mdInputContainer.element.removeClass(i), t.element(document.body).removeClass("md-datepicker-is-showing"), this.calendarPane.classList.remove("md-pane-open"), this.calendarPane.classList.remove("md-datepicker-pos-adjusted"), this.isCalendarOpen && this.$mdUtil.enableScrolling(), this.calendarPane.parentNode && this.calendarPane.parentNode.removeChild(this.calendarPane)
19452                 }, r.prototype.openCalendarPane = function(t) {
19453                     if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
19454                         this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = t.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
19455                         var n = this;
19456                         this.$mdUtil.nextTick(function() {
19457                             n.documentElement.on("click touchstart", n.bodyClickHandler)
19458                         }, !1), e.addEventListener(this.windowEventName, this.windowEventHandler)
19459                     }
19460                 }, r.prototype.closeCalendarPane = function() {
19461                     function t() {
19462                         n.isCalendarOpen = n.isOpen = !1
19463                     }
19464                     if (this.isCalendarOpen) {
19465                         var n = this;
19466                         n.detachCalendarPane(), n.ngModelCtrl.$setTouched(), n.evalAttr("ngBlur"), n.documentElement.off("click touchstart", n.bodyClickHandler), e.removeEventListener(n.windowEventName, n.windowEventHandler), n.calendarPaneOpenedFrom.focus(), n.calendarPaneOpenedFrom = null, n.openOnFocus ? n.$mdUtil.nextTick(t) : t()
19467                     }
19468                 }, r.prototype.getCalendarCtrl = function() {
19469                     return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
19470                 }, r.prototype.focusCalendar = function() {
19471                     var e = this;
19472                     this.$mdUtil.nextTick(function() {
19473                         e.getCalendarCtrl().focus()
19474                     }, !1)
19475                 }, r.prototype.setFocused = function(e) {
19476                     e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
19477                 }, r.prototype.handleBodyClick = function(e) {
19478                     this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
19479                 }, r.prototype.handleWindowBlur = function() {
19480                     this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
19481                 }, r.prototype.evalAttr = function(e) {
19482                     this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
19483                 }, r.prototype.setModelValue = function(e) {
19484                     var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
19485                     this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
19486                 }, r.prototype.onExternalChange = function(e) {
19487                     var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
19488                     this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
19489                 }
19490             }(),
19491             function() {
19492                 t.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(e, t, n, r) {
19493                     return {
19494                         restrict: "E",
19495                         link: function(r, i, o) {
19496                             function a() {
19497                                 if (!o.mdSvgIcon && !o.mdSvgSrc) {
19498                                     o.mdFontIcon && (i.removeClass(s), i.addClass(o.mdFontIcon), s = o.mdFontIcon);
19499                                     var t = e.fontSet(o.mdFontSet);
19500                                     c !== t && (i.removeClass(c), i.addClass(t), c = t)
19501                                 }
19502                             }
19503                             t(i);
19504                             var s = o.mdFontIcon,
19505                                 c = e.fontSet(o.mdFontSet);
19506                             o.mdSvgIcon || o.mdSvgSrc || (o.mdFontIcon && i.addClass("md-font " + o.mdFontIcon), i.addClass(c)), o.$observe("mdFontIcon", a), o.$observe("mdFontSet", a), i[0].getAttribute(o.$attr.mdSvgSrc);
19507                             var l = o.$normalize(o.$attr.mdSvgIcon || o.$attr.mdSvgSrc || "");
19508                             if (o.role || (n.expect(i, "role", "img"), o.role = "img"), "img" === o.role && !o.ariaHidden && !n.hasAriaLabel(i)) {
19509                                 var u;
19510                                 o.alt ? n.expect(i, "aria-label", o.alt) : n.parentHasAriaLabel(i, 2) ? n.expect(i, "aria-hidden", "true") : (u = o.mdFontIcon || o.mdSvgIcon || i.text()) ? n.expect(i, "aria-label", u) : n.expect(i, "aria-hidden", "true")
19511                             }
19512                             l && o.$observe(l, function(t) {
19513                                 i.empty(), t && e(t).then(function(e) {
19514                                     i.empty(), i.append(e)
19515                                 })
19516                             })
19517                         }
19518                     }
19519                 }])
19520             }(),
19521             function() {
19522                 function n() {}
19523
19524                 function r(e, t) {
19525                     this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
19526                 }
19527
19528                 function i(n, r, i, o, a, s) {
19529                     function c(e) {
19530                         return e = e || "", t.isString(e) || (e = s.getTrustedUrl(e)), g[e] ? i.when(l(g[e])) : b.test(e) || y.test(e) ? h(e).then(u(e)) : (-1 == e.indexOf(":") && (e = "$default:" + e), (n[e] ? d : f)(e).then(u(e)))
19531                     }
19532
19533                     function l(e) {
19534                         var n = e.clone(),
19535                             r = "_cache" + a.nextUid();
19536                         return n.id && (n.id += r), t.forEach(n.querySelectorAll("[id]"), function(e) {
19537                             e.id += r
19538                         }), n
19539                     }
19540
19541                     function u(e) {
19542                         return function(t) {
19543                             return g[e] = p(t) ? t : new m(t, n[e]), g[e].clone()
19544                         }
19545                     }
19546
19547                     function d(e) {
19548                         var t = n[e];
19549                         return h(t.url).then(function(e) {
19550                             return new m(e, t)
19551                         })
19552                     }
19553
19554                     function f(e) {
19555                         function t(e) {
19556                             var t = "icon " + e + " not found";
19557                             return o.warn(t), i.reject(t || e)
19558                         }
19559                         var r = e.substring(0, e.lastIndexOf(":")) || "$default",
19560                             a = n[r];
19561                         return a ? h(a.url).then(function(n) {
19562                             var r = e.slice(e.lastIndexOf(":") + 1),
19563                                 i = n.querySelector("#" + r);
19564                             return i ? new m(i, a) : t(e)
19565                         }) : t(e)
19566                     }
19567
19568                     function h(n) {
19569                         return y.test(n) ? function(n) {
19570                             var r = y.exec(n),
19571                                 o = /base64/i.test(n) ? e.atob(r[2]) : r[2];
19572                             return i.when(t.element(o)[0])
19573                         }(n) : function(e) {
19574                             return i(function(n, i) {
19575                                 r(e, !0).then(function(r) {
19576                                     v[e] || (v[e] = t.element("<div>").append(r)[0].querySelector("svg")), n(v[e])
19577                                 }, function(e) {
19578                                     var n = t.isString(e) ? e : e.message || e.data || e.statusText;
19579                                     o.warn(n), i(e)
19580                                 })
19581                             })
19582                         }(n)
19583                     }
19584
19585                     function p(e) {
19586                         return t.isDefined(e.element) && t.isDefined(e.config)
19587                     }
19588
19589                     function m(e, n) {
19590                         e && "svg" != e.tagName && (e = t.element('<svg xmlns="http://www.w3.org/2000/svg">').append(e.cloneNode(!0))[0]), e.getAttribute("xmlns") || e.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.element = e, this.config = n, this.prepare()
19591                     }
19592                     var g = {},
19593                         v = {},
19594                         b = /[-\w@:%\+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%\+.~#?&//=]*)?/i,
19595                         y = /^data:image\/svg\+xml[\s*;\w\-\=]*?(base64)?,(.*)$/i;
19596                     return m.prototype = {
19597                         clone: function() {
19598                             return this.element.cloneNode(!0)
19599                         },
19600                         prepare: function() {
19601                             var e = this.config ? this.config.viewBoxSize : n.defaultViewBoxSize;
19602                             t.forEach({
19603                                 fit: "",
19604                                 height: "100%",
19605                                 width: "100%",
19606                                 preserveAspectRatio: "xMidYMid meet",
19607                                 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
19608                                 focusable: !1
19609                             }, function(e, t) {
19610                                 this.element.setAttribute(t, e)
19611                             }, this)
19612                         }
19613                     }, c.fontSet = function(e) {
19614                         if (t.isUndefined(e) || !e || !e.length) return n.defaultFontSet;
19615                         var r = e;
19616                         return t.forEach(n.fontSets, function(t) {
19617                             t.alias == e && (r = t.fontSet || r)
19618                         }), r
19619                     }, c
19620                 }
19621                 i.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], t.module("material.components.icon").constant("$$mdSvgRegistry", {
19622                     mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
19623                     mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
19624                     mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
19625                     mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
19626                     mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
19627                     mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
19628                     mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
19629                 }).provider("$mdIcon", n);
19630                 var o = {
19631                     defaultViewBoxSize: 24,
19632                     defaultFontSet: "material-icons",
19633                     fontSets: []
19634                 };
19635                 n.prototype = {
19636                     icon: function(e, t, n) {
19637                         return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
19638                     },
19639                     iconSet: function(e, t, n) {
19640                         return o[e] = new r(t, n), this
19641                     },
19642                     defaultIconSet: function(e, t) {
19643                         return o.$default || (o.$default = new r(e, t)), o.$default.viewBoxSize = t || o.defaultViewBoxSize, this
19644                     },
19645                     defaultViewBoxSize: function(e) {
19646                         return o.defaultViewBoxSize = e, this
19647                     },
19648                     fontSet: function(e, t) {
19649                         return o.fontSets.push({
19650                             alias: e,
19651                             fontSet: t || e
19652                         }), this
19653                     },
19654                     defaultFontSet: function(e) {
19655                         return o.defaultFontSet = e || "", this
19656                     },
19657                     defaultIconSize: function(e) {
19658                         return o.defaultIconSize = e, this
19659                     },
19660                     $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, a) {
19661                         return i(o, e, t, n, r, a)
19662                     }]
19663                 }
19664             }(),
19665             function() {
19666                 function e(e, r, i, o, a, s, c, l, u) {
19667                     var d, f, h = a.prefixer(),
19668                         p = this;
19669                     this.nestLevel = parseInt(r.mdNestLevel, 10) || 0, this.init = function(n, r) {
19670                         r = r || {}, d = n, (f = i[0].querySelector(h.buildSelector(["ng-click", "ng-mouseenter"]))).setAttribute("aria-expanded", "false"), this.isInMenuBar = r.isInMenuBar, this.nestedMenus = a.nodesToArray(d[0].querySelectorAll(".md-nested-menu")), d.on("$mdInterimElementRemove", function() {
19671                             p.isOpen = !1, a.nextTick(function() {
19672                                 p.onIsOpenChanged(p.isOpen)
19673                             })
19674                         }), a.nextTick(function() {
19675                             p.onIsOpenChanged(p.isOpen)
19676                         });
19677                         var s = "menu_container_" + a.nextUid();
19678                         d.attr("id", s), t.element(f).attr({
19679                             "aria-owns": s,
19680                             "aria-haspopup": "true"
19681                         }), o.$on("$destroy", t.bind(this, function() {
19682                             this.disableHoverListener(), e.destroy()
19683                         })), d.on("$destroy", function() {
19684                             e.destroy()
19685                         })
19686                     };
19687                     var m, g, v = [];
19688                     this.enableHoverListener = function() {
19689                         v.push(c.$on("$mdMenuOpen", function(e, t) {
19690                             d[0].contains(t[0]) && (p.currentlyOpenMenu = t.controller("mdMenu"), p.isAlreadyOpening = !1, p.currentlyOpenMenu.registerContainerProxy(p.triggerContainerProxy.bind(p)))
19691                         })), v.push(c.$on("$mdMenuClose", function(e, t) {
19692                             d[0].contains(t[0]) && (p.currentlyOpenMenu = n)
19693                         })), (g = t.element(a.nodesToArray(d[0].children[0].children))).on("mouseenter", p.handleMenuItemHover), g.on("mouseleave", p.handleMenuItemMouseLeave)
19694                     }, this.disableHoverListener = function() {
19695                         for (; v.length;) v.shift()();
19696                         g && g.off("mouseenter", p.handleMenuItemHover), g && g.off("mouseleave", p.handleMenuItemMouseLeave)
19697                     }, this.handleMenuItemHover = function(e) {
19698                         if (!p.isAlreadyOpening) {
19699                             var n = e.target.querySelector("md-menu") || a.getClosest(e.target, "MD-MENU");
19700                             m = s(function() {
19701                                 if (n && (n = t.element(n).controller("mdMenu")), p.currentlyOpenMenu && p.currentlyOpenMenu != n) {
19702                                     var e = p.nestLevel + 1;
19703                                     p.currentlyOpenMenu.close(!0, {
19704                                         closeTo: e
19705                                     }), p.isAlreadyOpening = !!n, n && n.open()
19706                                 } else n && !n.isOpen && n.open && (p.isAlreadyOpening = !!n, n && n.open())
19707                             }, n ? 100 : 250);
19708                             var r = e.currentTarget.querySelector(".md-button:not([disabled])");
19709                             r && r.focus()
19710                         }
19711                     }, this.handleMenuItemMouseLeave = function() {
19712                         m && (s.cancel(m), m = n)
19713                     }, this.open = function(t) {
19714                         t && t.stopPropagation(), t && t.preventDefault(), p.isOpen || (p.enableHoverListener(), p.isOpen = !0, a.nextTick(function() {
19715                             p.onIsOpenChanged(p.isOpen)
19716                         }), (f = f || (t ? t.target : i[0])).setAttribute("aria-expanded", "true"), o.$emit("$mdMenuOpen", i), e.show({
19717                             scope: o,
19718                             mdMenuCtrl: p,
19719                             nestLevel: p.nestLevel,
19720                             element: d,
19721                             target: f,
19722                             preserveElement: !0,
19723                             parent: "body"
19724                         }).finally(function() {
19725                             f.setAttribute("aria-expanded", "false"), p.disableHoverListener()
19726                         }))
19727                     }, this.onIsOpenChanged = function(e) {
19728                         e ? (d.attr("aria-hidden", "false"), i[0].classList.add("md-open"), t.forEach(p.nestedMenus, function(e) {
19729                             e.classList.remove("md-open")
19730                         })) : (d.attr("aria-hidden", "true"), i[0].classList.remove("md-open")), o.$mdMenuIsOpen = p.isOpen
19731                     }, this.focusMenuContainer = function() {
19732                         var e = d[0].querySelector(h.buildSelector(["md-menu-focus-target", "md-autofocus"]));
19733                         e || (e = d[0].querySelector(".md-button:not([disabled])")), e.focus()
19734                     }, this.registerContainerProxy = function(e) {
19735                         this.containerProxy = e
19736                     }, this.triggerContainerProxy = function(e) {
19737                         this.containerProxy && this.containerProxy(e)
19738                     }, this.destroy = function() {
19739                         return p.isOpen ? e.destroy() : l.when(!1)
19740                     }, this.close = function(n, r) {
19741                         if (p.isOpen) {
19742                             p.isOpen = !1, a.nextTick(function() {
19743                                 p.onIsOpenChanged(p.isOpen)
19744                             });
19745                             var s = t.extend({}, r, {
19746                                 skipFocus: n
19747                             });
19748                             if (o.$emit("$mdMenuClose", i, s), e.hide(null, r), !n) {
19749                                 var c = p.restoreFocusTo || i.find("button")[0];
19750                                 c instanceof t.element && (c = c[0]), c && c.focus()
19751                             }
19752                         }
19753                     }, this.positionMode = function() {
19754                         var e = (r.mdPositionMode || "target").split(" ");
19755                         return 1 == e.length && e.push(e[0]), {
19756                             left: e[0],
19757                             top: e[1]
19758                         }
19759                     }, this.offsets = function() {
19760                         var e = (r.mdOffset || "0 0").split(" ").map(parseFloat);
19761                         if (2 == e.length) return {
19762                             left: e[0],
19763                             top: e[1]
19764                         };
19765                         if (1 == e.length) return {
19766                             top: e[0],
19767                             left: e[0]
19768                         };
19769                         throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
19770                     }, o.$mdMenu = {
19771                         open: this.open,
19772                         close: this.close
19773                     }, o.$mdOpenMenu = t.bind(this, function() {
19774                         return u.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
19775                     })
19776                 }
19777                 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], t.module("material.components.menu").controller("mdMenuCtrl", e)
19778             }(),
19779             function() {
19780                 function e(e) {
19781                     function n(e, n, r, i) {
19782                         var o = i[0],
19783                             a = !!i[1],
19784                             s = t.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
19785                             c = n.children()[1];
19786                         n.addClass("_md"), c.hasAttribute("role") || c.setAttribute("role", "menu"), s.append(c), n.on("$destroy", function() {
19787                             s.remove()
19788                         }), n.append(s), s[0].style.display = "none", o.init(s, {
19789                             isInMenuBar: a
19790                         })
19791                     }
19792                     var r = "Invalid HTML for md-menu: ";
19793                     return {
19794                         restrict: "E",
19795                         require: ["mdMenu", "?^mdMenuBar"],
19796                         controller: "mdMenuCtrl",
19797                         scope: !0,
19798                         compile: function(i) {
19799                             i.addClass("md-menu");
19800                             var o = i.children()[0],
19801                                 a = i.children()[1],
19802                                 s = e.prefixer();
19803                             s.hasAttribute(o, "ng-click") || (o = o.querySelector(s.buildSelector(["ng-click", "ng-mouseenter"])) || o);
19804                             var c = "MD-BUTTON" === o.nodeName || "BUTTON" === o.nodeName;
19805                             if (o && c && !o.hasAttribute("type") && o.setAttribute("type", "button"), !o) throw Error(r + "Expected the menu to have a trigger element.");
19806                             if (!a || "MD-MENU-CONTENT" !== a.nodeName) throw Error(r + "Expected the menu to contain a `md-menu-content` element.");
19807                             o && o.setAttribute("aria-haspopup", "true");
19808                             var l = i[0].querySelectorAll("md-menu"),
19809                                 u = parseInt(i[0].getAttribute("md-nest-level"), 10) || 0;
19810                             return l && t.forEach(e.nodesToArray(l), function(e) {
19811                                 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", u + 1)
19812                             }), n
19813                         }
19814                     }
19815                 }
19816                 e.$inject = ["$mdUtil"], t.module("material.components.menu").directive("mdMenu", e)
19817             }(),
19818             function() {
19819                 function e(e) {
19820                     function r(e, r, a, s, c, l, u, d, f, h) {
19821                         function p(n, r, i) {
19822                             return i.nestLevel ? t.noop : (i.disableParentScroll && !e.getClosest(i.target, "MD-DIALOG") ? i.restoreScroll = e.disableScrollAround(i.element, i.parent) : i.disableParentScroll = !1, i.hasBackdrop && (i.backdrop = e.createBackdrop(n, "md-menu-backdrop md-click-catcher"), f.enter(i.backdrop, s[0].body)), function() {
19823                                 i.backdrop && i.backdrop.remove(), i.disableParentScroll && i.restoreScroll()
19824                             })
19825                         }
19826
19827                         function m(t, n, r, i) {
19828                             for (var o, a = e.getClosest(t.target, "MD-MENU-ITEM"), s = e.nodesToArray(n[0].children), c = s.indexOf(a) + i; c >= 0 && c < s.length && !(o = g(s[c].querySelector(".md-button"))); c += i);
19829                             return o
19830                         }
19831
19832                         function g(e) {
19833                             if (e && -1 != e.getAttribute("tabindex")) return e.focus(), s[0].activeElement == e
19834                         }
19835
19836                         function v(e, t) {
19837                             t.preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e))
19838                         }
19839
19840                         function b(t, r) {
19841                             var i, a = t[0],
19842                                 l = t[0].firstElementChild,
19843                                 u = l.getBoundingClientRect(),
19844                                 d = s[0].body.getBoundingClientRect(),
19845                                 f = c.getComputedStyle(l),
19846                                 h = r.target[0].querySelector(y.buildSelector("md-menu-origin")) || r.target[0],
19847                                 p = h.getBoundingClientRect(),
19848                                 m = {
19849                                     left: d.left + o,
19850                                     top: Math.max(d.top, 0) + o,
19851                                     bottom: Math.max(d.bottom, Math.max(d.top, 0) + d.height) - o,
19852                                     right: d.right - o
19853                                 },
19854                                 g = {
19855                                     top: 0,
19856                                     left: 0,
19857                                     right: 0,
19858                                     bottom: 0
19859                                 },
19860                                 v = {
19861                                     top: 0,
19862                                     left: 0,
19863                                     right: 0,
19864                                     bottom: 0
19865                                 },
19866                                 b = r.mdMenuCtrl.positionMode();
19867                             "target" != b.top && "target" != b.left && "target-right" != b.left || (i = function() {
19868                                 for (var e = 0; e < l.children.length; ++e)
19869                                     if ("none" != c.getComputedStyle(l.children[e]).display) return l.children[e]
19870                             }()) && (g = (i = (i = i.firstElementChild || i).querySelector(y.buildSelector("md-menu-align-target")) || i).getBoundingClientRect(), v = {
19871                                 top: parseFloat(a.style.top || 0),
19872                                 left: parseFloat(a.style.left || 0)
19873                             });
19874                             var $ = {},
19875                                 _ = "top ";
19876                             switch (b.top) {
19877                                 case "target":
19878                                     $.top = v.top + p.top - g.top;
19879                                     break;
19880                                 case "cascade":
19881                                     $.top = p.top - parseFloat(f.paddingTop) - h.style.top;
19882                                     break;
19883                                 case "bottom":
19884                                     $.top = p.top + p.height;
19885                                     break;
19886                                 default:
19887                                     throw new Error('Invalid target mode "' + b.top + '" specified for md-menu on Y axis.')
19888                             }
19889                             var w = "rtl" == e.bidi();
19890                             switch (b.left) {
19891                                 case "target":
19892                                     $.left = v.left + p.left - g.left, _ += w ? "right" : "left";
19893                                     break;
19894                                 case "target-left":
19895                                     $.left = p.left, _ += "left";
19896                                     break;
19897                                 case "target-right":
19898                                     $.left = p.right - u.width + (u.right - g.right), _ += "right";
19899                                     break;
19900                                 case "cascade":
19901                                     var E = w ? p.left - u.width < m.left : p.right + u.width < m.right;
19902                                     $.left = E ? p.right - h.style.left : p.left - h.style.left - u.width, _ += E ? "left" : "right";
19903                                     break;
19904                                 case "right":
19905                                     w ? ($.left = p.right - p.width, _ += "left") : ($.left = p.right - u.width, _ += "right");
19906                                     break;
19907                                 case "left":
19908                                     w ? ($.left = p.right - u.width, _ += "right") : ($.left = p.left, _ += "left");
19909                                     break;
19910                                 default:
19911                                     throw new Error('Invalid target mode "' + b.left + '" specified for md-menu on X axis.')
19912                             }
19913                             var C = r.mdMenuCtrl.offsets();
19914                             $.top += C.top, $.left += C.left,
19915                                 function(e) {
19916                                     e.top = Math.max(Math.min(e.top, m.bottom - a.offsetHeight), m.top), e.left = Math.max(Math.min(e.left, m.right - a.offsetWidth), m.left)
19917                                 }($);
19918                             var x = Math.round(100 * Math.min(p.width / a.offsetWidth, 1)) / 100,
19919                                 k = Math.round(100 * Math.min(p.height / a.offsetHeight, 1)) / 100;
19920                             return {
19921                                 top: Math.round($.top),
19922                                 left: Math.round($.left),
19923                                 transform: r.alreadyOpen ? n : e.supplant("scale({0},{1})", [x, k]),
19924                                 transformOrigin: _
19925                             }
19926                         }
19927                         var y = e.prefixer(),
19928                             $ = e.dom.animator;
19929                         return {
19930                             parent: "body",
19931                             onShow: function(n, i, o) {
19932                                 function s() {
19933                                     return o.backdrop ? (o.backdrop.on("click", f), function() {
19934                                         o.backdrop.off("click", f)
19935                                     }) : t.noop
19936                                 }
19937
19938                                 function f(e) {
19939                                     e.preventDefault(), e.stopPropagation(), n.$apply(function() {
19940                                         o.mdMenuCtrl.close(!0, {
19941                                             closeAll: !0
19942                                         })
19943                                     })
19944                                 }
19945
19946                                 function g() {
19947                                     function r(t) {
19948                                         var n;
19949                                         switch (t.keyCode) {
19950                                             case a.KEY_CODE.ESCAPE:
19951                                                 o.mdMenuCtrl.close(!1, {
19952                                                     closeAll: !0
19953                                                 }), n = !0;
19954                                                 break;
19955                                             case a.KEY_CODE.UP_ARROW:
19956                                                 m(t, o.menuContentEl, 0, -1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
19957                                                 break;
19958                                             case a.KEY_CODE.DOWN_ARROW:
19959                                                 m(t, o.menuContentEl, 0, 1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
19960                                                 break;
19961                                             case a.KEY_CODE.LEFT_ARROW:
19962                                                 o.nestLevel ? o.mdMenuCtrl.close() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
19963                                                 break;
19964                                             case a.KEY_CODE.RIGHT_ARROW:
19965                                                 var r = e.getClosest(t.target, "MD-MENU");
19966                                                 r && r != o.parent[0] ? t.target.click() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0
19967                                         }
19968                                         n && (t.preventDefault(), t.stopImmediatePropagation())
19969                                     }
19970
19971                                     function i(t) {
19972                                         function r(e, t) {
19973                                             if (!e) return !1;
19974                                             for (var n, r = 0; n = t[r]; ++r)
19975                                                 if (y.hasAttribute(e, n)) return !0;
19976                                             return !1
19977                                         }
19978                                         var i = t.target;
19979                                         do {
19980                                             if (i == o.menuContentEl[0]) return;
19981                                             if ((r(i, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == i.nodeName || "MD-BUTTON" == i.nodeName) && !r(i, ["md-prevent-menu-close"])) {
19982                                                 var a = e.getClosest(i, "MD-MENU");
19983                                                 i.hasAttribute("disabled") || a && a != o.parent[0] || n.$apply(function() {
19984                                                     o.mdMenuCtrl.close(!0, {
19985                                                         closeAll: !0
19986                                                     })
19987                                                 });
19988                                                 break
19989                                             }
19990                                         } while (i = i.parentNode)
19991                                     }
19992                                     if (!o.menuContentEl[0]) return t.noop;
19993                                     o.menuContentEl.on("keydown", r), o.menuContentEl[0].addEventListener("click", i, !0);
19994                                     var s = o.menuContentEl[0].querySelector(y.buildSelector(["md-menu-focus-target", "md-autofocus"]));
19995                                     if (!s)
19996                                         for (var c = o.menuContentEl[0].children.length, l = 0; l < c; l++) {
19997                                             var u = o.menuContentEl[0].children[l];
19998                                             if (s = u.querySelector(".md-button:not([disabled])")) break;
19999                                             if (u.firstElementChild && !u.firstElementChild.disabled) {
20000                                                 s = u.firstElementChild;
20001                                                 break
20002                                             }
20003                                         }
20004                                     return s && s.focus(),
20005                                         function() {
20006                                             o.menuContentEl.off("keydown", r), o.menuContentEl[0].removeEventListener("click", i, !0)
20007                                         }
20008                                 }
20009                                 return function() {
20010                                     if (!o.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
20011                                     t.extend(o, {
20012                                         alreadyOpen: !1,
20013                                         isRemoved: !1,
20014                                         target: t.element(o.target),
20015                                         parent: t.element(o.parent),
20016                                         menuContentEl: t.element(i[0].querySelector("md-menu-content"))
20017                                     })
20018                                 }(), o.menuContentEl[0] ? r.inherit(o.menuContentEl, o.target) : h.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.", i), o.cleanupResizing = function() {
20019                                     var e = function(e, t) {
20020                                         return u.throttle(function() {
20021                                             if (!o.isRemoved) {
20022                                                 var n = b(e, t);
20023                                                 e.css($.toCss(n))
20024                                             }
20025                                         })
20026                                     }(i, o);
20027                                     return c.addEventListener("resize", e), c.addEventListener("orientationchange", e),
20028                                         function() {
20029                                             c.removeEventListener("resize", e), c.removeEventListener("orientationchange", e)
20030                                         }
20031                                 }(), o.hideBackdrop = p(n, i, o), (o.parent.append(i), i[0].style.display = "", l(function(e) {
20032                                     var t = b(i, o);
20033                                     i.removeClass("md-leave"), d(i, {
20034                                         addClass: "md-active",
20035                                         from: $.toCss(t),
20036                                         to: $.toCss({
20037                                             transform: ""
20038                                         })
20039                                     }).start().then(e)
20040                                 })).then(function(e) {
20041                                     return o.alreadyOpen = !0, o.cleanupInteraction = g(), o.cleanupBackdrop = s(), i.addClass("md-clickable"), e
20042                                 })
20043                             },
20044                             onRemove: function(e, t, n) {
20045                                 function r() {
20046                                     t.removeClass("md-active"), v(t, n), n.alreadyOpen = !1
20047                                 }
20048                                 return n.cleanupInteraction(), n.cleanupBackdrop(), n.cleanupResizing(), n.hideBackdrop(), t.removeClass("md-clickable"), !0 === n.$destroy ? r() : d(t, {
20049                                     addClass: "md-leave"
20050                                 }).start().then(r)
20051                             },
20052                             hasBackdrop: !0,
20053                             disableParentScroll: !0,
20054                             skipCompile: !0,
20055                             preserveScope: !0,
20056                             multiple: !0,
20057                             themable: !0
20058                         }
20059                     }
20060
20061                     function i(e) {
20062                         return e instanceof t.element && (e = e[0]), e
20063                     }
20064                     r.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
20065                     var o = 8;
20066                     return e("$mdMenu").setDefaults({
20067                         methods: ["target"],
20068                         options: r
20069                     })
20070                 }
20071                 e.$inject = ["$$interimElementProvider"], t.module("material.components.menu").provider("$mdMenu", e)
20072             }(),
20073             function() {
20074                 function e(e, n, i, o, a, s, c, l) {
20075                     this.$element = i, this.$attrs = o, this.$mdConstant = a, this.$mdUtil = c, this.$document = s, this.$scope = e, this.$rootScope = n, this.$timeout = l;
20076                     var u = this;
20077                     t.forEach(r, function(e) {
20078                         u[e] = t.bind(u, u[e])
20079                     })
20080                 }
20081                 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], t.module("material.components.menuBar").controller("MenuBarController", e);
20082                 var r = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
20083                 e.prototype.init = function() {
20084                     var e = this.$element,
20085                         t = this.$mdUtil,
20086                         r = this.$scope,
20087                         i = this,
20088                         o = [];
20089                     e.on("keydown", this.handleKeyDown), this.parentToolbar = t.getClosest(e, "MD-TOOLBAR"), o.push(this.$rootScope.$on("$mdMenuOpen", function(t, n) {
20090                         -1 != i.getMenus().indexOf(n[0]) && (e[0].classList.add("md-open"), n[0].classList.add("md-open"), i.currentlyOpenMenu = n.controller("mdMenu"), i.currentlyOpenMenu.registerContainerProxy(i.handleKeyDown), i.enableOpenOnHover())
20091                     })), o.push(this.$rootScope.$on("$mdMenuClose", function(r, o, a) {
20092                         var s = i.getMenus();
20093                         if (-1 != s.indexOf(o[0]) && (e[0].classList.remove("md-open"), o[0].classList.remove("md-open")), e[0].contains(o[0])) {
20094                             for (var c = o[0]; c && -1 == s.indexOf(c);) c = t.getClosest(c, "MD-MENU", !0);
20095                             c && (a.skipFocus || c.querySelector("button:not([disabled])").focus(), i.currentlyOpenMenu = n, i.disableOpenOnHover(), i.setKeyboardMode(!0))
20096                         }
20097                     })), r.$on("$destroy", function() {
20098                         for (i.disableOpenOnHover(); o.length;) o.shift()()
20099                     }), this.setKeyboardMode(!0)
20100                 }, e.prototype.setKeyboardMode = function(e) {
20101                     e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
20102                 }, e.prototype.enableOpenOnHover = function() {
20103                     if (!this.openOnHoverEnabled) {
20104                         var e = this;
20105                         e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
20106                             t.element(e.parentToolbar).on("click", e.handleParentClick)
20107                         }, !1)), t.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
20108                     }
20109                 }, e.prototype.handleMenuHover = function(e) {
20110                     this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
20111                 }, e.prototype.disableOpenOnHover = function() {
20112                     this.openOnHoverEnabled && (this.openOnHoverEnabled = !1, this.parentToolbar && (this.parentToolbar.classList.remove("md-has-open-menu"), t.element(this.parentToolbar).off("click", this.handleParentClick)), t.element(this.getMenus()).off("mouseenter", this.handleMenuHover))
20113                 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
20114                     var n = t.element(e.currentTarget).controller("mdMenu");
20115                     this.setKeyboardMode(!1), this.scheduleOpenMenu(n)
20116                 }, e.prototype.scheduleOpenMenu = function(e) {
20117                     var t = this,
20118                         r = this.$timeout;
20119                     e != t.currentlyOpenMenu && (r.cancel(t.pendingMenuOpen), t.pendingMenuOpen = r(function() {
20120                         t.pendingMenuOpen = n, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
20121                             closeAll: !0
20122                         }), e.open()
20123                     }, 200, !1))
20124                 }, e.prototype.handleKeyDown = function(e) {
20125                     var n = this.$mdConstant.KEY_CODE,
20126                         r = this.currentlyOpenMenu,
20127                         i = r && r.isOpen;
20128                     this.setKeyboardMode(!0);
20129                     var o, a, s;
20130                     switch (e.keyCode) {
20131                         case n.DOWN_ARROW:
20132                             r ? r.focusMenuContainer() : this.openFocusedMenu(), o = !0;
20133                             break;
20134                         case n.UP_ARROW:
20135                             r && r.close(), o = !0;
20136                             break;
20137                         case n.LEFT_ARROW:
20138                             a = this.focusMenu(-1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0;
20139                             break;
20140                         case n.RIGHT_ARROW:
20141                             a = this.focusMenu(1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0
20142                     }
20143                     o && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
20144                 }, e.prototype.focusMenu = function(e) {
20145                     var t = this.getMenus(),
20146                         n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
20147                     var r = !1;
20148                     if (-1 == n ? (n = 0, r = !0) : (e < 0 && n > 0 || e > 0 && n < t.length - e) && (n += e, r = !0), r) return t[n].querySelector("button").focus(), t[n]
20149                 }, e.prototype.openFocusedMenu = function() {
20150                     var e = this.getFocusedMenu();
20151                     e && t.element(e).controller("mdMenu").open()
20152                 }, e.prototype.getMenus = function() {
20153                     var e = this.$element;
20154                     return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
20155                         return "MD-MENU" == e.nodeName
20156                     })
20157                 }, e.prototype.getFocusedMenu = function() {
20158                     return this.getMenus()[this.getFocusedMenuIndex()]
20159                 }, e.prototype.getFocusedMenuIndex = function() {
20160                     var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
20161                     return e ? this.getMenus().indexOf(e) : -1
20162                 }, e.prototype.getOpenMenuIndex = function() {
20163                     for (var e = this.getMenus(), t = 0; t < e.length; ++t)
20164                         if (e[t].classList.contains("md-open")) return t;
20165                     return -1
20166                 }, e.prototype.handleParentClick = function(e) {
20167                     var n = this.querySelector("md-menu.md-open");
20168                     n && !n.contains(e.target) && t.element(n).controller("mdMenu").close(!0, {
20169                         closeAll: !0
20170                     })
20171                 }
20172             }(),
20173             function() {
20174                 function e(e, n) {
20175                     return {
20176                         restrict: "E",
20177                         require: "mdMenuBar",
20178                         controller: "MenuBarController",
20179                         compile: function(r, i) {
20180                             return i.ariaRole || r[0].setAttribute("role", "menubar"), t.forEach(r[0].children, function(n) {
20181                                     if ("MD-MENU" == n.nodeName) {
20182                                         n.hasAttribute("md-position-mode") || (n.setAttribute("md-position-mode", "left bottom"), n.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
20183                                         var r = e.nodesToArray(n.querySelectorAll("md-menu-content"));
20184                                         t.forEach(r, function(e) {
20185                                             e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
20186                                         })
20187                                     }
20188                                 }), r.find("md-menu-item").addClass("md-in-menu-bar"),
20189                                 function(e, t, r, i) {
20190                                     t.addClass("_md"), n(e, t), i.init()
20191                                 }
20192                         }
20193                     }
20194                 }
20195                 e.$inject = ["$mdUtil", "$mdTheming"], t.module("material.components.menuBar").directive("mdMenuBar", e)
20196             }(),
20197             function() {
20198                 t.module("material.components.menuBar").directive("mdMenuDivider", function() {
20199                     return {
20200                         restrict: "E",
20201                         compile: function(e, t) {
20202                             t.role || e[0].setAttribute("role", "separator")
20203                         }
20204                     }
20205                 })
20206             }(),
20207             function() {
20208                 function e(e, t, n) {
20209                     this.$element = t, this.$attrs = n, this.$scope = e
20210                 }
20211                 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
20212                     var t = this.$element,
20213                         n = this.$attrs;
20214                     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())
20215                 }, e.prototype.clearNgAria = function() {
20216                     var e = this.$element[0],
20217                         n = ["role", "tabindex", "aria-invalid", "aria-checked"];
20218                     t.forEach(n, function(t) {
20219                         e.removeAttribute(t)
20220                     })
20221                 }, e.prototype.initClickListeners = function() {
20222                     function e() {
20223                         if ("radio" == s) {
20224                             var e = a.ngValue ? o.$eval(a.ngValue) : a.value;
20225                             return i.$modelValue == e
20226                         }
20227                         return i.$modelValue
20228                     }
20229
20230                     function n(e) {
20231                         e ? l.off("click", u) : l.on("click", u)
20232                     }
20233                     var r = this,
20234                         i = this.ngModel,
20235                         o = this.$scope,
20236                         a = this.$attrs,
20237                         s = (this.$element, this.mode);
20238                     this.handleClick = t.bind(this, this.handleClick);
20239                     var c = this.iconEl,
20240                         l = t.element(this.buttonEl),
20241                         u = this.handleClick;
20242                     a.$observe("disabled", n), n(a.disabled), i.$render = function() {
20243                         r.clearNgAria(), e() ? (c.style.display = "", l.attr("aria-checked", "true")) : (c.style.display = "none", l.attr("aria-checked", "false"))
20244                     }, o.$$postDigest(i.$render)
20245                 }, e.prototype.handleClick = function(e) {
20246                     var t, n = this.mode,
20247                         r = this.ngModel,
20248                         i = this.$attrs;
20249                     "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
20250                 }
20251             }(),
20252             function() {
20253                 function e(e, n, r) {
20254                     return {
20255                         controller: "MenuItemController",
20256                         require: ["mdMenuItem", "?ngModel"],
20257                         priority: n.BEFORE_NG_ARIA,
20258                         compile: function(n, i) {
20259                             function o(e, r, i) {
20260                                 (i = i || n) instanceof t.element && (i = i[0]), i.hasAttribute(e) || i.setAttribute(e, r)
20261                             }
20262                             var a = i.type;
20263                             if ("checkbox" != a && "radio" != a || !n.hasClass("md-in-menu-bar")) o("role", "menuitem", n[0].querySelector("md-button, button, a"));
20264                             else {
20265                                 var s = n[0].textContent,
20266                                     c = t.element('<md-button type="button"></md-button>'),
20267                                     l = '<md-icon md-svg-src="' + r.mdChecked + '"></md-icon>';
20268                                 c.html(s), c.attr("tabindex", "0"), n.html(""), n.append(t.element(l)), n.append(c), n.addClass("md-indent").removeClass("md-in-menu-bar"), o("role", "checkbox" == a ? "menuitemcheckbox" : "menuitemradio", c),
20269                                     function(r) {
20270                                         var i = e.prefixer(r);
20271                                         t.forEach(i, function(e) {
20272                                             if (n[0].hasAttribute(e)) {
20273                                                 var t = n[0].getAttribute(e);
20274                                                 c[0].setAttribute(e, t), n[0].removeAttribute(e)
20275                                             }
20276                                         })
20277                                     }("ng-disabled")
20278                             }
20279                             return function(e, t, n, r) {
20280                                 var i = r[0],
20281                                     o = r[1];
20282                                 i.init(o)
20283                             }
20284                         }
20285                     }
20286                 }
20287                 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], t.module("material.components.menuBar").directive("mdMenuItem", e)
20288             }(),
20289             function() {
20290                 function e(e, n, r, i, o, a) {
20291                     function s(a, s, y) {
20292                         function $(t, r, o, s, c, u) {
20293                             function p(e) {
20294                                 M.attr("stroke-dashoffset", l(b, y, e, E)), M.attr("transform", "rotate(" + w + " " + b / 2 + " " + b / 2 + ")")
20295                             }
20296                             var m = ++D,
20297                                 g = i.now(),
20298                                 v = r - t,
20299                                 b = d(a.mdDiameter),
20300                                 y = f(b),
20301                                 $ = o || n.easeFn,
20302                                 _ = s || n.duration,
20303                                 w = -90 * (c || 0),
20304                                 E = u || 100;
20305                             r === t ? p(r) : C = h(function n() {
20306                                 var r = e.Math.max(0, e.Math.min(i.now() - g, _));
20307                                 p($(r, t, v, _)), m === D && r < _ && (C = h(n))
20308                             })
20309                         }
20310
20311                         function _() {
20312                             $(S, A, n.easeFnIndeterminate, n.durationIndeterminate, O, 75), O = ++O % 4
20313                         }
20314
20315                         function w() {
20316                             x || (x = o(_, n.durationIndeterminate, 0, !1), _(), s.addClass(b).removeAttr("aria-valuenow"))
20317                         }
20318
20319                         function E() {
20320                             x && (o.cancel(x), x = null, s.removeClass(b))
20321                         }
20322                         var C, x, k = s[0],
20323                             T = t.element(k.querySelector("svg")),
20324                             M = t.element(k.querySelector("path")),
20325                             S = n.startIndeterminate,
20326                             A = n.endIndeterminate,
20327                             O = 0,
20328                             D = 0;
20329                         r(s), s.toggleClass(v, y.hasOwnProperty("disabled")), a.mdMode === g && w(), a.$on("$destroy", function() {
20330                             E(), C && p(C)
20331                         }), a.$watchGroup(["value", "mdMode", function() {
20332                             var e = k.disabled;
20333                             return !0 === e || !1 === e ? e : t.isDefined(s.attr("disabled"))
20334                         }], function(e, t) {
20335                             var n = e[1],
20336                                 r = e[2];
20337                             if (r !== t[2] && s.toggleClass(v, !!r), r) E();
20338                             else if (n !== m && n !== g && (n = g, y.$set("mdMode", n)), n === g) w();
20339                             else {
20340                                 var i = u(e[0]);
20341                                 E(), s.attr("aria-valuenow", i), $(u(t[0]), i)
20342                             }
20343                         }), a.$watch("mdDiameter", function(t) {
20344                             var n = d(t),
20345                                 r = f(n),
20346                                 i = u(a.value),
20347                                 o = n / 2 + "px",
20348                                 h = {
20349                                     width: n + "px",
20350                                     height: n + "px"
20351                                 };
20352                             T[0].setAttribute("viewBox", "0 0 " + n + " " + n), T.css(h).css("transform-origin", o + " " + o + " " + o), s.css(h), M.attr("stroke-width", r), M.attr("stroke-linecap", "square"), a.mdMode == g ? (M.attr("d", c(n, r, !0)), M.attr("stroke-dasharray", (n - r) * e.Math.PI * .75), M.attr("stroke-dashoffset", l(n, r, 1, 75))) : (M.attr("d", c(n, r, !1)), M.attr("stroke-dasharray", (n - r) * e.Math.PI), M.attr("stroke-dashoffset", l(n, r, 0, 100)), $(i, i))
20353                         })
20354                     }
20355
20356                     function c(e, t, n) {
20357                         var r = e / 2,
20358                             i = t / 2,
20359                             o = r + "," + i,
20360                             a = r - i;
20361                         return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
20362                     }
20363
20364                     function l(t, n, r, i) {
20365                         return (t - n) * e.Math.PI * (3 * (i || 100) / 100 - r / 100)
20366                     }
20367
20368                     function u(t) {
20369                         return e.Math.max(0, e.Math.min(t || 0, 100))
20370                     }
20371
20372                     function d(e) {
20373                         var t = n.progressSize;
20374                         if (e) {
20375                             var r = parseFloat(e);
20376                             return e.lastIndexOf("%") === e.length - 1 && (r = r / 100 * t), r
20377                         }
20378                         return t
20379                     }
20380
20381                     function f(e) {
20382                         return n.strokeWidth / 100 * e
20383                     }
20384                     var h = e.requestAnimationFrame || e.webkitRequestAnimationFrame || t.noop,
20385                         p = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame || t.noop,
20386                         m = "determinate",
20387                         g = "indeterminate",
20388                         v = "_md-progress-circular-disabled",
20389                         b = "md-mode-indeterminate";
20390                     return {
20391                         restrict: "E",
20392                         scope: {
20393                             value: "@",
20394                             mdDiameter: "@",
20395                             mdMode: "@"
20396                         },
20397                         template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
20398                         compile: function(e, n) {
20399                             if (e.attr({
20400                                     "aria-valuemin": 0,
20401                                     "aria-valuemax": 100,
20402                                     role: "progressbar"
20403                                 }), t.isUndefined(n.mdMode)) {
20404                                 var r = n.hasOwnProperty("value") ? m : g;
20405                                 n.$set("mdMode", r)
20406                             } else n.$set("mdMode", n.mdMode.trim());
20407                             return s
20408                         }
20409                     }
20410                 }
20411                 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], t.module("material.components.progressCircular").directive("mdProgressCircular", e)
20412             }(),
20413             function() {
20414                 t.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
20415                     function e(e, t, n, r) {
20416                         return n * e / r + t
20417                     }
20418
20419                     function n(e, t, n, r) {
20420                         var i = (e /= r) * e,
20421                             o = i * e;
20422                         return t + n * (6 * o * i + -15 * i * i + 10 * o)
20423                     }
20424                     var r = {
20425                         progressSize: 50,
20426                         strokeWidth: 10,
20427                         duration: 100,
20428                         easeFn: e,
20429                         durationIndeterminate: 1333,
20430                         startIndeterminate: 1,
20431                         endIndeterminate: 149,
20432                         easeFnIndeterminate: n,
20433                         easingPresets: {
20434                             linearEase: e,
20435                             materialEase: n
20436                         }
20437                     };
20438                     return {
20439                         configure: function(e) {
20440                             return r = t.extend(r, e || {})
20441                         },
20442                         $get: function() {
20443                             return r
20444                         }
20445                     }
20446                 })
20447             }(),
20448             function() {
20449                 t.module("material.components.tabs").directive("mdTab", function() {
20450                     function e(e, r, i, o) {
20451                         if (o) {
20452                             var a = o.getTabElementIndex(r),
20453                                 s = n(r, "md-tab-body").remove(),
20454                                 c = n(r, "md-tab-label").remove(),
20455                                 l = o.insertTab({
20456                                     scope: e,
20457                                     parent: e.$parent,
20458                                     index: a,
20459                                     element: r,
20460                                     template: s.html(),
20461                                     label: c.html()
20462                                 }, a);
20463                             e.select = e.select || t.noop, e.deselect = e.deselect || t.noop, e.$watch("active", function(e) {
20464                                 e && o.select(l.getIndex(), !0)
20465                             }), e.$watch("disabled", function() {
20466                                 o.refreshIndex()
20467                             }), e.$watch(function() {
20468                                 return o.getTabElementIndex(r)
20469                             }, function(e) {
20470                                 l.index = e, o.updateTabOrder()
20471                             }), e.$on("$destroy", function() {
20472                                 o.removeTab(l)
20473                             })
20474                         }
20475                     }
20476
20477                     function n(e, n) {
20478                         for (var r = e[0].children, i = 0, o = r.length; i < o; i++) {
20479                             var a = r[i];
20480                             if (a.tagName === n.toUpperCase()) return t.element(a)
20481                         }
20482                         return t.element()
20483                     }
20484                     return {
20485                         require: "^?mdTabs",
20486                         terminal: !0,
20487                         compile: function(r, i) {
20488                             var o = n(r, "md-tab-label"),
20489                                 a = n(r, "md-tab-body");
20490                             if (0 === o.length && (o = t.element("<md-tab-label></md-tab-label>"), i.label ? o.text(i.label) : o.append(r.contents()), 0 === a.length)) {
20491                                 var s = r.contents().detach();
20492                                 (a = t.element("<md-tab-body></md-tab-body>")).append(s)
20493                             }
20494                             return r.append(o), a.html() && r.append(a), e
20495                         },
20496                         scope: {
20497                             active: "=?mdActive",
20498                             disabled: "=?ngDisabled",
20499                             select: "&?mdOnSelect",
20500                             deselect: "&?mdOnDeselect"
20501                         }
20502                     }
20503                 })
20504             }(),
20505             function() {
20506                 t.module("material.components.tabs").directive("mdTabItem", function() {
20507                     return {
20508                         require: "^?mdTabs",
20509                         link: function(e, t, n, r) {
20510                             r && r.attachRipple(e, t)
20511                         }
20512                     }
20513                 })
20514             }(),
20515             function() {
20516                 t.module("material.components.tabs").directive("mdTabLabel", function() {
20517                     return {
20518                         terminal: !0
20519                     }
20520                 })
20521             }(),
20522             function() {
20523                 function e(e) {
20524                     return {
20525                         restrict: "A",
20526                         compile: function(t, n) {
20527                             var r = e(n.mdTabScroll, null, !0);
20528                             return function(e, t) {
20529                                 t.on("mousewheel", function(t) {
20530                                     e.$apply(function() {
20531                                         r(e, {
20532                                             $event: t
20533                                         })
20534                                     })
20535                                 })
20536                             }
20537                         }
20538                     }
20539                 }
20540                 e.$inject = ["$parse"], t.module("material.components.tabs").directive("mdTabScroll", e)
20541             }(),
20542             function() {
20543                 function e(e, r, i, o, a, s, c, l, u, d, f) {
20544                     function h() {
20545                         J.selectedIndex = J.selectedIndex || 0, p(), g(), m(), d(r), s.nextTick(function() {
20546                             te = N(), G(), B(), K(), J.tabs[J.selectedIndex] && J.tabs[J.selectedIndex].scope.select(), ie = !0, L()
20547                         })
20548                     }
20549
20550                     function p() {
20551                         var e = l.$mdTabsTemplate,
20552                             n = t.element(r[0].querySelector("md-tab-data"));
20553                         n.html(e), u(n.contents())(J.parent), delete l.$mdTabsTemplate
20554                     }
20555
20556                     function m() {
20557                         t.element(i).on("resize", A), e.$on("$destroy", y)
20558                     }
20559
20560                     function g() {
20561                         e.$watch("$mdTabsCtrl.selectedIndex", T)
20562                     }
20563
20564                     function v(e, t) {
20565                         var n = l.$normalize("md-" + e);
20566                         t && j(e, t), l.$observe(n, function(t) {
20567                             J[e] = t
20568                         })
20569                     }
20570
20571                     function b(e, t) {
20572                         function n(t) {
20573                             J[e] = "false" !== t
20574                         }
20575                         var r = l.$normalize("md-" + e);
20576                         t && j(e, t), l.hasOwnProperty(r) && n(l[r]), l.$observe(r, n)
20577                     }
20578
20579                     function y() {
20580                         re = !0, t.element(i).off("resize", A)
20581                     }
20582
20583                     function $(e) {
20584                         var n = N();
20585                         t.element(n.wrapper).toggleClass("md-stretch-tabs", I()), K()
20586                     }
20587
20588                     function _(e) {
20589                         J.shouldCenterTabs = R()
20590                     }
20591
20592                     function w(e, n) {
20593                         if (e !== n) {
20594                             var r = N();
20595                             t.forEach(r.tabs, function(t) {
20596                                 t.style.maxWidth = e + "px"
20597                             }), s.nextTick(J.updateInkBarStyles)
20598                         }
20599                     }
20600
20601                     function E(e, t) {
20602                         e !== t && (J.maxTabWidth = q(), J.shouldCenterTabs = R(), s.nextTick(function() {
20603                             J.maxTabWidth = q(), B(J.selectedIndex)
20604                         }))
20605                     }
20606
20607                     function C(e) {
20608                         r[e ? "removeClass" : "addClass"]("md-no-tab-content")
20609                     }
20610
20611                     function x(n) {
20612                         var r = N(),
20613                             i = J.shouldCenterTabs ? "" : "-" + n + "px";
20614                         t.element(r.paging).css(o.CSS.TRANSFORM, "translate3d(" + i + ", 0, 0)"), e.$broadcast("$mdTabsPaginationChanged")
20615                     }
20616
20617                     function k(e, t) {
20618                         e !== t && N().tabs[e] && (B(), V())
20619                     }
20620
20621                     function T(t, n) {
20622                         t !== n && (J.selectedIndex = H(t), J.lastSelectedIndex = n, J.updateInkBarStyles(), G(), B(t), e.$broadcast("$mdTabsChanged"), J.tabs[n] && J.tabs[n].scope.deselect(), J.tabs[t] && J.tabs[t].scope.select())
20623                     }
20624
20625                     function M() {
20626                         M.watcher || (M.watcher = e.$watch(function() {
20627                             s.nextTick(function() {
20628                                 M.watcher && r.prop("offsetParent") && (M.watcher(), M.watcher = null, A())
20629                             }, !1)
20630                         }))
20631                     }
20632
20633                     function S(e, t) {
20634                         ee || (J.focusIndex = J.selectedIndex = e), t && J.noSelectClick || s.nextTick(function() {
20635                             J.tabs[e].element.triggerHandler("click")
20636                         }, !1)
20637                     }
20638
20639                     function A() {
20640                         J.lastSelectedIndex = J.selectedIndex, J.offsetLeft = X(J.offsetLeft), s.nextTick(function() {
20641                             J.updateInkBarStyles(), L()
20642                         })
20643                     }
20644
20645                     function O(e) {
20646                         t.element(N().inkBar).toggleClass("ng-hide", e)
20647                     }
20648
20649                     function D(e) {
20650                         r.toggleClass("md-dynamic-height", e)
20651                     }
20652
20653                     function N() {
20654                         var e = {},
20655                             t = r[0];
20656                         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.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
20657                     }
20658
20659                     function I() {
20660                         switch (J.stretchTabs) {
20661                             case "always":
20662                                 return !0;
20663                             case "never":
20664                                 return !1;
20665                             default:
20666                                 return !J.shouldPaginate && i.matchMedia("(max-width: 600px)").matches
20667                         }
20668                     }
20669
20670                     function R() {
20671                         return J.centerTabs && !J.shouldPaginate
20672                     }
20673
20674                     function P() {
20675                         if (J.noPagination || !ie) return !1;
20676                         var e = r.prop("clientWidth");
20677                         return t.forEach(N().dummies, function(t) {
20678                             e -= t.offsetWidth
20679                         }), e < 0
20680                     }
20681
20682                     function H(e) {
20683                         if (-1 === e) return -1;
20684                         var t, n, r = Math.max(J.tabs.length - e, e);
20685                         for (t = 0; t <= r; t++) {
20686                             if ((n = J.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
20687                             if ((n = J.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
20688                         }
20689                         return e
20690                     }
20691
20692                     function j(e, t, n) {
20693                         Object.defineProperty(J, e, {
20694                             get: function() {
20695                                 return n
20696                             },
20697                             set: function(e) {
20698                                 var r = n;
20699                                 n = e, t && t(e, r)
20700                             }
20701                         })
20702                     }
20703
20704                     function L() {
20705                         J.maxTabWidth = q(), J.shouldPaginate = P()
20706                     }
20707
20708                     function F(e) {
20709                         var n = 0;
20710                         return t.forEach(e, function(e) {
20711                             n += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
20712                         }), Math.ceil(n)
20713                     }
20714
20715                     function q() {
20716                         return r.prop("clientWidth")
20717                     }
20718
20719                     function U(e, t) {
20720                         var n, r = t ? "focusIndex" : "selectedIndex";
20721                         for (n = J[r] + e; J.tabs[n] && J.tabs[n].scope.disabled; n += e);
20722                         J.tabs[n] && (J[r] = n)
20723                     }
20724
20725                     function V() {
20726                         J.styleTabItemFocus = "keyboard" === f.getLastInteractionType(), N().dummies[J.focusIndex].focus()
20727                     }
20728
20729                     function B(e) {
20730                         var n = N();
20731                         if (t.isNumber(e) || (e = J.focusIndex), n.tabs[e] && !J.shouldCenterTabs) {
20732                             var r = n.tabs[e],
20733                                 i = r.offsetLeft,
20734                                 o = r.offsetWidth + i;
20735                             J.offsetLeft = Math.max(J.offsetLeft, X(o - n.canvas.clientWidth + 64)), J.offsetLeft = Math.min(J.offsetLeft, X(i))
20736                         }
20737                     }
20738
20739                     function z() {
20740                         ne.forEach(function(e) {
20741                             s.nextTick(e)
20742                         }), ne = []
20743                     }
20744
20745                     function W() {
20746                         for (var e = !1, t = 0; t < J.tabs.length; t++)
20747                             if (J.tabs[t].hasContent) {
20748                                 e = !0;
20749                                 break
20750                             }
20751                         J.hasContent = e
20752                     }
20753
20754                     function Y() {
20755                         J.selectedIndex = H(J.selectedIndex), J.focusIndex = H(J.focusIndex)
20756                     }
20757
20758                     function G() {
20759                         if (!J.dynamicHeight) return r.css("height", "");
20760                         if (!J.tabs.length) return ne.push(G);
20761                         var e = N(),
20762                             t = e.contents[J.selectedIndex],
20763                             i = t ? t.offsetHeight : 0,
20764                             o = e.wrapper.offsetHeight,
20765                             a = i + o,
20766                             l = r.prop("clientHeight");
20767                         if (l !== a) {
20768                             "bottom" === r.attr("md-align-tabs") && (l -= o, a -= o, r.attr("md-border-bottom") !== n && ++l), ee = !0;
20769                             var u = {
20770                                     height: l + "px"
20771                                 },
20772                                 d = {
20773                                     height: a + "px"
20774                                 };
20775                             r.css(u), c(r, {
20776                                 from: u,
20777                                 to: d,
20778                                 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
20779                                 duration: .5
20780                             }).start().done(function() {
20781                                 r.css({
20782                                     transition: "none",
20783                                     height: ""
20784                                 }), s.nextTick(function() {
20785                                     r.css("transition", "")
20786                                 }), ee = !1
20787                             })
20788                         }
20789                     }
20790
20791                     function K() {
20792                         var e = N();
20793                         if (e.tabs[J.selectedIndex]) {
20794                             if (!J.tabs.length) return ne.push(J.updateInkBarStyles);
20795                             if (!r.prop("offsetParent")) return M();
20796                             var n = J.selectedIndex,
20797                                 i = e.paging.offsetWidth,
20798                                 o = e.tabs[n],
20799                                 a = o.offsetLeft,
20800                                 c = i - a - o.offsetWidth;
20801                             J.shouldCenterTabs && i > F(e.tabs) && s.nextTick(K, !1), Z(), t.element(e.inkBar).css({
20802                                 left: a + "px",
20803                                 right: c + "px"
20804                             })
20805                         } else t.element(e.inkBar).css({
20806                             left: "auto",
20807                             right: "auto"
20808                         })
20809                     }
20810
20811                     function Z() {
20812                         var e = N(),
20813                             n = J.selectedIndex,
20814                             r = J.lastSelectedIndex,
20815                             i = t.element(e.inkBar);
20816                         t.isNumber(r) && i.toggleClass("md-left", n < r).toggleClass("md-right", n > r)
20817                     }
20818
20819                     function X(e) {
20820                         var t = N();
20821                         if (!t.tabs.length || !J.shouldPaginate) return 0;
20822                         var n = t.tabs[t.tabs.length - 1],
20823                             r = n.offsetLeft + n.offsetWidth;
20824                         return e = Math.max(0, e), e = Math.min(r - t.canvas.clientWidth, e)
20825                     }
20826
20827                     function Q(e) {
20828                         if (e.hasContent) {
20829                             var n = r[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
20830                             t.element(n).attr("aria-controls", J.tabContentPrefix + e.id)
20831                         }
20832                     }
20833                     var J = this,
20834                         ee = !1,
20835                         te = N(),
20836                         ne = [],
20837                         re = !1,
20838                         ie = !1;
20839                     J.$onInit = function() {
20840                         v("stretchTabs", $), j("focusIndex", k, J.selectedIndex || 0), j("offsetLeft", x, 0), j("hasContent", C, !1), j("maxTabWidth", w, q()), j("shouldPaginate", E, !1), b("noInkBar", O), b("dynamicHeight", D), b("noPagination"), b("swipeContent"), b("noDisconnect"), b("autoselect"), b("noSelectClick"), b("centerTabs", _), b("enableDisconnect"), J.scope = e, J.parent = e.$parent, J.tabs = [], J.lastSelectedIndex = null, J.hasFocus = !1, J.styleTabItemFocus = !1, J.shouldCenterTabs = R(), J.tabContentPrefix = "tab-content-", h()
20841                     }, J.updatePagination = s.debounce(L, 100), J.redirectFocus = V, J.attachRipple = function(e, n) {
20842                         var r = N(),
20843                             i = {
20844                                 colorElement: t.element(r.inkBar)
20845                             };
20846                         a.attach(e, n, i)
20847                     }, J.insertTab = function(e, n) {
20848                         var r = ie,
20849                             i = {
20850                                 getIndex: function() {
20851                                     return J.tabs.indexOf(o)
20852                                 },
20853                                 isActive: function() {
20854                                     return this.getIndex() === J.selectedIndex
20855                                 },
20856                                 isLeft: function() {
20857                                     return this.getIndex() < J.selectedIndex
20858                                 },
20859                                 isRight: function() {
20860                                     return this.getIndex() > J.selectedIndex
20861                                 },
20862                                 shouldRender: function() {
20863                                     return !J.noDisconnect || this.isActive()
20864                                 },
20865                                 hasFocus: function() {
20866                                     return J.styleTabItemFocus && J.hasFocus && this.getIndex() === J.focusIndex
20867                                 },
20868                                 id: s.nextUid(),
20869                                 hasContent: !(!e.template || !e.template.trim())
20870                             },
20871                             o = t.extend(i, e);
20872                         return t.isDefined(n) ? J.tabs.splice(n, 0, o) : J.tabs.push(o), z(), W(), s.nextTick(function() {
20873                             L(), Q(o), r && J.autoselect && s.nextTick(function() {
20874                                 s.nextTick(function() {
20875                                     S(J.tabs.indexOf(o))
20876                                 })
20877                             })
20878                         }), o
20879                     }, J.removeTab = function(e) {
20880                         if (!re) {
20881                             var t = J.selectedIndex,
20882                                 n = J.tabs.splice(e.getIndex(), 1)[0];
20883                             Y(), J.selectedIndex === t && (n.scope.deselect(), J.tabs[J.selectedIndex] && J.tabs[J.selectedIndex].scope.select()), s.nextTick(function() {
20884                                 L(), J.offsetLeft = X(J.offsetLeft)
20885                             })
20886                         }
20887                     }, J.select = S, J.scroll = function(e) {
20888                         J.shouldPaginate && (e.preventDefault(), J.offsetLeft = X(J.offsetLeft - e.wheelDelta))
20889                     }, J.nextPage = function() {
20890                         var e, t, n = N(),
20891                             r = n.canvas.clientWidth,
20892                             i = r + J.offsetLeft;
20893                         for (e = 0; e < n.tabs.length && !((t = n.tabs[e]).offsetLeft + t.offsetWidth > i); e++);
20894                         r > t.offsetWidth ? J.offsetLeft = X(t.offsetLeft) : J.offsetLeft = X(t.offsetLeft + (t.offsetWidth - r + 1))
20895                     }, J.previousPage = function() {
20896                         var e, t, n = N();
20897                         for (e = 0; e < n.tabs.length && !((t = n.tabs[e]).offsetLeft + t.offsetWidth >= J.offsetLeft); e++);
20898                         n.canvas.clientWidth > t.offsetWidth ? J.offsetLeft = X(t.offsetLeft + t.offsetWidth - n.canvas.clientWidth) : J.offsetLeft = X(t.offsetLeft)
20899                     }, J.keydown = function(e) {
20900                         switch (e.keyCode) {
20901                             case o.KEY_CODE.LEFT_ARROW:
20902                                 e.preventDefault(), U(-1, !0);
20903                                 break;
20904                             case o.KEY_CODE.RIGHT_ARROW:
20905                                 e.preventDefault(), U(1, !0);
20906                                 break;
20907                             case o.KEY_CODE.SPACE:
20908                             case o.KEY_CODE.ENTER:
20909                                 e.preventDefault(), ee || S(J.focusIndex)
20910                         }
20911                     }, J.canPageForward = function() {
20912                         var e = N(),
20913                             t = e.tabs[e.tabs.length - 1];
20914                         return t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + J.offsetLeft
20915                     }, J.canPageBack = function() {
20916                         return J.offsetLeft > 0
20917                     }, J.refreshIndex = Y, J.incrementIndex = U, J.getTabElementIndex = function(e) {
20918                         var t = r[0].getElementsByTagName("md-tab");
20919                         return Array.prototype.indexOf.call(t, e[0])
20920                     }, J.updateInkBarStyles = s.debounce(K, 100), J.updateTabOrder = s.debounce(function() {
20921                         var e = J.tabs[J.selectedIndex],
20922                             t = J.tabs[J.focusIndex];
20923                         J.tabs = J.tabs.sort(function(e, t) {
20924                             return e.index - t.index
20925                         }), J.selectedIndex = J.tabs.indexOf(e), J.focusIndex = J.tabs.indexOf(t)
20926                     }, 100), J.getFocusedTabId = function() {
20927                         var e = J.tabs[J.focusIndex];
20928                         return e && e.id ? "tab-item-" + e.id : null
20929                     }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
20930                 }
20931                 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction"], t.module("material.components.tabs").controller("MdTabsController", e)
20932             }(),
20933             function() {
20934                 function e(e) {
20935                     return {
20936                         scope: {
20937                             selectedIndex: "=?mdSelected"
20938                         },
20939                         template: function(t, n) {
20940                             return n.$mdTabsTemplate = t.html(), '<md-tabs-wrapper> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-src="' + e.mdTabsArrow + '"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-src="' + e.mdTabsArrow + '"></md-icon> </md-next-button> <md-tabs-canvas tabindex="{{ $mdTabsCtrl.hasFocus ? -1 : 0 }}" aria-activedescendant="{{$mdTabsCtrl.getFocusedTabId()}}" ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate, \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" ng-keydown="$mdTabsCtrl.keydown($event)" role="tablist"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" md-tab-scroll="$mdTabsCtrl.scroll($event)"> <md-tab-item tabindex="-1" class="md-tab" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" md-tab-id="{{::tab.id}}"aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" 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-touch-action="pan-y" 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 class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab class="md-tab" tabindex="-1" id="tab-item-{{::tab.id}}" md-tab-id="{{::tab.id}}"aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" 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)" md-swipe-touch-action="pan-y" 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>'
20941                         },
20942                         controller: "MdTabsController",
20943                         controllerAs: "$mdTabsCtrl",
20944                         bindToController: !0
20945                     }
20946                 }
20947                 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.tabs").directive("mdTabs", e)
20948             }(),
20949             function() {
20950                 function e(e, t) {
20951                     return {
20952                         require: "^?mdTabs",
20953                         link: function(n, r, i, o) {
20954                             if (o) {
20955                                 var a, s, c = function() {
20956                                     o.updatePagination(), o.updateInkBarStyles()
20957                                 };
20958                                 if ("MutationObserver" in t) {
20959                                     var l = {
20960                                         childList: !0,
20961                                         subtree: !0,
20962                                         characterData: !0
20963                                     };
20964                                     (a = new MutationObserver(c)).observe(r[0], l), s = a.disconnect.bind(a)
20965                                 } else {
20966                                     var u = e.debounce(c, 15, null, !1);
20967                                     r.on("DOMSubtreeModified", u), s = r.off.bind(r, "DOMSubtreeModified", u)
20968                                 }
20969                                 n.$on("$destroy", function() {
20970                                     s()
20971                                 })
20972                             }
20973                         }
20974                     }
20975                 }
20976                 e.$inject = ["$mdUtil", "$window"], t.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
20977             }(),
20978             function() {
20979                 function e(e, t) {
20980                     return {
20981                         restrict: "A",
20982                         link: function(n, r, i, o) {
20983                             function a() {
20984                                 o.enableDisconnect && t.disconnectScope(c)
20985                             }
20986
20987                             function s() {
20988                                 o.enableDisconnect && t.reconnectScope(c)
20989                             }
20990                             if (o) {
20991                                 var c = o.enableDisconnect ? n.compileScope.$new() : n.compileScope;
20992                                 return r.html(n.template), e(r.contents())(c), t.nextTick(function() {
20993                                     n.$watch("connected", function(e) {
20994                                         !1 === e ? a() : s()
20995                                     }), n.$on("$destroy", s)
20996                                 })
20997                             }
20998                         },
20999                         scope: {
21000                             template: "=mdTabsTemplate",
21001                             connected: "=?mdConnectedIf",
21002                             compileScope: "=mdScope"
21003                         },
21004                         require: "^?mdTabs"
21005                     }
21006                 }
21007                 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.tabs").directive("mdTabsTemplate", e)
21008             }(), t.module("material.core").constant("$MD_THEME_CSS", 'md-autocomplete.md-THEME_NAME-theme{background:"{{background-A100}}"}md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]){background:"{{background-100}}"}md-autocomplete.md-THEME_NAME-theme button md-icon path{fill:"{{background-600}}"}md-autocomplete.md-THEME_NAME-theme button:after{background:"{{background-600-0.3}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme{background:"{{background-A100}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li{color:"{{background-900}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li .highlight{color:"{{background-600}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li.selected,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover{background:"{{background-200}}"}md-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-bottom-sheet.md-THEME_NAME-theme{background-color:"{{background-50}}";border-top-color:"{{background-300}}"}md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item{color:"{{foreground-1}}"}md-bottom-sheet.md-THEME_NAME-theme .md-subheader{background-color:"{{background-50}}";color:"{{foreground-1}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme:not([disabled]):hover{background-color:"{{background-500-0.2}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover{background-color:transparent}.md-button.md-THEME_NAME-theme.md-fab md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab,.md-button.md-THEME_NAME-theme.md-primary.md-raised{color:"{{primary-contrast}}";background-color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon{color:"{{primary-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover{background-color:"{{primary-600}}"}.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-fab{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-raised{color:"{{background-900}}";background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon{color:"{{background-900}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover{background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused{background-color:"{{background-200}}"}.md-button.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab,.md-button.md-THEME_NAME-theme.md-warn.md-raised{color:"{{warn-contrast}}";background-color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon{color:"{{warn-contrast}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover{background-color:"{{warn-600}}"}.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab,.md-button.md-THEME_NAME-theme.md-accent.md-raised{color:"{{accent-contrast}}";background-color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent[disabled],.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled],.md-button.md-THEME_NAME-theme.md-warn[disabled],.md-button.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}";cursor:default}.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon,.md-button.md-THEME_NAME-theme[disabled] md-icon{color:"{{foreground-3}}"}.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled]{background-color:"{{foreground-4}}"}.md-button.md-THEME_NAME-theme[disabled]{background-color:transparent}._md a.md-THEME_NAME-theme:not(.md-button).md-primary{color:"{{primary-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover{color:"{{primary-700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent{color:"{{accent-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover{color:"{{accent-A700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn{color:"{{warn-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover{color:"{{warn-700}}"}md-card.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-hue-1}}";border-radius:2px}md-card.md-THEME_NAME-theme .md-card-image{border-radius:2px 2px 0 0}md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon{color:"{{background-color}}";background-color:"{{foreground-3}}"}md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead,md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme .md-ripple{color:"{{accent-A700}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before{background-color:"{{accent-color-0.26}}"}md-checkbox.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon{background-color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after{border-color:"{{accent-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple{color:"{{primary-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon{background-color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after{border-color:"{{primary-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple{color:"{{warn-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon{background-color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before{background-color:"{{warn-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled]:not(.md-checked) .md-icon{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon{background-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-icon:after{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-label{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips{box-shadow:0 1px "{{foreground-4}}"}md-chips.md-THEME_NAME-theme .md-chips.md-focused{box-shadow:0 2px "{{primary-color}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input{color:"{{foreground-1}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-moz-placeholder,md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-moz-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-ms-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme md-chip{background:"{{background-300}}";color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip md-icon{color:"{{background-700}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused{background:"{{primary-color}}";color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused md-icon{color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip._md-chip-editing{background:transparent;color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path{fill:"{{background-500}}"}.md-contact-suggestion span.md-contact-email{color:"{{background-400}}"}md-content.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-default}}"}.md-calendar.md-THEME_NAME-theme{background:"{{background-A100}}";color:"{{background-A200-0.87}}"}.md-calendar.md-THEME_NAME-theme tr:last-child td{border-bottom-color:"{{background-200}}"}.md-THEME_NAME-theme .md-calendar-day-header{background:"{{background-300}}";color:"{{background-A200-0.87}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today .md-calendar-date-selection-indicator{border:1px solid "{{primary-500}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today.md-calendar-date-disabled{color:"{{primary-500-0.6}}"}.md-calendar-date.md-focus .md-THEME_NAME-theme .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover{background:"{{background-300}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator{background:"{{primary-500}}";color:"{{primary-500-contrast}}";border-color:transparent}.md-THEME_NAME-theme .md-calendar-date-disabled,.md-THEME_NAME-theme .md-calendar-month-label-disabled{color:"{{background-A200-0.435}}"}.md-THEME_NAME-theme .md-datepicker-input{color:"{{foreground-1}}"}.md-THEME_NAME-theme .md-datepicker-input:-moz-placeholder,.md-THEME_NAME-theme .md-datepicker-input::-moz-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input:-ms-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input-container{border-bottom-color:"{{foreground-4}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid,.md-warn .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar-pane{border-color:"{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-triangle-button .md-datepicker-expand-triangle{border-top-color:"{{foreground-2}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon,.md-THEME_NAME-theme .md-datepicker-open.md-accent .md-datepicker-calendar-icon{color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-open.md-warn .md-datepicker-calendar-icon,.md-warn .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar{background:"{{background-A100}}"}.md-THEME_NAME-theme .md-datepicker-input-mask-opaque{box-shadow:0 0 0 9999px "{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-input-container{background:"{{background-hue-1}}"}md-dialog.md-THEME_NAME-theme{border-radius:4px;background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions,md-dialog.md-THEME_NAME-theme.md-content-overflow md-dialog-actions,md-divider.md-THEME_NAME-theme{border-top-color:"{{foreground-4}}"}.layout-gt-lg-row>md-divider.md-THEME_NAME-theme,.layout-gt-md-row>md-divider.md-THEME_NAME-theme,.layout-gt-sm-row>md-divider.md-THEME_NAME-theme,.layout-gt-xs-row>md-divider.md-THEME_NAME-theme,.layout-lg-row>md-divider.md-THEME_NAME-theme,.layout-md-row>md-divider.md-THEME_NAME-theme,.layout-row>md-divider.md-THEME_NAME-theme,.layout-sm-row>md-divider.md-THEME_NAME-theme,.layout-xl-row>md-divider.md-THEME_NAME-theme,.layout-xs-row>md-divider.md-THEME_NAME-theme{border-right-color:"{{foreground-4}}"}md-icon.md-THEME_NAME-theme{color:"{{foreground-2}}"}md-icon.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}md-icon.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}md-icon.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-input-container.md-THEME_NAME-theme .md-input{color:"{{foreground-1}}";border-color:"{{foreground-4}}"}md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme>md-icon{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme .md-placeholder,md-input-container.md-THEME_NAME-theme label{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme label.md-required:after{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-focused):not(.md-input-invalid) label.md-required:after{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation,md-input-container.md-THEME_NAME-theme .md-input-messages-animation{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation .md-char-counter,md-input-container.md-THEME_NAME-theme .md-input-messages-animation .md-char-counter{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-moz-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-ms-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-webkit-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-resized .md-input{border-color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon{color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input{border-color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent md-icon{color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn md-icon{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter,md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input-message-animation,md-input-container.md-THEME_NAME-theme.md-input-invalid label{color:"{{warn-A700}}"}[disabled] md-input-container.md-THEME_NAME-theme .md-input,md-input-container.md-THEME_NAME-theme .md-input[disabled]{border-bottom-color:transparent;color:"{{foreground-3}}";background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4{color:"{{foreground-1}}"}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style{background-color:"{{background-100}}"}md-list.md-THEME_NAME-theme md-list-item .md-avatar-icon{background-color:"{{foreground-3}}";color:"{{background-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight{color:"{{primary-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight.md-accent{color:"{{accent-color}}"}md-menu-content.md-THEME_NAME-theme{background-color:"{{background-A100}}"}md-menu-content.md-THEME_NAME-theme md-menu-item{color:"{{background-A200-0.87}}"}md-menu-content.md-THEME_NAME-theme md-menu-item md-icon{color:"{{background-A200-0.54}}"}md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled],md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled] md-icon{color:"{{background-A200-0.25}}"}md-menu-content.md-THEME_NAME-theme md-menu-divider{background-color:"{{background-A200-0.11}}"}md-menu-bar.md-THEME_NAME-theme>button.md-button{color:"{{foreground-2}}";border-radius:2px}md-menu-bar.md-THEME_NAME-theme md-menu.md-open>button,md-menu-bar.md-THEME_NAME-theme md-menu>button:focus{outline:none;background:"{{background-200}}"}md-menu-bar.md-THEME_NAME-theme.md-open:not(.md-keyboard-mode) md-menu:hover>button{background-color:"{{ background-500-0.2}}"}md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:focus,md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:hover{background:transparent}md-menu-content.md-THEME_NAME-theme .md-menu>.md-button:after{color:"{{background-A200-0.54}}"}md-menu-content.md-THEME_NAME-theme .md-menu.md-open>.md-button{background-color:"{{ background-500-0.2}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar{background-color:"{{background-A100}}";color:"{{background-A200}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler{background-color:"{{primary-color}}";color:"{{background-A100-0.87}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler md-icon{color:"{{background-A100-0.87}}"}md-nav-bar.md-THEME_NAME-theme .md-nav-bar{background-color:transparent;border-color:"{{foreground-4}}"}md-nav-bar.md-THEME_NAME-theme .md-button._md-nav-button.md-unselected{color:"{{foreground-2}}"}md-nav-bar.md-THEME_NAME-theme md-nav-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar{background-color:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar{background-color:"{{warn-color}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar{background-color:"{{primary-color}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{primary-color}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}md-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-panel-backdrop.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}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-warn .md-bar1{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before{background:radial-gradient("{{warn-100}}" 0,"{{warn-100}}" 16%,transparent 42%)}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before{background:radial-gradient("{{accent-100}}" 0,"{{accent-100}}" 16%,transparent 42%)}md-radio-button.md-THEME_NAME-theme .md-off{border-color:"{{foreground-2}}"}md-radio-button.md-THEME_NAME-theme .md-on{background-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-off{border-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme .md-container .md-ripple{color:"{{accent-A700}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on{background-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off{border-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple{color:"{{primary-600}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on{background-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off{border-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple{color:"{{warn-600}}"}md-radio-button.md-THEME_NAME-theme[disabled],md-radio-group.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}"}md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on{border-color:"{{foreground-3}}"}md-radio-group.md-THEME_NAME-theme .md-checked .md-ink-ripple{color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked:not([disabled]).md-primary .md-ink-ripple,md-radio-group.md-THEME_NAME-theme.md-primary .md-checked:not([disabled]) .md-ink-ripple{color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked.md-primary .md-ink-ripple{color:"{{warn-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before{background-color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-primary .md-checked .md-container:before{background-color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-warn .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-warn .md-checked .md-container:before{background-color:"{{warn-color-0.26}}"}md-sidenav.md-THEME_NAME-theme,md-sidenav.md-THEME_NAME-theme md-content{background-color:"{{background-hue-1}}"}md-input-container md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-input-container:not(.md-input-focused):not(.md-input-invalid) md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{foreground-3}}"}md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value,md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{primary-color}}"}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme[disabled] .md-select-value{border-bottom-color:transparent;background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-select.md-THEME_NAME-theme .md-select-value{border-bottom-color:"{{foreground-4}}"}md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value{border-bottom-color:"{{primary-color}}";color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value.md-select-placeholder{color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-value{border-bottom-color:"{{accent-color}}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-value{border-bottom-color:"{{warn-color}}"}md-select.md-THEME_NAME-theme[disabled] .md-select-icon,md-select.md-THEME_NAME-theme[disabled] .md-select-value,md-select.md-THEME_NAME-theme[disabled] .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-icon{color:"{{foreground-2}}"}md-select-menu.md-THEME_NAME-theme md-content{background:"{{background-A100}}"}md-select-menu.md-THEME_NAME-theme md-content md-optgroup{color:"{{background-600-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option{color:"{{background-900-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[disabled] .md-text{color:"{{background-400-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):focus,md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):hover{background:"{{background-200}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]{color:"{{primary-500}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]:focus{color:"{{primary-600}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent{color:"{{accent-color}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent:focus{color:"{{accent-A700}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ripple{color:"{{primary-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ripple{color:"{{background-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ink-ripple{color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon{background-color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected].md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon:after{border-color:"{{primary-contrast-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}.md-checkbox-enabled.md-THEME_NAME-theme md-option .md-text{color:"{{background-900-0.87}}"}md-slider.md-THEME_NAME-theme .md-track{background-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme .md-track-ticks{color:"{{background-contrast}}"}md-slider.md-THEME_NAME-theme .md-focus-ring{background-color:"{{accent-A200-0.2}}"}md-slider.md-THEME_NAME-theme .md-disabled-thumb{border-color:"{{background-color}}";background-color:"{{background-color}}"}md-slider.md-THEME_NAME-theme.md-min .md-thumb:after{background-color:"{{background-color}}";border-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme.md-min .md-focus-ring{background-color:"{{foreground-3-0.38}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-thumb:after{background-color:"{{background-contrast}}";border-color:transparent}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme .md-track.md-track-fill{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb:after{border-color:"{{accent-color}}";background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign:after{border-top-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb-text{color:"{{accent-contrast}}"}md-slider.md-THEME_NAME-theme.md-warn .md-focus-ring{background-color:"{{warn-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after{border-color:"{{warn-color}}";background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign:after{border-top-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text{color:"{{warn-contrast}}"}md-slider.md-THEME_NAME-theme.md-primary .md-focus-ring{background-color:"{{primary-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after{border-color:"{{primary-color}}";background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign:after{border-top-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text{color:"{{primary-contrast}}"}md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after{border-color:transparent}md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after,md-slider.md-THEME_NAME-theme[disabled][md-discrete] .md-thumb:after{background-color:"{{foreground-3}}";border-color:transparent}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-disabled-thumb{border-color:transparent;background-color:transparent}md-slider-container[disabled]>:first-child:not(md-slider),md-slider-container[disabled]>:last-child:not(md-slider){color:"{{foreground-3}}"}.md-subheader.md-THEME_NAME-theme{color:"{{ foreground-2-0.23 }}";background-color:"{{background-default}}"}.md-subheader.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-subheader.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-subheader.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme .md-ink-ripple{color:"{{background-500}}"}md-switch.md-THEME_NAME-theme .md-thumb{background-color:"{{background-50}}"}md-switch.md-THEME_NAME-theme .md-bar{background-color:"{{background-500}}"}md-switch.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked .md-thumb{background-color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked .md-bar{background-color:"{{accent-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before{background-color:"{{accent-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-ink-ripple{color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb{background-color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar{background-color:"{{primary-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before{background-color:"{{primary-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-ink-ripple{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb{background-color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar{background-color:"{{warn-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before{background-color:"{{warn-color-0.26}}"}md-switch.md-THEME_NAME-theme[disabled] .md-thumb{background-color:"{{background-400}}"}md-switch.md-THEME_NAME-theme[disabled] .md-bar{background-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme md-tabs-wrapper{background-color:transparent;border-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme .md-paginator md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme md-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme .md-tab{color:"{{foreground-2}}"}md-tabs.md-THEME_NAME-theme .md-tab[disabled],md-tabs.md-THEME_NAME-theme .md-tab[disabled] md-icon{color:"{{foreground-3}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-active,md-tabs.md-THEME_NAME-theme .md-tab.md-active md-icon,md-tabs.md-THEME_NAME-theme .md-tab.md-focused,md-tabs.md-THEME_NAME-theme .md-tab.md-focused md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-focused{background:"{{primary-color-0.1}}"}md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper{background-color:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper{background-color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper{background-color:"{{warn-color}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{primary-color}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toast.md-THEME_NAME-theme .md-toast-content{background-color:#323232;color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button{color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight{color:"{{accent-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-primary{color:"{{primary-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-warn{color:"{{warn-color}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar){background-color:"{{primary-color}}";color:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) md-icon{color:"{{primary-contrast}}";fill:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) .md-button[disabled] md-icon{color:"{{primary-contrast-0.26}}";fill:"{{primary-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-ink-ripple{color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent md-icon{color:"{{accent-contrast}}";fill:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-button[disabled] md-icon{color:"{{accent-contrast-0.26}}";fill:"{{accent-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-warn{background-color:"{{warn-color}}";color:"{{warn-contrast}}"}.md-panel.md-tooltip.md-THEME_NAME-theme{color:"{{background-700-contrast}}";background-color:"{{background-700}}"}body.md-THEME_NAME-theme,html.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-color}}"}')
21009     }(window, window.angular), window.ngMaterial = {
21010         version: {
21011             full: "1.1.4"
21012         }
21013     },
21014     function(e, t) {
21015         "object" == typeof exports && "undefined" != typeof module ? t(exports, require("angular")) : "function" == typeof define && define.amd ? define(["exports", "angular"], t) : t(e["@uirouter/angularjs"] = e["@uirouter/angularjs"] || {}, e.angular)
21016     }(this, function(e, t) {
21017         "use strict";
21018
21019         function n(e) {
21020             function t(n) {
21021                 return n.length >= r ? e.apply(null, n) : function() {
21022                     return t(n.concat([].slice.apply(arguments)))
21023                 }
21024             }
21025             var n = [].slice.apply(arguments, [1]),
21026                 r = e.length;
21027             return t(n)
21028         }
21029
21030         function r() {
21031             var e = arguments,
21032                 t = e.length - 1;
21033             return function() {
21034                 for (var n = t, r = e[t].apply(this, arguments); n--;) r = e[n].call(this, r);
21035                 return r
21036             }
21037         }
21038
21039         function i() {
21040             for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
21041             return r.apply(null, [].slice.call(arguments).reverse())
21042         }
21043
21044         function o(e, t) {
21045             return function() {
21046                 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
21047                 return e.apply(null, n) && t.apply(null, n)
21048             }
21049         }
21050
21051         function a(e, t) {
21052             return function() {
21053                 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
21054                 return e.apply(null, n) || t.apply(null, n)
21055             }
21056         }
21057
21058         function s(e, t) {
21059             return function(n) {
21060                 return n[e].apply(n, t)
21061             }
21062         }
21063
21064         function c(e) {
21065             return function(t) {
21066                 for (var n = 0; n < e.length; n++)
21067                     if (e[n][0](t)) return e[n][1](t)
21068             }
21069         }
21070
21071         function l(e) {
21072             if (Je(e) && e.length) {
21073                 var t = e.slice(0, -1),
21074                     n = e.slice(-1);
21075                 return !(t.filter(Re(Xe)).length || n.filter(Re(Ke)).length)
21076             }
21077             return Ke(e)
21078         }
21079
21080         function u(e) {
21081             return e
21082         }
21083
21084         function d() {}
21085
21086         function f(e, t, n, r, i) {
21087             void 0 === i && (i = !1);
21088             var o = function(t) {
21089                     return e()[t].bind(n())
21090                 },
21091                 a = function(e) {
21092                     return function() {
21093                         return t[e] = o(e), t[e].apply(null, arguments)
21094                     }
21095                 };
21096             return (r = r || Object.keys(e())).reduce(function(e, t) {
21097                 return e[t] = i ? a(t) : o(t), e
21098             }, t)
21099         }
21100
21101         function h(e, t) {
21102             return -1 !== e.indexOf(t)
21103         }
21104
21105         function p(e, t) {
21106             var n = e.indexOf(t);
21107             return n >= 0 && e.splice(n, 1), e
21108         }
21109
21110         function m(e, t) {
21111             return e.push(t), t
21112         }
21113
21114         function g(e) {
21115             for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
21116             var r = t.concat({}).reverse(),
21117                 i = dt.apply(null, r);
21118             return dt({}, i, b(e || {}, Object.keys(i)))
21119         }
21120
21121         function v(e, t) {
21122             var n = [];
21123             for (var r in e.path) {
21124                 if (e.path[r] !== t.path[r]) break;
21125                 n.push(e.path[r])
21126             }
21127             return n
21128         }
21129
21130         function b(e, t) {
21131             var n = {};
21132             for (var r in e) - 1 !== t.indexOf(r) && (n[r] = e[r]);
21133             return n
21134         }
21135
21136         function y(e, t) {
21137             return Object.keys(e).filter(Re(pt(t))).reduce(function(t, n) {
21138                 return t[n] = e[n], t
21139             }, {})
21140         }
21141
21142         function $(e, t) {
21143             return E(e, De(t))
21144         }
21145
21146         function _(e, t) {
21147             var n = Je(e),
21148                 r = n ? [] : {},
21149                 i = n ? function(e) {
21150                     return r.push(e)
21151                 } : function(e, t) {
21152                     return r[t] = e
21153                 };
21154             return ut(e, function(e, n) {
21155                 t(e, n) && i(e, n)
21156             }), r
21157         }
21158
21159         function w(e, t) {
21160             var n;
21161             return ut(e, function(e, r) {
21162                 n || t(e, r) && (n = e)
21163             }), n
21164         }
21165
21166         function E(e, t) {
21167             var n = Je(e) ? [] : {};
21168             return ut(e, function(e, r) {
21169                 return n[r] = t(e, r)
21170             }), n
21171         }
21172
21173         function C(e, t) {
21174             return e.push(t), e
21175         }
21176
21177         function x(e, t) {
21178             return void 0 === t && (t = "assert failure"),
21179                 function(n) {
21180                     var r = e(n);
21181                     if (!r) throw new Error(Ke(t) ? t(n) : t);
21182                     return r
21183                 }
21184         }
21185
21186         function k() {
21187             for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
21188             if (0 === e.length) return [];
21189             var n, r = e.reduce(function(e, t) {
21190                     return Math.min(t.length, e)
21191                 }, 9007199254740991),
21192                 i = [];
21193             for (n = 0; n < r; n++) switch (e.length) {
21194                 case 1:
21195                     i.push([e[0][n]]);
21196                     break;
21197                 case 2:
21198                     i.push([e[0][n], e[1][n]]);
21199                     break;
21200                 case 3:
21201                     i.push([e[0][n], e[1][n], e[2][n]]);
21202                     break;
21203                 case 4:
21204                     i.push([e[0][n], e[1][n], e[2][n], e[3][n]]);
21205                     break;
21206                 default:
21207                     i.push(e.map(function(e) {
21208                         return e[n]
21209                     }))
21210             }
21211             return i
21212         }
21213
21214         function T(e, t) {
21215             var n, r;
21216             if (Je(t) && (n = t[0], r = t[1]), !Xe(n)) throw new Error("invalid parameters to applyPairs");
21217             return e[n] = r, e
21218         }
21219
21220         function M(e) {
21221             return e.length && e[e.length - 1] || void 0
21222         }
21223
21224         function S(e) {
21225             for (var t = 1; t < arguments.length; t++) {
21226                 var n = arguments[t];
21227                 if (n)
21228                     for (var r = Object.keys(n), i = 0; i < r.length; i++) e[r[i]] = n[r[i]]
21229             }
21230             return e
21231         }
21232
21233         function A(e, t) {
21234             if (e === t) return !0;
21235             if (null === e || null === t) return !1;
21236             if (e !== e && t !== t) return !0;
21237             var n = typeof e;
21238             if (n !== typeof t || "object" !== n) return !1;
21239             var r = [e, t];
21240             if (Pe(Je)(r)) return O(e, t);
21241             if (Pe(et)(r)) return e.getTime() === t.getTime();
21242             if (Pe(tt)(r)) return e.toString() === t.toString();
21243             if (Pe(Ke)(r)) return !0;
21244             if ([Ke, Je, et, tt].map(He).reduce(function(e, t) {
21245                     return e || !!t(r)
21246                 }, !1)) return !1;
21247             var i, o = {};
21248             for (i in e) {
21249                 if (!A(e[i], t[i])) return !1;
21250                 o[i] = !0
21251             }
21252             for (i in t)
21253                 if (!o[i]) return !1;
21254             return !0
21255         }
21256
21257         function O(e, t) {
21258             return e.length === t.length && k(e, t).reduce(function(e, t) {
21259                 return e && A(t[0], t[1])
21260             }, !0)
21261         }
21262
21263         function D(e) {
21264             if (!e) return "ui-view (defunct)";
21265             var t = e.creationContext ? e.creationContext.name || "(root)" : "(none)";
21266             return "[ui-view#" + e.id + " " + e.$type + ":" + e.fqn + " (" + e.name + "@" + t + ")]"
21267         }
21268
21269         function N(t) {
21270             return Ze(t) ? e.Category[t] : e.Category[e.Category[t]]
21271         }
21272
21273         function I(e, t) {
21274             var n = Xe(t) ? [t] : t;
21275             return !!(Ke(n) ? n : function(e) {
21276                 for (var t = n, r = 0; r < t.length; r++) {
21277                     var i = new qe(t[r]);
21278                     if (i && i.matches(e.name) || !i && t[r] === e.name) return !0
21279                 }
21280                 return !1
21281             })(e)
21282         }
21283
21284         function R(e, t, n) {
21285             function r(e, r, o) {
21286                 void 0 === o && (o = {});
21287                 var a = new zt(t, n, r, e, o);
21288                 return i.push(a),
21289                     function() {
21290                         a._deregistered = !0, mt(i)(a)
21291                     }
21292             }
21293             var i = (e._registeredHooks = e._registeredHooks || {})[n.name] = [];
21294             return e[n.name] = r, r
21295         }
21296
21297         function P(e) {
21298             return void 0 === e && (e = !1),
21299                 function(t, n) {
21300                     var r = e ? -1 : 1,
21301                         i = (t.node.state.path.length - n.node.state.path.length) * r;
21302                     return 0 !== i ? i : n.hook.priority - t.hook.priority
21303                 }
21304         }
21305
21306         function H(e, t) {
21307             function n(e) {
21308                 return Je(e) ? e : We(e) ? [e] : []
21309             }
21310
21311             function r(e) {
21312                 switch (e.length) {
21313                     case 0:
21314                         return;
21315                     case 1:
21316                         return "auto" === t ? e[0] : e;
21317                     default:
21318                         return e
21319                 }
21320             }
21321
21322             function i(e, t) {
21323                 return function(i) {
21324                     if (Je(i) && 0 === i.length) return i;
21325                     var o = E(n(i), e);
21326                     return !0 === t ? 0 === _(o, function(e) {
21327                         return !e
21328                     }).length : r(o)
21329                 }
21330             }
21331
21332             function o(e) {
21333                 return function(t, r) {
21334                     var i = n(t),
21335                         o = n(r);
21336                     if (i.length !== o.length) return !1;
21337                     for (var a = 0; a < i.length; a++)
21338                         if (!e(i[a], o[a])) return !1;
21339                     return !0
21340                 }
21341             }
21342             var a = this;
21343             ["encode", "decode", "equals", "$normalize"].forEach(function(t) {
21344                 var n = e[t].bind(e),
21345                     r = "equals" === t ? o : i;
21346                 a[t] = r(n)
21347             }), dt(this, {
21348                 dynamic: e.dynamic,
21349                 name: e.name,
21350                 pattern: e.pattern,
21351                 inherit: e.inherit,
21352                 is: i(e.is.bind(e), !0),
21353                 $arrayMode: t
21354             })
21355         }
21356
21357         function j(e) {
21358             function t() {
21359                 return e.value
21360             }
21361             return e = Kt(e) && {
21362                 value: e
21363             } || e, t.__cacheable = !0, dt(e, {
21364                 $$fn: l(e.value) ? e.value : t
21365             })
21366         }
21367
21368         function L(t, n, r, i, o) {
21369             if (t.type && n && "string" !== n.name) throw new Error("Param '" + i + "' has two type configurations.");
21370             if (t.type && n && "string" === n.name && o.type(t.type)) return o.type(t.type);
21371             if (n) return n;
21372             if (!t.type) {
21373                 var a = r === e.DefType.CONFIG ? "any" : r === e.DefType.PATH ? "path" : r === e.DefType.SEARCH ? "query" : "string";
21374                 return o.type(a)
21375             }
21376             return t.type instanceof Yt ? t.type : o.type(t.type)
21377         }
21378
21379         function F(e, t, n) {
21380             var r = e.squash;
21381             if (!t || !1 === r) return !1;
21382             if (!We(r) || null == r) return n;
21383             if (!0 === r || Xe(r)) return r;
21384             throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
21385         }
21386
21387         function q(e, t, n, r) {
21388             var i, o, a = [{
21389                 from: "",
21390                 to: n || t ? void 0 : ""
21391             }, {
21392                 from: null,
21393                 to: n || t ? void 0 : ""
21394             }];
21395             return i = Je(e.replace) ? e.replace : [], Xe(r) && i.push({
21396                 from: r,
21397                 to: void 0
21398             }), o = E(i, De("from")), _(a, function(e) {
21399                 return -1 === o.indexOf(e.from)
21400             }).concat(i)
21401         }
21402
21403         function U(e, t) {
21404             return t.length <= e ? t : t.substr(0, e - 3) + "..."
21405         }
21406
21407         function V(e, t) {
21408             for (; t.length < e;) t += " ";
21409             return t
21410         }
21411
21412         function B(e) {
21413             return e.replace(/^([A-Z])/, function(e) {
21414                 return e.toLowerCase()
21415             }).replace(/([A-Z])/g, function(e) {
21416                 return "-" + e.toLowerCase()
21417             })
21418         }
21419
21420         function z(e) {
21421             var t = W(e),
21422                 n = t.match(/^(function [^ ]+\([^)]*\))/),
21423                 r = n ? n[1] : t,
21424                 i = e.name || "";
21425             return i && r.match(/function \(/) ? "function " + i + r.substr(9) : r
21426         }
21427
21428         function W(e) {
21429             var t = Je(e) ? e.slice(-1)[0] : e;
21430             return t && t.toString() || "undefined"
21431         }
21432
21433         function Y(e) {
21434             function t(e) {
21435                 if (Qe(e)) {
21436                     if (-1 !== n.indexOf(e)) return "[circular ref]";
21437                     n.push(e)
21438                 }
21439                 return fn(e)
21440             }
21441             var n = [];
21442             return JSON.stringify(e, function(e, n) {
21443                 return t(n)
21444             }).replace(/\\"/g, '"')
21445         }
21446
21447         function G(e) {
21448             var t = new RegExp("(" + e + ")", "g");
21449             return function(e) {
21450                 return e.split(t).filter(u)
21451             }
21452         }
21453
21454         function K(e, t) {
21455             return Xe(M(e)) && Xe(t) ? e.slice(0, -1).concat(M(e) + t) : C(e, t)
21456         }
21457
21458         function Z(e) {
21459             return e.name
21460         }
21461
21462         function X(e) {
21463             return e.self.$$state = function() {
21464                 return e
21465             }, e.self
21466         }
21467
21468         function Q(e) {
21469             return e.parent && e.parent.data && (e.data = e.self.data = ht(e.parent.data, e.data)), e.data
21470         }
21471
21472         function J(e) {
21473             return e.parent ? e.parent.path.concat(e) : [e]
21474         }
21475
21476         function ee(e) {
21477             var t = e.parent ? dt({}, e.parent.includes) : {};
21478             return t[e.name] = !0, t
21479         }
21480
21481         function te(e) {
21482             var t = function(e) {
21483                     var t = ot.$injector;
21484                     return e.$inject || t && t.annotate(e, t.strictDi) || "deferred"
21485                 },
21486                 n = function(e) {
21487                     return e.provide || e.token
21488                 },
21489                 r = c([
21490                     [De("resolveFn"), function(e) {
21491                         return new en(n(e), e.resolveFn, e.deps, e.policy)
21492                     }],
21493                     [De("useFactory"), function(e) {
21494                         return new en(n(e), e.useFactory, e.deps || e.dependencies, e.policy)
21495                     }],
21496                     [De("useClass"), function(e) {
21497                         return new en(n(e), function() {
21498                             return new e.useClass
21499                         }, [], e.policy)
21500                     }],
21501                     [De("useValue"), function(e) {
21502                         return new en(n(e), function() {
21503                             return e.useValue
21504                         }, [], e.policy, e.useValue)
21505                     }],
21506                     [De("useExisting"), function(e) {
21507                         return new en(n(e), u, [e.useExisting], e.policy)
21508                     }]
21509                 ]),
21510                 o = c([
21511                     [i(De("val"), Xe), function(e) {
21512                         return new en(e.token, u, [e.val], e.policy)
21513                     }],
21514                     [i(De("val"), Je), function(e) {
21515                         return new en(e.token, M(e.val), e.val.slice(0, -1), e.policy)
21516                     }],
21517                     [i(De("val"), Ke), function(e) {
21518                         return new en(e.token, e.val, t(e.val), e.policy)
21519                     }]
21520                 ]),
21521                 a = c([
21522                     [je(en), function(e) {
21523                         return e
21524                     }],
21525                     [function(e) {
21526                         return !(!e.token || !e.resolveFn)
21527                     }, r],
21528                     [function(e) {
21529                         return !(!e.provide && !e.token || !(e.useValue || e.useFactory || e.useExisting || e.useClass))
21530                     }, r],
21531                     [function(e) {
21532                         return !!(e && e.val && (Xe(e.val) || Je(e.val) || Ke(e.val)))
21533                     }, o],
21534                     [Fe(!0), function(e) {
21535                         throw new Error("Invalid resolve value: " + Y(e))
21536                     }]
21537                 ]),
21538                 s = e.resolve;
21539             return (Je(s) ? s : function(e, t) {
21540                 return Object.keys(e || {}).map(function(n) {
21541                     return {
21542                         token: n,
21543                         val: e[n],
21544                         deps: void 0,
21545                         policy: t[n]
21546                     }
21547                 })
21548             }(s, e.resolvePolicy || {})).map(a)
21549         }
21550
21551         function ne(e, t) {
21552             var n = ["", ""],
21553                 r = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
21554             if (!t) return r;
21555             switch (t.squash) {
21556                 case !1:
21557                     n = ["(", ")" + (t.isOptional ? "?" : "")];
21558                     break;
21559                 case !0:
21560                     r = r.replace(/\/$/, ""), n = ["(?:/(", ")|/)?"];
21561                     break;
21562                 default:
21563                     n = ["(" + t.squash + "|", ")?"]
21564             }
21565             return r + n[0] + t.type.pattern.source + n[1]
21566         }
21567
21568         function re(e, t, n, r) {
21569             return "/" === r ? e : t ? r.slice(0, -1) + e : n ? r.slice(1) + e : e
21570         }
21571
21572         function ie(e) {
21573             if (!(Ke(e) || Xe(e) || je(Ut)(e) || Ut.isDef(e))) throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");
21574             return Ke(e) ? e : Fe(e)
21575         }
21576
21577         function oe(e) {
21578             e.addResolvable({
21579                 token: Wn,
21580                 deps: [],
21581                 resolveFn: function() {
21582                     return e.router
21583                 },
21584                 data: e.router
21585             }, ""), e.addResolvable({
21586                 token: un,
21587                 deps: [],
21588                 resolveFn: function() {
21589                     return e
21590                 },
21591                 data: e
21592             }, ""), e.addResolvable({
21593                 token: "$transition$",
21594                 deps: [],
21595                 resolveFn: function() {
21596                     return e
21597                 },
21598                 data: e
21599             }, ""), e.addResolvable({
21600                 token: "$stateParams",
21601                 deps: [],
21602                 resolveFn: function() {
21603                     return e.params()
21604                 },
21605                 data: e.params()
21606             }, ""), e.entering().forEach(function(t) {
21607                 e.addResolvable({
21608                     token: "$state$",
21609                     deps: [],
21610                     resolveFn: function() {
21611                         return t
21612                     },
21613                     data: t
21614                 }, t)
21615             })
21616         }
21617
21618         function ae(e) {
21619             return function(t, n) {
21620                 return (0, n.$$state()[e])(t, n)
21621             }
21622         }
21623
21624         function se(e, t) {
21625             var n = t.$$state().lazyLoad,
21626                 r = n._promise;
21627             if (!r) {
21628                 r = n._promise = ot.$q.when(n(e, t)).then(function(t) {
21629                     return t && Array.isArray(t.states) && t.states.forEach(function(t) {
21630                         return e.router.stateRegistry.register(t)
21631                     }), t
21632                 }).then(function(e) {
21633                     return delete t.lazyLoad, delete t.$$state().lazyLoad, delete n._promise, e
21634                 }, function(e) {
21635                     return delete n._promise, ot.$q.reject(e)
21636                 })
21637             }
21638             return r
21639         }
21640
21641         function ce(e) {
21642             var t = e._ignoredReason();
21643             if (t) {
21644                 qt.traceTransitionIgnored(e);
21645                 var n = e.router.globals.transition;
21646                 return "SameAsCurrent" === t && n && n.abort(), Rt.ignored().toPromise()
21647             }
21648         }
21649
21650         function le(e) {
21651             if (!e.valid()) throw new Error(e.error())
21652         }
21653
21654         function ue(e) {
21655             var t = function(e) {
21656                     return e || ""
21657                 },
21658                 n = Mr(e).map(t),
21659                 r = n[0],
21660                 i = n[1],
21661                 o = Sr(r).map(t);
21662             return {
21663                 path: o[0],
21664                 search: o[1],
21665                 hash: i,
21666                 url: e
21667             }
21668         }
21669
21670         function de(e, t, n, r) {
21671             return function(i) {
21672                 var o = i.locationService = new n(i),
21673                     a = i.locationConfig = new r(i, t);
21674                 return {
21675                     name: e,
21676                     service: o,
21677                     configuration: a,
21678                     dispose: function(e) {
21679                         e.dispose(o), e.dispose(a)
21680                     }
21681                 }
21682             }
21683         }
21684
21685         function fe(e) {
21686             return ot.$injector = kr, ot.$q = wr, {
21687                 name: "vanilla.services",
21688                 $q: wr,
21689                 $injector: kr,
21690                 dispose: function() {
21691                     return null
21692                 }
21693             }
21694         }
21695
21696         function he() {
21697             var e = null;
21698             return function(t, n) {
21699                 return e = e || ot.$injector.get("$templateFactory"), [new Xr(t, n, e)]
21700             }
21701         }
21702
21703         function pe(e) {
21704             if (!e.parent) return {};
21705             var t = ["controller", "controllerProvider", "controllerAs", "resolveAs"],
21706                 n = ["component", "bindings", "componentProvider"],
21707                 r = ["templateProvider", "templateUrl", "template", "notify", "async"].concat(t),
21708                 i = n.concat(r);
21709             if (We(e.views) && Kr(i, e)) throw new Error("State '" + e.name + "' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  " + i.filter(function(t) {
21710                 return We(e[t])
21711             }).join(", "));
21712             var o = {},
21713                 a = e.views || {
21714                     $default: b(e, i)
21715                 };
21716             return ut(a, function(t, i) {
21717                 if (i = i || "$default", Xe(t) && (t = {
21718                         component: t
21719                     }), t = dt({}, t), Kr(n, t) && Kr(r, t)) throw new Error("Cannot combine: " + n.join("|") + " with: " + r.join("|") + " in stateview: '" + i + "@" + e.name + "'");
21720                 t.resolveAs = t.resolveAs || "$resolve", t.$type = "ng1", t.$context = e, t.$name = i;
21721                 var a = Pn.normalizeUIViewTarget(t.$context, t.$name);
21722                 t.$uiViewName = a.uiViewName, t.$uiViewContextAnchor = a.uiViewContextAnchor, o[i] = t
21723             }), o
21724         }
21725
21726         function me(e) {
21727             var t = ot.$injector.get(e + "Directive");
21728             if (!t || !t.length) throw new Error("Unable to find component named '" + e + "'");
21729             return t.map(Jr).reduce(Et, [])
21730         }
21731
21732         function ge(e) {
21733             function t(e, t, r, i, o, a) {
21734                 return n._runtimeServices(i, e, r, t), delete ui.router, delete ui.$get, ui
21735             }(ui = this.router = new Wn).stateProvider = new ti(ui.stateRegistry, ui.stateService), ui.stateRegistry.decorator("views", pe), ui.stateRegistry.decorator("onExit", ni("onExit")), ui.stateRegistry.decorator("onRetain", ni("onRetain")), ui.stateRegistry.decorator("onEnter", ni("onEnter")), ui.viewService._pluginapi._viewConfigFactory("ng1", he());
21736             var n = ui.locationService = ui.locationConfig = new ri(e);
21737             return ri.monkeyPatchPathParameterType(ui), ui.router = ui, ui.$get = t, t.$inject = ["$location", "$browser", "$sniffer", "$rootScope", "$http", "$templateCache"], ui
21738         }
21739
21740         function ve(e, t, n) {
21741             ot.$injector = e, ot.$q = t, n.stateRegistry.get().map(function(e) {
21742                 return e.$$state().resolvables
21743             }).reduce(Et, []).filter(function(e) {
21744                 return "deferred" === e.deps
21745             }).forEach(function(t) {
21746                 return t.deps = e.annotate(t.resolveFn, e.strictDi)
21747             })
21748         }
21749
21750         function be(e) {
21751             e.$watch(function() {
21752                 qt.approximateDigests++
21753             })
21754         }
21755
21756         function ye(e) {
21757             var t, n = e.match(/^\s*({[^}]*})\s*$/);
21758             if (n && (e = "(" + n[1] + ")"), !(t = e.replace(/\n/g, " ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/)) || 4 !== t.length) throw new Error("Invalid state ref '" + e + "'");
21759             return {
21760                 state: t[1] || null,
21761                 paramExpr: t[3] || null
21762             }
21763         }
21764
21765         function $e(e) {
21766             var t = e.parent().inheritedData("$uiView"),
21767                 n = Ie("$cfg.path")(t);
21768             return n ? M(n).state.name : void 0
21769         }
21770
21771         function _e(e, t, n) {
21772             var r = n.uiState || e.current.name,
21773                 i = dt(Ce(t, e), n.uiStateOpts || {}),
21774                 o = e.href(r, n.uiStateParams, i);
21775             return {
21776                 uiState: r,
21777                 uiStateParams: n.uiStateParams,
21778                 uiStateOpts: i,
21779                 href: o
21780             }
21781         }
21782
21783         function we(e) {
21784             var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
21785                 n = "FORM" === e[0].nodeName;
21786             return {
21787                 attr: n ? "action" : t ? "xlink:href" : "href",
21788                 isAnchor: "A" === e.prop("tagName").toUpperCase(),
21789                 clickable: !n
21790             }
21791         }
21792
21793         function Ee(e, t, n, r, i) {
21794             return function(o) {
21795                 var a = o.which || o.button,
21796                     s = i();
21797                 if (!(a > 1 || o.ctrlKey || o.metaKey || o.shiftKey || e.attr("target"))) {
21798                     var c = n(function() {
21799                         t.go(s.uiState, s.uiStateParams, s.uiStateOpts)
21800                     });
21801                     o.preventDefault();
21802                     var l = r.isAnchor && !s.href ? 1 : 0;
21803                     o.preventDefault = function() {
21804                         l-- <= 0 && n.cancel(c)
21805                     }
21806                 }
21807             }
21808         }
21809
21810         function Ce(e, t) {
21811             return {
21812                 relative: $e(e) || t.$current,
21813                 inherit: !0,
21814                 source: "sref"
21815             }
21816         }
21817
21818         function xe(e, t, n, r) {
21819             var i;
21820             r && (i = r.events), Je(i) || (i = ["click"]);
21821             for (var o = e.on ? "on" : "bind", a = 0, s = i; a < s.length; a++) {
21822                 var c = s[a];
21823                 e[o](c, n)
21824             }
21825             t.$on("$destroy", function() {
21826                 for (var t = e.off ? "off" : "unbind", r = 0, o = i; r < o.length; r++) {
21827                     var a = o[r];
21828                     e[t](a, n)
21829                 }
21830             })
21831         }
21832
21833         function ke(e) {
21834             var t = function(t, n, r) {
21835                 return e.is(t, n, r)
21836             };
21837             return t.$stateful = !0, t
21838         }
21839
21840         function Te(e) {
21841             var t = function(t, n, r) {
21842                 return e.includes(t, n, r)
21843             };
21844             return t.$stateful = !0, t
21845         }
21846
21847         function Me(e, n, r, i, o, a) {
21848             var s = Ie("viewDecl.controllerAs"),
21849                 c = Ie("viewDecl.resolveAs");
21850             return {
21851                 restrict: "ECA",
21852                 priority: -400,
21853                 compile: function(i) {
21854                     var a = i.html();
21855                     return i.empty(),
21856                         function(i, l) {
21857                             var u = l.data("$uiView");
21858                             if (!u) return l.html(a), void e(l.contents())(i);
21859                             var d = u.$cfg || {
21860                                     viewDecl: {},
21861                                     getTemplate: t.noop
21862                                 },
21863                                 f = d.path && new sn(d.path);
21864                             l.html(d.getTemplate(l, f) || a), qt.traceUIViewFill(u.$uiView, l.html());
21865                             var h = e(l.contents()),
21866                                 p = d.controller,
21867                                 m = s(d),
21868                                 g = c(d),
21869                                 v = f && hi(f);
21870                             if (i[g] = v, p) {
21871                                 var b = n(p, dt({}, v, {
21872                                     $scope: i,
21873                                     $element: l
21874                                 }));
21875                                 m && (i[m] = b, i[m][g] = v), l.data("$ngControllerController", b), l.children().data("$ngControllerController", b), Se(o, r, b, i, d)
21876                             }
21877                             if (Xe(d.viewDecl.component)) var y = d.viewDecl.component,
21878                                 $ = B(y),
21879                                 _ = new RegExp("^(x-|data-)?" + $ + "$", "i"),
21880                                 w = i.$watch(function() {
21881                                     var e = [].slice.call(l[0].children).filter(function(e) {
21882                                         return e && e.tagName && _.exec(e.tagName)
21883                                     });
21884                                     return e && Oe.element(e).data("$" + y + "Controller")
21885                                 }, function(e) {
21886                                     e && (Se(o, r, e, i, d), w())
21887                                 });
21888                             h(i)
21889                         }
21890                 }
21891             }
21892         }
21893
21894         function Se(e, t, n, r, i) {
21895             !Ke(n.$onInit) || i.viewDecl.component && vi || n.$onInit();
21896             var o = M(i.path).state.self,
21897                 a = {
21898                     bind: n
21899                 };
21900             if (Ke(n.uiOnParamsChanged)) {
21901                 var s = new sn(i.path).getResolvable("$transition$").data;
21902                 r.$on("$destroy", t.onSuccess({}, function(e) {
21903                     if (e !== s && -1 === e.exiting().indexOf(o)) {
21904                         var t = e.params("to"),
21905                             r = e.params("from"),
21906                             i = e.treeChanges().to.map(function(e) {
21907                                 return e.paramSchema
21908                             }).reduce(Et, []),
21909                             a = e.treeChanges().from.map(function(e) {
21910                                 return e.paramSchema
21911                             }).reduce(Et, []),
21912                             c = i.filter(function(e) {
21913                                 var n = a.indexOf(e);
21914                                 return -1 === n || !a[n].type.equals(t[e.id], r[e.id])
21915                             });
21916                         if (c.length) {
21917                             var l = c.map(function(e) {
21918                                     return e.id
21919                                 }),
21920                                 u = _(t, function(e, t) {
21921                                     return -1 !== l.indexOf(t)
21922                                 });
21923                             n.uiOnParamsChanged(u, e)
21924                         }
21925                     }
21926                 }, a))
21927             }
21928             if (Ke(n.uiCanExit)) {
21929                 var c = bi++,
21930                     l = function(e) {
21931                         return !!e && (e._uiCanExitIds && !0 === e._uiCanExitIds[c] || l(e.redirectedFrom()))
21932                     },
21933                     u = {
21934                         exiting: o.name
21935                     };
21936                 r.$on("$destroy", t.onBefore(u, function(t) {
21937                     var r, i = t._uiCanExitIds = t._uiCanExitIds || {};
21938                     return l(t) || (r = e.when(n.uiCanExit(t))).then(function(e) {
21939                         return i[c] = !1 !== e
21940                     }), r
21941                 }, a))
21942             }
21943         }
21944         pe.$inject = ["state"];
21945         var Ae = angular,
21946             Oe = t && t.module ? t : Ae,
21947             De = function(e) {
21948                 return function(t) {
21949                     return t && t[e]
21950                 }
21951             },
21952             Ne = n(function(e, t, n) {
21953                 return n && n[e] === t
21954             }),
21955             Ie = function(e) {
21956                 return i.apply(null, e.split(".").map(De))
21957             },
21958             Re = function(e) {
21959                 return function() {
21960                     for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
21961                     return !e.apply(null, t)
21962                 }
21963             },
21964             Pe = function(e) {
21965                 return function(t) {
21966                     return t.reduce(function(t, n) {
21967                         return t && !!e(n)
21968                     }, !0)
21969                 }
21970             },
21971             He = function(e) {
21972                 return function(t) {
21973                     return t.reduce(function(t, n) {
21974                         return t || !!e(n)
21975                     }, !1)
21976                 }
21977             },
21978             je = function(e) {
21979                 return function(t) {
21980                     return null != t && t.constructor === e || t instanceof e
21981                 }
21982             },
21983             Le = function(e) {
21984                 return function(t) {
21985                     return e === t
21986                 }
21987             },
21988             Fe = function(e) {
21989                 return function() {
21990                     return e
21991                 }
21992             },
21993             qe = function() {
21994                 function e(e) {
21995                     this.text = e, this.glob = e.split(".");
21996                     var t = this.text.split(".").map(function(e) {
21997                         return "**" === e ? "(?:|(?:\\.[^.]*)*)" : "*" === e ? "\\.[^.]*" : "\\." + e
21998                     }).join("");
21999                     this.regexp = new RegExp("^" + t + "$")
22000                 }
22001                 return e.prototype.matches = function(e) {
22002                     return this.regexp.test("." + e)
22003                 }, e.is = function(e) {
22004                     return !!/[!,*]+/.exec(e)
22005                 }, e.fromString = function(t) {
22006                     return e.is(t) ? new e(t) : null
22007                 }, e
22008             }(),
22009             Ue = function() {
22010                 function e(t) {
22011                     return e.create(t || {})
22012                 }
22013                 return e.create = function(t) {
22014                     t = e.isStateClass(t) ? new t : t;
22015                     var n = ht(ht(t, e.prototype));
22016                     return t.$$state = function() {
22017                         return n
22018                     }, n.self = t, n.__stateObjectCache = {
22019                         nameGlob: qe.fromString(n.name)
22020                     }, n
22021                 }, e.prototype.is = function(e) {
22022                     return this === e || this.self === e || this.fqn() === e
22023                 }, e.prototype.fqn = function() {
22024                     if (!(this.parent && this.parent instanceof this.constructor)) return this.name;
22025                     var e = this.parent.fqn();
22026                     return e ? e + "." + this.name : this.name
22027                 }, e.prototype.root = function() {
22028                     return this.parent && this.parent.root() || this
22029                 }, e.prototype.parameters = function(e) {
22030                     return ((e = g(e, {
22031                         inherit: !0,
22032                         matchingKeys: null
22033                     })).inherit && this.parent && this.parent.parameters() || []).concat($t(this.params)).filter(function(t) {
22034                         return !e.matchingKeys || e.matchingKeys.hasOwnProperty(t.id)
22035                     })
22036                 }, e.prototype.parameter = function(e, t) {
22037                     return void 0 === t && (t = {}), this.url && this.url.parameter(e, t) || w($t(this.params), Ne("id", e)) || t.inherit && this.parent && this.parent.parameter(e)
22038                 }, e.prototype.toString = function() {
22039                     return this.fqn()
22040                 }, e.isStateClass = function(e) {
22041                     return Ke(e) && !0 === e.__uiRouterState
22042                 }, e.isState = function(e) {
22043                     return Qe(e.__stateObjectCache)
22044                 }, e
22045             }(),
22046             Ve = Object.prototype.toString,
22047             Be = function(e) {
22048                 return function(t) {
22049                     return typeof t === e
22050                 }
22051             },
22052             ze = Be("undefined"),
22053             We = Re(ze),
22054             Ye = function(e) {
22055                 return null === e
22056             },
22057             Ge = a(Ye, ze),
22058             Ke = Be("function"),
22059             Ze = Be("number"),
22060             Xe = Be("string"),
22061             Qe = function(e) {
22062                 return null !== e && "object" == typeof e
22063             },
22064             Je = Array.isArray,
22065             et = function(e) {
22066                 return "[object Date]" === Ve.call(e)
22067             },
22068             tt = function(e) {
22069                 return "[object RegExp]" === Ve.call(e)
22070             },
22071             nt = Ue.isState,
22072             rt = o(Qe, i(De("then"), Ke)),
22073             it = function(e) {
22074                 return function() {
22075                     throw new Error(e + "(): No coreservices implementation for UI-Router is loaded.")
22076                 }
22077             },
22078             ot = {
22079                 $q: void 0,
22080                 $injector: void 0
22081             },
22082             at = ("undefined" == typeof window ? {} : window).angular || {},
22083             st = at.fromJson || JSON.parse.bind(JSON),
22084             ct = at.toJson || JSON.stringify.bind(JSON),
22085             lt = at.copy || function(e, t) {
22086                 return t && Object.keys(t).forEach(function(e) {
22087                     return delete t[e]
22088                 }), t || (t = {}), dt(t, e)
22089             },
22090             ut = at.forEach || function(e, t, n) {
22091                 if (Je(e)) return e.forEach(t, n);
22092                 Object.keys(e).forEach(function(n) {
22093                     return t(e[n], n)
22094                 })
22095             },
22096             dt = Object.assign || S,
22097             ft = at.equals || A,
22098             ht = function(e, t) {
22099                 return dt(Object.create(e), t)
22100             },
22101             pt = n(h),
22102             mt = n(p),
22103             gt = n(m),
22104             vt = function(e) {
22105                 return e.slice().forEach(function(t) {
22106                     "function" == typeof t && t(), mt(e, t)
22107                 })
22108             },
22109             bt = function(e, t) {
22110                 return dt(e, t)
22111             },
22112             yt = E,
22113             $t = function(e) {
22114                 return Object.keys(e).map(function(t) {
22115                     return e[t]
22116                 })
22117             },
22118             _t = function(e, t) {
22119                 return e && t
22120             },
22121             wt = function(e, t) {
22122                 return e || t
22123             },
22124             Et = function(e, t) {
22125                 return e.concat(t)
22126             },
22127             Ct = function(e, t) {
22128                 return Je(t) ? e.concat(t.reduce(Ct, [])) : C(e, t)
22129             },
22130             xt = function(e, t) {
22131                 return pt(e, t) ? e : C(e, t)
22132             },
22133             kt = function(e) {
22134                 return e.reduce(Et, [])
22135             },
22136             Tt = function(e) {
22137                 return e.reduce(Ct, [])
22138             },
22139             Mt = x,
22140             St = x,
22141             At = function(e) {
22142                 return Object.keys(e).map(function(t) {
22143                     return [t, e[t]]
22144                 })
22145             },
22146             Ot = function(e) {
22147                 return e.catch(function(e) {
22148                     return 0
22149                 }) && e
22150             },
22151             Dt = function(e) {
22152                 return Ot(ot.$q.reject(e))
22153             },
22154             Nt = function() {
22155                 function e(e, t) {
22156                     void 0 === e && (e = []), void 0 === t && (t = null), this._items = e, this._limit = t
22157                 }
22158                 return e.prototype.enqueue = function(e) {
22159                     var t = this._items;
22160                     return t.push(e), this._limit && t.length > this._limit && t.shift(), e
22161                 }, e.prototype.dequeue = function() {
22162                     if (this.size()) return this._items.splice(0, 1)[0]
22163                 }, e.prototype.clear = function() {
22164                     var e = this._items;
22165                     return this._items = [], e
22166                 }, e.prototype.size = function() {
22167                     return this._items.length
22168                 }, e.prototype.remove = function(e) {
22169                     var t = this._items.indexOf(e);
22170                     return t > -1 && this._items.splice(t, 1)[0]
22171                 }, e.prototype.peekTail = function() {
22172                     return this._items[this._items.length - 1]
22173                 }, e.prototype.peekHead = function() {
22174                     if (this.size()) return this._items[0]
22175                 }, e
22176             }();
22177         ! function(e) {
22178             e[e.SUPERSEDED = 2] = "SUPERSEDED", e[e.ABORTED = 3] = "ABORTED", e[e.INVALID = 4] = "INVALID", e[e.IGNORED = 5] = "IGNORED", e[e.ERROR = 6] = "ERROR"
22179         }(e.RejectType || (e.RejectType = {}));
22180         var It = 0,
22181             Rt = function() {
22182                 function t(e, t, n) {
22183                     this.$id = It++, this.type = e, this.message = t, this.detail = n
22184                 }
22185                 return t.prototype.toString = function() {
22186                     var e = function(e) {
22187                             return e && e.toString !== Object.prototype.toString ? e.toString() : Y(e)
22188                         }(this.detail),
22189                         t = this;
22190                     return "Transition Rejection($id: " + t.$id + " type: " + t.type + ", message: " + t.message + ", detail: " + e + ")"
22191                 }, t.prototype.toPromise = function() {
22192                     return dt(Dt(this), {
22193                         _transitionRejection: this
22194                     })
22195                 }, t.isRejectionPromise = function(e) {
22196                     return e && "function" == typeof e.then && je(t)(e._transitionRejection)
22197                 }, t.superseded = function(n, r) {
22198                     var i = new t(e.RejectType.SUPERSEDED, "The transition has been superseded by a different transition", n);
22199                     return r && r.redirected && (i.redirected = !0), i
22200                 }, t.redirected = function(e) {
22201                     return t.superseded(e, {
22202                         redirected: !0
22203                     })
22204                 }, t.invalid = function(n) {
22205                     return new t(e.RejectType.INVALID, "This transition is invalid", n)
22206                 }, t.ignored = function(n) {
22207                     return new t(e.RejectType.IGNORED, "The transition was ignored", n)
22208                 }, t.aborted = function(n) {
22209                     return new t(e.RejectType.ABORTED, "The transition has been aborted", n)
22210                 }, t.errored = function(n) {
22211                     return new t(e.RejectType.ERROR, "The transition errored", n)
22212                 }, t.normalize = function(e) {
22213                     return je(t)(e) ? e : t.errored(e)
22214                 }, t
22215             }(),
22216             Pt = function(e) {
22217                 var t = e.viewDecl,
22218                     n = t.$context.name || "(root)";
22219                 return "[View#" + e.$id + " from '" + n + "' state]: target ui-view: '" + t.$uiViewName + "@" + t.$uiViewContextAnchor + "'"
22220             };
22221         ! function(e) {
22222             e[e.RESOLVE = 0] = "RESOLVE", e[e.TRANSITION = 1] = "TRANSITION", e[e.HOOK = 2] = "HOOK", e[e.UIVIEW = 3] = "UIVIEW", e[e.VIEWCONFIG = 4] = "VIEWCONFIG"
22223         }(e.Category || (e.Category = {}));
22224         var Ht = Ie("$id"),
22225             jt = Ie("router.$id"),
22226             Lt = function(e) {
22227                 return "Transition #" + Ht(e) + "-" + jt(e)
22228             },
22229             Ft = function() {
22230                 function t() {
22231                     this._enabled = {}, this.approximateDigests = 0
22232                 }
22233                 return t.prototype._set = function(t, n) {
22234                     var r = this;
22235                     n.length || (n = Object.keys(e.Category).map(function(e) {
22236                         return parseInt(e, 10)
22237                     }).filter(function(e) {
22238                         return !isNaN(e)
22239                     }).map(function(t) {
22240                         return e.Category[t]
22241                     })), n.map(N).forEach(function(e) {
22242                         return r._enabled[e] = t
22243                     })
22244                 }, t.prototype.enable = function() {
22245                     for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
22246                     this._set(!0, e)
22247                 }, t.prototype.disable = function() {
22248                     for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
22249                     this._set(!1, e)
22250                 }, t.prototype.enabled = function(e) {
22251                     return !!this._enabled[N(e)]
22252                 }, t.prototype.traceTransitionStart = function(t) {
22253                     this.enabled(e.Category.TRANSITION) && console.log(Lt(t) + ": Started  -> " + Y(t))
22254                 }, t.prototype.traceTransitionIgnored = function(t) {
22255                     this.enabled(e.Category.TRANSITION) && console.log(Lt(t) + ": Ignored  <> " + Y(t))
22256                 }, t.prototype.traceHookInvocation = function(t, n, r) {
22257                     if (this.enabled(e.Category.HOOK)) {
22258                         var i = Ie("traceData.hookType")(r) || "internal",
22259                             o = Ie("traceData.context.state.name")(r) || Ie("traceData.context")(r) || "unknown",
22260                             a = z(t.registeredHook.callback);
22261                         console.log(Lt(n) + ":   Hook -> " + i + " context: " + o + ", " + U(200, a))
22262                     }
22263                 }, t.prototype.traceHookResult = function(t, n, r) {
22264                     this.enabled(e.Category.HOOK) && console.log(Lt(n) + ":   <- Hook returned: " + U(200, Y(t)))
22265                 }, t.prototype.traceResolvePath = function(t, n, r) {
22266                     this.enabled(e.Category.RESOLVE) && console.log(Lt(r) + ":         Resolving " + t + " (" + n + ")")
22267                 }, t.prototype.traceResolvableResolved = function(t, n) {
22268                     this.enabled(e.Category.RESOLVE) && console.log(Lt(n) + ":               <- Resolved  " + t + " to: " + U(200, Y(t.data)))
22269                 }, t.prototype.traceError = function(t, n) {
22270                     this.enabled(e.Category.TRANSITION) && console.log(Lt(n) + ": <- Rejected " + Y(n) + ", reason: " + t)
22271                 }, t.prototype.traceSuccess = function(t, n) {
22272                     this.enabled(e.Category.TRANSITION) && console.log(Lt(n) + ": <- Success  " + Y(n) + ", final state: " + t.name)
22273                 }, t.prototype.traceUIViewEvent = function(t, n, r) {
22274                     void 0 === r && (r = ""), this.enabled(e.Category.UIVIEW) && console.log("ui-view: " + V(30, t) + " " + D(n) + r)
22275                 }, t.prototype.traceUIViewConfigUpdated = function(t, n) {
22276                     this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Updating", t, " with ViewConfig from context='" + n + "'")
22277                 }, t.prototype.traceUIViewFill = function(t, n) {
22278                     this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Fill", t, " with: " + U(200, n))
22279                 }, t.prototype.traceViewSync = function(t) {
22280                     if (this.enabled(e.Category.VIEWCONFIG)) {
22281                         var n = t.map(function(e) {
22282                             var t = e[0],
22283                                 n = e[1];
22284                             return {
22285                                 "ui-view fqn": t.$type + ":" + t.fqn,
22286                                 "state: view name": n && n.viewDecl.$context.name + ": " + n.viewDecl.$name + " (" + n.viewDecl.$type + ")"
22287                             }
22288                         }).sort(function(e, t) {
22289                             return e["ui-view fqn"].localeCompare(t["ui-view fqn"])
22290                         });
22291                         console.table(n)
22292                     }
22293                 }, t.prototype.traceViewServiceEvent = function(t, n) {
22294                     this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + Pt(n))
22295                 }, t.prototype.traceViewServiceUIViewEvent = function(t, n) {
22296                     this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + D(n))
22297                 }, t
22298             }(),
22299             qt = new Ft;
22300         ! function(e) {
22301             e[e.CREATE = 0] = "CREATE", e[e.BEFORE = 1] = "BEFORE", e[e.RUN = 2] = "RUN", e[e.SUCCESS = 3] = "SUCCESS", e[e.ERROR = 4] = "ERROR"
22302         }(e.TransitionHookPhase || (e.TransitionHookPhase = {})),
22303         function(e) {
22304             e[e.TRANSITION = 0] = "TRANSITION", e[e.STATE = 1] = "STATE"
22305         }(e.TransitionHookScope || (e.TransitionHookScope = {}));
22306         var Ut = function() {
22307                 function e(e, t, n, r) {
22308                     void 0 === r && (r = {}), this._identifier = e, this._definition = t, this._options = r, this._params = n || {}
22309                 }
22310                 return e.prototype.name = function() {
22311                     return this._definition && this._definition.name || this._identifier
22312                 }, e.prototype.identifier = function() {
22313                     return this._identifier
22314                 }, e.prototype.params = function() {
22315                     return this._params
22316                 }, e.prototype.$state = function() {
22317                     return this._definition
22318                 }, e.prototype.state = function() {
22319                     return this._definition && this._definition.self
22320                 }, e.prototype.options = function() {
22321                     return this._options
22322                 }, e.prototype.exists = function() {
22323                     return !(!this._definition || !this._definition.self)
22324                 }, e.prototype.valid = function() {
22325                     return !this.error()
22326                 }, e.prototype.error = function() {
22327                     var e = this.options().relative;
22328                     if (!this._definition && e) {
22329                         var t = e.name ? e.name : e;
22330                         return "Could not resolve '" + this.name() + "' from state '" + t + "'"
22331                     }
22332                     return this._definition ? this._definition.self ? void 0 : "State '" + this.name() + "' has an invalid definition" : "No such state '" + this.name() + "'"
22333                 }, e.prototype.toString = function() {
22334                     return "'" + this.name() + "'" + ct(this.params())
22335                 }, e.isDef = function(e) {
22336                     return e && e.state && (Xe(e.state) || Xe(e.state.name))
22337                 }, e
22338             }(),
22339             Vt = {
22340                 current: d,
22341                 transition: null,
22342                 traceData: {},
22343                 bind: null
22344             },
22345             Bt = function() {
22346                 function t(t, n, r, i) {
22347                     var o = this;
22348                     this.transition = t, this.stateContext = n, this.registeredHook = r, this.options = i, this.isSuperseded = function() {
22349                         return o.type.hookPhase === e.TransitionHookPhase.RUN && !o.options.transition.isActive()
22350                     }, this.options = g(i, Vt), this.type = r.eventType
22351                 }
22352                 return t.prototype.logError = function(e) {
22353                     this.transition.router.stateService.defaultErrorHandler()(e)
22354                 }, t.prototype.invokeHook = function() {
22355                     var e = this,
22356                         t = this.registeredHook;
22357                     if (!t._deregistered) {
22358                         var n = this.getNotCurrentRejection();
22359                         if (n) return n;
22360                         var r = this.options;
22361                         qt.traceHookInvocation(this, this.transition, r);
22362                         var i = function(n) {
22363                                 return t.eventType.getErrorHandler(e)(n)
22364                             },
22365                             o = function(n) {
22366                                 return t.eventType.getResultHandler(e)(n)
22367                             };
22368                         try {
22369                             var a = t.callback.call(r.bind, e.transition, e.stateContext);
22370                             return !this.type.synchronous && rt(a) ? a.catch(function(e) {
22371                                 return Rt.normalize(e).toPromise()
22372                             }).then(o, i) : o(a)
22373                         } catch (e) {
22374                             return i(Rt.normalize(e))
22375                         }
22376                     }
22377                 }, t.prototype.handleHookResult = function(e) {
22378                     var t = this,
22379                         n = this.getNotCurrentRejection();
22380                     return n || (rt(e) ? e.then(function(e) {
22381                         return t.handleHookResult(e)
22382                     }) : (qt.traceHookResult(e, this.transition, this.options), !1 === e ? Rt.aborted("Hook aborted transition").toPromise() : je(Ut)(e) ? Rt.redirected(e).toPromise() : void 0))
22383                 }, t.prototype.getNotCurrentRejection = function() {
22384                     var e = this.transition.router;
22385                     return e._disposed ? Rt.aborted("UIRouter instance #" + e.$id + " has been stopped (disposed)").toPromise() : this.transition._aborted ? Rt.aborted().toPromise() : this.isSuperseded() ? Rt.superseded(this.options.current()).toPromise() : void 0
22386                 }, t.prototype.toString = function() {
22387                     var e = this,
22388                         t = e.options,
22389                         n = e.registeredHook;
22390                     return (Ie("traceData.hookType")(t) || "internal") + " context: " + (Ie("traceData.context.state.name")(t) || Ie("traceData.context")(t) || "unknown") + ", " + U(200, W(n.callback))
22391                 }, t.chain = function(e, t) {
22392                     return e.reduce(function(e, t) {
22393                         return e.then(function() {
22394                             return t.invokeHook()
22395                         })
22396                     }, t || ot.$q.when())
22397                 }, t.invokeHooks = function(e, n) {
22398                     for (var r = 0; r < e.length; r++) {
22399                         var i = e[r].invokeHook();
22400                         if (rt(i)) {
22401                             var o = e.slice(r + 1);
22402                             return t.chain(o, i).then(n)
22403                         }
22404                     }
22405                     return n()
22406                 }, t.runAllHooks = function(e) {
22407                     e.forEach(function(e) {
22408                         return e.invokeHook()
22409                     })
22410                 }, t.HANDLE_RESULT = function(e) {
22411                     return function(t) {
22412                         return e.handleHookResult(t)
22413                     }
22414                 }, t.LOG_REJECTED_RESULT = function(e) {
22415                     return function(t) {
22416                         rt(t) && t.catch(function(t) {
22417                             return e.logError(Rt.normalize(t))
22418                         })
22419                     }
22420                 }, t.LOG_ERROR = function(e) {
22421                     return function(t) {
22422                         return e.logError(t)
22423                     }
22424                 }, t.REJECT_ERROR = function(e) {
22425                     return function(e) {
22426                         return Dt(e)
22427                     }
22428                 }, t.THROW_ERROR = function(e) {
22429                     return function(e) {
22430                         throw e
22431                     }
22432                 }, t
22433             }(),
22434             zt = function() {
22435                 function t(e, t, n, r, i) {
22436                     void 0 === i && (i = {}), this.tranSvc = e, this.eventType = t, this.callback = n, this.matchCriteria = r, this.priority = i.priority || 0, this.bind = i.bind || null, this._deregistered = !1
22437                 }
22438                 return t.prototype._matchingNodes = function(e, t) {
22439                     if (!0 === t) return e;
22440                     var n = e.filter(function(e) {
22441                         return I(e.state, t)
22442                     });
22443                     return n.length ? n : null
22444                 }, t.prototype._getDefaultMatchCriteria = function() {
22445                     return E(this.tranSvc._pluginapi._getPathTypes(), function() {
22446                         return !0
22447                     })
22448                 }, t.prototype._getMatchingNodes = function(t) {
22449                     var n = this,
22450                         r = dt(this._getDefaultMatchCriteria(), this.matchCriteria);
22451                     return $t(this.tranSvc._pluginapi._getPathTypes()).reduce(function(i, o) {
22452                         var a = o.scope === e.TransitionHookScope.STATE,
22453                             s = t[o.name] || [],
22454                             c = a ? s : [M(s)];
22455                         return i[o.name] = n._matchingNodes(c, r[o.name]), i
22456                     }, {})
22457                 }, t.prototype.matches = function(e) {
22458                     var t = this._getMatchingNodes(e);
22459                     return $t(t).every(u) ? t : null
22460                 }, t
22461             }(),
22462             Wt = function() {
22463                 function t(e) {
22464                     this.transition = e
22465                 }
22466                 return t.prototype.buildHooksForPhase = function(e) {
22467                     var t = this;
22468                     return this.transition.router.transitionService._pluginapi._getEvents(e).map(function(e) {
22469                         return t.buildHooks(e)
22470                     }).reduce(Et, []).filter(u)
22471                 }, t.prototype.buildHooks = function(t) {
22472                     var n = this.transition,
22473                         r = n.treeChanges(),
22474                         i = this.getMatchingHooks(t, r);
22475                     if (!i) return [];
22476                     var o = {
22477                         transition: n,
22478                         current: n.options().current
22479                     };
22480                     return i.map(function(i) {
22481                         return i.matches(r)[t.criteriaMatchPath.name].map(function(r) {
22482                             var a = dt({
22483                                     bind: i.bind,
22484                                     traceData: {
22485                                         hookType: t.name,
22486                                         context: r
22487                                     }
22488                                 }, o),
22489                                 s = t.criteriaMatchPath.scope === e.TransitionHookScope.STATE ? r.state.self : null,
22490                                 c = new Bt(n, s, i, a);
22491                             return {
22492                                 hook: i,
22493                                 node: r,
22494                                 transitionHook: c
22495                             }
22496                         })
22497                     }).reduce(Et, []).sort(P(t.reverseSort)).map(function(e) {
22498                         return e.transitionHook
22499                     })
22500                 }, t.prototype.getMatchingHooks = function(t, n) {
22501                     var r = t.hookPhase === e.TransitionHookPhase.CREATE,
22502                         i = this.transition.router.transitionService;
22503                     return (r ? [i] : [this.transition, i]).map(function(e) {
22504                         return e.getHooks(t.name)
22505                     }).filter(Mt(Je, "broken event named: " + t.name)).reduce(Et, []).filter(function(e) {
22506                         return e.matches(n)
22507                     })
22508                 }, t
22509             }(),
22510             Yt = function() {
22511                 function e(e) {
22512                     this.pattern = /.*/, this.inherit = !0, dt(this, e)
22513                 }
22514                 return e.prototype.is = function(e, t) {
22515                     return !0
22516                 }, e.prototype.encode = function(e, t) {
22517                     return e
22518                 }, e.prototype.decode = function(e, t) {
22519                     return e
22520                 }, e.prototype.equals = function(e, t) {
22521                     return e == t
22522                 }, e.prototype.$subPattern = function() {
22523                     var e = this.pattern.toString();
22524                     return e.substr(1, e.length - 2)
22525                 }, e.prototype.toString = function() {
22526                     return "{ParamType:" + this.name + "}"
22527                 }, e.prototype.$normalize = function(e) {
22528                     return this.is(e) ? e : this.decode(e)
22529                 }, e.prototype.$asArray = function(e, t) {
22530                     if (!e) return this;
22531                     if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
22532                     return new H(this, e)
22533                 }, e
22534             }(),
22535             Gt = Object.prototype.hasOwnProperty,
22536             Kt = function(e) {
22537                 return 0 === ["value", "type", "squash", "array", "dynamic"].filter(Gt.bind(e || {})).length
22538             };
22539         ! function(e) {
22540             e[e.PATH = 0] = "PATH", e[e.SEARCH = 1] = "SEARCH", e[e.CONFIG = 2] = "CONFIG"
22541         }(e.DefType || (e.DefType = {}));
22542         var Zt = function() {
22543                 function t(t, n, r, i, o) {
22544                     n = L(r = j(r), n, i, t, o.paramTypes);
22545                     var a = function() {
22546                         var n = {
22547                                 array: i === e.DefType.SEARCH && "auto"
22548                             },
22549                             o = t.match(/\[\]$/) ? {
22550                                 array: !0
22551                             } : {};
22552                         return dt(n, o, r).array
22553                     }();
22554                     n = a ? n.$asArray(a, i === e.DefType.SEARCH) : n;
22555                     var s = void 0 !== r.value || i === e.DefType.SEARCH,
22556                         c = We(r.dynamic) ? !!r.dynamic : !!n.dynamic,
22557                         l = We(r.raw) ? !!r.raw : !!n.raw,
22558                         u = F(r, s, o.defaultSquashPolicy()),
22559                         d = q(r, a, s, u),
22560                         f = We(r.inherit) ? !!r.inherit : !!n.inherit;
22561                     dt(this, {
22562                         id: t,
22563                         type: n,
22564                         location: i,
22565                         isOptional: s,
22566                         dynamic: c,
22567                         raw: l,
22568                         squash: u,
22569                         replace: d,
22570                         inherit: f,
22571                         array: a,
22572                         config: r
22573                     })
22574                 }
22575                 return t.prototype.isDefaultValue = function(e) {
22576                     return this.isOptional && this.type.equals(this.value(), e)
22577                 }, t.prototype.value = function(e) {
22578                     var t = this;
22579                     return e = function(e) {
22580                         for (var n = 0, r = t.replace; n < r.length; n++) {
22581                             var i = r[n];
22582                             if (i.from === e) return i.to
22583                         }
22584                         return e
22585                     }(e), ze(e) ? function() {
22586                         if (t._defaultValueCache) return t._defaultValueCache.defaultValue;
22587                         if (!ot.$injector) throw new Error("Injectable functions cannot be called at configuration time");
22588                         var e = ot.$injector.invoke(t.config.$$fn);
22589                         if (null !== e && void 0 !== e && !t.type.is(e)) throw new Error("Default value (" + e + ") for parameter '" + t.id + "' is not an instance of ParamType (" + t.type.name + ")");
22590                         return t.config.$$fn.__cacheable && (t._defaultValueCache = {
22591                             defaultValue: e
22592                         }), e
22593                     }() : this.type.$normalize(e)
22594                 }, t.prototype.isSearch = function() {
22595                     return this.location === e.DefType.SEARCH
22596                 }, t.prototype.validates = function(e) {
22597                     if ((ze(e) || null === e) && this.isOptional) return !0;
22598                     var t = this.type.$normalize(e);
22599                     if (!this.type.is(t)) return !1;
22600                     var n = this.type.encode(t);
22601                     return !(Xe(n) && !this.type.pattern.exec(n))
22602                 }, t.prototype.toString = function() {
22603                     return "{Param:" + this.id + " " + this.type + " squash: '" + this.squash + "' optional: " + this.isOptional + "}"
22604                 }, t.values = function(e, t) {
22605                     void 0 === t && (t = {});
22606                     for (var n = {}, r = 0, i = e; r < i.length; r++) {
22607                         var o = i[r];
22608                         n[o.id] = o.value(t[o.id])
22609                     }
22610                     return n
22611                 }, t.changed = function(e, t, n) {
22612                     return void 0 === t && (t = {}), void 0 === n && (n = {}), e.filter(function(e) {
22613                         return !e.type.equals(t[e.id], n[e.id])
22614                     })
22615                 }, t.equals = function(e, n, r) {
22616                     return void 0 === n && (n = {}), void 0 === r && (r = {}), 0 === t.changed(e, n, r).length
22617                 }, t.validates = function(e, t) {
22618                     return void 0 === t && (t = {}), e.map(function(e) {
22619                         return e.validates(t[e.id])
22620                     }).reduce(_t, !0)
22621                 }, t
22622             }(),
22623             Xt = function() {
22624                 function e(t) {
22625                     if (t instanceof e) {
22626                         var n = t;
22627                         this.state = n.state, this.paramSchema = n.paramSchema.slice(), this.paramValues = dt({}, n.paramValues), this.resolvables = n.resolvables.slice(), this.views = n.views && n.views.slice()
22628                     } else {
22629                         var r = t;
22630                         this.state = r, this.paramSchema = r.parameters({
22631                             inherit: !1
22632                         }), this.paramValues = {}, this.resolvables = r.resolvables.map(function(e) {
22633                             return e.clone()
22634                         })
22635                     }
22636                 }
22637                 return e.prototype.applyRawParams = function(e) {
22638                     var t = function(t) {
22639                         return [t.id, t.value(e[t.id])]
22640                     };
22641                     return this.paramValues = this.paramSchema.reduce(function(e, n) {
22642                         return T(e, t(n))
22643                     }, {}), this
22644                 }, e.prototype.parameter = function(e) {
22645                     return w(this.paramSchema, Ne("id", e))
22646                 }, e.prototype.equals = function(e, t) {
22647                     var n = this.diff(e, t);
22648                     return n && 0 === n.length
22649                 }, e.prototype.diff = function(e, t) {
22650                     if (this.state !== e.state) return !1;
22651                     var n = t ? t(this) : this.paramSchema;
22652                     return Zt.changed(n, this.paramValues, e.paramValues)
22653                 }, e.clone = function(t) {
22654                     return new e(t)
22655                 }, e
22656             }(),
22657             Qt = function() {
22658                 function e() {}
22659                 return e.makeTargetState = function(e) {
22660                     var t = M(e).state;
22661                     return new Ut(t, t, e.map(De("paramValues")).reduce(bt, {}))
22662                 }, e.buildPath = function(e) {
22663                     var t = e.params();
22664                     return e.$state().path.map(function(e) {
22665                         return new Xt(e).applyRawParams(t)
22666                     })
22667                 }, e.buildToPath = function(t, n) {
22668                     var r = e.buildPath(n);
22669                     return n.options().inherit ? e.inheritParams(t, r, Object.keys(n.params())) : r
22670                 }, e.applyViewConfigs = function(t, n, r) {
22671                     n.filter(function(e) {
22672                         return pt(r, e.state)
22673                     }).forEach(function(r) {
22674                         var i = $t(r.state.views || {}),
22675                             o = e.subPath(n, function(e) {
22676                                 return e === r
22677                             }),
22678                             a = i.map(function(e) {
22679                                 return t.createViewConfig(o, e)
22680                             });
22681                         r.views = a.reduce(Et, [])
22682                     })
22683                 }, e.inheritParams = function(e, t, n) {
22684                     function r(e, t) {
22685                         var n = w(e, Ne("state", t));
22686                         return dt({}, n && n.paramValues)
22687                     }
22688                     void 0 === n && (n = []);
22689                     var i = e.map(function(e) {
22690                         return e.paramSchema
22691                     }).reduce(Et, []).filter(function(e) {
22692                         return !e.inherit
22693                     }).map(De("id"));
22694                     return t.map(function(t) {
22695                         var o = dt({}, t && t.paramValues),
22696                             a = b(o, n);
22697                         o = y(o, n);
22698                         var s = y(r(e, t.state) || {}, i),
22699                             c = dt(o, s, a);
22700                         return new Xt(t.state).applyRawParams(c)
22701                     })
22702                 }, e.treeChanges = function(t, n, r) {
22703                     for (var i = 0, o = Math.min(t.length, n.length); i < o && t[i].state !== r && function(t, n) {
22704                             return t.equals(n, e.nonDynamicParams)
22705                         }(t[i], n[i]);) i++;
22706                     var a, s, c, l, u;
22707                     s = (a = t).slice(0, i), c = a.slice(i);
22708                     var d = s.map(function(e, t) {
22709                         var r = Xt.clone(e);
22710                         return r.paramValues = n[t].paramValues, r
22711                     });
22712                     return l = n.slice(i), u = d.concat(l), {
22713                         from: a,
22714                         to: u,
22715                         retained: s,
22716                         exiting: c,
22717                         entering: l
22718                     }
22719                 }, e.matching = function(e, t, n) {
22720                     var r = !1;
22721                     return k(e, t).reduce(function(e, t) {
22722                         var i = t[0],
22723                             o = t[1];
22724                         return (r = r || !i.equals(o, n)) ? e : e.concat(i)
22725                     }, [])
22726                 }, e.equals = function(t, n, r) {
22727                     return t.length === n.length && e.matching(t, n, r).length === t.length
22728                 }, e.subPath = function(e, t) {
22729                     var n = w(e, t),
22730                         r = e.indexOf(n);
22731                     return -1 === r ? void 0 : e.slice(0, r + 1)
22732                 }, e.nonDynamicParams = function(e) {
22733                     return e.state.parameters({
22734                         inherit: !1
22735                     }).filter(function(e) {
22736                         return !e.dynamic
22737                     })
22738                 }, e.paramValues = function(e) {
22739                     return e.reduce(function(e, t) {
22740                         return dt(e, t.paramValues)
22741                     }, {})
22742                 }, e
22743             }(),
22744             Jt = {
22745                 when: "LAZY",
22746                 async: "WAIT"
22747             },
22748             en = function() {
22749                 function e(t, n, r, i, o) {
22750                     if (this.resolved = !1, this.promise = void 0, t instanceof e) dt(this, t);
22751                     else if (Ke(n)) {
22752                         if (Ge(t)) throw new Error("new Resolvable(): token argument is required");
22753                         if (!Ke(n)) throw new Error("new Resolvable(): resolveFn argument must be a function");
22754                         this.token = t, this.policy = i, this.resolveFn = n, this.deps = r || [], this.data = o, this.resolved = void 0 !== o, this.promise = this.resolved ? ot.$q.when(this.data) : void 0
22755                     } else if (Qe(t) && t.token && Ke(t.resolveFn)) {
22756                         var a = t;
22757                         return new e(a.token, a.resolveFn, a.deps, a.policy, a.data)
22758                     }
22759                 }
22760                 return e.prototype.getPolicy = function(e) {
22761                     var t = this.policy || {},
22762                         n = e && e.resolvePolicy || {};
22763                     return {
22764                         when: t.when || n.when || Jt.when,
22765                         async: t.async || n.async || Jt.async
22766                     }
22767                 }, e.prototype.resolve = function(e, t) {
22768                     var n = this,
22769                         r = ot.$q,
22770                         i = e.findNode(this),
22771                         o = i && i.state,
22772                         a = "RXWAIT" === this.getPolicy(o).async ? function(e) {
22773                             var t = e.cache(1);
22774                             return t.take(1).toPromise().then(function() {
22775                                 return t
22776                             })
22777                         } : u;
22778                     return this.promise = r.when().then(function() {
22779                         return r.all(e.getDependencies(n).map(function(n) {
22780                             return n.get(e, t)
22781                         }))
22782                     }).then(function(e) {
22783                         return n.resolveFn.apply(null, e)
22784                     }).then(a).then(function(e) {
22785                         return n.data = e, n.resolved = !0, qt.traceResolvableResolved(n, t), n.data
22786                     })
22787                 }, e.prototype.get = function(e, t) {
22788                     return this.promise || this.resolve(e, t)
22789                 }, e.prototype.toString = function() {
22790                     return "Resolvable(token: " + Y(this.token) + ", requires: [" + this.deps.map(Y) + "])"
22791                 }, e.prototype.clone = function() {
22792                     return new e(this)
22793                 }, e.fromData = function(t, n) {
22794                     return new e(t, function() {
22795                         return n
22796                     }, null, null, n)
22797                 }, e
22798             }(),
22799             tn = {
22800                 when: {
22801                     LAZY: "LAZY",
22802                     EAGER: "EAGER"
22803                 },
22804                 async: {
22805                     WAIT: "WAIT",
22806                     NOWAIT: "NOWAIT",
22807                     RXWAIT: "RXWAIT"
22808                 }
22809             },
22810             nn = tn.when,
22811             rn = [nn.EAGER, nn.LAZY],
22812             on = [nn.EAGER],
22813             an = "Native Injector",
22814             sn = function() {
22815                 function e(e) {
22816                     this._path = e
22817                 }
22818                 return e.prototype.getTokens = function() {
22819                     return this._path.reduce(function(e, t) {
22820                         return e.concat(t.resolvables.map(function(e) {
22821                             return e.token
22822                         }))
22823                     }, []).reduce(xt, [])
22824                 }, e.prototype.getResolvable = function(e) {
22825                     return M(this._path.map(function(e) {
22826                         return e.resolvables
22827                     }).reduce(Et, []).filter(function(t) {
22828                         return t.token === e
22829                     }))
22830                 }, e.prototype.getPolicy = function(e) {
22831                     var t = this.findNode(e);
22832                     return e.getPolicy(t.state)
22833                 }, e.prototype.subContext = function(t) {
22834                     return new e(Qt.subPath(this._path, function(e) {
22835                         return e.state === t
22836                     }))
22837                 }, e.prototype.addResolvables = function(e, t) {
22838                     var n = w(this._path, Ne("state", t)),
22839                         r = e.map(function(e) {
22840                             return e.token
22841                         });
22842                     n.resolvables = n.resolvables.filter(function(e) {
22843                         return -1 === r.indexOf(e.token)
22844                     }).concat(e)
22845                 }, e.prototype.resolvePath = function(e, t) {
22846                     var n = this;
22847                     void 0 === e && (e = "LAZY");
22848                     var r = (pt(rn, e) ? e : "LAZY") === tn.when.EAGER ? on : rn;
22849                     qt.traceResolvePath(this._path, e, t);
22850                     var i = function(e, t) {
22851                             return function(r) {
22852                                 return pt(e, n.getPolicy(r)[t])
22853                             }
22854                         },
22855                         o = this._path.reduce(function(e, o) {
22856                             var a = o.resolvables.filter(i(r, "when")),
22857                                 s = a.filter(i(["NOWAIT"], "async")),
22858                                 c = a.filter(Re(i(["NOWAIT"], "async"))),
22859                                 l = n.subContext(o.state),
22860                                 u = function(e) {
22861                                     return e.get(l, t).then(function(t) {
22862                                         return {
22863                                             token: e.token,
22864                                             value: t
22865                                         }
22866                                     })
22867                                 };
22868                             return s.forEach(u), e.concat(c.map(u))
22869                         }, []);
22870                     return ot.$q.all(o)
22871                 }, e.prototype.injector = function() {
22872                     return this._injector || (this._injector = new cn(this))
22873                 }, e.prototype.findNode = function(e) {
22874                     return w(this._path, function(t) {
22875                         return pt(t.resolvables, e)
22876                     })
22877                 }, e.prototype.getDependencies = function(e) {
22878                     var t = this,
22879                         n = this.findNode(e),
22880                         r = (Qt.subPath(this._path, function(e) {
22881                             return e === n
22882                         }) || this._path).reduce(function(e, t) {
22883                             return e.concat(t.resolvables)
22884                         }, []).filter(function(t) {
22885                             return t !== e
22886                         });
22887                     return e.deps.map(function(e) {
22888                         var n = r.filter(function(t) {
22889                             return t.token === e
22890                         });
22891                         if (n.length) return M(n);
22892                         var i = t.injector().getNative(e);
22893                         if (!i) throw new Error("Could not find Dependency Injection token: " + Y(e));
22894                         return new en(e, function() {
22895                             return i
22896                         }, [], i)
22897                     })
22898                 }, e
22899             }(),
22900             cn = function() {
22901                 function e(e) {
22902                     this.context = e, this.native = this.get(an) || ot.$injector
22903                 }
22904                 return e.prototype.get = function(e) {
22905                     var t = this.context.getResolvable(e);
22906                     if (t) {
22907                         if ("NOWAIT" === this.context.getPolicy(t).async) return t.get(this.context);
22908                         if (!t.resolved) throw new Error("Resolvable async .get() not complete:" + Y(t.token));
22909                         return t.data
22910                     }
22911                     return this.native && this.native.get(e)
22912                 }, e.prototype.getAsync = function(e) {
22913                     var t = this.context.getResolvable(e);
22914                     return t ? t.get(this.context) : ot.$q.when(this.native.get(e))
22915                 }, e.prototype.getNative = function(e) {
22916                     return this.native && this.native.get(e)
22917                 }, e
22918             }(),
22919             ln = De("self"),
22920             un = function() {
22921                 function t(t, n, r) {
22922                     var i = this;
22923                     if (this._deferred = ot.$q.defer(), this.promise = this._deferred.promise, this._registeredHooks = {}, this._hookBuilder = new Wt(this), this.isActive = function() {
22924                             return i.router.globals.transition === i
22925                         }, this.router = r, this._targetState = n, !n.valid()) throw new Error(n.error());
22926                     this._options = dt({
22927                         current: Fe(this)
22928                     }, n.options()), this.$id = r.transitionService._transitionCount++;
22929                     var o = Qt.buildToPath(t, n);
22930                     this._treeChanges = Qt.treeChanges(t, o, this._options.reloadState), this.createTransitionHookRegFns();
22931                     var a = this._hookBuilder.buildHooksForPhase(e.TransitionHookPhase.CREATE);
22932                     Bt.invokeHooks(a, function() {
22933                         return null
22934                     }), this.applyViewConfigs(r)
22935                 }
22936                 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() {
22937                     var t = this;
22938                     this.router.transitionService._pluginapi._getEvents().filter(function(t) {
22939                         return t.hookPhase !== e.TransitionHookPhase.CREATE
22940                     }).forEach(function(e) {
22941                         return R(t, t.router.transitionService, e)
22942                     })
22943                 }, t.prototype.getHooks = function(e) {
22944                     return this._registeredHooks[e]
22945                 }, t.prototype.applyViewConfigs = function(e) {
22946                     var t = this._treeChanges.entering.map(function(e) {
22947                         return e.state
22948                     });
22949                     Qt.applyViewConfigs(e.transitionService.$view, this._treeChanges.to, t)
22950                 }, t.prototype.$from = function() {
22951                     return M(this._treeChanges.from).state
22952                 }, t.prototype.$to = function() {
22953                     return M(this._treeChanges.to).state
22954                 }, t.prototype.from = function() {
22955                     return this.$from().self
22956                 }, t.prototype.to = function() {
22957                     return this.$to().self
22958                 }, t.prototype.targetState = function() {
22959                     return this._targetState
22960                 }, t.prototype.is = function(e) {
22961                     return e instanceof t ? this.is({
22962                         to: e.$to().name,
22963                         from: e.$from().name
22964                     }) : !(e.to && !I(this.$to(), e.to) || e.from && !I(this.$from(), e.from))
22965                 }, t.prototype.params = function(e) {
22966                     return void 0 === e && (e = "to"), Object.freeze(this._treeChanges[e].map(De("paramValues")).reduce(bt, {}))
22967                 }, t.prototype.injector = function(e, t) {
22968                     void 0 === t && (t = "to");
22969                     var n = this._treeChanges[t];
22970                     return e && (n = Qt.subPath(n, function(t) {
22971                         return t.state === e || t.state.name === e
22972                     })), new sn(n).injector()
22973                 }, t.prototype.getResolveTokens = function(e) {
22974                     return void 0 === e && (e = "to"), new sn(this._treeChanges[e]).getTokens()
22975                 }, t.prototype.addResolvable = function(e, t) {
22976                     void 0 === t && (t = ""), e = je(en)(e) ? e : new en(e);
22977                     var n = "string" == typeof t ? t : t.name,
22978                         r = this._treeChanges.to,
22979                         i = w(r, function(e) {
22980                             return e.state.name === n
22981                         });
22982                     new sn(r).addResolvables([e], i.state)
22983                 }, t.prototype.redirectedFrom = function() {
22984                     return this._options.redirectedFrom || null
22985                 }, t.prototype.originalTransition = function() {
22986                     var e = this.redirectedFrom();
22987                     return e && e.originalTransition() || this
22988                 }, t.prototype.options = function() {
22989                     return this._options
22990                 }, t.prototype.entering = function() {
22991                     return E(this._treeChanges.entering, De("state")).map(ln)
22992                 }, t.prototype.exiting = function() {
22993                     return E(this._treeChanges.exiting, De("state")).map(ln).reverse()
22994                 }, t.prototype.retained = function() {
22995                     return E(this._treeChanges.retained, De("state")).map(ln)
22996                 }, t.prototype.views = function(e, t) {
22997                     void 0 === e && (e = "entering");
22998                     var n = this._treeChanges[e];
22999                     return (n = t ? n.filter(Ne("state", t)) : n).map(De("views")).filter(u).reduce(Et, [])
23000                 }, t.prototype.treeChanges = function(e) {
23001                     return e ? this._treeChanges[e] : this._treeChanges
23002                 }, t.prototype.redirect = function(e) {
23003                     for (var t = 1, n = this; null != (n = n.redirectedFrom());)
23004                         if (++t > 20) throw new Error("Too many consecutive Transition redirects (20+)");
23005                     var r = {
23006                         redirectedFrom: this,
23007                         source: "redirect"
23008                     };
23009                     "url" === this.options().source && !1 !== e.options().location && (r.location = "replace");
23010                     var i = dt({}, this.options(), e.options(), r);
23011                     e = new Ut(e.identifier(), e.$state(), e.params(), i);
23012                     var o = this.router.transitionService.create(this._treeChanges.from, e),
23013                         a = this._treeChanges.entering,
23014                         s = o._treeChanges.entering;
23015                     return Qt.matching(s, a, Qt.nonDynamicParams).filter(Re(function(e) {
23016                         return function(t) {
23017                             return e && t.state.includes[e.name]
23018                         }
23019                     }(e.options().reloadState))).forEach(function(e, t) {
23020                         e.resolvables = a[t].resolvables
23021                     }), o
23022                 }, t.prototype._changedParams = function() {
23023                     var e = this._treeChanges;
23024                     if (!(this._options.reload || e.exiting.length || e.entering.length || e.to.length !== e.from.length || k(e.to, e.from).map(function(e) {
23025                             return e[0].state !== e[1].state
23026                         }).reduce(wt, !1))) {
23027                         var t = e.to.map(function(e) {
23028                                 return e.paramSchema
23029                             }),
23030                             n = [e.to, e.from].map(function(e) {
23031                                 return e.map(function(e) {
23032                                     return e.paramValues
23033                                 })
23034                             });
23035                         return k(t, n[0], n[1]).map(function(e) {
23036                             var t = e[0],
23037                                 n = e[1],
23038                                 r = e[2];
23039                             return Zt.changed(t, n, r)
23040                         }).reduce(Et, [])
23041                     }
23042                 }, t.prototype.dynamic = function() {
23043                     var e = this._changedParams();
23044                     return !!e && e.map(function(e) {
23045                         return e.dynamic
23046                     }).reduce(wt, !1)
23047                 }, t.prototype.ignored = function() {
23048                     return !!this._ignoredReason()
23049                 }, t.prototype._ignoredReason = function() {
23050                     var e = this.router.globals.transition,
23051                         t = this._options.reloadState,
23052                         n = function(e, n) {
23053                             if (e.length !== n.length) return !1;
23054                             var r = Qt.matching(e, n);
23055                             return e.length === r.filter(function(e) {
23056                                 return !t || !e.state.includes[t.name]
23057                             }).length
23058                         },
23059                         r = this.treeChanges(),
23060                         i = e && e.treeChanges();
23061                     return i && n(i.to, r.to) && n(i.exiting, r.exiting) ? "SameAsPending" : 0 === r.exiting.length && 0 === r.entering.length && n(r.from, r.to) ? "SameAsCurrent" : void 0
23062                 }, t.prototype.run = function() {
23063                     var t = this,
23064                         n = Bt.runAllHooks,
23065                         r = function(e) {
23066                             return t._hookBuilder.buildHooksForPhase(e)
23067                         },
23068                         i = r(e.TransitionHookPhase.BEFORE);
23069                     return Bt.invokeHooks(i, function() {
23070                         var e = t.router.globals;
23071                         return e.lastStartedTransitionId = t.$id, e.transition = t, e.transitionHistory.enqueue(t), qt.traceTransitionStart(t), ot.$q.when(void 0)
23072                     }).then(function() {
23073                         var t = r(e.TransitionHookPhase.RUN);
23074                         return Bt.invokeHooks(t, function() {
23075                             return ot.$q.when(void 0)
23076                         })
23077                     }).then(function() {
23078                         qt.traceSuccess(t.$to(), t), t.success = !0, t._deferred.resolve(t.to()), n(r(e.TransitionHookPhase.SUCCESS))
23079                     }, function(i) {
23080                         qt.traceError(i, t), t.success = !1, t._deferred.reject(i), t._error = i, n(r(e.TransitionHookPhase.ERROR))
23081                     }), this.promise
23082                 }, t.prototype.valid = function() {
23083                     return !this.error() || void 0 !== this.success
23084                 }, t.prototype.abort = function() {
23085                     ze(this.success) && (this._aborted = !0)
23086                 }, t.prototype.error = function() {
23087                     var e = this.$to();
23088                     if (e.self.abstract) return "Cannot transition to abstract state '" + e.name + "'";
23089                     var t = e.parameters(),
23090                         n = this.params(),
23091                         r = t.filter(function(e) {
23092                             return !e.validates(n[e.id])
23093                         });
23094                     return r.length ? "Param values not valid for state '" + e.name + "'. Invalid params: [ " + r.map(function(e) {
23095                         return e.id
23096                     }).join(", ") + " ]" : !1 === this.success ? this._error : void 0
23097                 }, t.prototype.toString = function() {
23098                     var e = this.from(),
23099                         t = this.to(),
23100                         n = function(e) {
23101                             return null !== e["#"] && void 0 !== e["#"] ? e : y(e, ["#"])
23102                         };
23103                     return "Transition#" + this.$id + "( '" + (Qe(e) ? e.name : e) + "'" + ct(n(this._treeChanges.from.map(De("paramValues")).reduce(bt, {}))) + " -> " + (this.valid() ? "" : "(X) ") + "'" + (Qe(t) ? t.name : t) + "'" + ct(n(this.params())) + " )"
23104                 }, t.diToken = t, t
23105             }(),
23106             dn = null,
23107             fn = function(e) {
23108                 var t = Rt.isRejectionPromise;
23109                 return (dn = dn || c([
23110                     [Re(We), Fe("undefined")],
23111                     [Ye, Fe("null")],
23112                     [rt, Fe("[Promise]")],
23113                     [t, function(e) {
23114                         return e._transitionRejection.toString()
23115                     }],
23116                     [je(Rt), s("toString")],
23117                     [je(un), s("toString")],
23118                     [je(en), s("toString")],
23119                     [l, z],
23120                     [Fe(!0), u]
23121                 ]))(e)
23122             },
23123             hn = function(e) {
23124                 return function(t) {
23125                     if (!t) return ["", ""];
23126                     var n = t.indexOf(e);
23127                     return -1 === n ? [t, ""] : [t.substr(0, n), t.substr(n + 1)]
23128                 }
23129             },
23130             pn = function() {
23131                 function e() {
23132                     this.enqueue = !0, this.typeQueue = [], this.defaultTypes = b(e.prototype, ["hash", "string", "query", "path", "int", "bool", "date", "json", "any"]);
23133                     this.types = ht(E(this.defaultTypes, function(e, t) {
23134                         return new Yt(dt({
23135                             name: t
23136                         }, e))
23137                     }), {})
23138                 }
23139                 return e.prototype.dispose = function() {
23140                     this.types = {}
23141                 }, e.prototype.type = function(e, t, n) {
23142                     if (!We(t)) return this.types[e];
23143                     if (this.types.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
23144                     return this.types[e] = new Yt(dt({
23145                         name: e
23146                     }, t)), n && (this.typeQueue.push({
23147                         name: e,
23148                         def: n
23149                     }), this.enqueue || this._flushTypeQueue()), this
23150                 }, e.prototype._flushTypeQueue = function() {
23151                     for (; this.typeQueue.length;) {
23152                         var e = this.typeQueue.shift();
23153                         if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
23154                         dt(this.types[e.name], ot.$injector.invoke(e.def))
23155                     }
23156                 }, e
23157             }();
23158         ! function() {
23159             var e = function(e) {
23160                 var t = function(e) {
23161                         return null != e ? e.toString() : e
23162                     },
23163                     n = {
23164                         encode: t,
23165                         decode: t,
23166                         is: je(String),
23167                         pattern: /.*/,
23168                         equals: function(e, t) {
23169                             return e == t
23170                         }
23171                     };
23172                 return dt({}, n, e)
23173             };
23174             dt(pn.prototype, {
23175                 string: e({}),
23176                 path: e({
23177                     pattern: /[^/]*/
23178                 }),
23179                 query: e({}),
23180                 hash: e({
23181                     inherit: !1
23182                 }),
23183                 int: e({
23184                     decode: function(e) {
23185                         return parseInt(e, 10)
23186                     },
23187                     is: function(e) {
23188                         return !Ge(e) && this.decode(e.toString()) === e
23189                     },
23190                     pattern: /-?\d+/
23191                 }),
23192                 bool: e({
23193                     encode: function(e) {
23194                         return e && 1 || 0
23195                     },
23196                     decode: function(e) {
23197                         return 0 !== parseInt(e, 10)
23198                     },
23199                     is: je(Boolean),
23200                     pattern: /0|1/
23201                 }),
23202                 date: e({
23203                     encode: function(e) {
23204                         return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : void 0
23205                     },
23206                     decode: function(e) {
23207                         if (this.is(e)) return e;
23208                         var t = this.capture.exec(e);
23209                         return t ? new Date(t[1], t[2] - 1, t[3]) : void 0
23210                     },
23211                     is: function(e) {
23212                         return e instanceof Date && !isNaN(e.valueOf())
23213                     },
23214                     equals: function(e, t) {
23215                         return ["getFullYear", "getMonth", "getDate"].reduce(function(n, r) {
23216                             return n && e[r]() === t[r]()
23217                         }, !0)
23218                     },
23219                     pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
23220                     capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
23221                 }),
23222                 json: e({
23223                     encode: ct,
23224                     decode: st,
23225                     is: je(Object),
23226                     equals: ft,
23227                     pattern: /[^/]*/
23228                 }),
23229                 any: e({
23230                     encode: u,
23231                     decode: u,
23232                     is: function() {
23233                         return !0
23234                     },
23235                     equals: ft
23236                 })
23237             })
23238         }();
23239         var mn, gn = function() {
23240                 function e(e) {
23241                     void 0 === e && (e = {}), dt(this, e)
23242                 }
23243                 return e.prototype.$inherit = function(e, t, n) {
23244                     var r, i = v(t, n),
23245                         o = {},
23246                         a = [];
23247                     for (var s in i)
23248                         if (i[s] && i[s].params && (r = Object.keys(i[s].params)).length)
23249                             for (var c in r) a.indexOf(r[c]) >= 0 || (a.push(r[c]), o[r[c]] = this[r[c]]);
23250                     return dt({}, o, e)
23251                 }, e
23252             }(),
23253             vn = function(e) {
23254                 if (!Xe(e)) return !1;
23255                 var t = "^" === e.charAt(0);
23256                 return {
23257                     val: t ? e.substring(1) : e,
23258                     root: t
23259                 }
23260             },
23261             bn = function(e, t) {
23262                 return function(n) {
23263                     var r = n;
23264                     r && r.url && r.name && r.name.match(/\.\*\*$/) && (r.url += "{remainder:any}");
23265                     var i = vn(r.url),
23266                         o = n.parent,
23267                         a = i ? e.compile(i.val, {
23268                             params: n.params || {},
23269                             paramMap: function(e, t) {
23270                                 return !1 === r.reloadOnSearch && t && (e = dt(e || {}, {
23271                                     dynamic: !0
23272                                 })), e
23273                             }
23274                         }) : r.url;
23275                     if (!a) return null;
23276                     if (!e.isMatcher(a)) throw new Error("Invalid url '" + a + "' in state '" + n + "'");
23277                     return i && i.root ? a : (o && o.navigable || t()).url.append(a)
23278                 }
23279             },
23280             yn = function(e) {
23281                 return function(t) {
23282                     return !e(t) && t.url ? t : t.parent ? t.parent.navigable : null
23283                 }
23284             },
23285             $n = function(e) {
23286                 return function(t) {
23287                     var n = t.url && t.url.parameters({
23288                             inherit: !1
23289                         }) || [],
23290                         r = $t(yt(y(t.params || {}, n.map(De("id"))), function(t, n) {
23291                             return e.fromConfig(n, null, t)
23292                         }));
23293                     return n.concat(r).map(function(e) {
23294                         return [e.id, e]
23295                     }).reduce(T, {})
23296                 }
23297             },
23298             _n = function() {
23299                 function e(e, t) {
23300                     this.matcher = e;
23301                     var n = this,
23302                         r = function() {
23303                             return e.find("")
23304                         },
23305                         i = function(e) {
23306                             return "" === e.name
23307                         };
23308                     this.builders = {
23309                         name: [Z],
23310                         self: [X],
23311                         parent: [function(t) {
23312                             return i(t) ? null : e.find(n.parentName(t)) || r()
23313                         }],
23314                         data: [Q],
23315                         url: [bn(t, r)],
23316                         navigable: [yn(i)],
23317                         params: [$n(t.paramFactory)],
23318                         views: [],
23319                         path: [J],
23320                         includes: [ee],
23321                         resolvables: [te]
23322                     }
23323                 }
23324                 return e.prototype.builder = function(e, t) {
23325                     var n = this.builders,
23326                         r = n[e] || [];
23327                     return Xe(e) && !We(t) ? r.length > 1 ? r : r[0] : Xe(e) && Ke(t) ? (n[e] = r, n[e].push(t), function() {
23328                         return n[e].splice(n[e].indexOf(t, 1)) && null
23329                     }) : void 0
23330                 }, e.prototype.build = function(e) {
23331                     var t = this,
23332                         n = t.matcher,
23333                         r = t.builders,
23334                         i = this.parentName(e);
23335                     if (i && !n.find(i, void 0, !1)) return null;
23336                     for (var o in r)
23337                         if (r.hasOwnProperty(o)) {
23338                             var a = r[o].reduce(function(e, t) {
23339                                 return function(n) {
23340                                     return t(n, e)
23341                                 }
23342                             }, d);
23343                             e[o] = a(e)
23344                         }
23345                     return e
23346                 }, e.prototype.parentName = function(e) {
23347                     var t = e.name || "",
23348                         n = t.split(".");
23349                     if ("**" === n.pop() && n.pop(), n.length) {
23350                         if (e.parent) throw new Error("States that specify the 'parent:' property should not have a '.' in their name (" + t + ")");
23351                         return n.join(".")
23352                     }
23353                     return e.parent ? Xe(e.parent) ? e.parent : e.parent.name : ""
23354                 }, e.prototype.name = function(e) {
23355                     var t = e.name;
23356                     if (-1 !== t.indexOf(".") || !e.parent) return t;
23357                     var n = Xe(e.parent) ? e.parent : e.parent.name;
23358                     return n ? n + "." + t : t
23359                 }, e
23360             }(),
23361             wn = function() {
23362                 function e(e) {
23363                     this._states = e
23364                 }
23365                 return e.prototype.isRelative = function(e) {
23366                     return 0 === (e = e || "").indexOf(".") || 0 === e.indexOf("^")
23367                 }, e.prototype.find = function(e, t, n) {
23368                     if (void 0 === n && (n = !0), e || "" === e) {
23369                         var r = Xe(e),
23370                             i = r ? e : e.name;
23371                         this.isRelative(i) && (i = this.resolvePath(i, t));
23372                         var o = this._states[i];
23373                         if (o && (r || !(r || o !== e && o.self !== e))) return o;
23374                         if (r && n) {
23375                             var a = $t(this._states).filter(function(e) {
23376                                 return e.__stateObjectCache.nameGlob && e.__stateObjectCache.nameGlob.matches(i)
23377                             });
23378                             return a.length > 1 && console.log("stateMatcher.find: Found multiple matches for " + i + " using glob: ", a.map(function(e) {
23379                                 return e.name
23380                             })), a[0]
23381                         }
23382                     }
23383                 }, e.prototype.resolvePath = function(e, t) {
23384                     if (!t) throw new Error("No reference point given for path '" + e + "'");
23385                     for (var n = this.find(t), r = e.split("."), i = 0, o = r.length, a = n; i < o; i++)
23386                         if ("" !== r[i] || 0 !== i) {
23387                             if ("^" !== r[i]) break;
23388                             if (!a.parent) throw new Error("Path '" + e + "' not valid for state '" + n.name + "'");
23389                             a = a.parent
23390                         } else a = n;
23391                     var s = r.slice(i).join(".");
23392                     return a.name + (a.name && s ? "." : "") + s
23393                 }, e
23394             }(),
23395             En = function() {
23396                 function e(e, t, n, r, i) {
23397                     this.$registry = e, this.$urlRouter = t, this.states = n, this.builder = r, this.listeners = i, this.queue = [], this.matcher = e.matcher
23398                 }
23399                 return e.prototype.dispose = function() {
23400                     this.queue = []
23401                 }, e.prototype.register = function(e) {
23402                     var t = this.queue,
23403                         n = Ue.create(e),
23404                         r = n.name;
23405                     if (!Xe(r)) throw new Error("State must have a valid name");
23406                     if (this.states.hasOwnProperty(r) || pt(t.map(De("name")), r)) throw new Error("State '" + r + "' is already defined");
23407                     return t.push(n), this.flush(), n
23408                 }, e.prototype.flush = function() {
23409                     for (var e = this, t = this, n = t.queue, r = t.states, i = t.builder, o = [], a = [], s = {}, c = function(t) {
23410                             return e.states.hasOwnProperty(t) && e.states[t]
23411                         }; n.length > 0;) {
23412                         var l = n.shift(),
23413                             u = l.name,
23414                             d = i.build(l),
23415                             f = a.indexOf(l);
23416                         if (d) {
23417                             var h = c(u);
23418                             if (h && h.name === u) throw new Error("State '" + u + "' is already defined");
23419                             var p = c(u + ".**");
23420                             p && this.$registry.deregister(p), r[u] = l, this.attachRoute(l), f >= 0 && a.splice(f, 1), o.push(l)
23421                         } else {
23422                             var m = s[u];
23423                             if (s[u] = n.length, f >= 0 && m === n.length) return n.push(l), r;
23424                             f < 0 && a.push(l), n.push(l)
23425                         }
23426                     }
23427                     return o.length && this.listeners.forEach(function(e) {
23428                         return e("registered", o.map(function(e) {
23429                             return e.self
23430                         }))
23431                     }), r
23432                 }, e.prototype.attachRoute = function(e) {
23433                     !e.abstract && e.url && this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(e))
23434                 }, e
23435             }(),
23436             Cn = function() {
23437                 function e(e) {
23438                     this._router = e, this.states = {}, this.listeners = [], this.matcher = new wn(this.states), this.builder = new _n(this.matcher, e.urlMatcherFactory), this.stateQueue = new En(this, e.urlRouter, this.states, this.builder, this.listeners), this._registerRoot()
23439                 }
23440                 return e.prototype._registerRoot = function() {
23441                     var e = {
23442                         name: "",
23443                         url: "^",
23444                         views: null,
23445                         params: {
23446                             "#": {
23447                                 value: null,
23448                                 type: "hash",
23449                                 dynamic: !0
23450                             }
23451                         },
23452                         abstract: !0
23453                     };
23454                     (this._root = this.stateQueue.register(e)).navigable = null
23455                 }, e.prototype.dispose = function() {
23456                     var e = this;
23457                     this.stateQueue.dispose(), this.listeners = [], this.get().forEach(function(t) {
23458                         return e.get(t) && e.deregister(t)
23459                     })
23460                 }, e.prototype.onStatesChanged = function(e) {
23461                     return this.listeners.push(e),
23462                         function() {
23463                             mt(this.listeners)(e)
23464                         }.bind(this)
23465                 }, e.prototype.root = function() {
23466                     return this._root
23467                 }, e.prototype.register = function(e) {
23468                     return this.stateQueue.register(e)
23469                 }, e.prototype._deregisterTree = function(e) {
23470                     var t = this,
23471                         n = this.get().map(function(e) {
23472                             return e.$$state()
23473                         }),
23474                         r = function(e) {
23475                             var t = n.filter(function(t) {
23476                                 return -1 !== e.indexOf(t.parent)
23477                             });
23478                             return 0 === t.length ? t : t.concat(r(t))
23479                         },
23480                         i = r([e]),
23481                         o = [e].concat(i).reverse();
23482                     return o.forEach(function(e) {
23483                         var n = t._router.urlRouter;
23484                         n.rules().filter(Ne("state", e)).forEach(n.removeRule.bind(n)), delete t.states[e.name]
23485                     }), o
23486                 }, e.prototype.deregister = function(e) {
23487                     var t = this.get(e);
23488                     if (!t) throw new Error("Can't deregister state; not found: " + e);
23489                     var n = this._deregisterTree(t.$$state());
23490                     return this.listeners.forEach(function(e) {
23491                         return e("deregistered", n.map(function(e) {
23492                             return e.self
23493                         }))
23494                     }), n
23495                 }, e.prototype.get = function(e, t) {
23496                     var n = this;
23497                     if (0 === arguments.length) return Object.keys(this.states).map(function(e) {
23498                         return n.states[e].self
23499                     });
23500                     var r = this.matcher.find(e, t);
23501                     return r && r.self || null
23502                 }, e.prototype.decorator = function(e, t) {
23503                     return this.builder.builder(e, t)
23504                 }, e
23505             }(),
23506             xn = function(e, t, n) {
23507                 return e[t] = e[t] || n()
23508             },
23509             kn = G("/"),
23510             Tn = function() {
23511                 function t(e, n, r, i) {
23512                     var o = this;
23513                     this.config = i, this._cache = {
23514                         path: [this]
23515                     }, this._children = [], this._params = [], this._segments = [], this._compiled = [], this.pattern = e, this.config = g(this.config, {
23516                         params: {},
23517                         strict: !0,
23518                         caseInsensitive: !1,
23519                         paramMap: u
23520                     });
23521                     for (var a, s, c, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, d = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, f = 0, h = [], p = function(n) {
23522                             if (!t.nameValidator.test(n)) throw new Error("Invalid parameter name '" + n + "' in pattern '" + e + "'");
23523                             if (w(o._params, Ne("id", n))) throw new Error("Duplicate parameter name '" + n + "' in pattern '" + e + "'")
23524                         }, m = function(t, r) {
23525                             var i = t[2] || t[3],
23526                                 a = r ? t[4] : t[4] || ("*" === t[1] ? "[\\s\\S]*" : null);
23527                             return {
23528                                 id: i,
23529                                 regexp: a,
23530                                 cfg: o.config.params[i],
23531                                 segment: e.substring(f, t.index),
23532                                 type: a ? n.type(a) || function(e) {
23533                                     return ht(n.type(r ? "query" : "path"), {
23534                                         pattern: new RegExp(e, o.config.caseInsensitive ? "i" : void 0)
23535                                     })
23536                                 }(a) : null
23537                             }
23538                         };
23539                         (a = l.exec(e)) && !((s = m(a, !1)).segment.indexOf("?") >= 0);) p(s.id), this._params.push(r.fromPath(s.id, s.type, this.config.paramMap(s.cfg, !1))), this._segments.push(s.segment), h.push([s.segment, M(this._params)]), f = l.lastIndex;
23540                     var v = (c = e.substring(f)).indexOf("?");
23541                     if (v >= 0) {
23542                         var b = c.substring(v);
23543                         if (c = c.substring(0, v), b.length > 0)
23544                             for (f = 0; a = d.exec(b);) p((s = m(a, !0)).id), this._params.push(r.fromSearch(s.id, s.type, this.config.paramMap(s.cfg, !0))), f = l.lastIndex
23545                     }
23546                     this._segments.push(c), this._compiled = h.map(function(e) {
23547                         return ne.apply(null, e)
23548                     }).concat(ne(c))
23549                 }
23550                 return t.prototype.append = function(e) {
23551                     return this._children.push(e), e._cache = {
23552                         path: this._cache.path.concat(e),
23553                         parent: this,
23554                         pattern: null
23555                     }, e
23556                 }, t.prototype.isRoot = function() {
23557                     return this._cache.path[0] === this
23558                 }, t.prototype.toString = function() {
23559                     return this.pattern
23560                 }, t.prototype.exec = function(e, t, n, r) {
23561                     var i = this;
23562                     void 0 === t && (t = {}), void 0 === r && (r = {});
23563                     var o = xn(this._cache, "pattern", function() {
23564                         return new RegExp(["^", kt(i._cache.path.map(De("_compiled"))).join(""), !1 === i.config.strict ? "/?" : "", "$"].join(""), i.config.caseInsensitive ? "i" : void 0)
23565                     }).exec(e);
23566                     if (!o) return null;
23567                     var a = this.parameters(),
23568                         s = a.filter(function(e) {
23569                             return !e.isSearch()
23570                         }),
23571                         c = a.filter(function(e) {
23572                             return e.isSearch()
23573                         }),
23574                         l = this._cache.path.map(function(e) {
23575                             return e._segments.length - 1
23576                         }).reduce(function(e, t) {
23577                             return e + t
23578                         }),
23579                         u = {};
23580                     if (l !== o.length - 1) throw new Error("Unbalanced capture group in route '" + this.pattern + "'");
23581                     for (var d = 0; d < l; d++) {
23582                         for (var f = s[d], h = o[d + 1], p = 0; p < f.replace.length; p++) f.replace[p].from === h && (h = f.replace[p].to);
23583                         h && !0 === f.array && (h = function(e) {
23584                             var t = function(e) {
23585                                 return e.split("").reverse().join("")
23586                             };
23587                             return E(E(t(e).split(/-(?!\\)/), t), function(e) {
23588                                 return e.replace(/\\-/g, "-")
23589                             }).reverse()
23590                         }(h)), We(h) && (h = f.type.decode(h)), u[f.id] = f.value(h)
23591                     }
23592                     return c.forEach(function(e) {
23593                         for (var n = t[e.id], r = 0; r < e.replace.length; r++) e.replace[r].from === n && (n = e.replace[r].to);
23594                         We(n) && (n = e.type.decode(n)), u[e.id] = e.value(n)
23595                     }), n && (u["#"] = n), u
23596                 }, t.prototype.parameters = function(e) {
23597                     return void 0 === e && (e = {}), !1 === e.inherit ? this._params : kt(this._cache.path.map(function(e) {
23598                         return e._params
23599                     }))
23600                 }, t.prototype.parameter = function(e, t) {
23601                     var n = this;
23602                     void 0 === t && (t = {});
23603                     var r = this._cache.parent;
23604                     return function() {
23605                         for (var t = 0, r = n._params; t < r.length; t++) {
23606                             var i = r[t];
23607                             if (i.id === e) return i
23608                         }
23609                     }() || !1 !== t.inherit && r && r.parameter(e, t) || null
23610                 }, t.prototype.validates = function(e) {
23611                     var t = function(e, t) {
23612                         return !e || e.validates(t)
23613                     };
23614                     return e = e || {}, this.parameters().filter(function(t) {
23615                         return e.hasOwnProperty(t.id)
23616                     }).map(function(n) {
23617                         return t(n, e[n.id])
23618                     }).reduce(_t, !0)
23619                 }, t.prototype.format = function(e) {
23620                     function n(t) {
23621                         var n = t.value(e[t.id]),
23622                             r = t.validates(n),
23623                             i = t.isDefaultValue(n);
23624                         return {
23625                             param: t,
23626                             value: n,
23627                             isValid: r,
23628                             isDefaultValue: i,
23629                             squash: !!i && t.squash,
23630                             encoded: t.type.encode(n)
23631                         }
23632                     }
23633                     void 0 === e && (e = {});
23634                     var r = this._cache.path,
23635                         i = r.map(t.pathSegmentsAndParams).reduce(Et, []).map(function(e) {
23636                             return Xe(e) ? e : n(e)
23637                         }),
23638                         o = r.map(t.queryParams).reduce(Et, []).map(n);
23639                     if (i.concat(o).filter(function(e) {
23640                             return !1 === e.isValid
23641                         }).length) return null;
23642                     var a = i.reduce(function(e, n) {
23643                             if (Xe(n)) return e + n;
23644                             var r = n.squash,
23645                                 i = n.encoded,
23646                                 o = n.param;
23647                             return !0 === r ? e.match(/\/$/) ? e.slice(0, -1) : e : Xe(r) ? e + r : !1 !== r ? e : null == i ? e : Je(i) ? e + E(i, t.encodeDashes).join("-") : o.raw ? e + i : e + encodeURIComponent(i)
23648                         }, ""),
23649                         s = o.map(function(e) {
23650                             var t = e.param,
23651                                 n = e.squash,
23652                                 r = e.encoded,
23653                                 i = e.isDefaultValue;
23654                             if (!(null == r || i && !1 !== n) && (Je(r) || (r = [r]), 0 !== r.length)) return t.raw || (r = E(r, encodeURIComponent)), r.map(function(e) {
23655                                 return t.id + "=" + e
23656                             })
23657                         }).filter(u).reduce(Et, []).join("&");
23658                     return a + (s ? "?" + s : "") + (e["#"] ? "#" + e["#"] : "")
23659                 }, t.encodeDashes = function(e) {
23660                     return encodeURIComponent(e).replace(/-/g, function(e) {
23661                         return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
23662                     })
23663                 }, t.pathSegmentsAndParams = function(t) {
23664                     return k(t._segments, t._params.filter(function(t) {
23665                         return t.location === e.DefType.PATH
23666                     }).concat(void 0)).reduce(Et, []).filter(function(e) {
23667                         return "" !== e && We(e)
23668                     })
23669                 }, t.queryParams = function(t) {
23670                     return t._params.filter(function(t) {
23671                         return t.location === e.DefType.SEARCH
23672                     })
23673                 }, t.compare = function(e, n) {
23674                     var r = function(e) {
23675                             return e._cache.segments = e._cache.segments || e._cache.path.map(t.pathSegmentsAndParams).reduce(Et, []).reduce(K, []).map(function(e) {
23676                                 return Xe(e) ? kn(e) : e
23677                             }).reduce(Et, [])
23678                         },
23679                         i = function(e) {
23680                             return e._cache.weights = e._cache.weights || r(e).map(function(e) {
23681                                 return "/" === e ? 1 : Xe(e) ? 2 : e instanceof Zt ? 3 : void 0
23682                             })
23683                         },
23684                         o = i(e),
23685                         a = i(n);
23686                     ! function(e, t, n) {
23687                         for (var r = Math.max(e.length, t.length); e.length < r;) e.push(n);
23688                         for (; t.length < r;) t.push(n)
23689                     }(o, a, 0);
23690                     var s, c, l = k(o, a);
23691                     for (c = 0; c < l.length; c++)
23692                         if (0 != (s = l[c][0] - l[c][1])) return s;
23693                     return 0
23694                 }, t.nameValidator = /^\w+([-.]+\w+)*(?:\[\])?$/, t
23695             }(),
23696             Mn = function() {
23697                 function t() {
23698                     var t = this;
23699                     this.paramTypes = new pn, this._isCaseInsensitive = !1, this._isStrictMode = !0, this._defaultSquashPolicy = !1, this._getConfig = function(e) {
23700                         return dt({
23701                             strict: t._isStrictMode,
23702                             caseInsensitive: t._isCaseInsensitive
23703                         }, e)
23704                     }, this.paramFactory = {
23705                         fromConfig: function(n, r, i) {
23706                             return new Zt(n, r, i, e.DefType.CONFIG, t)
23707                         },
23708                         fromPath: function(n, r, i) {
23709                             return new Zt(n, r, i, e.DefType.PATH, t)
23710                         },
23711                         fromSearch: function(n, r, i) {
23712                             return new Zt(n, r, i, e.DefType.SEARCH, t)
23713                         }
23714                     }, dt(this, {
23715                         UrlMatcher: Tn,
23716                         Param: Zt
23717                     })
23718                 }
23719                 return t.prototype.caseInsensitive = function(e) {
23720                     return this._isCaseInsensitive = We(e) ? e : this._isCaseInsensitive
23721                 }, t.prototype.strictMode = function(e) {
23722                     return this._isStrictMode = We(e) ? e : this._isStrictMode
23723                 }, t.prototype.defaultSquashPolicy = function(e) {
23724                     if (We(e) && !0 !== e && !1 !== e && !Xe(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
23725                     return this._defaultSquashPolicy = We(e) ? e : this._defaultSquashPolicy
23726                 }, t.prototype.compile = function(e, t) {
23727                     return new Tn(e, this.paramTypes, this.paramFactory, this._getConfig(t))
23728                 }, t.prototype.isMatcher = function(e) {
23729                     if (!Qe(e)) return !1;
23730                     var t = !0;
23731                     return ut(Tn.prototype, function(n, r) {
23732                         Ke(n) && (t = t && We(e[r]) && Ke(e[r]))
23733                     }), t
23734                 }, t.prototype.type = function(e, t, n) {
23735                     var r = this.paramTypes.type(e, t, n);
23736                     return We(t) ? this : r
23737                 }, t.prototype.$get = function() {
23738                     return this.paramTypes.enqueue = !1, this.paramTypes._flushTypeQueue(), this
23739                 }, t.prototype.dispose = function() {
23740                     this.paramTypes.dispose()
23741                 }, t
23742             }(),
23743             Sn = function() {
23744                 function e(e) {
23745                     this.router = e
23746                 }
23747                 return e.prototype.compile = function(e) {
23748                     return this.router.urlMatcherFactory.compile(e)
23749                 }, e.prototype.create = function(e, t) {
23750                     var n = this,
23751                         r = c([
23752                             [Xe, function(e) {
23753                                 return r(n.compile(e))
23754                             }],
23755                             [je(Tn), function(e) {
23756                                 return n.fromUrlMatcher(e, t)
23757                             }],
23758                             [nt, function(e) {
23759                                 return n.fromState(e, n.router)
23760                             }],
23761                             [je(RegExp), function(e) {
23762                                 return n.fromRegExp(e, t)
23763                             }],
23764                             [Ke, function(e) {
23765                                 return new An(e, t)
23766                             }]
23767                         ]),
23768                         i = r(e);
23769                     if (!i) throw new Error("invalid 'what' in when()");
23770                     return i
23771                 }, e.prototype.fromUrlMatcher = function(e, t) {
23772                     var n = t;
23773                     Xe(t) && (t = this.router.urlMatcherFactory.compile(t)), je(Tn)(t) && (n = function(e) {
23774                         return t.format(e)
23775                     });
23776                     var r = {
23777                         urlMatcher: e,
23778                         matchPriority: function(t) {
23779                             var n = e.parameters().filter(function(e) {
23780                                 return e.isOptional
23781                             });
23782                             return n.length ? n.filter(function(e) {
23783                                 return t[e.id]
23784                             }).length / n.length : 1e-6
23785                         },
23786                         type: "URLMATCHER"
23787                     };
23788                     return dt(new An(function(t) {
23789                         var n = e.exec(t.path, t.search, t.hash);
23790                         return e.validates(n) && n
23791                     }, n), r)
23792                 }, e.prototype.fromState = function(e, t) {
23793                     var n = {
23794                         state: e,
23795                         type: "STATE"
23796                     };
23797                     return dt(this.fromUrlMatcher(e.url, function(n) {
23798                         var r = t.stateService,
23799                             i = t.globals;
23800                         r.href(e, n) !== r.href(i.current, i.params) && r.transitionTo(e, n, {
23801                             inherit: !0,
23802                             source: "url"
23803                         })
23804                     }), n)
23805                 }, e.prototype.fromRegExp = function(e, t) {
23806                     if (e.global || e.sticky) throw new Error("Rule RegExp must not be global or sticky");
23807                     var n = Xe(t) ? function(e) {
23808                             return t.replace(/\$(\$|\d{1,2})/, function(t, n) {
23809                                 return e["$" === n ? 0 : Number(n)]
23810                             })
23811                         } : t,
23812                         r = {
23813                             regexp: e,
23814                             type: "REGEXP"
23815                         };
23816                     return dt(new An(function(t) {
23817                         return e.exec(t.path)
23818                     }, n), r)
23819                 }, e.isUrlRule = function(e) {
23820                     return e && ["type", "match", "handler"].every(function(t) {
23821                         return We(e[t])
23822                     })
23823                 }, e
23824             }(),
23825             An = function() {
23826                 return function(e, t) {
23827                     var n = this;
23828                     this.match = e, this.type = "RAW", this.matchPriority = function(e) {
23829                         return 0 - n.$id
23830                     }, this.handler = t || u
23831                 }
23832             }(),
23833             On = function(e, t) {
23834                 return (t.priority || 0) - (e.priority || 0)
23835             },
23836             Dn = function(e, t) {
23837                 var n = {
23838                     STATE: 4,
23839                     URLMATCHER: 4,
23840                     REGEXP: 3,
23841                     RAW: 2,
23842                     OTHER: 1
23843                 };
23844                 return (n[e.type] || 0) - (n[t.type] || 0)
23845             },
23846             Nn = function(e, t) {
23847                 return e.urlMatcher && t.urlMatcher ? Tn.compare(e.urlMatcher, t.urlMatcher) : 0
23848             },
23849             In = function(e, t) {
23850                 var n = {
23851                     STATE: !0,
23852                     URLMATCHER: !0
23853                 };
23854                 return n[e.type] && n[t.type] ? 0 : (e.$id || 0) - (t.$id || 0)
23855             };
23856         mn = function(e, t) {
23857             var n = On(e, t);
23858             return 0 !== n ? n : 0 !== (n = Dn(e, t)) ? n : 0 !== (n = Nn(e, t)) ? n : In(e, t)
23859         };
23860         var Rn = function() {
23861                 function e(t) {
23862                     this._sortFn = mn, this._rules = [], this.interceptDeferred = !1, this._id = 0, this._sorted = !1, this._router = t, this.urlRuleFactory = new Sn(t), f(Fe(e.prototype), this, Fe(this))
23863                 }
23864                 return e.prototype.dispose = function() {
23865                     this.listen(!1), this._rules = [], delete this._otherwiseFn
23866                 }, e.prototype.sort = function(e) {
23867                     this._rules = this.stableSort(this._rules, this._sortFn = e || this._sortFn), this._sorted = !0
23868                 }, e.prototype.ensureSorted = function() {
23869                     this._sorted || this.sort()
23870                 }, e.prototype.stableSort = function(e, t) {
23871                     var n = e.map(function(e, t) {
23872                         return {
23873                             elem: e,
23874                             idx: t
23875                         }
23876                     });
23877                     return n.sort(function(e, n) {
23878                         var r = t(e.elem, n.elem);
23879                         return 0 === r ? e.idx - n.idx : r
23880                     }), n.map(function(e) {
23881                         return e.elem
23882                     })
23883                 }, e.prototype.match = function(e) {
23884                     var t = this;
23885                     this.ensureSorted(), e = dt({
23886                         path: "",
23887                         search: {},
23888                         hash: ""
23889                     }, e);
23890                     var n = this.rules();
23891                     this._otherwiseFn && n.push(this._otherwiseFn);
23892                     for (var r, i = 0; i < n.length && (!r || 0 === this._sortFn(n[i], r.rule)); i++) {
23893                         var o = function(n) {
23894                             var r = n.match(e, t._router);
23895                             return r && {
23896                                 match: r,
23897                                 rule: n,
23898                                 weight: n.matchPriority(r)
23899                             }
23900                         }(n[i]);
23901                         r = !r || o && o.weight > r.weight ? o : r
23902                     }
23903                     return r
23904                 }, e.prototype.sync = function(e) {
23905                     if (!e || !e.defaultPrevented) {
23906                         var t = this._router,
23907                             n = t.urlService,
23908                             r = t.stateService,
23909                             i = {
23910                                 path: n.path(),
23911                                 search: n.search(),
23912                                 hash: n.hash()
23913                             },
23914                             o = this.match(i);
23915                         c([
23916                             [Xe, function(e) {
23917                                 return n.url(e, !0)
23918                             }],
23919                             [Ut.isDef, function(e) {
23920                                 return r.go(e.state, e.params, e.options)
23921                             }],
23922                             [je(Ut), function(e) {
23923                                 return r.go(e.state(), e.params(), e.options())
23924                             }]
23925                         ])(o && o.rule.handler(o.match, i, t))
23926                     }
23927                 }, e.prototype.listen = function(e) {
23928                     var t = this;
23929                     if (!1 !== e) return this._stopFn = this._stopFn || this._router.urlService.onChange(function(e) {
23930                         return t.sync(e)
23931                     });
23932                     this._stopFn && this._stopFn(), delete this._stopFn
23933                 }, e.prototype.update = function(e) {
23934                     var t = this._router.locationService;
23935                     e ? this.location = t.path() : t.path() !== this.location && t.url(this.location, !0)
23936                 }, e.prototype.push = function(e, t, n) {
23937                     var r = n && !!n.replace;
23938                     this._router.urlService.url(e.format(t || {}), r)
23939                 }, e.prototype.href = function(e, t, n) {
23940                     var r = e.format(t);
23941                     if (null == r) return null;
23942                     n = n || {
23943                         absolute: !1
23944                     };
23945                     var i = this._router.urlService.config,
23946                         o = i.html5Mode();
23947                     if (o || null === r || (r = "#" + i.hashPrefix() + r), r = re(r, o, n.absolute, i.baseHref()), !n.absolute || !r) return r;
23948                     var a = !o && r ? "/" : "",
23949                         s = i.port();
23950                     return s = 80 === s || 443 === s ? "" : ":" + s, [i.protocol(), "://", i.host(), s, a, r].join("")
23951                 }, e.prototype.rule = function(e) {
23952                     var t = this;
23953                     if (!Sn.isUrlRule(e)) throw new Error("invalid rule");
23954                     return e.$id = this._id++, e.priority = e.priority || 0, this._rules.push(e), this._sorted = !1,
23955                         function() {
23956                             return t.removeRule(e)
23957                         }
23958                 }, e.prototype.removeRule = function(e) {
23959                     mt(this._rules, e)
23960                 }, e.prototype.rules = function() {
23961                     return this.ensureSorted(), this._rules.slice()
23962                 }, e.prototype.otherwise = function(e) {
23963                     var t = ie(e);
23964                     this._otherwiseFn = this.urlRuleFactory.create(Fe(!0), t), this._sorted = !1
23965                 }, e.prototype.initial = function(e) {
23966                     var t = ie(e);
23967                     this.rule(this.urlRuleFactory.create(function(e, t) {
23968                         return 0 === t.globals.transitionHistory.size() && !!/^\/?$/.exec(e.path)
23969                     }, t))
23970                 }, e.prototype.when = function(e, t, n) {
23971                     var r = this.urlRuleFactory.create(e, t);
23972                     return We(n && n.priority) && (r.priority = n.priority), this.rule(r), r
23973                 }, e.prototype.deferIntercept = function(e) {
23974                     void 0 === e && (e = !0), this.interceptDeferred = e
23975                 }, e
23976             }(),
23977             Pn = function() {
23978                 function e() {
23979                     var e = this;
23980                     this._uiViews = [], this._viewConfigs = [], this._viewConfigFactories = {}, this._pluginapi = {
23981                         _rootViewContext: this._rootViewContext.bind(this),
23982                         _viewConfigFactory: this._viewConfigFactory.bind(this),
23983                         _registeredUIViews: function() {
23984                             return e._uiViews
23985                         },
23986                         _activeViewConfigs: function() {
23987                             return e._viewConfigs
23988                         }
23989                     }
23990                 }
23991                 return e.prototype._rootViewContext = function(e) {
23992                     return this._rootContext = e || this._rootContext
23993                 }, e.prototype._viewConfigFactory = function(e, t) {
23994                     this._viewConfigFactories[e] = t
23995                 }, e.prototype.createViewConfig = function(e, t) {
23996                     var n = this._viewConfigFactories[t.$type];
23997                     if (!n) throw new Error("ViewService: No view config factory registered for type " + t.$type);
23998                     var r = n(e, t);
23999                     return Je(r) ? r : [r]
24000                 }, e.prototype.deactivateViewConfig = function(e) {
24001                     qt.traceViewServiceEvent("<- Removing", e), mt(this._viewConfigs, e)
24002                 }, e.prototype.activateViewConfig = function(e) {
24003                     qt.traceViewServiceEvent("-> Registering", e), this._viewConfigs.push(e)
24004                 }, e.prototype.sync = function() {
24005                     function t(e) {
24006                         for (var t = e.viewDecl.$context, n = 0; ++n && t.parent;) t = t.parent;
24007                         return n
24008                     }
24009                     var r = this,
24010                         i = this._uiViews.map(function(e) {
24011                             return [e.fqn, e]
24012                         }).reduce(T, {}),
24013                         o = n(function(e, t, n, r) {
24014                             return t * (e(n) - e(r))
24015                         }),
24016                         a = this._uiViews.sort(o(function(e) {
24017                             var t = function(e) {
24018                                 return e && e.parent ? t(e.parent) + 1 : 1
24019                             };
24020                             return 1e4 * e.fqn.split(".").length + t(e.creationContext)
24021                         }, 1)).map(function(n) {
24022                             var a = r._viewConfigs.filter(e.matches(i, n));
24023                             return a.length > 1 && a.sort(o(t, -1)), [n, a[0]]
24024                         });
24025                     qt.traceViewSync(a), a.forEach(function(e) {
24026                         var t = e[0],
24027                             n = e[1]; - 1 !== r._uiViews.indexOf(t) && t.configUpdated(n)
24028                     })
24029                 }, e.prototype.registerUIView = function(e) {
24030                     qt.traceViewServiceUIViewEvent("-> Registering", e);
24031                     var t = this._uiViews;
24032                     return t.filter(function(t) {
24033                             return t.fqn === e.fqn && t.$type === e.$type
24034                         }).length && qt.traceViewServiceUIViewEvent("!!!! duplicate uiView named:", e), t.push(e), this.sync(),
24035                         function() {
24036                             -1 !== t.indexOf(e) ? (qt.traceViewServiceUIViewEvent("<- Deregistering", e), mt(t)(e)) : qt.traceViewServiceUIViewEvent("Tried removing non-registered uiView", e)
24037                         }
24038                 }, e.prototype.available = function() {
24039                     return this._uiViews.map(De("fqn"))
24040                 }, e.prototype.active = function() {
24041                     return this._uiViews.filter(De("$config")).map(De("name"))
24042                 }, e.normalizeUIViewTarget = function(e, t) {
24043                     void 0 === t && (t = "");
24044                     var n = t.split("@"),
24045                         r = n[0] || "$default",
24046                         i = Xe(n[1]) ? n[1] : "^",
24047                         o = /^(\^(?:\.\^)*)\.(.*$)/.exec(r);
24048                     return o && (i = o[1], r = o[2]), "!" === r.charAt(0) && (r = r.substr(1), i = ""), /^(\^(?:\.\^)*)$/.exec(i) ? i = i.split(".").reduce(function(e, t) {
24049                         return e.parent
24050                     }, e).name : "." === i && (i = e.name), {
24051                         uiViewName: r,
24052                         uiViewContextAnchor: i
24053                     }
24054                 }, e.matches = function(e, t) {
24055                     return function(n) {
24056                         if (t.$type !== n.viewDecl.$type) return !1;
24057                         var r = n.viewDecl,
24058                             i = r.$uiViewName.split("."),
24059                             o = t.fqn.split(".");
24060                         if (!ft(i, o.slice(0 - i.length))) return !1;
24061                         var a = 1 - i.length || void 0,
24062                             s = o.slice(0, a).join("."),
24063                             c = e[s].creationContext;
24064                         return r.$uiViewContextAnchor === (c && c.name)
24065                     }
24066                 }, e
24067             }(),
24068             Hn = function() {
24069                 function e() {
24070                     this.params = new gn, this.lastStartedTransitionId = -1, this.transitionHistory = new Nt([], 1), this.successfulTransitions = new Nt([], 1)
24071                 }
24072                 return e.prototype.dispose = function() {
24073                     this.transitionHistory.clear(), this.successfulTransitions.clear(), this.transition = null
24074                 }, e
24075             }(),
24076             jn = function(e) {
24077                 return e.reduce(function(e, t) {
24078                     return e[t] = it(t), e
24079                 }, {
24080                     dispose: d
24081                 })
24082             },
24083             Ln = ["url", "path", "search", "hash", "onChange"],
24084             Fn = ["port", "protocol", "host", "baseHref", "html5Mode", "hashPrefix"],
24085             qn = ["type", "caseInsensitive", "strictMode", "defaultSquashPolicy"],
24086             Un = ["sort", "when", "initial", "otherwise", "rules", "rule", "removeRule"],
24087             Vn = ["deferIntercept", "listen", "sync", "match"],
24088             Bn = function() {
24089                 function e(e, t) {
24090                     void 0 === t && (t = !0), this.router = e, this.rules = {}, this.config = {};
24091                     var n = function() {
24092                         return e.locationService
24093                     };
24094                     f(n, this, n, Ln, t);
24095                     var r = function() {
24096                         return e.locationConfig
24097                     };
24098                     f(r, this.config, r, Fn, t);
24099                     var i = function() {
24100                         return e.urlMatcherFactory
24101                     };
24102                     f(i, this.config, i, qn);
24103                     var o = function() {
24104                         return e.urlRouter
24105                     };
24106                     f(o, this.rules, o, Un), f(o, this, o, Vn)
24107                 }
24108                 return e.prototype.url = function(e, t, n) {}, e.prototype.path = function() {}, e.prototype.search = function() {}, e.prototype.hash = function() {}, e.prototype.onChange = function(e) {}, e.prototype.parts = function() {
24109                     return {
24110                         path: this.path(),
24111                         search: this.search(),
24112                         hash: this.hash()
24113                     }
24114                 }, e.prototype.dispose = function() {}, e.prototype.sync = function(e) {}, e.prototype.listen = function(e) {}, e.prototype.deferIntercept = function(e) {}, e.prototype.match = function(e) {}, e.locationServiceStub = jn(Ln), e.locationConfigStub = jn(Fn), e
24115             }(),
24116             zn = 0,
24117             Wn = function() {
24118                 function e(e, t) {
24119                     void 0 === e && (e = Bn.locationServiceStub), void 0 === t && (t = Bn.locationConfigStub), this.locationService = e, this.locationConfig = t, this.$id = zn++, this._disposed = !1, this._disposables = [], this.trace = qt, this.viewService = new Pn, this.transitionService = new $r(this), this.globals = new Hn, this.urlMatcherFactory = new Mn, this.urlRouter = new Rn(this), this.stateRegistry = new Cn(this), this.stateService = new _r(this), this.urlService = 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.urlRouter), this.disposable(e), this.disposable(t)
24120                 }
24121                 return e.prototype.disposable = function(e) {
24122                     this._disposables.push(e)
24123                 }, e.prototype.dispose = function(e) {
24124                     var t = this;
24125                     e && Ke(e.dispose) ? e.dispose(this) : (this._disposed = !0, this._disposables.slice().forEach(function(e) {
24126                         try {
24127                             "function" == typeof e.dispose && e.dispose(t), mt(t._disposables, e)
24128                         } catch (e) {}
24129                     }))
24130                 }, e.prototype.plugin = function(e, t) {
24131                     void 0 === t && (t = {});
24132                     var n = new e(this, t);
24133                     if (!n.name) throw new Error("Required property `name` missing on plugin: " + n);
24134                     return this._disposables.push(n), this._plugins[n.name] = n
24135                 }, e.prototype.getPlugin = function(e) {
24136                     return e ? this._plugins[e] : $t(this._plugins)
24137                 }, e
24138             }(),
24139             Yn = function(e) {
24140                 return e.onCreate({}, oe)
24141             },
24142             Gn = function(e) {
24143                 function t(t) {
24144                     if (t) return t instanceof Ut ? t : Xe(t) ? r.target(t, e.params(), e.options()) : t.state || t.params ? r.target(t.state || e.to(), t.params || e.params(), e.options()) : void 0
24145                 }
24146                 var n = e.to().redirectTo;
24147                 if (n) {
24148                     var r = e.router.stateService;
24149                     return Ke(n) ? ot.$q.when(n(e)).then(t) : t(n)
24150                 }
24151             },
24152             Kn = function(e) {
24153                 return e.onStart({
24154                     to: function(e) {
24155                         return !!e.redirectTo
24156                     }
24157                 }, Gn)
24158             },
24159             Zn = ae("onExit"),
24160             Xn = function(e) {
24161                 return e.onExit({
24162                     exiting: function(e) {
24163                         return !!e.onExit
24164                     }
24165                 }, Zn)
24166             },
24167             Qn = ae("onRetain"),
24168             Jn = function(e) {
24169                 return e.onRetain({
24170                     retained: function(e) {
24171                         return !!e.onRetain
24172                     }
24173                 }, Qn)
24174             },
24175             er = ae("onEnter"),
24176             tr = function(e) {
24177                 return e.onEnter({
24178                     entering: function(e) {
24179                         return !!e.onEnter
24180                     }
24181                 }, er)
24182             },
24183             nr = function(e) {
24184                 return new sn(e.treeChanges().to).resolvePath("EAGER", e).then(d)
24185             },
24186             rr = function(e) {
24187                 return e.onStart({}, nr, {
24188                     priority: 1e3
24189                 })
24190             },
24191             ir = function(e, t) {
24192                 return new sn(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY", e).then(d)
24193             },
24194             or = function(e) {
24195                 return e.onEnter({
24196                     entering: Fe(!0)
24197                 }, ir, {
24198                     priority: 1e3
24199                 })
24200             },
24201             ar = function(e) {
24202                 var t = ot.$q,
24203                     n = e.views("entering");
24204                 if (n.length) return t.all(n.map(function(e) {
24205                     return t.when(e.load())
24206                 })).then(d)
24207             },
24208             sr = function(e) {
24209                 return e.onFinish({}, ar)
24210             },
24211             cr = function(e) {
24212                 var t = e.views("entering"),
24213                     n = e.views("exiting");
24214                 if (t.length || n.length) {
24215                     var r = e.router.viewService;
24216                     n.forEach(function(e) {
24217                         return r.deactivateViewConfig(e)
24218                     }), t.forEach(function(e) {
24219                         return r.activateViewConfig(e)
24220                     }), r.sync()
24221                 }
24222             },
24223             lr = function(e) {
24224                 return e.onSuccess({}, cr)
24225             },
24226             ur = function(e) {
24227                 var t = e.router.globals,
24228                     n = function() {
24229                         t.transition === e && (t.transition = null)
24230                     };
24231                 e.onSuccess({}, function() {
24232                     t.successfulTransitions.enqueue(e), t.$current = e.$to(), t.current = t.$current.self, lt(e.params(), t.params)
24233                 }, {
24234                     priority: 1e4
24235                 }), e.promise.then(n, n)
24236             },
24237             dr = function(e) {
24238                 return e.onCreate({}, ur)
24239             },
24240             fr = function(e) {
24241                 var t = e.options(),
24242                     n = e.router.stateService,
24243                     r = e.router.urlRouter;
24244                 if ("url" !== t.source && t.location && n.$current.navigable) {
24245                     var i = {
24246                         replace: "replace" === t.location
24247                     };
24248                     r.push(n.$current.navigable.url, n.params, i)
24249                 }
24250                 r.update(!0)
24251             },
24252             hr = function(e) {
24253                 return e.onSuccess({}, fr, {
24254                     priority: 9999
24255                 })
24256             },
24257             pr = function(e) {
24258                 var t = e.router,
24259                     n = e.entering().filter(function(e) {
24260                         return !!e.$$state().lazyLoad
24261                     }).map(function(t) {
24262                         return se(e, t)
24263                     });
24264                 return ot.$q.all(n).then(function() {
24265                     if ("url" !== e.originalTransition().options().source) {
24266                         var n = e.targetState();
24267                         return t.stateService.target(n.identifier(), n.params(), n.options())
24268                     }
24269                     var r = t.urlService,
24270                         i = r.match(r.parts()),
24271                         o = i && i.rule;
24272                     if (o && "STATE" === o.type) {
24273                         var a = o.state,
24274                             s = i.match;
24275                         return t.stateService.target(a, s, e.options())
24276                     }
24277                     t.urlService.sync()
24278                 })
24279             },
24280             mr = function(e) {
24281                 return e.onBefore({
24282                     entering: function(e) {
24283                         return !!e.lazyLoad
24284                     }
24285                 }, pr)
24286             },
24287             gr = function() {
24288                 return function(e, t, n, r, i, o, a, s) {
24289                     void 0 === i && (i = !1), void 0 === o && (o = Bt.HANDLE_RESULT), void 0 === a && (a = Bt.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
24290                 }
24291             }(),
24292             vr = function(e) {
24293                 return e.onBefore({}, ce, {
24294                     priority: -9999
24295                 })
24296             },
24297             br = function(e) {
24298                 return e.onBefore({}, le, {
24299                     priority: -1e4
24300                 })
24301             },
24302             yr = {
24303                 location: !0,
24304                 relative: null,
24305                 inherit: !1,
24306                 notify: !0,
24307                 reload: !1,
24308                 custom: {},
24309                 current: function() {
24310                     return null
24311                 },
24312                 source: "unknown"
24313             },
24314             $r = function() {
24315                 function t(e) {
24316                     this._transitionCount = 0, this._eventTypes = [], this._registeredHooks = {}, this._criteriaPaths = {}, this._router = e, this.$view = e.viewService, this._deregisterHookFns = {}, this._pluginapi = f(Fe(this), {}, Fe(this), ["_definePathType", "_defineEvent", "_getPathTypes", "_getEvents", "getHooks"]), this._defineCorePaths(), this._defineCoreEvents(), this._registerCoreTransitionHooks()
24317                 }
24318                 return t.prototype.onCreate = function(e, t, n) {}, t.prototype.onBefore = function(e, t, n) {}, t.prototype.onStart = function(e, t, n) {}, t.prototype.onExit = function(e, t, n) {}, t.prototype.onRetain = function(e, t, n) {}, t.prototype.onEnter = function(e, t, n) {}, t.prototype.onFinish = function(e, t, n) {}, t.prototype.onSuccess = function(e, t, n) {}, t.prototype.onError = function(e, t, n) {}, t.prototype.dispose = function(e) {
24319                     $t(this._registeredHooks).forEach(function(e) {
24320                         return e.forEach(function(t) {
24321                             t._deregistered = !0, mt(e, t)
24322                         })
24323                     })
24324                 }, t.prototype.create = function(e, t) {
24325                     return new un(e, t, this._router)
24326                 }, t.prototype._defineCoreEvents = function() {
24327                     var t = e.TransitionHookPhase,
24328                         n = Bt,
24329                         r = this._criteriaPaths;
24330                     this._defineEvent("onCreate", t.CREATE, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.THROW_ERROR, !0), this._defineEvent("onBefore", t.BEFORE, 0, r.to), this._defineEvent("onStart", t.RUN, 0, r.to), this._defineEvent("onExit", t.RUN, 100, r.exiting, !0), this._defineEvent("onRetain", t.RUN, 200, r.retained), this._defineEvent("onEnter", t.RUN, 300, r.entering), this._defineEvent("onFinish", t.RUN, 400, r.to), this._defineEvent("onSuccess", t.SUCCESS, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.LOG_ERROR, !0), this._defineEvent("onError", t.ERROR, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.LOG_ERROR, !0)
24331                 }, t.prototype._defineCorePaths = function() {
24332                     var t = e.TransitionHookScope.STATE,
24333                         n = e.TransitionHookScope.TRANSITION;
24334                     this._definePathType("to", n), this._definePathType("from", n), this._definePathType("exiting", t), this._definePathType("retained", t), this._definePathType("entering", t)
24335                 }, t.prototype._defineEvent = function(e, t, n, r, i, o, a, s) {
24336                     void 0 === i && (i = !1), void 0 === o && (o = Bt.HANDLE_RESULT), void 0 === a && (a = Bt.REJECT_ERROR), void 0 === s && (s = !1);
24337                     var c = new gr(e, t, n, r, i, o, a, s);
24338                     this._eventTypes.push(c), R(this, this, c)
24339                 }, t.prototype._getEvents = function(e) {
24340                     return (We(e) ? this._eventTypes.filter(function(t) {
24341                         return t.hookPhase === e
24342                     }) : this._eventTypes.slice()).sort(function(e, t) {
24343                         var n = e.hookPhase - t.hookPhase;
24344                         return 0 === n ? e.hookOrder - t.hookOrder : n
24345                     })
24346                 }, t.prototype._definePathType = function(e, t) {
24347                     this._criteriaPaths[e] = {
24348                         name: e,
24349                         scope: t
24350                     }
24351                 }, t.prototype._getPathTypes = function() {
24352                     return this._criteriaPaths
24353                 }, t.prototype.getHooks = function(e) {
24354                     return this._registeredHooks[e]
24355                 }, t.prototype._registerCoreTransitionHooks = function() {
24356                     var e = this._deregisterHookFns;
24357                     e.addCoreResolves = Yn(this), e.ignored = vr(this), e.invalid = br(this), e.redirectTo = Kn(this), e.onExit = Xn(this), e.onRetain = Jn(this), e.onEnter = tr(this), e.eagerResolve = rr(this), e.lazyResolve = or(this), e.loadViews = sr(this), e.activateViews = lr(this), e.updateGlobals = dr(this), e.updateUrl = hr(this), e.lazyLoad = mr(this)
24358                 }, t
24359             }(),
24360             _r = function() {
24361                 function t(e) {
24362                     this.router = e, this.invalidCallbacks = [], this._defaultErrorHandler = function(e) {
24363                         e instanceof Error && e.stack ? (console.error(e), console.error(e.stack)) : e instanceof Rt ? (console.error(e.toString()), e.detail && e.detail.stack && console.error(e.detail.stack)) : console.error(e)
24364                     };
24365                     var n = ["current", "$current", "params", "transition"],
24366                         r = Object.keys(t.prototype).filter(Re(pt(n)));
24367                     f(Fe(t.prototype), this, Fe(this), r)
24368                 }
24369                 return Object.defineProperty(t.prototype, "transition", {
24370                     get: function() {
24371                         return this.router.globals.transition
24372                     },
24373                     enumerable: !0,
24374                     configurable: !0
24375                 }), Object.defineProperty(t.prototype, "params", {
24376                     get: function() {
24377                         return this.router.globals.params
24378                     },
24379                     enumerable: !0,
24380                     configurable: !0
24381                 }), Object.defineProperty(t.prototype, "current", {
24382                     get: function() {
24383                         return this.router.globals.current
24384                     },
24385                     enumerable: !0,
24386                     configurable: !0
24387                 }), Object.defineProperty(t.prototype, "$current", {
24388                     get: function() {
24389                         return this.router.globals.$current
24390                     },
24391                     enumerable: !0,
24392                     configurable: !0
24393                 }), t.prototype.dispose = function() {
24394                     this.defaultErrorHandler(d), this.invalidCallbacks = []
24395                 }, t.prototype._handleInvalidTargetState = function(e, t) {
24396                     function n() {
24397                         var e = c.dequeue();
24398                         return void 0 === e ? Rt.invalid(t.error()).toPromise() : ot.$q.when(e(t, i, l)).then(u).then(function(e) {
24399                             return e || n()
24400                         })
24401                     }
24402                     var r = this,
24403                         i = Qt.makeTargetState(e),
24404                         o = this.router.globals,
24405                         a = function() {
24406                             return o.transitionHistory.peekTail()
24407                         },
24408                         s = a(),
24409                         c = new Nt(this.invalidCallbacks.slice()),
24410                         l = new sn(e).injector(),
24411                         u = function(e) {
24412                             if (e instanceof Ut) {
24413                                 var t = e;
24414                                 return (t = r.target(t.identifier(), t.params(), t.options())).valid() ? a() !== s ? Rt.superseded().toPromise() : r.transitionTo(t.identifier(), t.params(), t.options()) : Rt.invalid(t.error()).toPromise()
24415                             }
24416                         };
24417                     return n()
24418                 }, t.prototype.onInvalid = function(e) {
24419                     return this.invalidCallbacks.push(e),
24420                         function() {
24421                             mt(this.invalidCallbacks)(e)
24422                         }.bind(this)
24423                 }, t.prototype.reload = function(e) {
24424                     return this.transitionTo(this.current, this.params, {
24425                         reload: !We(e) || e,
24426                         inherit: !1,
24427                         notify: !1
24428                     })
24429                 }, t.prototype.go = function(e, t, n) {
24430                     var r = g(n, {
24431                         relative: this.$current,
24432                         inherit: !0
24433                     }, yr);
24434                     return this.transitionTo(e, t, r)
24435                 }, t.prototype.target = function(e, t, n) {
24436                     if (void 0 === n && (n = {}), Qe(n.reload) && !n.reload.name) throw new Error("Invalid reload state object");
24437                     var r = this.router.stateRegistry;
24438                     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 '" + (Xe(n.reload) ? n.reload : n.reload.name) + "'");
24439                     var i = r.matcher.find(e, n.relative);
24440                     return new Ut(e, i, t, n)
24441                 }, t.prototype.getCurrentPath = function() {
24442                     var e = this,
24443                         t = this.router.globals.successfulTransitions.peekTail();
24444                     return t ? t.treeChanges().to : [new Xt(e.router.stateRegistry.root())]
24445                 }, t.prototype.transitionTo = function(t, n, r) {
24446                     var i = this;
24447                     void 0 === n && (n = {}), void 0 === r && (r = {});
24448                     var o = this.router,
24449                         a = o.globals;
24450                     r = g(r, yr);
24451                     r = dt(r, {
24452                         current: function() {
24453                             return a.transition
24454                         }
24455                     });
24456                     var s = this.target(t, n, r),
24457                         c = this.getCurrentPath();
24458                     if (!s.exists()) return this._handleInvalidTargetState(c, s);
24459                     if (!s.valid()) return Dt(s.error());
24460                     var l = function(t) {
24461                             return function(n) {
24462                                 if (n instanceof Rt) {
24463                                     var r = o.globals.lastStartedTransitionId === t.$id;
24464                                     if (n.type === e.RejectType.IGNORED) return r && o.urlRouter.update(), ot.$q.when(a.current);
24465                                     var s = n.detail;
24466                                     if (n.type === e.RejectType.SUPERSEDED && n.redirected && s instanceof Ut) {
24467                                         var c = t.redirect(s);
24468                                         return c.run().catch(l(c))
24469                                     }
24470                                     if (n.type === e.RejectType.ABORTED) return r && o.urlRouter.update(), ot.$q.reject(n)
24471                                 }
24472                                 return i.defaultErrorHandler()(n), ot.$q.reject(n)
24473                             }
24474                         },
24475                         u = this.router.transitionService.create(c, s),
24476                         d = u.run().catch(l(u));
24477                     return Ot(d), dt(d, {
24478                         transition: u
24479                     })
24480                 }, t.prototype.is = function(e, t, n) {
24481                     n = g(n, {
24482                         relative: this.$current
24483                     });
24484                     var r = this.router.stateRegistry.matcher.find(e, n.relative);
24485                     if (We(r)) {
24486                         if (this.$current !== r) return !1;
24487                         if (!t) return !0;
24488                         var i = r.parameters({
24489                             inherit: !0,
24490                             matchingKeys: t
24491                         });
24492                         return Zt.equals(i, Zt.values(i, t), this.params)
24493                     }
24494                 }, t.prototype.includes = function(e, t, n) {
24495                     n = g(n, {
24496                         relative: this.$current
24497                     });
24498                     var r = Xe(e) && qe.fromString(e);
24499                     if (r) {
24500                         if (!r.matches(this.$current.name)) return !1;
24501                         e = this.$current.name
24502                     }
24503                     var i = this.router.stateRegistry.matcher.find(e, n.relative),
24504                         o = this.$current.includes;
24505                     if (We(i)) {
24506                         if (!We(o[i.name])) return !1;
24507                         if (!t) return !0;
24508                         var a = i.parameters({
24509                             inherit: !0,
24510                             matchingKeys: t
24511                         });
24512                         return Zt.equals(a, Zt.values(a, t), this.params)
24513                     }
24514                 }, t.prototype.href = function(e, t, n) {
24515                     n = g(n, {
24516                         lossy: !0,
24517                         inherit: !0,
24518                         absolute: !1,
24519                         relative: this.$current
24520                     }), t = t || {};
24521                     var r = this.router.stateRegistry.matcher.find(e, n.relative);
24522                     if (!We(r)) return null;
24523                     n.inherit && (t = this.params.$inherit(t, this.$current, r));
24524                     var i = r && n.lossy ? r.navigable : r;
24525                     return i && void 0 !== i.url && null !== i.url ? this.router.urlRouter.href(i.url, t, {
24526                         absolute: n.absolute
24527                     }) : null
24528                 }, t.prototype.defaultErrorHandler = function(e) {
24529                     return this._defaultErrorHandler = e || this._defaultErrorHandler
24530                 }, t.prototype.get = function(e, t) {
24531                     var n = this.router.stateRegistry;
24532                     return 0 === arguments.length ? n.get() : n.get(e, t || this.$current)
24533                 }, t.prototype.lazyLoad = function(e, t) {
24534                     var n = this.get(e);
24535                     if (!n || !n.lazyLoad) throw new Error("Can not lazy load " + e);
24536                     var r = this.getCurrentPath(),
24537                         i = Qt.makeTargetState(r);
24538                     return t = t || this.router.transitionService.create(r, i), se(t, n)
24539                 }, t
24540             }(),
24541             wr = {
24542                 when: function(e) {
24543                     return new Promise(function(t, n) {
24544                         return t(e)
24545                     })
24546                 },
24547                 reject: function(e) {
24548                     return new Promise(function(t, n) {
24549                         n(e)
24550                     })
24551                 },
24552                 defer: function() {
24553                     var e = {};
24554                     return e.promise = new Promise(function(t, n) {
24555                         e.resolve = t, e.reject = n
24556                     }), e
24557                 },
24558                 all: function(e) {
24559                     if (Je(e)) return Promise.all(e);
24560                     if (Qe(e)) {
24561                         var t = Object.keys(e).map(function(t) {
24562                             return e[t].then(function(e) {
24563                                 return {
24564                                     key: t,
24565                                     val: e
24566                                 }
24567                             })
24568                         });
24569                         return wr.all(t).then(function(e) {
24570                             return e.reduce(function(e, t) {
24571                                 return e[t.key] = t.val, e
24572                             }, {})
24573                         })
24574                     }
24575                 }
24576             },
24577             Er = {},
24578             Cr = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
24579             xr = /([^\s,]+)/g,
24580             kr = {
24581                 get: function(e) {
24582                     return Er[e]
24583                 },
24584                 has: function(e) {
24585                     return null != kr.get(e)
24586                 },
24587                 invoke: function(e, t, n) {
24588                     var r = dt({}, Er, n || {}),
24589                         i = kr.annotate(e),
24590                         o = Mt(function(e) {
24591                             return r.hasOwnProperty(e)
24592                         }, function(e) {
24593                             return "DI can't find injectable: '" + e + "'"
24594                         }),
24595                         a = i.filter(o).map(function(e) {
24596                             return r[e]
24597                         });
24598                     return Ke(e) ? e.apply(t, a) : e.slice(-1)[0].apply(t, a)
24599                 },
24600                 annotate: function(e) {
24601                     if (!l(e)) throw new Error("Not an injectable function: " + e);
24602                     if (e && e.$inject) return e.$inject;
24603                     if (Je(e)) return e.slice(0, -1);
24604                     var t = e.toString().replace(Cr, "");
24605                     return t.slice(t.indexOf("(") + 1, t.indexOf(")")).match(xr) || []
24606                 }
24607             },
24608             Tr = function(e) {
24609                 return function(t) {
24610                     if (!t) return ["", ""];
24611                     var n = t.indexOf(e);
24612                     return -1 === n ? [t, ""] : [t.substr(0, n), t.substr(n + 1)]
24613                 }
24614             },
24615             Mr = Tr("#"),
24616             Sr = Tr("?"),
24617             Ar = Tr("="),
24618             Or = function(e) {
24619                 return e ? e.replace(/^#/, "") : ""
24620             },
24621             Dr = function(e, t) {
24622                 var n = t[0],
24623                     r = t[1];
24624                 return e.hasOwnProperty(n) ? Je(e[n]) ? e[n].push(r) : e[n] = [e[n], r] : e[n] = r, e
24625             },
24626             Nr = function(e) {
24627                 return e.split("&").filter(u).map(Ar).reduce(Dr, {})
24628             },
24629             Ir = function(e) {
24630                 var t = e.path(),
24631                     n = e.search(),
24632                     r = e.hash(),
24633                     i = Object.keys(n).map(function(e) {
24634                         var t = n[e];
24635                         return (Je(t) ? t : [t]).map(function(t) {
24636                             return e + "=" + t
24637                         })
24638                     }).reduce(Et, []).join("&");
24639                 return t + (i ? "?" + i : "") + (r ? "#" + r : "")
24640             },
24641             Rr = function() {
24642                 function e(e, t) {
24643                     var n = this;
24644                     this.fireAfterUpdate = t, this._listener = function(e) {
24645                         return n._listeners.forEach(function(t) {
24646                             return t(e)
24647                         })
24648                     }, this._listeners = [], this.hash = function() {
24649                         return ue(n._get()).hash
24650                     }, this.path = function() {
24651                         return ue(n._get()).path
24652                     }, this.search = function() {
24653                         return Nr(ue(n._get()).search)
24654                     }, this._location = window && window.location, this._history = window && window.history
24655                 }
24656                 return e.prototype.url = function(e, t) {
24657                     if (void 0 === t && (t = !0), We(e) && e !== this._get() && (this._set(null, null, e, t), this.fireAfterUpdate)) {
24658                         var n = dt(new Event("locationchange"), {
24659                             url: e
24660                         });
24661                         this._listeners.forEach(function(e) {
24662                             return e(n)
24663                         })
24664                     }
24665                     return Ir(this)
24666                 }, e.prototype.onChange = function(e) {
24667                     var t = this;
24668                     return this._listeners.push(e),
24669                         function() {
24670                             return mt(t._listeners, e)
24671                         }
24672                 }, e.prototype.dispose = function(e) {
24673                     vt(this._listeners)
24674                 }, e
24675             }(),
24676             Pr = function() {
24677                 var e = Object.setPrototypeOf || {
24678                     __proto__: []
24679                 }
24680                 instanceof Array && function(e, t) {
24681                     e.__proto__ = t
24682                 } || function(e, t) {
24683                     for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
24684                 };
24685                 return function(t, n) {
24686                     function r() {
24687                         this.constructor = t
24688                     }
24689                     e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
24690                 }
24691             }(),
24692             Hr = function(e) {
24693                 function t(t) {
24694                     var n = e.call(this, t, !1) || this;
24695                     return window.addEventListener("hashchange", n._listener, !1), n
24696                 }
24697                 return Pr(t, e), t.prototype._get = function() {
24698                     return Or(this._location.hash)
24699                 }, t.prototype._set = function(e, t, n, r) {
24700                     this._location.hash = n
24701                 }, t.prototype.dispose = function(t) {
24702                     e.prototype.dispose.call(this, t), window.removeEventListener("hashchange", this._listener)
24703                 }, t
24704             }(Rr),
24705             jr = function() {
24706                 var e = Object.setPrototypeOf || {
24707                     __proto__: []
24708                 }
24709                 instanceof Array && function(e, t) {
24710                     e.__proto__ = t
24711                 } || function(e, t) {
24712                     for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
24713                 };
24714                 return function(t, n) {
24715                     function r() {
24716                         this.constructor = t
24717                     }
24718                     e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
24719                 }
24720             }(),
24721             Lr = function(e) {
24722                 function t(t) {
24723                     return e.call(this, t, !0) || this
24724                 }
24725                 return jr(t, e), t.prototype._get = function() {
24726                     return this._url
24727                 }, t.prototype._set = function(e, t, n, r) {
24728                     this._url = n
24729                 }, t
24730             }(Rr),
24731             Fr = function() {
24732                 var e = Object.setPrototypeOf || {
24733                     __proto__: []
24734                 }
24735                 instanceof Array && function(e, t) {
24736                     e.__proto__ = t
24737                 } || function(e, t) {
24738                     for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
24739                 };
24740                 return function(t, n) {
24741                     function r() {
24742                         this.constructor = t
24743                     }
24744                     e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
24745                 }
24746             }(),
24747             qr = function(e) {
24748                 function t(t) {
24749                     var n = e.call(this, t, !0) || this;
24750                     return n._config = t.urlService.config, window.addEventListener("popstate", n._listener, !1), n
24751                 }
24752                 return Fr(t, e), t.prototype._get = function() {
24753                     var e = this._location,
24754                         t = e.pathname,
24755                         n = e.hash,
24756                         r = e.search;
24757                     return r = Sr(r)[1], n = Mr(n)[1], t + (r ? "?" + r : "") + (n ? "$" + r : "")
24758                 }, t.prototype._set = function(e, t, n, r) {
24759                     var i = this,
24760                         o = i._config,
24761                         a = i._history,
24762                         s = o.baseHref() + n;
24763                     r ? a.replaceState(e, t, s) : a.pushState(e, t, s)
24764                 }, t.prototype.dispose = function(t) {
24765                     e.prototype.dispose.call(this, t), window.removeEventListener("popstate", this._listener)
24766                 }, t
24767             }(Rr),
24768             Ur = function() {
24769                 return function() {
24770                     var e = this;
24771                     this._baseHref = "", this._port = 80, this._protocol = "http", this._host = "localhost", this._hashPrefix = "", this.port = function() {
24772                         return e._port
24773                     }, this.protocol = function() {
24774                         return e._protocol
24775                     }, this.host = function() {
24776                         return e._host
24777                     }, this.baseHref = function() {
24778                         return e._baseHref
24779                     }, this.html5Mode = function() {
24780                         return !1
24781                     }, this.hashPrefix = function(t) {
24782                         return We(t) ? e._hashPrefix = t : e._hashPrefix
24783                     }, this.dispose = d
24784                 }
24785             }(),
24786             Vr = function() {
24787                 function e(e, t) {
24788                     void 0 === t && (t = !1), this._isHtml5 = t, this._baseHref = void 0, this._hashPrefix = ""
24789                 }
24790                 return e.prototype.port = function() {
24791                     return location.port ? Number(location.port) : "https" === this.protocol() ? 443 : 80
24792                 }, e.prototype.protocol = function() {
24793                     return location.protocol.replace(/:/g, "")
24794                 }, e.prototype.host = function() {
24795                     return location.hostname
24796                 }, e.prototype.html5Mode = function() {
24797                     return this._isHtml5
24798                 }, e.prototype.hashPrefix = function(e) {
24799                     return We(e) ? this._hashPrefix = e : this._hashPrefix
24800                 }, e.prototype.baseHref = function(e) {
24801                     return We(e) ? this._baseHref = e : this._baseHref || this.applyDocumentBaseHref()
24802                 }, e.prototype.applyDocumentBaseHref = function() {
24803                     var e = document.getElementsByTagName("base");
24804                     return this._baseHref = e.length ? e[0].href.substr(location.origin.length) : ""
24805                 }, e.prototype.dispose = function() {}, e
24806             }(),
24807             Br = de("vanilla.hashBangLocation", !1, Hr, Vr),
24808             zr = de("vanilla.pushStateLocation", !0, qr, Vr),
24809             Wr = de("vanilla.memoryLocation", !1, Lr, Ur),
24810             Yr = function() {
24811                 function e() {}
24812                 return e.prototype.dispose = function(e) {}, e
24813             }(),
24814             Gr = Object.freeze({
24815                 fromJson: st,
24816                 toJson: ct,
24817                 copy: lt,
24818                 forEach: ut,
24819                 extend: dt,
24820                 equals: ft,
24821                 identity: u,
24822                 noop: d,
24823                 createProxyFunctions: f,
24824                 inherit: ht,
24825                 inArray: pt,
24826                 _inArray: h,
24827                 removeFrom: mt,
24828                 _removeFrom: p,
24829                 pushTo: gt,
24830                 _pushTo: m,
24831                 deregAll: vt,
24832                 defaults: g,
24833                 mergeR: bt,
24834                 ancestors: v,
24835                 pick: b,
24836                 omit: y,
24837                 pluck: $,
24838                 filter: _,
24839                 find: w,
24840                 mapObj: yt,
24841                 map: E,
24842                 values: $t,
24843                 allTrueR: _t,
24844                 anyTrueR: wt,
24845                 unnestR: Et,
24846                 flattenR: Ct,
24847                 pushR: C,
24848                 uniqR: xt,
24849                 unnest: kt,
24850                 flatten: Tt,
24851                 assertPredicate: Mt,
24852                 assertMap: St,
24853                 assertFn: x,
24854                 pairs: At,
24855                 arrayTuples: k,
24856                 applyPairs: T,
24857                 tail: M,
24858                 _extend: S,
24859                 silenceUncaughtInPromise: Ot,
24860                 silentRejection: Dt,
24861                 notImplemented: it,
24862                 services: ot,
24863                 Glob: qe,
24864                 curry: n,
24865                 compose: r,
24866                 pipe: i,
24867                 prop: De,
24868                 propEq: Ne,
24869                 parse: Ie,
24870                 not: Re,
24871                 and: o,
24872                 or: a,
24873                 all: Pe,
24874                 any: He,
24875                 is: je,
24876                 eq: Le,
24877                 val: Fe,
24878                 invoke: s,
24879                 pattern: c,
24880                 isUndefined: ze,
24881                 isDefined: We,
24882                 isNull: Ye,
24883                 isNullOrUndefined: Ge,
24884                 isFunction: Ke,
24885                 isNumber: Ze,
24886                 isString: Xe,
24887                 isObject: Qe,
24888                 isArray: Je,
24889                 isDate: et,
24890                 isRegExp: tt,
24891                 isState: nt,
24892                 isInjectable: l,
24893                 isPromise: rt,
24894                 Queue: Nt,
24895                 maxLength: U,
24896                 padString: V,
24897                 kebobString: B,
24898                 functionToString: z,
24899                 fnToString: W,
24900                 stringify: Y,
24901                 beforeAfterSubstr: hn,
24902                 splitOnDelim: G,
24903                 joinNeighborsR: K,
24904                 get Category() {
24905                     return e.Category
24906                 },
24907                 Trace: Ft,
24908                 trace: qt,
24909                 get DefType() {
24910                     return e.DefType
24911                 },
24912                 Param: Zt,
24913                 ParamTypes: pn,
24914                 StateParams: gn,
24915                 ParamType: Yt,
24916                 PathNode: Xt,
24917                 PathUtils: Qt,
24918                 resolvePolicies: tn,
24919                 defaultResolvePolicy: Jt,
24920                 Resolvable: en,
24921                 NATIVE_INJECTOR_TOKEN: an,
24922                 ResolveContext: sn,
24923                 resolvablesBuilder: te,
24924                 StateBuilder: _n,
24925                 StateObject: Ue,
24926                 StateMatcher: wn,
24927                 StateQueueManager: En,
24928                 StateRegistry: Cn,
24929                 StateService: _r,
24930                 TargetState: Ut,
24931                 get TransitionHookPhase() {
24932                     return e.TransitionHookPhase
24933                 },
24934                 get TransitionHookScope() {
24935                     return e.TransitionHookScope
24936                 },
24937                 HookBuilder: Wt,
24938                 matchState: I,
24939                 RegisteredHook: zt,
24940                 makeEvent: R,
24941                 get RejectType() {
24942                     return e.RejectType
24943                 },
24944                 Rejection: Rt,
24945                 Transition: un,
24946                 TransitionHook: Bt,
24947                 TransitionEventType: gr,
24948                 defaultTransOpts: yr,
24949                 TransitionService: $r,
24950                 UrlMatcher: Tn,
24951                 UrlMatcherFactory: Mn,
24952                 UrlRouter: Rn,
24953                 UrlRuleFactory: Sn,
24954                 BaseUrlRule: An,
24955                 UrlService: Bn,
24956                 ViewService: Pn,
24957                 UIRouterGlobals: Hn,
24958                 UIRouter: Wn,
24959                 $q: wr,
24960                 $injector: kr,
24961                 BaseLocationServices: Rr,
24962                 HashLocationService: Hr,
24963                 MemoryLocationService: Lr,
24964                 PushStateLocationService: qr,
24965                 MemoryLocationConfig: Ur,
24966                 BrowserLocationConfig: Vr,
24967                 splitHash: Mr,
24968                 splitQuery: Sr,
24969                 splitEqual: Ar,
24970                 trimHashVal: Or,
24971                 keyValsToObjectR: Dr,
24972                 getParams: Nr,
24973                 parseUrl: ue,
24974                 buildUrl: Ir,
24975                 locationPluginFactory: de,
24976                 servicesPlugin: fe,
24977                 hashLocationPlugin: Br,
24978                 pushStateLocationPlugin: zr,
24979                 memoryLocationPlugin: Wr,
24980                 UIRouterPluginBase: Yr
24981             }),
24982             Kr = function(e, t) {
24983                 return e.reduce(function(e, n) {
24984                     return e || We(t[n])
24985                 }, !1)
24986             },
24987             Zr = 0,
24988             Xr = function() {
24989                 function e(e, t, n) {
24990                     var r = this;
24991                     this.path = e, this.viewDecl = t, this.factory = n, this.$id = Zr++, this.loaded = !1, this.getTemplate = function(e, t) {
24992                         return r.component ? r.factory.makeComponentTemplate(e, t, r.component, r.viewDecl.bindings) : r.template
24993                     }
24994                 }
24995                 return e.prototype.load = function() {
24996                     var e = this,
24997                         t = ot.$q,
24998                         n = new sn(this.path),
24999                         r = this.path.reduce(function(e, t) {
25000                             return dt(e, t.paramValues)
25001                         }, {}),
25002                         i = {
25003                             template: t.when(this.factory.fromConfig(this.viewDecl, r, n)),
25004                             controller: t.when(this.getController(n))
25005                         };
25006                     return t.all(i).then(function(t) {
25007                         return qt.traceViewServiceEvent("Loaded", e), e.controller = t.controller, dt(e, t.template), e
25008                     })
25009                 }, e.prototype.getController = function(e) {
25010                     var t = this.viewDecl.controllerProvider;
25011                     if (!l(t)) return this.viewDecl.controller;
25012                     var n = ot.$injector.annotate(t),
25013                         r = Je(t) ? M(t) : t;
25014                     return new en("", r, n).get(e)
25015                 }, e
25016             }(),
25017             Qr = function() {
25018                 function e() {
25019                     var e = this;
25020                     this._useHttp = Oe.version.minor < 3, this.$get = ["$http", "$templateCache", "$injector", function(t, n, r) {
25021                         return e.$templateRequest = r.has && r.has("$templateRequest") && r.get("$templateRequest"), e.$http = t, e.$templateCache = n, e
25022                     }]
25023                 }
25024                 return e.prototype.useHttpService = function(e) {
25025                     this._useHttp = e
25026                 }, e.prototype.fromConfig = function(e, t, n) {
25027                     var r = function(e) {
25028                             return ot.$q.when(e).then(function(e) {
25029                                 return {
25030                                     template: e
25031                                 }
25032                             })
25033                         },
25034                         i = function(e) {
25035                             return ot.$q.when(e).then(function(e) {
25036                                 return {
25037                                     component: e
25038                                 }
25039                             })
25040                         };
25041                     return We(e.template) ? r(this.fromString(e.template, t)) : We(e.templateUrl) ? r(this.fromUrl(e.templateUrl, t)) : We(e.templateProvider) ? r(this.fromProvider(e.templateProvider, t, n)) : We(e.component) ? i(e.component) : We(e.componentProvider) ? i(this.fromComponentProvider(e.componentProvider, t, n)) : r("<ui-view></ui-view>")
25042                 }, e.prototype.fromString = function(e, t) {
25043                     return Ke(e) ? e(t) : e
25044                 }, e.prototype.fromUrl = function(e, t) {
25045                     return Ke(e) && (e = e(t)), null == e ? null : this._useHttp ? this.$http.get(e, {
25046                         cache: this.$templateCache,
25047                         headers: {
25048                             Accept: "text/html"
25049                         }
25050                     }).then(function(e) {
25051                         return e.data
25052                     }) : this.$templateRequest(e)
25053                 }, e.prototype.fromProvider = function(e, t, n) {
25054                     var r = ot.$injector.annotate(e),
25055                         i = Je(e) ? M(e) : e;
25056                     return new en("", i, r).get(n)
25057                 }, e.prototype.fromComponentProvider = function(e, t, n) {
25058                     var r = ot.$injector.annotate(e),
25059                         i = Je(e) ? M(e) : e;
25060                     return new en("", i, r).get(n)
25061                 }, e.prototype.makeComponentTemplate = function(e, t, n, r) {
25062                     r = r || {};
25063                     var i = Oe.version.minor >= 3 ? "::" : "",
25064                         o = function(e) {
25065                             var t = B(e);
25066                             return /^(x|data)-/.exec(t) ? "x-" + t : t
25067                         },
25068                         a = me(n).map(function(n) {
25069                             var a = n.name,
25070                                 s = n.type,
25071                                 c = o(a);
25072                             if (e.attr(c) && !r[a]) return c + "='" + e.attr(c) + "'";
25073                             var l = r[a] || a;
25074                             if ("@" === s) return c + "='{{" + i + "$resolve." + l + "}}'";
25075                             if ("&" === s) {
25076                                 var u = t.getResolvable(l),
25077                                     d = u && u.data,
25078                                     f = d && ot.$injector.annotate(d) || [];
25079                                 return c + "='$resolve." + l + (Je(d) ? "[" + (d.length - 1) + "]" : "") + "(" + f.join(",") + ")'"
25080                             }
25081                             return c + "='" + i + "$resolve." + l + "'"
25082                         }).join(" "),
25083                         s = o(n);
25084                     return "<" + s + " " + a + "></" + s + ">"
25085                 }, e
25086             }(),
25087             Jr = function(e) {
25088                 return ei(Qe(e.bindToController) ? e.bindToController : e.scope)
25089             },
25090             ei = function(e) {
25091                 return Object.keys(e || {}).map(function(t) {
25092                     return [t, /^([=<@&])[?]?(.*)/.exec(e[t])]
25093                 }).filter(function(e) {
25094                     return We(e) && Je(e[1])
25095                 }).map(function(e) {
25096                     return {
25097                         name: e[1][2] || e[0],
25098                         type: e[1][1]
25099                     }
25100                 })
25101             },
25102             ti = function() {
25103                 function e(t, n) {
25104                     this.stateRegistry = t, this.stateService = n, f(Fe(e.prototype), this, Fe(this))
25105                 }
25106                 return e.prototype.decorator = function(e, t) {
25107                     return this.stateRegistry.decorator(e, t) || this
25108                 }, e.prototype.state = function(e, t) {
25109                     return Qe(e) ? t = e : t.name = e, this.stateRegistry.register(t), this
25110                 }, e.prototype.onInvalid = function(e) {
25111                     return this.stateService.onInvalid(e)
25112                 }, e
25113             }(),
25114             ni = function(e) {
25115                 return function(t, n) {
25116                     var r = t[e],
25117                         i = "onExit" === e ? "from" : "to";
25118                     return r ? function(e, t) {
25119                         var n = new sn(e.treeChanges(i)),
25120                             o = dt(hi(n), {
25121                                 $state$: t,
25122                                 $transition$: e
25123                             });
25124                         return ot.$injector.invoke(r, this, o)
25125                     } : void 0
25126                 }
25127             },
25128             ri = function() {
25129                 function e(e) {
25130                     this._urlListeners = [], this.$locationProvider = e;
25131                     var t = Fe(e);
25132                     f(t, this, t, ["hashPrefix"])
25133                 }
25134                 return e.prototype.dispose = function() {}, e.prototype.onChange = function(e) {
25135                     var t = this;
25136                     return this._urlListeners.push(e),
25137                         function() {
25138                             return mt(t._urlListeners)(e)
25139                         }
25140                 }, e.prototype.html5Mode = function() {
25141                     var e = this.$locationProvider.html5Mode();
25142                     return (e = Qe(e) ? e.enabled : e) && this.$sniffer.history
25143                 }, e.prototype.url = function(e, t, n) {
25144                     return void 0 === t && (t = !1), e && this.$location.url(e), t && this.$location.replace(), n && this.$location.state(n), this.$location.url()
25145                 }, e.prototype._runtimeServices = function(e, t, n, r) {
25146                     var i = this;
25147                     this.$location = t, this.$sniffer = n, e.$on("$locationChangeSuccess", function(e) {
25148                         return i._urlListeners.forEach(function(t) {
25149                             return t(e)
25150                         })
25151                     });
25152                     var o = Fe(t),
25153                         a = Fe(r);
25154                     f(o, this, o, ["replace", "path", "search", "hash"]), f(o, this, o, ["port", "protocol", "host"]), f(a, this, a, ["baseHref"])
25155                 }, e.monkeyPatchPathParameterType = function(e) {
25156                     var t = e.urlMatcherFactory.type("path");
25157                     t.encode = function(e) {
25158                         return null != e ? e.toString().replace(/(~|\/)/g, function(e) {
25159                             return {
25160                                 "~": "~~",
25161                                 "/": "~2F"
25162                             }[e]
25163                         }) : e
25164                     }, t.decode = function(e) {
25165                         return null != e ? e.toString().replace(/(~~|~2F)/g, function(e) {
25166                             return {
25167                                 "~~": "~",
25168                                 "~2F": "/"
25169                             }[e]
25170                         }) : e
25171                     }
25172                 }, e
25173             }(),
25174             ii = function() {
25175                 function e(e) {
25176                     this._router = e, this._urlRouter = e.urlRouter
25177                 }
25178                 return e.prototype.$get = function() {
25179                     var e = this._urlRouter;
25180                     return e.update(!0), e.interceptDeferred || e.listen(), e
25181                 }, e.prototype.rule = function(e) {
25182                     var t = this;
25183                     if (!Ke(e)) throw new Error("'rule' must be a function");
25184                     var n = new An(function() {
25185                         return e(ot.$injector, t._router.locationService)
25186                     }, u);
25187                     return this._urlRouter.rule(n), this
25188                 }, e.prototype.otherwise = function(e) {
25189                     var t = this,
25190                         n = this._urlRouter;
25191                     if (Xe(e)) n.otherwise(e);
25192                     else {
25193                         if (!Ke(e)) throw new Error("'rule' must be a string or function");
25194                         n.otherwise(function() {
25195                             return e(ot.$injector, t._router.locationService)
25196                         })
25197                     }
25198                     return this
25199                 }, e.prototype.when = function(t, n) {
25200                     return (Je(n) || Ke(n)) && (n = e.injectableHandler(this._router, n)), this._urlRouter.when(t, n), this
25201                 }, e.injectableHandler = function(e, t) {
25202                     return function(n) {
25203                         return ot.$injector.invoke(t, null, {
25204                             $match: n,
25205                             $stateParams: e.globals.params
25206                         })
25207                     }
25208                 }, e.prototype.deferIntercept = function(e) {
25209                     this._urlRouter.deferIntercept(e)
25210                 }, e
25211             }();
25212         Oe.module("ui.router.angular1", []);
25213         var oi = Oe.module("ui.router.init", []),
25214             ai = Oe.module("ui.router.util", ["ng", "ui.router.init"]),
25215             si = Oe.module("ui.router.router", ["ui.router.util"]),
25216             ci = Oe.module("ui.router.state", ["ui.router.router", "ui.router.util", "ui.router.angular1"]),
25217             li = Oe.module("ui.router", ["ui.router.init", "ui.router.state", "ui.router.angular1"]),
25218             ui = (Oe.module("ui.router.compat", ["ui.router"]), null);
25219         ge.$inject = ["$locationProvider"];
25220         var di = function(e) {
25221             return ["$uiRouterProvider", function(t) {
25222                 var n = t.router[e];
25223                 return n.$get = function() {
25224                     return n
25225                 }, n
25226             }]
25227         };
25228         ve.$inject = ["$injector", "$q", "$uiRouter"];
25229         be.$inject = ["$rootScope"], oi.provider("$uiRouter", ge), si.provider("$urlRouter", ["$uiRouterProvider", function(e) {
25230             return e.urlRouterProvider = new ii(e)
25231         }]), ai.provider("$urlService", di("urlService")), ai.provider("$urlMatcherFactory", ["$uiRouterProvider", function() {
25232             return ui.urlMatcherFactory
25233         }]), ai.provider("$templateFactory", function() {
25234             return new Qr
25235         }), ci.provider("$stateRegistry", di("stateRegistry")), ci.provider("$uiRouterGlobals", di("globals")), ci.provider("$transitions", di("transitionService")), ci.provider("$state", ["$uiRouterProvider", function() {
25236             return dt(ui.stateProvider, {
25237                 $get: function() {
25238                     return ui.stateService
25239                 }
25240             })
25241         }]), ci.factory("$stateParams", ["$uiRouter", function(e) {
25242             return e.globals.params
25243         }]), li.factory("$view", function() {
25244             return ui.viewService
25245         }), li.service("$trace", function() {
25246             return qt
25247         }), li.run(be), ai.run(["$urlMatcherFactory", function(e) {}]), ci.run(["$state", function(e) {}]), si.run(["$urlRouter", function(e) {}]), oi.run(ve);
25248         var fi, hi = function(e) {
25249             return e.getTokens().filter(Xe).map(function(t) {
25250                 var n = e.getResolvable(t);
25251                 return [t, "NOWAIT" === e.getPolicy(n).async ? n.promise : n.data]
25252             }).reduce(T, {})
25253         };
25254         fi = ["$uiRouter", "$timeout", function(e, t) {
25255             var n = e.stateService;
25256             return {
25257                 restrict: "A",
25258                 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
25259                 link: function(r, i, o, a) {
25260                     function s() {
25261                         var e = h();
25262                         d && d(), u && (d = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
25263                     }
25264                     var c, l = we(i),
25265                         u = a[1] || a[0],
25266                         d = null,
25267                         f = {},
25268                         h = function() {
25269                             return _e(n, i, f)
25270                         },
25271                         p = ye(o.uiSref);
25272                     f.uiState = p.state, f.uiStateOpts = o.uiSrefOpts ? r.$eval(o.uiSrefOpts) : {}, p.paramExpr && (r.$watch(p.paramExpr, function(e) {
25273                         f.uiStateParams = dt({}, e), s()
25274                     }, !0), f.uiStateParams = dt({}, r.$eval(p.paramExpr))), s(), r.$on("$destroy", e.stateRegistry.onStatesChanged(s)), r.$on("$destroy", e.transitionService.onSuccess({}, s)), l.clickable && (c = Ee(i, n, t, l, h), xe(i, r, c, f.uiStateOpts))
25275                 }
25276             }
25277         }];
25278         var pi;
25279         pi = ["$uiRouter", "$timeout", function(e, t) {
25280             var n = e.stateService;
25281             return {
25282                 restrict: "A",
25283                 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
25284                 link: function(r, i, o, a) {
25285                     function s() {
25286                         var e = p();
25287                         f && f(), u && (f = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
25288                     }
25289                     var c, l = we(i),
25290                         u = a[1] || a[0],
25291                         f = null,
25292                         h = {},
25293                         p = function() {
25294                             return _e(n, i, h)
25295                         },
25296                         m = ["uiState", "uiStateParams", "uiStateOpts"],
25297                         g = m.reduce(function(e, t) {
25298                             return e[t] = d, e
25299                         }, {});
25300                     m.forEach(function(e) {
25301                         h[e] = o[e] ? r.$eval(o[e]) : null, o.$observe(e, function(t) {
25302                             g[e](), g[e] = r.$watch(t, function(t) {
25303                                 h[e] = t, s()
25304                             }, !0)
25305                         })
25306                     }), s(), r.$on("$destroy", e.stateRegistry.onStatesChanged(s)), r.$on("$destroy", e.transitionService.onSuccess({}, s)), l.clickable && (c = Ee(i, n, t, l, p), xe(i, r, c, h.uiStateOpts))
25307                 }
25308             }
25309         }];
25310         var mi;
25311         mi = ["$state", "$stateParams", "$interpolate", "$uiRouter", function(e, t, n, r) {
25312             return {
25313                 restrict: "A",
25314                 controller: ["$scope", "$element", "$attrs", function(t, i, o) {
25315                     function a(e) {
25316                         e.promise.then(c, d)
25317                     }
25318
25319                     function s(t, n, r) {
25320                         var o = {
25321                             state: e.get(t, $e(i)) || {
25322                                 name: t
25323                             },
25324                             params: n,
25325                             activeClass: r
25326                         };
25327                         return h.push(o),
25328                             function() {
25329                                 mt(h)(o)
25330                             }
25331                     }
25332
25333                     function c() {
25334                         var n = function(e) {
25335                                 return e.split(/\s/).filter(u)
25336                             },
25337                             r = function(e) {
25338                                 return e.map(function(e) {
25339                                     return e.activeClass
25340                                 }).map(n).reduce(Et, [])
25341                             },
25342                             o = r(h).concat(n(l)).reduce(xt, []),
25343                             a = r(h.filter(function(t) {
25344                                 return e.includes(t.state.name, t.params)
25345                             })),
25346                             s = !!h.filter(function(t) {
25347                                 return e.is(t.state.name, t.params)
25348                             }).length ? n(l) : [],
25349                             c = a.concat(s).reduce(xt, []),
25350                             d = o.filter(function(e) {
25351                                 return !pt(c, e)
25352                             });
25353                         t.$evalAsync(function() {
25354                             c.forEach(function(e) {
25355                                 return i.addClass(e)
25356                             }), d.forEach(function(e) {
25357                                 return i.removeClass(e)
25358                             })
25359                         })
25360                     }
25361                     var l, f, h = [];
25362                     l = n(o.uiSrefActiveEq || "", !1)(t);
25363                     try {
25364                         f = t.$eval(o.uiSrefActive)
25365                     } catch (e) {}
25366                     f = f || n(o.uiSrefActive || "", !1)(t), Qe(f) && ut(f, function(e, n) {
25367                         if (Xe(e)) {
25368                             var r = ye(e);
25369                             s(r.state, t.$eval(r.paramExpr), n)
25370                         }
25371                     }), this.$$addStateInfo = function(e, t) {
25372                         if (!(Qe(f) && h.length > 0)) {
25373                             var n = s(e, t, f);
25374                             return c(), n
25375                         }
25376                     }, t.$on("$stateChangeSuccess", c), t.$on("$destroy", r.transitionService.onStart({}, a)), r.globals.transition && a(r.globals.transition), c()
25377                 }]
25378             }
25379         }], Oe.module("ui.router.state").directive("uiSref", fi).directive("uiSrefActive", mi).directive("uiSrefActiveEq", mi).directive("uiState", pi), ke.$inject = ["$state"], Te.$inject = ["$state"], Oe.module("ui.router.state").filter("isState", ke).filter("includedByState", Te);
25380         var gi;
25381         gi = ["$view", "$animate", "$uiViewScroll", "$interpolate", "$q", function(e, t, n, r, i) {
25382             function o(e, n) {
25383                 return {
25384                     enter: function(e, n, r) {
25385                         Oe.version.minor > 2 ? t.enter(e, null, n).then(r) : t.enter(e, null, n, r)
25386                     },
25387                     leave: function(e, n) {
25388                         Oe.version.minor > 2 ? t.leave(e).then(n) : t.leave(e, n)
25389                     }
25390                 }
25391             }
25392
25393             function a(e, t) {
25394                 return e === t
25395             }
25396             var s = {
25397                     $cfg: {
25398                         viewDecl: {
25399                             $context: e._pluginapi._rootViewContext()
25400                         }
25401                     },
25402                     $uiView: {}
25403                 },
25404                 c = {
25405                     count: 0,
25406                     restrict: "ECA",
25407                     terminal: !0,
25408                     priority: 400,
25409                     transclude: "element",
25410                     compile: function(t, l, u) {
25411                         return function(t, l, d) {
25412                             function f() {
25413                                 if (p && (qt.traceUIViewEvent("Removing (previous) el", p.data("$uiView")), p.remove(), p = null), g && (qt.traceUIViewEvent("Destroying scope", C), g.$destroy(), g = null), m) {
25414                                     var e = m.data("$uiViewAnim");
25415                                     qt.traceUIViewEvent("Animate out", e), $.leave(m, function() {
25416                                         e.$$animLeave.resolve(), p = null
25417                                     }), p = m, m = null
25418                                 }
25419                             }
25420
25421                             function h(e) {
25422                                 var r = t.$new(),
25423                                     o = i.defer(),
25424                                     a = i.defer(),
25425                                     s = {
25426                                         $cfg: e,
25427                                         $uiView: C
25428                                     },
25429                                     c = {
25430                                         $animEnter: o.promise,
25431                                         $animLeave: a.promise,
25432                                         $$animLeave: a
25433                                     };
25434                                 r.$emit("$viewContentLoading", E);
25435                                 var d = u(r, function(e) {
25436                                     e.data("$uiViewAnim", c), e.data("$uiView", s), $.enter(e, l, function() {
25437                                         o.resolve(), g && g.$emit("$viewContentAnimationEnded"), (We(y) && !y || t.$eval(y)) && n(e)
25438                                     }), f()
25439                                 });
25440                                 m = d, (g = r).$emit("$viewContentLoaded", e || _), g.$eval(b)
25441                             }
25442                             var p, m, g, v, b = d.onload || "",
25443                                 y = d.autoscroll,
25444                                 $ = o(),
25445                                 _ = void 0,
25446                                 w = l.inheritedData("$uiView") || s,
25447                                 E = r(d.uiView || d.name || "")(t) || "$default",
25448                                 C = {
25449                                     $type: "ng1",
25450                                     id: c.count++,
25451                                     name: E,
25452                                     fqn: w.$uiView.fqn ? w.$uiView.fqn + "." + E : E,
25453                                     config: null,
25454                                     configUpdated: function(e) {
25455                                         (!e || e instanceof Xr) && (a(_, e) || (qt.traceUIViewConfigUpdated(C, e && e.viewDecl && e.viewDecl.$context), _ = e, h(e)))
25456                                     },
25457                                     get creationContext() {
25458                                         var e = Ie("$cfg.viewDecl.$context")(w),
25459                                             t = Ie("$uiView.creationContext")(w);
25460                                         return e || t
25461                                     }
25462                                 };
25463                             qt.traceUIViewEvent("Linking", C), l.data("$uiView", {
25464                                 $uiView: C
25465                             }), h(), v = e.registerUIView(C), t.$on("$destroy", function() {
25466                                 qt.traceUIViewEvent("Destroying/Unregistering", C), v()
25467                             })
25468                         }
25469                     }
25470                 };
25471             return c
25472         }], Me.$inject = ["$compile", "$controller", "$transitions", "$view", "$q", "$timeout"];
25473         var vi = "function" == typeof Oe.module("ui.router").component,
25474             bi = 0;
25475         Oe.module("ui.router.state").directive("uiView", gi), Oe.module("ui.router.state").directive("uiView", Me), Oe.module("ui.router.state").provider("$uiViewScroll", function() {
25476             var e = !1;
25477             this.useAnchorScroll = function() {
25478                 e = !0
25479             }, this.$get = ["$anchorScroll", "$timeout", function(t, n) {
25480                 return e ? t : function(e) {
25481                     return n(function() {
25482                         e[0].scrollIntoView()
25483                     }, 0, !1)
25484                 }
25485             }]
25486         });
25487         e.default = "ui.router", e.core = Gr, e.watchDigests = be, e.getLocals = hi, e.getNg1ViewConfigFactory = he, e.ng1ViewsBuilder = pe, e.Ng1ViewConfig = Xr, e.StateProvider = ti, e.UrlRouterProvider = ii, e.fromJson = st, e.toJson = ct, e.copy = lt, e.forEach = ut, e.extend = dt, e.equals = ft, e.identity = u, e.noop = d, e.createProxyFunctions = f, e.inherit = ht, e.inArray = pt, e._inArray = h, e.removeFrom = mt, e._removeFrom = p, e.pushTo = gt, e._pushTo = m, e.deregAll = vt, e.defaults = g, e.mergeR = bt, e.ancestors = v, e.pick = b, e.omit = y, e.pluck = $, e.filter = _, e.find = w, e.mapObj = yt, e.map = E, e.values = $t, e.allTrueR = _t, e.anyTrueR = wt, e.unnestR = Et, e.flattenR = Ct, e.pushR = C, e.uniqR = xt, e.unnest = kt, e.flatten = Tt, e.assertPredicate = Mt, e.assertMap = St, e.assertFn = x, e.pairs = At, e.arrayTuples = k, e.applyPairs = T, e.tail = M, e._extend = S, e.silenceUncaughtInPromise = Ot, e.silentRejection = Dt, e.notImplemented = it, e.services = ot, e.Glob = qe, e.curry = n, e.compose = r, e.pipe = i, e.prop = De, e.propEq = Ne, e.parse = Ie, e.not = Re, e.and = o, e.or = a, e.all = Pe, e.any = He, e.is = je, e.eq = Le, e.val = Fe, e.invoke = s, e.pattern = c, e.isUndefined = ze, e.isDefined = We, e.isNull = Ye, e.isNullOrUndefined = Ge, e.isFunction = Ke, e.isNumber = Ze, e.isString = Xe, e.isObject = Qe, e.isArray = Je, e.isDate = et, e.isRegExp = tt, e.isState = nt, e.isInjectable = l, e.isPromise = rt, e.Queue = Nt, e.maxLength = U, e.padString = V, e.kebobString = B, e.functionToString = z, e.fnToString = W, e.stringify = Y, e.beforeAfterSubstr = hn, e.splitOnDelim = G, e.joinNeighborsR = K, e.Trace = Ft, e.trace = qt, e.Param = Zt, e.ParamTypes = pn, e.StateParams = gn, e.ParamType = Yt, e.PathNode = Xt, e.PathUtils = Qt, e.resolvePolicies = tn, e.defaultResolvePolicy = Jt, e.Resolvable = en, e.NATIVE_INJECTOR_TOKEN = an, e.ResolveContext = sn, e.resolvablesBuilder = te, e.StateBuilder = _n, e.StateObject = Ue, e.StateMatcher = wn, e.StateQueueManager = En, e.StateRegistry = Cn, e.StateService = _r, e.TargetState = Ut, e.HookBuilder = Wt, e.matchState = I, e.RegisteredHook = zt, e.makeEvent = R, e.Rejection = Rt, e.Transition = un, e.TransitionHook = Bt, e.TransitionEventType = gr, e.defaultTransOpts = yr, e.TransitionService = $r, e.UrlMatcher = Tn, e.UrlMatcherFactory = Mn, e.UrlRouter = Rn, e.UrlRuleFactory = Sn, e.BaseUrlRule = An, e.UrlService = Bn, e.ViewService = Pn, e.UIRouterGlobals = Hn, e.UIRouter = Wn, e.$q = wr, e.$injector = kr, e.BaseLocationServices = Rr, e.HashLocationService = Hr, e.MemoryLocationService = Lr, e.PushStateLocationService = qr, e.MemoryLocationConfig = Ur, e.BrowserLocationConfig = Vr, e.splitHash = Mr, e.splitQuery = Sr, e.splitEqual = Ar, e.trimHashVal = Or, e.keyValsToObjectR = Dr, e.getParams = Nr, e.parseUrl = ue, e.buildUrl = Ir, e.locationPluginFactory = de, e.servicesPlugin = fe, e.hashLocationPlugin = Br, e.pushStateLocationPlugin = zr, e.memoryLocationPlugin = Wr, e.UIRouterPluginBase = Yr, Object.defineProperty(e, "__esModule", {
25488             value: !0
25489         })
25490     }),
25491     function() {
25492         function e(e, t) {
25493             return e.set(t[0], t[1]), e
25494         }
25495
25496         function t(e, t) {
25497             return e.add(t), e
25498         }
25499
25500         function n(e, t, n) {
25501             switch (n.length) {
25502                 case 0:
25503                     return e.call(t);
25504                 case 1:
25505                     return e.call(t, n[0]);
25506                 case 2:
25507                     return e.call(t, n[0], n[1]);
25508                 case 3:
25509                     return e.call(t, n[0], n[1], n[2])
25510             }
25511             return e.apply(t, n)
25512         }
25513
25514         function r(e, t, n, r) {
25515             for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
25516                 var a = e[i];
25517                 t(r, a, n(a), e)
25518             }
25519             return r
25520         }
25521
25522         function i(e, t) {
25523             for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
25524             return e
25525         }
25526
25527         function o(e, t) {
25528             for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
25529             return e
25530         }
25531
25532         function a(e, t) {
25533             for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
25534                 if (!t(e[n], n, e)) return !1;
25535             return !0
25536         }
25537
25538         function s(e, t) {
25539             for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
25540                 var a = e[n];
25541                 t(a, n, e) && (o[i++] = a)
25542             }
25543             return o
25544         }
25545
25546         function c(e, t) {
25547             return !!(null == e ? 0 : e.length) && y(e, t, 0) > -1
25548         }
25549
25550         function l(e, t, n) {
25551             for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
25552                 if (n(t, e[r])) return !0;
25553             return !1
25554         }
25555
25556         function u(e, t) {
25557             for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
25558             return i
25559         }
25560
25561         function d(e, t) {
25562             for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
25563             return e
25564         }
25565
25566         function f(e, t, n, r) {
25567             var i = -1,
25568                 o = null == e ? 0 : e.length;
25569             for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
25570             return n
25571         }
25572
25573         function h(e, t, n, r) {
25574             var i = null == e ? 0 : e.length;
25575             for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
25576             return n
25577         }
25578
25579         function p(e, t) {
25580             for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
25581                 if (t(e[n], n, e)) return !0;
25582             return !1
25583         }
25584
25585         function m(e) {
25586             return e.split("")
25587         }
25588
25589         function g(e) {
25590             return e.match(Rt) || []
25591         }
25592
25593         function v(e, t, n) {
25594             var r;
25595             return n(e, function(e, n, i) {
25596                 if (t(e, n, i)) return r = n, !1
25597             }), r
25598         }
25599
25600         function b(e, t, n, r) {
25601             for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
25602                 if (t(e[o], o, e)) return o;
25603             return -1
25604         }
25605
25606         function y(e, t, n) {
25607             return t === t ? W(e, t, n) : b(e, _, n)
25608         }
25609
25610         function $(e, t, n, r) {
25611             for (var i = n - 1, o = e.length; ++i < o;)
25612                 if (r(e[i], t)) return i;
25613             return -1
25614         }
25615
25616         function _(e) {
25617             return e !== e
25618         }
25619
25620         function w(e, t) {
25621             var n = null == e ? 0 : e.length;
25622             return n ? T(e, t) / n : Ae
25623         }
25624
25625         function E(e) {
25626             return function(t) {
25627                 return null == t ? J : t[e]
25628             }
25629         }
25630
25631         function C(e) {
25632             return function(t) {
25633                 return null == e ? J : e[t]
25634             }
25635         }
25636
25637         function x(e, t, n, r, i) {
25638             return i(e, function(e, i, o) {
25639                 n = r ? (r = !1, e) : t(n, e, i, o)
25640             }), n
25641         }
25642
25643         function k(e, t) {
25644             var n = e.length;
25645             for (e.sort(t); n--;) e[n] = e[n].value;
25646             return e
25647         }
25648
25649         function T(e, t) {
25650             for (var n, r = -1, i = e.length; ++r < i;) {
25651                 var o = t(e[r]);
25652                 o !== J && (n = n === J ? o : n + o)
25653             }
25654             return n
25655         }
25656
25657         function M(e, t) {
25658             for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
25659             return r
25660         }
25661
25662         function S(e, t) {
25663             return u(t, function(t) {
25664                 return [t, e[t]]
25665             })
25666         }
25667
25668         function A(e) {
25669             return function(t) {
25670                 return e(t)
25671             }
25672         }
25673
25674         function O(e, t) {
25675             return u(t, function(t) {
25676                 return e[t]
25677             })
25678         }
25679
25680         function D(e, t) {
25681             return e.has(t)
25682         }
25683
25684         function N(e, t) {
25685             for (var n = -1, r = e.length; ++n < r && y(t, e[n], 0) > -1;);
25686             return n
25687         }
25688
25689         function I(e, t) {
25690             for (var n = e.length; n-- && y(t, e[n], 0) > -1;);
25691             return n
25692         }
25693
25694         function R(e, t) {
25695             for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
25696             return r
25697         }
25698
25699         function P(e) {
25700             return "\\" + wn[e]
25701         }
25702
25703         function H(e, t) {
25704             return null == e ? J : e[t]
25705         }
25706
25707         function j(e) {
25708             return hn.test(e)
25709         }
25710
25711         function L(e) {
25712             return pn.test(e)
25713         }
25714
25715         function F(e) {
25716             for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
25717             return n
25718         }
25719
25720         function q(e) {
25721             var t = -1,
25722                 n = Array(e.size);
25723             return e.forEach(function(e, r) {
25724                 n[++t] = [r, e]
25725             }), n
25726         }
25727
25728         function U(e, t) {
25729             return function(n) {
25730                 return e(t(n))
25731             }
25732         }
25733
25734         function V(e, t) {
25735             for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
25736                 var a = e[n];
25737                 a !== t && a !== oe || (e[n] = oe, o[i++] = n)
25738             }
25739             return o
25740         }
25741
25742         function B(e) {
25743             var t = -1,
25744                 n = Array(e.size);
25745             return e.forEach(function(e) {
25746                 n[++t] = e
25747             }), n
25748         }
25749
25750         function z(e) {
25751             var t = -1,
25752                 n = Array(e.size);
25753             return e.forEach(function(e) {
25754                 n[++t] = [e, e]
25755             }), n
25756         }
25757
25758         function W(e, t, n) {
25759             for (var r = n - 1, i = e.length; ++r < i;)
25760                 if (e[r] === t) return r;
25761             return -1
25762         }
25763
25764         function Y(e, t, n) {
25765             for (var r = n + 1; r--;)
25766                 if (e[r] === t) return r;
25767             return r
25768         }
25769
25770         function G(e) {
25771             return j(e) ? Z(e) : Ln(e)
25772         }
25773
25774         function K(e) {
25775             return j(e) ? X(e) : m(e)
25776         }
25777
25778         function Z(e) {
25779             for (var t = dn.lastIndex = 0; dn.test(e);) ++t;
25780             return t
25781         }
25782
25783         function X(e) {
25784             return e.match(dn) || []
25785         }
25786
25787         function Q(e) {
25788             return e.match(fn) || []
25789         }
25790         var J, ee = 200,
25791             te = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",
25792             ne = "Expected a function",
25793             re = "__lodash_hash_undefined__",
25794             ie = 500,
25795             oe = "__lodash_placeholder__",
25796             ae = 1,
25797             se = 2,
25798             ce = 4,
25799             le = 1,
25800             ue = 2,
25801             de = 1,
25802             fe = 2,
25803             he = 4,
25804             pe = 8,
25805             me = 16,
25806             ge = 32,
25807             ve = 64,
25808             be = 128,
25809             ye = 256,
25810             $e = 512,
25811             _e = 30,
25812             we = "...",
25813             Ee = 800,
25814             Ce = 16,
25815             xe = 1,
25816             ke = 2,
25817             Te = 1 / 0,
25818             Me = 9007199254740991,
25819             Se = 1.7976931348623157e308,
25820             Ae = NaN,
25821             Oe = 4294967295,
25822             De = Oe - 1,
25823             Ne = Oe >>> 1,
25824             Ie = [
25825                 ["ary", be],
25826                 ["bind", de],
25827                 ["bindKey", fe],
25828                 ["curry", pe],
25829                 ["curryRight", me],
25830                 ["flip", $e],
25831                 ["partial", ge],
25832                 ["partialRight", ve],
25833                 ["rearg", ye]
25834             ],
25835             Re = "[object Arguments]",
25836             Pe = "[object Array]",
25837             He = "[object AsyncFunction]",
25838             je = "[object Boolean]",
25839             Le = "[object Date]",
25840             Fe = "[object DOMException]",
25841             qe = "[object Error]",
25842             Ue = "[object Function]",
25843             Ve = "[object GeneratorFunction]",
25844             Be = "[object Map]",
25845             ze = "[object Number]",
25846             We = "[object Null]",
25847             Ye = "[object Object]",
25848             Ge = "[object Proxy]",
25849             Ke = "[object RegExp]",
25850             Ze = "[object Set]",
25851             Xe = "[object String]",
25852             Qe = "[object Symbol]",
25853             Je = "[object Undefined]",
25854             et = "[object WeakMap]",
25855             tt = "[object WeakSet]",
25856             nt = "[object ArrayBuffer]",
25857             rt = "[object DataView]",
25858             it = "[object Float32Array]",
25859             ot = "[object Float64Array]",
25860             at = "[object Int8Array]",
25861             st = "[object Int16Array]",
25862             ct = "[object Int32Array]",
25863             lt = "[object Uint8Array]",
25864             ut = "[object Uint8ClampedArray]",
25865             dt = "[object Uint16Array]",
25866             ft = "[object Uint32Array]",
25867             ht = /\b__p \+= '';/g,
25868             pt = /\b(__p \+=) '' \+/g,
25869             mt = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
25870             gt = /&(?:amp|lt|gt|quot|#39);/g,
25871             vt = /[&<>"']/g,
25872             bt = RegExp(gt.source),
25873             yt = RegExp(vt.source),
25874             $t = /<%-([\s\S]+?)%>/g,
25875             _t = /<%([\s\S]+?)%>/g,
25876             wt = /<%=([\s\S]+?)%>/g,
25877             Et = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
25878             Ct = /^\w*$/,
25879             xt = /^\./,
25880             kt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
25881             Tt = /[\\^$.*+?()[\]{}|]/g,
25882             Mt = RegExp(Tt.source),
25883             St = /^\s+|\s+$/g,
25884             At = /^\s+/,
25885             Ot = /\s+$/,
25886             Dt = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
25887             Nt = /\{\n\/\* \[wrapped with (.+)\] \*/,
25888             It = /,? & /,
25889             Rt = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
25890             Pt = /\\(\\)?/g,
25891             Ht = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
25892             jt = /\w*$/,
25893             Lt = /^[-+]0x[0-9a-f]+$/i,
25894             Ft = /^0b[01]+$/i,
25895             qt = /^\[object .+?Constructor\]$/,
25896             Ut = /^0o[0-7]+$/i,
25897             Vt = /^(?:0|[1-9]\d*)$/,
25898             Bt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
25899             zt = /($^)/,
25900             Wt = /['\n\r\u2028\u2029\\]/g,
25901             Yt = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
25902             Gt = "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
25903             Kt = "[" + Gt + "]",
25904             Zt = "[" + Yt + "]",
25905             Xt = "[a-z\\xdf-\\xf6\\xf8-\\xff]",
25906             Qt = "[^\\ud800-\\udfff" + Gt + "\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",
25907             Jt = "\\ud83c[\\udffb-\\udfff]",
25908             en = "(?:\\ud83c[\\udde6-\\uddff]){2}",
25909             tn = "[\\ud800-\\udbff][\\udc00-\\udfff]",
25910             nn = "[A-Z\\xc0-\\xd6\\xd8-\\xde]",
25911             rn = "(?:" + Xt + "|" + Qt + ")",
25912             on = "(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",
25913             an = "[\\ufe0e\\ufe0f]?" + on + ("(?:\\u200d(?:" + ["[^\\ud800-\\udfff]", en, tn].join("|") + ")[\\ufe0e\\ufe0f]?" + on + ")*"),
25914             sn = "(?:" + ["[\\u2700-\\u27bf]", en, tn].join("|") + ")" + an,
25915             cn = "(?:" + ["[^\\ud800-\\udfff]" + Zt + "?", Zt, en, tn, "[\\ud800-\\udfff]"].join("|") + ")",
25916             ln = RegExp("['’]", "g"),
25917             un = RegExp(Zt, "g"),
25918             dn = RegExp(Jt + "(?=" + Jt + ")|" + cn + an, "g"),
25919             fn = RegExp([nn + "?" + Xt + "+(?:['’](?:d|ll|m|re|s|t|ve))?(?=" + [Kt, nn, "$"].join("|") + ")", "(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=" + [Kt, nn + rn, "$"].join("|") + ")", nn + "?" + rn + "+(?:['’](?:d|ll|m|re|s|t|ve))?", nn + "+(?:['’](?:D|LL|M|RE|S|T|VE))?", "\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)", "\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)", "\\d+", sn].join("|"), "g"),
25920             hn = RegExp("[\\u200d\\ud800-\\udfff" + Yt + "\\ufe0e\\ufe0f]"),
25921             pn = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
25922             mn = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"],
25923             gn = -1,
25924             vn = {};
25925         vn[it] = vn[ot] = vn[at] = vn[st] = vn[ct] = vn[lt] = vn[ut] = vn[dt] = vn[ft] = !0, vn[Re] = vn[Pe] = vn[nt] = vn[je] = vn[rt] = vn[Le] = vn[qe] = vn[Ue] = vn[Be] = vn[ze] = vn[Ye] = vn[Ke] = vn[Ze] = vn[Xe] = vn[et] = !1;
25926         var bn = {};
25927         bn[Re] = bn[Pe] = bn[nt] = bn[rt] = bn[je] = bn[Le] = bn[it] = bn[ot] = bn[at] = bn[st] = bn[ct] = bn[Be] = bn[ze] = bn[Ye] = bn[Ke] = bn[Ze] = bn[Xe] = bn[Qe] = bn[lt] = bn[ut] = bn[dt] = bn[ft] = !0, bn[qe] = bn[Ue] = bn[et] = !1;
25928         var yn = {
25929                 "À": "A",
25930                 "Á": "A",
25931                 "Â": "A",
25932                 "Ã": "A",
25933                 "Ä": "A",
25934                 "Å": "A",
25935                 "à": "a",
25936                 "á": "a",
25937                 "â": "a",
25938                 "ã": "a",
25939                 "ä": "a",
25940                 "å": "a",
25941                 "Ç": "C",
25942                 "ç": "c",
25943                 "Ð": "D",
25944                 "ð": "d",
25945                 "È": "E",
25946                 "É": "E",
25947                 "Ê": "E",
25948                 "Ë": "E",
25949                 "è": "e",
25950                 "é": "e",
25951                 "ê": "e",
25952                 "ë": "e",
25953                 "Ì": "I",
25954                 "Í": "I",
25955                 "Î": "I",
25956                 "Ï": "I",
25957                 "ì": "i",
25958                 "í": "i",
25959                 "î": "i",
25960                 "ï": "i",
25961                 "Ñ": "N",
25962                 "ñ": "n",
25963                 "Ò": "O",
25964                 "Ó": "O",
25965                 "Ô": "O",
25966                 "Õ": "O",
25967                 "Ö": "O",
25968                 "Ø": "O",
25969                 "ò": "o",
25970                 "ó": "o",
25971                 "ô": "o",
25972                 "õ": "o",
25973                 "ö": "o",
25974                 "ø": "o",
25975                 "Ù": "U",
25976                 "Ú": "U",
25977                 "Û": "U",
25978                 "Ü": "U",
25979                 "ù": "u",
25980                 "ú": "u",
25981                 "û": "u",
25982                 "ü": "u",
25983                 "Ý": "Y",
25984                 "ý": "y",
25985                 "ÿ": "y",
25986                 "Æ": "Ae",
25987                 "æ": "ae",
25988                 "Þ": "Th",
25989                 "þ": "th",
25990                 "ß": "ss",
25991                 "Ā": "A",
25992                 "Ă": "A",
25993                 "Ą": "A",
25994                 "ā": "a",
25995                 "ă": "a",
25996                 "ą": "a",
25997                 "Ć": "C",
25998                 "Ĉ": "C",
25999                 "Ċ": "C",
26000                 "Č": "C",
26001                 "ć": "c",
26002                 "ĉ": "c",
26003                 "ċ": "c",
26004                 "č": "c",
26005                 "Ď": "D",
26006                 "Đ": "D",
26007                 "ď": "d",
26008                 "đ": "d",
26009                 "Ē": "E",
26010                 "Ĕ": "E",
26011                 "Ė": "E",
26012                 "Ę": "E",
26013                 "Ě": "E",
26014                 "ē": "e",
26015                 "ĕ": "e",
26016                 "ė": "e",
26017                 "ę": "e",
26018                 "ě": "e",
26019                 "Ĝ": "G",
26020                 "Ğ": "G",
26021                 "Ġ": "G",
26022                 "Ģ": "G",
26023                 "ĝ": "g",
26024                 "ğ": "g",
26025                 "ġ": "g",
26026                 "ģ": "g",
26027                 "Ĥ": "H",
26028                 "Ħ": "H",
26029                 "ĥ": "h",
26030                 "ħ": "h",
26031                 "Ĩ": "I",
26032                 "Ī": "I",
26033                 "Ĭ": "I",
26034                 "Į": "I",
26035                 "İ": "I",
26036                 "ĩ": "i",
26037                 "ī": "i",
26038                 "ĭ": "i",
26039                 "į": "i",
26040                 "ı": "i",
26041                 "Ĵ": "J",
26042                 "ĵ": "j",
26043                 "Ķ": "K",
26044                 "ķ": "k",
26045                 "ĸ": "k",
26046                 "Ĺ": "L",
26047                 "Ļ": "L",
26048                 "Ľ": "L",
26049                 "Ŀ": "L",
26050                 "Ł": "L",
26051                 "ĺ": "l",
26052                 "ļ": "l",
26053                 "ľ": "l",
26054                 "ŀ": "l",
26055                 "ł": "l",
26056                 "Ń": "N",
26057                 "Ņ": "N",
26058                 "Ň": "N",
26059                 "Ŋ": "N",
26060                 "ń": "n",
26061                 "ņ": "n",
26062                 "ň": "n",
26063                 "ŋ": "n",
26064                 "Ō": "O",
26065                 "Ŏ": "O",
26066                 "Ő": "O",
26067                 "ō": "o",
26068                 "ŏ": "o",
26069                 "ő": "o",
26070                 "Ŕ": "R",
26071                 "Ŗ": "R",
26072                 "Ř": "R",
26073                 "ŕ": "r",
26074                 "ŗ": "r",
26075                 "ř": "r",
26076                 "Ś": "S",
26077                 "Ŝ": "S",
26078                 "Ş": "S",
26079                 "Š": "S",
26080                 "ś": "s",
26081                 "ŝ": "s",
26082                 "ş": "s",
26083                 "š": "s",
26084                 "Ţ": "T",
26085                 "Ť": "T",
26086                 "Ŧ": "T",
26087                 "ţ": "t",
26088                 "ť": "t",
26089                 "ŧ": "t",
26090                 "Ũ": "U",
26091                 "Ū": "U",
26092                 "Ŭ": "U",
26093                 "Ů": "U",
26094                 "Ű": "U",
26095                 "Ų": "U",
26096                 "ũ": "u",
26097                 "ū": "u",
26098                 "ŭ": "u",
26099                 "ů": "u",
26100                 "ű": "u",
26101                 "ų": "u",
26102                 "Ŵ": "W",
26103                 "ŵ": "w",
26104                 "Ŷ": "Y",
26105                 "ŷ": "y",
26106                 "Ÿ": "Y",
26107                 "Ź": "Z",
26108                 "Ż": "Z",
26109                 "Ž": "Z",
26110                 "ź": "z",
26111                 "ż": "z",
26112                 "ž": "z",
26113                 "IJ": "IJ",
26114                 "ij": "ij",
26115                 "Œ": "Oe",
26116                 "œ": "oe",
26117                 "ʼn": "'n",
26118                 "ſ": "s"
26119             },
26120             $n = {
26121                 "&": "&amp;",
26122                 "<": "&lt;",
26123                 ">": "&gt;",
26124                 '"': "&quot;",
26125                 "'": "&#39;"
26126             },
26127             _n = {
26128                 "&amp;": "&",
26129                 "&lt;": "<",
26130                 "&gt;": ">",
26131                 "&quot;": '"',
26132                 "&#39;": "'"
26133             },
26134             wn = {
26135                 "\\": "\\",
26136                 "'": "'",
26137                 "\n": "n",
26138                 "\r": "r",
26139                 "\u2028": "u2028",
26140                 "\u2029": "u2029"
26141             },
26142             En = parseFloat,
26143             Cn = parseInt,
26144             xn = "object" == typeof global && global && global.Object === Object && global,
26145             kn = "object" == typeof self && self && self.Object === Object && self,
26146             Tn = xn || kn || Function("return this")(),
26147             Mn = "object" == typeof exports && exports && !exports.nodeType && exports,
26148             Sn = Mn && "object" == typeof module && module && !module.nodeType && module,
26149             An = Sn && Sn.exports === Mn,
26150             On = An && xn.process,
26151             Dn = function() {
26152                 try {
26153                     return On && On.binding && On.binding("util")
26154                 } catch (e) {}
26155             }(),
26156             Nn = Dn && Dn.isArrayBuffer,
26157             In = Dn && Dn.isDate,
26158             Rn = Dn && Dn.isMap,
26159             Pn = Dn && Dn.isRegExp,
26160             Hn = Dn && Dn.isSet,
26161             jn = Dn && Dn.isTypedArray,
26162             Ln = E("length"),
26163             Fn = C(yn),
26164             qn = C($n),
26165             Un = C(_n),
26166             Vn = function m(C) {
26167                 function W(e) {
26168                     if (ta(e) && !Bc(e) && !(e instanceof Rt)) {
26169                         if (e instanceof X) return e;
26170                         if (Ba.call(e, "__wrapped__")) return xo(e)
26171                     }
26172                     return new X(e)
26173                 }
26174
26175                 function Z() {}
26176
26177                 function X(e, t) {
26178                     this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = J
26179                 }
26180
26181                 function Rt(e) {
26182                     this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Oe, this.__views__ = []
26183                 }
26184
26185                 function Yt(e) {
26186                     var t = -1,
26187                         n = null == e ? 0 : e.length;
26188                     for (this.clear(); ++t < n;) {
26189                         var r = e[t];
26190                         this.set(r[0], r[1])
26191                     }
26192                 }
26193
26194                 function Gt(e) {
26195                     var t = -1,
26196                         n = null == e ? 0 : e.length;
26197                     for (this.clear(); ++t < n;) {
26198                         var r = e[t];
26199                         this.set(r[0], r[1])
26200                     }
26201                 }
26202
26203                 function Kt(e) {
26204                     var t = -1,
26205                         n = null == e ? 0 : e.length;
26206                     for (this.clear(); ++t < n;) {
26207                         var r = e[t];
26208                         this.set(r[0], r[1])
26209                     }
26210                 }
26211
26212                 function Zt(e) {
26213                     var t = -1,
26214                         n = null == e ? 0 : e.length;
26215                     for (this.__data__ = new Kt; ++t < n;) this.add(e[t])
26216                 }
26217
26218                 function Xt(e) {
26219                     var t = this.__data__ = new Gt(e);
26220                     this.size = t.size
26221                 }
26222
26223                 function Qt(e, t) {
26224                     var n = Bc(e),
26225                         r = !n && Vc(e),
26226                         i = !n && !r && Wc(e),
26227                         o = !n && !r && !i && Xc(e),
26228                         a = n || r || i || o,
26229                         s = a ? M(e.length, Ha) : [],
26230                         c = s.length;
26231                     for (var l in e) !t && !Ba.call(e, l) || a && ("length" == l || i && ("offset" == l || "parent" == l) || o && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || ro(l, c)) || s.push(l);
26232                     return s
26233                 }
26234
26235                 function Jt(e) {
26236                     var t = e.length;
26237                     return t ? e[wr(0, t - 1)] : J
26238                 }
26239
26240                 function en(e, t) {
26241                     return _o(ai(e), hn(t, 0, e.length))
26242                 }
26243
26244                 function tn(e) {
26245                     return _o(ai(e))
26246                 }
26247
26248                 function nn(e, t, n) {
26249                     (n === J || Yo(e[t], n)) && (n !== J || t in e) || dn(e, t, n)
26250                 }
26251
26252                 function rn(e, t, n) {
26253                     var r = e[t];
26254                     Ba.call(e, t) && Yo(r, n) && (n !== J || t in e) || dn(e, t, n)
26255                 }
26256
26257                 function on(e, t) {
26258                     for (var n = e.length; n--;)
26259                         if (Yo(e[n][0], t)) return n;
26260                     return -1
26261                 }
26262
26263                 function an(e, t, n, r) {
26264                     return Us(e, function(e, i, o) {
26265                         t(r, e, n(e), o)
26266                     }), r
26267                 }
26268
26269                 function sn(e, t) {
26270                     return e && si(t, ma(t), e)
26271                 }
26272
26273                 function cn(e, t) {
26274                     return e && si(t, ga(t), e)
26275                 }
26276
26277                 function dn(e, t, n) {
26278                     "__proto__" == t && cs ? cs(e, t, {
26279                         configurable: !0,
26280                         enumerable: !0,
26281                         value: n,
26282                         writable: !0
26283                     }) : e[t] = n
26284                 }
26285
26286                 function fn(e, t) {
26287                     for (var n = -1, r = t.length, i = Aa(r), o = null == e; ++n < r;) i[n] = o ? J : ha(e, t[n]);
26288                     return i
26289                 }
26290
26291                 function hn(e, t, n) {
26292                     return e === e && (n !== J && (e = e <= n ? e : n), t !== J && (e = e >= t ? e : t)), e
26293                 }
26294
26295                 function pn(e, t, n, r, o, a) {
26296                     var s, c = t & ae,
26297                         l = t & se,
26298                         u = t & ce;
26299                     if (n && (s = o ? n(e, r, o, a) : n(e)), s !== J) return s;
26300                     if (!ea(e)) return e;
26301                     var d = Bc(e);
26302                     if (d) {
26303                         if (s = Qi(e), !c) return ai(e, s)
26304                     } else {
26305                         var f = ec(e),
26306                             h = f == Ue || f == Ve;
26307                         if (Wc(e)) return Gr(e, c);
26308                         if (f == Ye || f == Re || h && !o) {
26309                             if (s = l || h ? {} : Ji(e), !c) return l ? li(e, cn(s, e)) : ci(e, sn(s, e))
26310                         } else {
26311                             if (!bn[f]) return o ? e : {};
26312                             s = eo(e, f, pn, c)
26313                         }
26314                     }
26315                     a || (a = new Xt);
26316                     var p = a.get(e);
26317                     if (p) return p;
26318                     a.set(e, s);
26319                     var m = u ? l ? qi : Fi : l ? ga : ma,
26320                         g = d ? J : m(e);
26321                     return i(g || e, function(r, i) {
26322                         g && (r = e[i = r]), rn(s, i, pn(r, t, n, i, e, a))
26323                     }), s
26324                 }
26325
26326                 function yn(e) {
26327                     var t = ma(e);
26328                     return function(n) {
26329                         return $n(n, e, t)
26330                     }
26331                 }
26332
26333                 function $n(e, t, n) {
26334                     var r = n.length;
26335                     if (null == e) return !r;
26336                     for (e = Ra(e); r--;) {
26337                         var i = n[r],
26338                             o = t[i],
26339                             a = e[i];
26340                         if (a === J && !(i in e) || !o(a)) return !1
26341                     }
26342                     return !0
26343                 }
26344
26345                 function _n(e, t, n) {
26346                     if ("function" != typeof e) throw new ja(ne);
26347                     return rc(function() {
26348                         e.apply(J, n)
26349                     }, t)
26350                 }
26351
26352                 function wn(e, t, n, r) {
26353                     var i = -1,
26354                         o = c,
26355                         a = !0,
26356                         s = e.length,
26357                         d = [],
26358                         f = t.length;
26359                     if (!s) return d;
26360                     n && (t = u(t, A(n))), r ? (o = l, a = !1) : t.length >= ee && (o = D, a = !1, t = new Zt(t));
26361                     e: for (; ++i < s;) {
26362                         var h = e[i],
26363                             p = null == n ? h : n(h);
26364                         if (h = r || 0 !== h ? h : 0, a && p === p) {
26365                             for (var m = f; m--;)
26366                                 if (t[m] === p) continue e;
26367                             d.push(h)
26368                         } else o(t, p, r) || d.push(h)
26369                     }
26370                     return d
26371                 }
26372
26373                 function xn(e, t) {
26374                     var n = !0;
26375                     return Us(e, function(e, r, i) {
26376                         return n = !!t(e, r, i)
26377                     }), n
26378                 }
26379
26380                 function kn(e, t, n) {
26381                     for (var r = -1, i = e.length; ++r < i;) {
26382                         var o = e[r],
26383                             a = t(o);
26384                         if (null != a && (s === J ? a === a && !oa(a) : n(a, s))) var s = a,
26385                             c = o
26386                     }
26387                     return c
26388                 }
26389
26390                 function Mn(e, t, n, r) {
26391                     var i = e.length;
26392                     for ((n = ca(n)) < 0 && (n = -n > i ? 0 : i + n), (r = r === J || r > i ? i : ca(r)) < 0 && (r += i), r = n > r ? 0 : la(r); n < r;) e[n++] = t;
26393                     return e
26394                 }
26395
26396                 function Sn(e, t) {
26397                     var n = [];
26398                     return Us(e, function(e, r, i) {
26399                         t(e, r, i) && n.push(e)
26400                     }), n
26401                 }
26402
26403                 function On(e, t, n, r, i) {
26404                     var o = -1,
26405                         a = e.length;
26406                     for (n || (n = no), i || (i = []); ++o < a;) {
26407                         var s = e[o];
26408                         t > 0 && n(s) ? t > 1 ? On(s, t - 1, n, r, i) : d(i, s) : r || (i[i.length] = s)
26409                     }
26410                     return i
26411                 }
26412
26413                 function Dn(e, t) {
26414                     return e && Bs(e, t, ma)
26415                 }
26416
26417                 function Ln(e, t) {
26418                     return e && zs(e, t, ma)
26419                 }
26420
26421                 function Bn(e, t) {
26422                     return s(t, function(t) {
26423                         return Xo(e[t])
26424                     })
26425                 }
26426
26427                 function zn(e, t) {
26428                     for (var n = 0, r = (t = Wr(t, e)).length; null != e && n < r;) e = e[wo(t[n++])];
26429                     return n && n == r ? e : J
26430                 }
26431
26432                 function Wn(e, t, n) {
26433                     var r = t(e);
26434                     return Bc(e) ? r : d(r, n(e))
26435                 }
26436
26437                 function Yn(e) {
26438                     return null == e ? e === J ? Je : We : ss && ss in Ra(e) ? Gi(e) : mo(e)
26439                 }
26440
26441                 function Gn(e, t) {
26442                     return e > t
26443                 }
26444
26445                 function Kn(e, t) {
26446                     return null != e && Ba.call(e, t)
26447                 }
26448
26449                 function Zn(e, t) {
26450                     return null != e && t in Ra(e)
26451                 }
26452
26453                 function Xn(e, t, n) {
26454                     return e >= $s(t, n) && e < ys(t, n)
26455                 }
26456
26457                 function Qn(e, t, n) {
26458                     for (var r = n ? l : c, i = e[0].length, o = e.length, a = o, s = Aa(o), d = 1 / 0, f = []; a--;) {
26459                         var h = e[a];
26460                         a && t && (h = u(h, A(t))), d = $s(h.length, d), s[a] = !n && (t || i >= 120 && h.length >= 120) ? new Zt(a && h) : J
26461                     }
26462                     h = e[0];
26463                     var p = -1,
26464                         m = s[0];
26465                     e: for (; ++p < i && f.length < d;) {
26466                         var g = h[p],
26467                             v = t ? t(g) : g;
26468                         if (g = n || 0 !== g ? g : 0, !(m ? D(m, v) : r(f, v, n))) {
26469                             for (a = o; --a;) {
26470                                 var b = s[a];
26471                                 if (!(b ? D(b, v) : r(e[a], v, n))) continue e
26472                             }
26473                             m && m.push(v), f.push(g)
26474                         }
26475                     }
26476                     return f
26477                 }
26478
26479                 function Jn(e, t, n, r) {
26480                     return Dn(e, function(e, i, o) {
26481                         t(r, n(e), i, o)
26482                     }), r
26483                 }
26484
26485                 function er(e, t, r) {
26486                     var i = null == (e = vo(e, t = Wr(t, e))) ? e : e[wo(Ao(t))];
26487                     return null == i ? J : n(i, e, r)
26488                 }
26489
26490                 function tr(e) {
26491                     return ta(e) && Yn(e) == Re
26492                 }
26493
26494                 function nr(e, t, n, r, i) {
26495                     return e === t || (null == e || null == t || !ta(e) && !ta(t) ? e !== e && t !== t : rr(e, t, n, r, nr, i))
26496                 }
26497
26498                 function rr(e, t, n, r, i, o) {
26499                     var a = Bc(e),
26500                         s = Bc(t),
26501                         c = a ? Pe : ec(e),
26502                         l = s ? Pe : ec(t),
26503                         u = (c = c == Re ? Ye : c) == Ye,
26504                         d = (l = l == Re ? Ye : l) == Ye,
26505                         f = c == l;
26506                     if (f && Wc(e)) {
26507                         if (!Wc(t)) return !1;
26508                         a = !0, u = !1
26509                     }
26510                     if (f && !u) return o || (o = new Xt), a || Xc(e) ? Pi(e, t, n, r, i, o) : Hi(e, t, c, n, r, i, o);
26511                     if (!(n & le)) {
26512                         var h = u && Ba.call(e, "__wrapped__"),
26513                             p = d && Ba.call(t, "__wrapped__");
26514                         if (h || p) {
26515                             var m = h ? e.value() : e,
26516                                 g = p ? t.value() : t;
26517                             return o || (o = new Xt), i(m, g, n, r, o)
26518                         }
26519                     }
26520                     return !!f && (o || (o = new Xt), ji(e, t, n, r, i, o))
26521                 }
26522
26523                 function ir(e, t, n, r) {
26524                     var i = n.length,
26525                         o = i,
26526                         a = !r;
26527                     if (null == e) return !o;
26528                     for (e = Ra(e); i--;) {
26529                         var s = n[i];
26530                         if (a && s[2] ? s[1] !== e[s[0]] : !(s[0] in e)) return !1
26531                     }
26532                     for (; ++i < o;) {
26533                         var c = (s = n[i])[0],
26534                             l = e[c],
26535                             u = s[1];
26536                         if (a && s[2]) {
26537                             if (l === J && !(c in e)) return !1
26538                         } else {
26539                             var d = new Xt;
26540                             if (r) var f = r(l, u, c, e, t, d);
26541                             if (!(f === J ? nr(u, l, le | ue, r, d) : f)) return !1
26542                         }
26543                     }
26544                     return !0
26545                 }
26546
26547                 function or(e) {
26548                     return !(!ea(e) || co(e)) && (Xo(e) ? Za : qt).test(Eo(e))
26549                 }
26550
26551                 function ar(e) {
26552                     return "function" == typeof e ? e : null == e ? Ea : "object" == typeof e ? Bc(e) ? fr(e[0], e[1]) : dr(e) : Ta(e)
26553                 }
26554
26555                 function sr(e) {
26556                     if (!lo(e)) return bs(e);
26557                     var t = [];
26558                     for (var n in Ra(e)) Ba.call(e, n) && "constructor" != n && t.push(n);
26559                     return t
26560                 }
26561
26562                 function cr(e) {
26563                     if (!ea(e)) return po(e);
26564                     var t = lo(e),
26565                         n = [];
26566                     for (var r in e)("constructor" != r || !t && Ba.call(e, r)) && n.push(r);
26567                     return n
26568                 }
26569
26570                 function lr(e, t) {
26571                     return e < t
26572                 }
26573
26574                 function ur(e, t) {
26575                     var n = -1,
26576                         r = Go(e) ? Aa(e.length) : [];
26577                     return Us(e, function(e, i, o) {
26578                         r[++n] = t(e, i, o)
26579                     }), r
26580                 }
26581
26582                 function dr(e) {
26583                     var t = Wi(e);
26584                     return 1 == t.length && t[0][2] ? fo(t[0][0], t[0][1]) : function(n) {
26585                         return n === e || ir(n, e, t)
26586                     }
26587                 }
26588
26589                 function fr(e, t) {
26590                     return oo(e) && uo(t) ? fo(wo(e), t) : function(n) {
26591                         var r = ha(n, e);
26592                         return r === J && r === t ? pa(n, e) : nr(t, r, le | ue)
26593                     }
26594                 }
26595
26596                 function hr(e, t, n, r, i) {
26597                     e !== t && Bs(t, function(o, a) {
26598                         if (ea(o)) i || (i = new Xt), pr(e, t, a, n, hr, r, i);
26599                         else {
26600                             var s = r ? r(e[a], o, a + "", e, t, i) : J;
26601                             s === J && (s = o), nn(e, a, s)
26602                         }
26603                     }, ga)
26604                 }
26605
26606                 function pr(e, t, n, r, i, o, a) {
26607                     var s = e[n],
26608                         c = t[n],
26609                         l = a.get(c);
26610                     if (l) nn(e, n, l);
26611                     else {
26612                         var u = o ? o(s, c, n + "", e, t, a) : J,
26613                             d = u === J;
26614                         if (d) {
26615                             var f = Bc(c),
26616                                 h = !f && Wc(c),
26617                                 p = !f && !h && Xc(c);
26618                             u = c, f || h || p ? Bc(s) ? u = s : Ko(s) ? u = ai(s) : h ? (d = !1, u = Gr(c, !0)) : p ? (d = !1, u = ti(c, !0)) : u = [] : ra(c) || Vc(c) ? (u = s, Vc(s) ? u = da(s) : (!ea(s) || r && Xo(s)) && (u = Ji(c))) : d = !1
26619                         }
26620                         d && (a.set(c, u), i(u, c, r, o, a), a.delete(c)), nn(e, n, u)
26621                     }
26622                 }
26623
26624                 function mr(e, t) {
26625                     var n = e.length;
26626                     if (n) return t += t < 0 ? n : 0, ro(t, n) ? e[t] : J
26627                 }
26628
26629                 function gr(e, t, n) {
26630                     var r = -1;
26631                     return t = u(t.length ? t : [Ea], A(Bi())), k(ur(e, function(e, n, i) {
26632                         return {
26633                             criteria: u(t, function(t) {
26634                                 return t(e)
26635                             }),
26636                             index: ++r,
26637                             value: e
26638                         }
26639                     }), function(e, t) {
26640                         return ri(e, t, n)
26641                     })
26642                 }
26643
26644                 function vr(e, t) {
26645                     return br(e, t, function(t, n) {
26646                         return pa(e, n)
26647                     })
26648                 }
26649
26650                 function br(e, t, n) {
26651                     for (var r = -1, i = t.length, o = {}; ++r < i;) {
26652                         var a = t[r],
26653                             s = zn(e, a);
26654                         n(s, a) && Mr(o, Wr(a, e), s)
26655                     }
26656                     return o
26657                 }
26658
26659                 function yr(e) {
26660                     return function(t) {
26661                         return zn(t, e)
26662                     }
26663                 }
26664
26665                 function $r(e, t, n, r) {
26666                     var i = r ? $ : y,
26667                         o = -1,
26668                         a = t.length,
26669                         s = e;
26670                     for (e === t && (t = ai(t)), n && (s = u(e, A(n))); ++o < a;)
26671                         for (var c = 0, l = t[o], d = n ? n(l) : l;
26672                             (c = i(s, d, c, r)) > -1;) s !== e && is.call(s, c, 1), is.call(e, c, 1);
26673                     return e
26674                 }
26675
26676                 function _r(e, t) {
26677                     for (var n = e ? t.length : 0, r = n - 1; n--;) {
26678                         var i = t[n];
26679                         if (n == r || i !== o) {
26680                             var o = i;
26681                             ro(i) ? is.call(e, i, 1) : jr(e, i)
26682                         }
26683                     }
26684                     return e
26685                 }
26686
26687                 function wr(e, t) {
26688                     return e + hs(Es() * (t - e + 1))
26689                 }
26690
26691                 function Er(e, t, n, r) {
26692                     for (var i = -1, o = ys(fs((t - e) / (n || 1)), 0), a = Aa(o); o--;) a[r ? o : ++i] = e, e += n;
26693                     return a
26694                 }
26695
26696                 function Cr(e, t) {
26697                     var n = "";
26698                     if (!e || t < 1 || t > Me) return n;
26699                     do {
26700                         t % 2 && (n += e), (t = hs(t / 2)) && (e += e)
26701                     } while (t);
26702                     return n
26703                 }
26704
26705                 function xr(e, t) {
26706                     return ic(go(e, t, Ea), e + "")
26707                 }
26708
26709                 function kr(e) {
26710                     return Jt(ba(e))
26711                 }
26712
26713                 function Tr(e, t) {
26714                     var n = ba(e);
26715                     return _o(n, hn(t, 0, n.length))
26716                 }
26717
26718                 function Mr(e, t, n, r) {
26719                     if (!ea(e)) return e;
26720                     for (var i = -1, o = (t = Wr(t, e)).length, a = o - 1, s = e; null != s && ++i < o;) {
26721                         var c = wo(t[i]),
26722                             l = n;
26723                         if (i != a) {
26724                             var u = s[c];
26725                             (l = r ? r(u, c, s) : J) === J && (l = ea(u) ? u : ro(t[i + 1]) ? [] : {})
26726                         }
26727                         rn(s, c, l), s = s[c]
26728                     }
26729                     return e
26730                 }
26731
26732                 function Sr(e) {
26733                     return _o(ba(e))
26734                 }
26735
26736                 function Ar(e, t, n) {
26737                     var r = -1,
26738                         i = e.length;
26739                     t < 0 && (t = -t > i ? 0 : i + t), (n = n > i ? i : n) < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0;
26740                     for (var o = Aa(i); ++r < i;) o[r] = e[r + t];
26741                     return o
26742                 }
26743
26744                 function Or(e, t) {
26745                     var n;
26746                     return Us(e, function(e, r, i) {
26747                         return !(n = t(e, r, i))
26748                     }), !!n
26749                 }
26750
26751                 function Dr(e, t, n) {
26752                     var r = 0,
26753                         i = null == e ? r : e.length;
26754                     if ("number" == typeof t && t === t && i <= Ne) {
26755                         for (; r < i;) {
26756                             var o = r + i >>> 1,
26757                                 a = e[o];
26758                             null !== a && !oa(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
26759                         }
26760                         return i
26761                     }
26762                     return Nr(e, t, Ea, n)
26763                 }
26764
26765                 function Nr(e, t, n, r) {
26766                     t = n(t);
26767                     for (var i = 0, o = null == e ? 0 : e.length, a = t !== t, s = null === t, c = oa(t), l = t === J; i < o;) {
26768                         var u = hs((i + o) / 2),
26769                             d = n(e[u]),
26770                             f = d !== J,
26771                             h = null === d,
26772                             p = d === d,
26773                             m = oa(d);
26774                         if (a) var g = r || p;
26775                         else g = l ? p && (r || f) : s ? p && f && (r || !h) : c ? p && f && !h && (r || !m) : !h && !m && (r ? d <= t : d < t);
26776                         g ? i = u + 1 : o = u
26777                     }
26778                     return $s(o, De)
26779                 }
26780
26781                 function Ir(e, t) {
26782                     for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
26783                         var a = e[n],
26784                             s = t ? t(a) : a;
26785                         if (!n || !Yo(s, c)) {
26786                             var c = s;
26787                             o[i++] = 0 === a ? 0 : a
26788                         }
26789                     }
26790                     return o
26791                 }
26792
26793                 function Rr(e) {
26794                     return "number" == typeof e ? e : oa(e) ? Ae : +e
26795                 }
26796
26797                 function Pr(e) {
26798                     if ("string" == typeof e) return e;
26799                     if (Bc(e)) return u(e, Pr) + "";
26800                     if (oa(e)) return Fs ? Fs.call(e) : "";
26801                     var t = e + "";
26802                     return "0" == t && 1 / e == -Te ? "-0" : t
26803                 }
26804
26805                 function Hr(e, t, n) {
26806                     var r = -1,
26807                         i = c,
26808                         o = e.length,
26809                         a = !0,
26810                         s = [],
26811                         u = s;
26812                     if (n) a = !1, i = l;
26813                     else if (o >= ee) {
26814                         var d = t ? null : Zs(e);
26815                         if (d) return B(d);
26816                         a = !1, i = D, u = new Zt
26817                     } else u = t ? [] : s;
26818                     e: for (; ++r < o;) {
26819                         var f = e[r],
26820                             h = t ? t(f) : f;
26821                         if (f = n || 0 !== f ? f : 0, a && h === h) {
26822                             for (var p = u.length; p--;)
26823                                 if (u[p] === h) continue e;
26824                             t && u.push(h), s.push(f)
26825                         } else i(u, h, n) || (u !== s && u.push(h), s.push(f))
26826                     }
26827                     return s
26828                 }
26829
26830                 function jr(e, t) {
26831                     return t = Wr(t, e), null == (e = vo(e, t)) || delete e[wo(Ao(t))]
26832                 }
26833
26834                 function Lr(e, t, n, r) {
26835                     return Mr(e, t, n(zn(e, t)), r)
26836                 }
26837
26838                 function Fr(e, t, n, r) {
26839                     for (var i = e.length, o = r ? i : -1;
26840                         (r ? o-- : ++o < i) && t(e[o], o, e););
26841                     return n ? Ar(e, r ? 0 : o, r ? o + 1 : i) : Ar(e, r ? o + 1 : 0, r ? i : o)
26842                 }
26843
26844                 function qr(e, t) {
26845                     var n = e;
26846                     return n instanceof Rt && (n = n.value()), f(t, function(e, t) {
26847                         return t.func.apply(t.thisArg, d([e], t.args))
26848                     }, n)
26849                 }
26850
26851                 function Ur(e, t, n) {
26852                     var r = e.length;
26853                     if (r < 2) return r ? Hr(e[0]) : [];
26854                     for (var i = -1, o = Aa(r); ++i < r;)
26855                         for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = wn(o[i] || a, e[s], t, n));
26856                     return Hr(On(o, 1), t, n)
26857                 }
26858
26859                 function Vr(e, t, n) {
26860                     for (var r = -1, i = e.length, o = t.length, a = {}; ++r < i;) {
26861                         var s = r < o ? t[r] : J;
26862                         n(a, e[r], s)
26863                     }
26864                     return a
26865                 }
26866
26867                 function Br(e) {
26868                     return Ko(e) ? e : []
26869                 }
26870
26871                 function zr(e) {
26872                     return "function" == typeof e ? e : Ea
26873                 }
26874
26875                 function Wr(e, t) {
26876                     return Bc(e) ? e : oo(e, t) ? [e] : oc(fa(e))
26877                 }
26878
26879                 function Yr(e, t, n) {
26880                     var r = e.length;
26881                     return n = n === J ? r : n, !t && n >= r ? e : Ar(e, t, n)
26882                 }
26883
26884                 function Gr(e, t) {
26885                     if (t) return e.slice();
26886                     var n = e.length,
26887                         r = es ? es(n) : new e.constructor(n);
26888                     return e.copy(r), r
26889                 }
26890
26891                 function Kr(e) {
26892                     var t = new e.constructor(e.byteLength);
26893                     return new Ja(t).set(new Ja(e)), t
26894                 }
26895
26896                 function Zr(e, t) {
26897                     var n = t ? Kr(e.buffer) : e.buffer;
26898                     return new e.constructor(n, e.byteOffset, e.byteLength)
26899                 }
26900
26901                 function Xr(t, n, r) {
26902                     return f(n ? r(q(t), ae) : q(t), e, new t.constructor)
26903                 }
26904
26905                 function Qr(e) {
26906                     var t = new e.constructor(e.source, jt.exec(e));
26907                     return t.lastIndex = e.lastIndex, t
26908                 }
26909
26910                 function Jr(e, n, r) {
26911                     return f(n ? r(B(e), ae) : B(e), t, new e.constructor)
26912                 }
26913
26914                 function ei(e) {
26915                     return Ls ? Ra(Ls.call(e)) : {}
26916                 }
26917
26918                 function ti(e, t) {
26919                     var n = t ? Kr(e.buffer) : e.buffer;
26920                     return new e.constructor(n, e.byteOffset, e.length)
26921                 }
26922
26923                 function ni(e, t) {
26924                     if (e !== t) {
26925                         var n = e !== J,
26926                             r = null === e,
26927                             i = e === e,
26928                             o = oa(e),
26929                             a = t !== J,
26930                             s = null === t,
26931                             c = t === t,
26932                             l = oa(t);
26933                         if (!s && !l && !o && e > t || o && a && c && !s && !l || r && a && c || !n && c || !i) return 1;
26934                         if (!r && !o && !l && e < t || l && n && i && !r && !o || s && n && i || !a && i || !c) return -1
26935                     }
26936                     return 0
26937                 }
26938
26939                 function ri(e, t, n) {
26940                     for (var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; ++r < a;) {
26941                         var c = ni(i[r], o[r]);
26942                         if (c) return r >= s ? c : c * ("desc" == n[r] ? -1 : 1)
26943                     }
26944                     return e.index - t.index
26945                 }
26946
26947                 function ii(e, t, n, r) {
26948                     for (var i = -1, o = e.length, a = n.length, s = -1, c = t.length, l = ys(o - a, 0), u = Aa(c + l), d = !r; ++s < c;) u[s] = t[s];
26949                     for (; ++i < a;)(d || i < o) && (u[n[i]] = e[i]);
26950                     for (; l--;) u[s++] = e[i++];
26951                     return u
26952                 }
26953
26954                 function oi(e, t, n, r) {
26955                     for (var i = -1, o = e.length, a = -1, s = n.length, c = -1, l = t.length, u = ys(o - s, 0), d = Aa(u + l), f = !r; ++i < u;) d[i] = e[i];
26956                     for (var h = i; ++c < l;) d[h + c] = t[c];
26957                     for (; ++a < s;)(f || i < o) && (d[h + n[a]] = e[i++]);
26958                     return d
26959                 }
26960
26961                 function ai(e, t) {
26962                     var n = -1,
26963                         r = e.length;
26964                     for (t || (t = Aa(r)); ++n < r;) t[n] = e[n];
26965                     return t
26966                 }
26967
26968                 function si(e, t, n, r) {
26969                     var i = !n;
26970                     n || (n = {});
26971                     for (var o = -1, a = t.length; ++o < a;) {
26972                         var s = t[o],
26973                             c = r ? r(n[s], e[s], s, n, e) : J;
26974                         c === J && (c = e[s]), i ? dn(n, s, c) : rn(n, s, c)
26975                     }
26976                     return n
26977                 }
26978
26979                 function ci(e, t) {
26980                     return si(e, Qs(e), t)
26981                 }
26982
26983                 function li(e, t) {
26984                     return si(e, Js(e), t)
26985                 }
26986
26987                 function ui(e, t) {
26988                     return function(n, i) {
26989                         var o = Bc(n) ? r : an,
26990                             a = t ? t() : {};
26991                         return o(n, e, Bi(i, 2), a)
26992                     }
26993                 }
26994
26995                 function di(e) {
26996                     return xr(function(t, n) {
26997                         var r = -1,
26998                             i = n.length,
26999                             o = i > 1 ? n[i - 1] : J,
27000                             a = i > 2 ? n[2] : J;
27001                         for (o = e.length > 3 && "function" == typeof o ? (i--, o) : J, a && io(n[0], n[1], a) && (o = i < 3 ? J : o, i = 1), t = Ra(t); ++r < i;) {
27002                             var s = n[r];
27003                             s && e(t, s, r, o)
27004                         }
27005                         return t
27006                     })
27007                 }
27008
27009                 function fi(e, t) {
27010                     return function(n, r) {
27011                         if (null == n) return n;
27012                         if (!Go(n)) return e(n, r);
27013                         for (var i = n.length, o = t ? i : -1, a = Ra(n);
27014                             (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
27015                         return n
27016                     }
27017                 }
27018
27019                 function hi(e) {
27020                     return function(t, n, r) {
27021                         for (var i = -1, o = Ra(t), a = r(t), s = a.length; s--;) {
27022                             var c = a[e ? s : ++i];
27023                             if (!1 === n(o[c], c, o)) break
27024                         }
27025                         return t
27026                     }
27027                 }
27028
27029                 function pi(e, t, n) {
27030                     function r() {
27031                         return (this && this !== Tn && this instanceof r ? o : e).apply(i ? n : this, arguments)
27032                     }
27033                     var i = t & de,
27034                         o = vi(e);
27035                     return r
27036                 }
27037
27038                 function mi(e) {
27039                     return function(t) {
27040                         var n = j(t = fa(t)) ? K(t) : J,
27041                             r = n ? n[0] : t.charAt(0),
27042                             i = n ? Yr(n, 1).join("") : t.slice(1);
27043                         return r[e]() + i
27044                     }
27045                 }
27046
27047                 function gi(e) {
27048                     return function(t) {
27049                         return f(_a($a(t).replace(ln, "")), e, "")
27050                     }
27051                 }
27052
27053                 function vi(e) {
27054                     return function() {
27055                         var t = arguments;
27056                         switch (t.length) {
27057                             case 0:
27058                                 return new e;
27059                             case 1:
27060                                 return new e(t[0]);
27061                             case 2:
27062                                 return new e(t[0], t[1]);
27063                             case 3:
27064                                 return new e(t[0], t[1], t[2]);
27065                             case 4:
27066                                 return new e(t[0], t[1], t[2], t[3]);
27067                             case 5:
27068                                 return new e(t[0], t[1], t[2], t[3], t[4]);
27069                             case 6:
27070                                 return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
27071                             case 7:
27072                                 return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
27073                         }
27074                         var n = qs(e.prototype),
27075                             r = e.apply(n, t);
27076                         return ea(r) ? r : n
27077                     }
27078                 }
27079
27080                 function bi(e, t, r) {
27081                     function i() {
27082                         for (var a = arguments.length, s = Aa(a), c = a, l = Vi(i); c--;) s[c] = arguments[c];
27083                         var u = a < 3 && s[0] !== l && s[a - 1] !== l ? [] : V(s, l);
27084                         return (a -= u.length) < r ? Si(e, t, _i, i.placeholder, J, s, u, J, J, r - a) : n(this && this !== Tn && this instanceof i ? o : e, this, s)
27085                     }
27086                     var o = vi(e);
27087                     return i
27088                 }
27089
27090                 function yi(e) {
27091                     return function(t, n, r) {
27092                         var i = Ra(t);
27093                         if (!Go(t)) {
27094                             var o = Bi(n, 3);
27095                             t = ma(t), n = function(e) {
27096                                 return o(i[e], e, i)
27097                             }
27098                         }
27099                         var a = e(t, n, r);
27100                         return a > -1 ? i[o ? t[a] : a] : J
27101                     }
27102                 }
27103
27104                 function $i(e) {
27105                     return Li(function(t) {
27106                         var n = t.length,
27107                             r = n,
27108                             i = X.prototype.thru;
27109                         for (e && t.reverse(); r--;) {
27110                             var o = t[r];
27111                             if ("function" != typeof o) throw new ja(ne);
27112                             if (i && !a && "wrapper" == Ui(o)) var a = new X([], !0)
27113                         }
27114                         for (r = a ? r : n; ++r < n;) {
27115                             var s = Ui(o = t[r]),
27116                                 c = "wrapper" == s ? Xs(o) : J;
27117                             a = c && so(c[0]) && c[1] == (be | pe | ge | ye) && !c[4].length && 1 == c[9] ? a[Ui(c[0])].apply(a, c[3]) : 1 == o.length && so(o) ? a[s]() : a.thru(o)
27118                         }
27119                         return function() {
27120                             var e = arguments,
27121                                 r = e[0];
27122                             if (a && 1 == e.length && Bc(r)) return a.plant(r).value();
27123                             for (var i = 0, o = n ? t[i].apply(this, e) : r; ++i < n;) o = t[i].call(this, o);
27124                             return o
27125                         }
27126                     })
27127                 }
27128
27129                 function _i(e, t, n, r, i, o, a, s, c, l) {
27130                     function u() {
27131                         for (var v = arguments.length, b = Aa(v), y = v; y--;) b[y] = arguments[y];
27132                         if (p) var $ = Vi(u),
27133                             _ = R(b, $);
27134                         if (r && (b = ii(b, r, i, p)), o && (b = oi(b, o, a, p)), v -= _, p && v < l) {
27135                             var w = V(b, $);
27136                             return Si(e, t, _i, u.placeholder, n, b, w, s, c, l - v)
27137                         }
27138                         var E = f ? n : this,
27139                             C = h ? E[e] : e;
27140                         return v = b.length, s ? b = bo(b, s) : m && v > 1 && b.reverse(), d && c < v && (b.length = c), this && this !== Tn && this instanceof u && (C = g || vi(C)), C.apply(E, b)
27141                     }
27142                     var d = t & be,
27143                         f = t & de,
27144                         h = t & fe,
27145                         p = t & (pe | me),
27146                         m = t & $e,
27147                         g = h ? J : vi(e);
27148                     return u
27149                 }
27150
27151                 function wi(e, t) {
27152                     return function(n, r) {
27153                         return Jn(n, e, t(r), {})
27154                     }
27155                 }
27156
27157                 function Ei(e, t) {
27158                     return function(n, r) {
27159                         var i;
27160                         if (n === J && r === J) return t;
27161                         if (n !== J && (i = n), r !== J) {
27162                             if (i === J) return r;
27163                             "string" == typeof n || "string" == typeof r ? (n = Pr(n), r = Pr(r)) : (n = Rr(n), r = Rr(r)), i = e(n, r)
27164                         }
27165                         return i
27166                     }
27167                 }
27168
27169                 function Ci(e) {
27170                     return Li(function(t) {
27171                         return t = u(t, A(Bi())), xr(function(r) {
27172                             var i = this;
27173                             return e(t, function(e) {
27174                                 return n(e, i, r)
27175                             })
27176                         })
27177                     })
27178                 }
27179
27180                 function xi(e, t) {
27181                     var n = (t = t === J ? " " : Pr(t)).length;
27182                     if (n < 2) return n ? Cr(t, e) : t;
27183                     var r = Cr(t, fs(e / G(t)));
27184                     return j(t) ? Yr(K(r), 0, e).join("") : r.slice(0, e)
27185                 }
27186
27187                 function ki(e, t, r, i) {
27188                     function o() {
27189                         for (var t = -1, c = arguments.length, l = -1, u = i.length, d = Aa(u + c), f = this && this !== Tn && this instanceof o ? s : e; ++l < u;) d[l] = i[l];
27190                         for (; c--;) d[l++] = arguments[++t];
27191                         return n(f, a ? r : this, d)
27192                     }
27193                     var a = t & de,
27194                         s = vi(e);
27195                     return o
27196                 }
27197
27198                 function Ti(e) {
27199                     return function(t, n, r) {
27200                         return r && "number" != typeof r && io(t, n, r) && (n = r = J), t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), r = r === J ? t < n ? 1 : -1 : sa(r), Er(t, n, r, e)
27201                     }
27202                 }
27203
27204                 function Mi(e) {
27205                     return function(t, n) {
27206                         return "string" == typeof t && "string" == typeof n || (t = ua(t), n = ua(n)), e(t, n)
27207                     }
27208                 }
27209
27210                 function Si(e, t, n, r, i, o, a, s, c, l) {
27211                     var u = t & pe,
27212                         d = u ? a : J,
27213                         f = u ? J : a,
27214                         h = u ? o : J,
27215                         p = u ? J : o;
27216                     t |= u ? ge : ve, (t &= ~(u ? ve : ge)) & he || (t &= ~(de | fe));
27217                     var m = [e, t, i, h, d, p, f, s, c, l],
27218                         g = n.apply(J, m);
27219                     return so(e) && nc(g, m), g.placeholder = r, yo(g, e, t)
27220                 }
27221
27222                 function Ai(e) {
27223                     var t = Ia[e];
27224                     return function(e, n) {
27225                         if (e = ua(e), n = null == n ? 0 : $s(ca(n), 292)) {
27226                             var r = (fa(e) + "e").split("e");
27227                             return +((r = (fa(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
27228                         }
27229                         return t(e)
27230                     }
27231                 }
27232
27233                 function Oi(e) {
27234                     return function(t) {
27235                         var n = ec(t);
27236                         return n == Be ? q(t) : n == Ze ? z(t) : S(t, e(t))
27237                     }
27238                 }
27239
27240                 function Di(e, t, n, r, i, o, a, s) {
27241                     var c = t & fe;
27242                     if (!c && "function" != typeof e) throw new ja(ne);
27243                     var l = r ? r.length : 0;
27244                     if (l || (t &= ~(ge | ve), r = i = J), a = a === J ? a : ys(ca(a), 0), s = s === J ? s : ca(s), l -= i ? i.length : 0, t & ve) {
27245                         var u = r,
27246                             d = i;
27247                         r = i = J
27248                     }
27249                     var f = c ? J : Xs(e),
27250                         h = [e, t, n, r, i, u, d, o, a, s];
27251                     if (f && ho(h, f), e = h[0], t = h[1], n = h[2], r = h[3], i = h[4], !(s = h[9] = h[9] === J ? c ? 0 : e.length : ys(h[9] - l, 0)) && t & (pe | me) && (t &= ~(pe | me)), t && t != de) p = t == pe || t == me ? bi(e, t, s) : t != ge && t != (de | ge) || i.length ? _i.apply(J, h) : ki(e, t, n, r);
27252                     else var p = pi(e, t, n);
27253                     return yo((f ? Ws : nc)(p, h), e, t)
27254                 }
27255
27256                 function Ni(e, t, n, r) {
27257                     return e === J || Yo(e, qa[n]) && !Ba.call(r, n) ? t : e
27258                 }
27259
27260                 function Ii(e, t, n, r, i, o) {
27261                     return ea(e) && ea(t) && (o.set(t, e), hr(e, t, J, Ii, o), o.delete(t)), e
27262                 }
27263
27264                 function Ri(e) {
27265                     return ra(e) ? J : e
27266                 }
27267
27268                 function Pi(e, t, n, r, i, o) {
27269                     var a = n & le,
27270                         s = e.length,
27271                         c = t.length;
27272                     if (s != c && !(a && c > s)) return !1;
27273                     var l = o.get(e);
27274                     if (l && o.get(t)) return l == t;
27275                     var u = -1,
27276                         d = !0,
27277                         f = n & ue ? new Zt : J;
27278                     for (o.set(e, t), o.set(t, e); ++u < s;) {
27279                         var h = e[u],
27280                             m = t[u];
27281                         if (r) var g = a ? r(m, h, u, t, e, o) : r(h, m, u, e, t, o);
27282                         if (g !== J) {
27283                             if (g) continue;
27284                             d = !1;
27285                             break
27286                         }
27287                         if (f) {
27288                             if (!p(t, function(e, t) {
27289                                     if (!D(f, t) && (h === e || i(h, e, n, r, o))) return f.push(t)
27290                                 })) {
27291                                 d = !1;
27292                                 break
27293                             }
27294                         } else if (h !== m && !i(h, m, n, r, o)) {
27295                             d = !1;
27296                             break
27297                         }
27298                     }
27299                     return o.delete(e), o.delete(t), d
27300                 }
27301
27302                 function Hi(e, t, n, r, i, o, a) {
27303                     switch (n) {
27304                         case rt:
27305                             if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
27306                             e = e.buffer, t = t.buffer;
27307                         case nt:
27308                             return !(e.byteLength != t.byteLength || !o(new Ja(e), new Ja(t)));
27309                         case je:
27310                         case Le:
27311                         case ze:
27312                             return Yo(+e, +t);
27313                         case qe:
27314                             return e.name == t.name && e.message == t.message;
27315                         case Ke:
27316                         case Xe:
27317                             return e == t + "";
27318                         case Be:
27319                             var s = q;
27320                         case Ze:
27321                             var c = r & le;
27322                             if (s || (s = B), e.size != t.size && !c) return !1;
27323                             var l = a.get(e);
27324                             if (l) return l == t;
27325                             r |= ue, a.set(e, t);
27326                             var u = Pi(s(e), s(t), r, i, o, a);
27327                             return a.delete(e), u;
27328                         case Qe:
27329                             if (Ls) return Ls.call(e) == Ls.call(t)
27330                     }
27331                     return !1
27332                 }
27333
27334                 function ji(e, t, n, r, i, o) {
27335                     var a = n & le,
27336                         s = Fi(e),
27337                         c = s.length;
27338                     if (c != Fi(t).length && !a) return !1;
27339                     for (var l = c; l--;) {
27340                         var u = s[l];
27341                         if (!(a ? u in t : Ba.call(t, u))) return !1
27342                     }
27343                     var d = o.get(e);
27344                     if (d && o.get(t)) return d == t;
27345                     var f = !0;
27346                     o.set(e, t), o.set(t, e);
27347                     for (var h = a; ++l < c;) {
27348                         var p = e[u = s[l]],
27349                             m = t[u];
27350                         if (r) var g = a ? r(m, p, u, t, e, o) : r(p, m, u, e, t, o);
27351                         if (!(g === J ? p === m || i(p, m, n, r, o) : g)) {
27352                             f = !1;
27353                             break
27354                         }
27355                         h || (h = "constructor" == u)
27356                     }
27357                     if (f && !h) {
27358                         var v = e.constructor,
27359                             b = t.constructor;
27360                         v != b && "constructor" in e && "constructor" in t && !("function" == typeof v && v instanceof v && "function" == typeof b && b instanceof b) && (f = !1)
27361                     }
27362                     return o.delete(e), o.delete(t), f
27363                 }
27364
27365                 function Li(e) {
27366                     return ic(go(e, J, Mo), e + "")
27367                 }
27368
27369                 function Fi(e) {
27370                     return Wn(e, ma, Qs)
27371                 }
27372
27373                 function qi(e) {
27374                     return Wn(e, ga, Js)
27375                 }
27376
27377                 function Ui(e) {
27378                     for (var t = e.name + "", n = Ds[t], r = Ba.call(Ds, t) ? n.length : 0; r--;) {
27379                         var i = n[r],
27380                             o = i.func;
27381                         if (null == o || o == e) return i.name
27382                     }
27383                     return t
27384                 }
27385
27386                 function Vi(e) {
27387                     return (Ba.call(W, "placeholder") ? W : e).placeholder
27388                 }
27389
27390                 function Bi() {
27391                     var e = W.iteratee || Ca;
27392                     return e = e === Ca ? ar : e, arguments.length ? e(arguments[0], arguments[1]) : e
27393                 }
27394
27395                 function zi(e, t) {
27396                     var n = e.__data__;
27397                     return ao(t) ? n["string" == typeof t ? "string" : "hash"] : n.map
27398                 }
27399
27400                 function Wi(e) {
27401                     for (var t = ma(e), n = t.length; n--;) {
27402                         var r = t[n],
27403                             i = e[r];
27404                         t[n] = [r, i, uo(i)]
27405                     }
27406                     return t
27407                 }
27408
27409                 function Yi(e, t) {
27410                     var n = H(e, t);
27411                     return or(n) ? n : J
27412                 }
27413
27414                 function Gi(e) {
27415                     var t = Ba.call(e, ss),
27416                         n = e[ss];
27417                     try {
27418                         e[ss] = J;
27419                         var r = !0
27420                     } catch (e) {}
27421                     var i = Ya.call(e);
27422                     return r && (t ? e[ss] = n : delete e[ss]), i
27423                 }
27424
27425                 function Ki(e, t, n) {
27426                     for (var r = -1, i = n.length; ++r < i;) {
27427                         var o = n[r],
27428                             a = o.size;
27429                         switch (o.type) {
27430                             case "drop":
27431                                 e += a;
27432                                 break;
27433                             case "dropRight":
27434                                 t -= a;
27435                                 break;
27436                             case "take":
27437                                 t = $s(t, e + a);
27438                                 break;
27439                             case "takeRight":
27440                                 e = ys(e, t - a)
27441                         }
27442                     }
27443                     return {
27444                         start: e,
27445                         end: t
27446                     }
27447                 }
27448
27449                 function Zi(e) {
27450                     var t = e.match(Nt);
27451                     return t ? t[1].split(It) : []
27452                 }
27453
27454                 function Xi(e, t, n) {
27455                     for (var r = -1, i = (t = Wr(t, e)).length, o = !1; ++r < i;) {
27456                         var a = wo(t[r]);
27457                         if (!(o = null != e && n(e, a))) break;
27458                         e = e[a]
27459                     }
27460                     return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Jo(i) && ro(a, i) && (Bc(e) || Vc(e))
27461                 }
27462
27463                 function Qi(e) {
27464                     var t = e.length,
27465                         n = e.constructor(t);
27466                     return t && "string" == typeof e[0] && Ba.call(e, "index") && (n.index = e.index, n.input = e.input), n
27467                 }
27468
27469                 function Ji(e) {
27470                     return "function" != typeof e.constructor || lo(e) ? {} : qs(ts(e))
27471                 }
27472
27473                 function eo(e, t, n, r) {
27474                     var i = e.constructor;
27475                     switch (t) {
27476                         case nt:
27477                             return Kr(e);
27478                         case je:
27479                         case Le:
27480                             return new i(+e);
27481                         case rt:
27482                             return Zr(e, r);
27483                         case it:
27484                         case ot:
27485                         case at:
27486                         case st:
27487                         case ct:
27488                         case lt:
27489                         case ut:
27490                         case dt:
27491                         case ft:
27492                             return ti(e, r);
27493                         case Be:
27494                             return Xr(e, r, n);
27495                         case ze:
27496                         case Xe:
27497                             return new i(e);
27498                         case Ke:
27499                             return Qr(e);
27500                         case Ze:
27501                             return Jr(e, r, n);
27502                         case Qe:
27503                             return ei(e)
27504                     }
27505                 }
27506
27507                 function to(e, t) {
27508                     var n = t.length;
27509                     if (!n) return e;
27510                     var r = n - 1;
27511                     return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(Dt, "{\n/* [wrapped with " + t + "] */\n")
27512                 }
27513
27514                 function no(e) {
27515                     return Bc(e) || Vc(e) || !!(os && e && e[os])
27516                 }
27517
27518                 function ro(e, t) {
27519                     return !!(t = null == t ? Me : t) && ("number" == typeof e || Vt.test(e)) && e > -1 && e % 1 == 0 && e < t
27520                 }
27521
27522                 function io(e, t, n) {
27523                     if (!ea(n)) return !1;
27524                     var r = typeof t;
27525                     return !!("number" == r ? Go(n) && ro(t, n.length) : "string" == r && t in n) && Yo(n[t], e)
27526                 }
27527
27528                 function oo(e, t) {
27529                     if (Bc(e)) return !1;
27530                     var n = typeof e;
27531                     return !("number" != n && "symbol" != n && "boolean" != n && null != e && !oa(e)) || Ct.test(e) || !Et.test(e) || null != t && e in Ra(t)
27532                 }
27533
27534                 function ao(e) {
27535                     var t = typeof e;
27536                     return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e
27537                 }
27538
27539                 function so(e) {
27540                     var t = Ui(e),
27541                         n = W[t];
27542                     if ("function" != typeof n || !(t in Rt.prototype)) return !1;
27543                     if (e === n) return !0;
27544                     var r = Xs(n);
27545                     return !!r && e === r[0]
27546                 }
27547
27548                 function co(e) {
27549                     return !!Wa && Wa in e
27550                 }
27551
27552                 function lo(e) {
27553                     var t = e && e.constructor;
27554                     return e === ("function" == typeof t && t.prototype || qa)
27555                 }
27556
27557                 function uo(e) {
27558                     return e === e && !ea(e)
27559                 }
27560
27561                 function fo(e, t) {
27562                     return function(n) {
27563                         return null != n && n[e] === t && (t !== J || e in Ra(n))
27564                     }
27565                 }
27566
27567                 function ho(e, t) {
27568                     var n = e[1],
27569                         r = t[1],
27570                         i = n | r,
27571                         o = i < (de | fe | be),
27572                         a = r == be && n == pe || r == be && n == ye && e[7].length <= t[8] || r == (be | ye) && t[7].length <= t[8] && n == pe;
27573                     if (!o && !a) return e;
27574                     r & de && (e[2] = t[2], i |= n & de ? 0 : he);
27575                     var s = t[3];
27576                     if (s) {
27577                         var c = e[3];
27578                         e[3] = c ? ii(c, s, t[4]) : s, e[4] = c ? V(e[3], oe) : t[4]
27579                     }
27580                     return (s = t[5]) && (c = e[5], e[5] = c ? oi(c, s, t[6]) : s, e[6] = c ? V(e[5], oe) : t[6]), (s = t[7]) && (e[7] = s), r & be && (e[8] = null == e[8] ? t[8] : $s(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i, e
27581                 }
27582
27583                 function po(e) {
27584                     var t = [];
27585                     if (null != e)
27586                         for (var n in Ra(e)) t.push(n);
27587                     return t
27588                 }
27589
27590                 function mo(e) {
27591                     return Ya.call(e)
27592                 }
27593
27594                 function go(e, t, r) {
27595                     return t = ys(t === J ? e.length - 1 : t, 0),
27596                         function() {
27597                             for (var i = arguments, o = -1, a = ys(i.length - t, 0), s = Aa(a); ++o < a;) s[o] = i[t + o];
27598                             o = -1;
27599                             for (var c = Aa(t + 1); ++o < t;) c[o] = i[o];
27600                             return c[t] = r(s), n(e, this, c)
27601                         }
27602                 }
27603
27604                 function vo(e, t) {
27605                     return t.length < 2 ? e : zn(e, Ar(t, 0, -1))
27606                 }
27607
27608                 function bo(e, t) {
27609                     for (var n = e.length, r = $s(t.length, n), i = ai(e); r--;) {
27610                         var o = t[r];
27611                         e[r] = ro(o, n) ? i[o] : J
27612                     }
27613                     return e
27614                 }
27615
27616                 function yo(e, t, n) {
27617                     var r = t + "";
27618                     return ic(e, to(r, Co(Zi(r), n)))
27619                 }
27620
27621                 function $o(e) {
27622                     var t = 0,
27623                         n = 0;
27624                     return function() {
27625                         var r = _s(),
27626                             i = Ce - (r - n);
27627                         if (n = r, i > 0) {
27628                             if (++t >= Ee) return arguments[0]
27629                         } else t = 0;
27630                         return e.apply(J, arguments)
27631                     }
27632                 }
27633
27634                 function _o(e, t) {
27635                     var n = -1,
27636                         r = e.length,
27637                         i = r - 1;
27638                     for (t = t === J ? r : t; ++n < t;) {
27639                         var o = wr(n, i),
27640                             a = e[o];
27641                         e[o] = e[n], e[n] = a
27642                     }
27643                     return e.length = t, e
27644                 }
27645
27646                 function wo(e) {
27647                     if ("string" == typeof e || oa(e)) return e;
27648                     var t = e + "";
27649                     return "0" == t && 1 / e == -Te ? "-0" : t
27650                 }
27651
27652                 function Eo(e) {
27653                     if (null != e) {
27654                         try {
27655                             return Va.call(e)
27656                         } catch (e) {}
27657                         try {
27658                             return e + ""
27659                         } catch (e) {}
27660                     }
27661                     return ""
27662                 }
27663
27664                 function Co(e, t) {
27665                     return i(Ie, function(n) {
27666                         var r = "_." + n[0];
27667                         t & n[1] && !c(e, r) && e.push(r)
27668                     }), e.sort()
27669                 }
27670
27671                 function xo(e) {
27672                     if (e instanceof Rt) return e.clone();
27673                     var t = new X(e.__wrapped__, e.__chain__);
27674                     return t.__actions__ = ai(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
27675                 }
27676
27677                 function ko(e, t, n) {
27678                     var r = null == e ? 0 : e.length;
27679                     if (!r) return -1;
27680                     var i = null == n ? 0 : ca(n);
27681                     return i < 0 && (i = ys(r + i, 0)), b(e, Bi(t, 3), i)
27682                 }
27683
27684                 function To(e, t, n) {
27685                     var r = null == e ? 0 : e.length;
27686                     if (!r) return -1;
27687                     var i = r - 1;
27688                     return n !== J && (i = ca(n), i = n < 0 ? ys(r + i, 0) : $s(i, r - 1)), b(e, Bi(t, 3), i, !0)
27689                 }
27690
27691                 function Mo(e) {
27692                     return (null == e ? 0 : e.length) ? On(e, 1) : []
27693                 }
27694
27695                 function So(e) {
27696                     return e && e.length ? e[0] : J
27697                 }
27698
27699                 function Ao(e) {
27700                     var t = null == e ? 0 : e.length;
27701                     return t ? e[t - 1] : J
27702                 }
27703
27704                 function Oo(e, t) {
27705                     return e && e.length && t && t.length ? $r(e, t) : e
27706                 }
27707
27708                 function Do(e) {
27709                     return null == e ? e : Cs.call(e)
27710                 }
27711
27712                 function No(e) {
27713                     if (!e || !e.length) return [];
27714                     var t = 0;
27715                     return e = s(e, function(e) {
27716                         if (Ko(e)) return t = ys(e.length, t), !0
27717                     }), M(t, function(t) {
27718                         return u(e, E(t))
27719                     })
27720                 }
27721
27722                 function Io(e, t) {
27723                     if (!e || !e.length) return [];
27724                     var r = No(e);
27725                     return null == t ? r : u(r, function(e) {
27726                         return n(t, J, e)
27727                     })
27728                 }
27729
27730                 function Ro(e) {
27731                     var t = W(e);
27732                     return t.__chain__ = !0, t
27733                 }
27734
27735                 function Po(e, t) {
27736                     return t(e)
27737                 }
27738
27739                 function Ho(e, t) {
27740                     return (Bc(e) ? i : Us)(e, Bi(t, 3))
27741                 }
27742
27743                 function jo(e, t) {
27744                     return (Bc(e) ? o : Vs)(e, Bi(t, 3))
27745                 }
27746
27747                 function Lo(e, t) {
27748                     return (Bc(e) ? u : ur)(e, Bi(t, 3))
27749                 }
27750
27751                 function Fo(e, t, n) {
27752                     return t = n ? J : t, t = e && null == t ? e.length : t, Di(e, be, J, J, J, J, t)
27753                 }
27754
27755                 function qo(e, t) {
27756                     var n;
27757                     if ("function" != typeof t) throw new ja(ne);
27758                     return e = ca(e),
27759                         function() {
27760                             return --e > 0 && (n = t.apply(this, arguments)), e <= 1 && (t = J), n
27761                         }
27762                 }
27763
27764                 function Uo(e, t, n) {
27765                     var r = Di(e, pe, J, J, J, J, J, t = n ? J : t);
27766                     return r.placeholder = Uo.placeholder, r
27767                 }
27768
27769                 function Vo(e, t, n) {
27770                     var r = Di(e, me, J, J, J, J, J, t = n ? J : t);
27771                     return r.placeholder = Vo.placeholder, r
27772                 }
27773
27774                 function Bo(e, t, n) {
27775                     function r(t) {
27776                         var n = u,
27777                             r = d;
27778                         return u = d = J, g = t, h = e.apply(r, n)
27779                     }
27780
27781                     function i(e) {
27782                         return g = e, p = rc(s, t), v ? r(e) : h
27783                     }
27784
27785                     function o(e) {
27786                         var n = e - g,
27787                             r = t - (e - m);
27788                         return b ? $s(r, f - n) : r
27789                     }
27790
27791                     function a(e) {
27792                         var n = e - m,
27793                             r = e - g;
27794                         return m === J || n >= t || n < 0 || b && r >= f
27795                     }
27796
27797                     function s() {
27798                         var e = Dc();
27799                         if (a(e)) return c(e);
27800                         p = rc(s, o(e))
27801                     }
27802
27803                     function c(e) {
27804                         return p = J, y && u ? r(e) : (u = d = J, h)
27805                     }
27806
27807                     function l() {
27808                         var e = Dc(),
27809                             n = a(e);
27810                         if (u = arguments, d = this, m = e, n) {
27811                             if (p === J) return i(m);
27812                             if (b) return p = rc(s, t), r(m)
27813                         }
27814                         return p === J && (p = rc(s, t)), h
27815                     }
27816                     var u, d, f, h, p, m, g = 0,
27817                         v = !1,
27818                         b = !1,
27819                         y = !0;
27820                     if ("function" != typeof e) throw new ja(ne);
27821                     return t = ua(t) || 0, ea(n) && (v = !!n.leading, f = (b = "maxWait" in n) ? ys(ua(n.maxWait) || 0, t) : f, y = "trailing" in n ? !!n.trailing : y), l.cancel = function() {
27822                         p !== J && Ks(p), g = 0, u = m = d = p = J
27823                     }, l.flush = function() {
27824                         return p === J ? h : c(Dc())
27825                     }, l
27826                 }
27827
27828                 function zo(e, t) {
27829                     if ("function" != typeof e || null != t && "function" != typeof t) throw new ja(ne);
27830                     var n = function() {
27831                         var r = arguments,
27832                             i = t ? t.apply(this, r) : r[0],
27833                             o = n.cache;
27834                         if (o.has(i)) return o.get(i);
27835                         var a = e.apply(this, r);
27836                         return n.cache = o.set(i, a) || o, a
27837                     };
27838                     return n.cache = new(zo.Cache || Kt), n
27839                 }
27840
27841                 function Wo(e) {
27842                     if ("function" != typeof e) throw new ja(ne);
27843                     return function() {
27844                         var t = arguments;
27845                         switch (t.length) {
27846                             case 0:
27847                                 return !e.call(this);
27848                             case 1:
27849                                 return !e.call(this, t[0]);
27850                             case 2:
27851                                 return !e.call(this, t[0], t[1]);
27852                             case 3:
27853                                 return !e.call(this, t[0], t[1], t[2])
27854                         }
27855                         return !e.apply(this, t)
27856                     }
27857                 }
27858
27859                 function Yo(e, t) {
27860                     return e === t || e !== e && t !== t
27861                 }
27862
27863                 function Go(e) {
27864                     return null != e && Jo(e.length) && !Xo(e)
27865                 }
27866
27867                 function Ko(e) {
27868                     return ta(e) && Go(e)
27869                 }
27870
27871                 function Zo(e) {
27872                     if (!ta(e)) return !1;
27873                     var t = Yn(e);
27874                     return t == qe || t == Fe || "string" == typeof e.message && "string" == typeof e.name && !ra(e)
27875                 }
27876
27877                 function Xo(e) {
27878                     if (!ea(e)) return !1;
27879                     var t = Yn(e);
27880                     return t == Ue || t == Ve || t == He || t == Ge
27881                 }
27882
27883                 function Qo(e) {
27884                     return "number" == typeof e && e == ca(e)
27885                 }
27886
27887                 function Jo(e) {
27888                     return "number" == typeof e && e > -1 && e % 1 == 0 && e <= Me
27889                 }
27890
27891                 function ea(e) {
27892                     var t = typeof e;
27893                     return null != e && ("object" == t || "function" == t)
27894                 }
27895
27896                 function ta(e) {
27897                     return null != e && "object" == typeof e
27898                 }
27899
27900                 function na(e) {
27901                     return "number" == typeof e || ta(e) && Yn(e) == ze
27902                 }
27903
27904                 function ra(e) {
27905                     if (!ta(e) || Yn(e) != Ye) return !1;
27906                     var t = ts(e);
27907                     if (null === t) return !0;
27908                     var n = Ba.call(t, "constructor") && t.constructor;
27909                     return "function" == typeof n && n instanceof n && Va.call(n) == Ga
27910                 }
27911
27912                 function ia(e) {
27913                     return "string" == typeof e || !Bc(e) && ta(e) && Yn(e) == Xe
27914                 }
27915
27916                 function oa(e) {
27917                     return "symbol" == typeof e || ta(e) && Yn(e) == Qe
27918                 }
27919
27920                 function aa(e) {
27921                     if (!e) return [];
27922                     if (Go(e)) return ia(e) ? K(e) : ai(e);
27923                     if (as && e[as]) return F(e[as]());
27924                     var t = ec(e);
27925                     return (t == Be ? q : t == Ze ? B : ba)(e)
27926                 }
27927
27928                 function sa(e) {
27929                     return e ? (e = ua(e)) === Te || e === -Te ? (e < 0 ? -1 : 1) * Se : e === e ? e : 0 : 0 === e ? e : 0
27930                 }
27931
27932                 function ca(e) {
27933                     var t = sa(e),
27934                         n = t % 1;
27935                     return t === t ? n ? t - n : t : 0
27936                 }
27937
27938                 function la(e) {
27939                     return e ? hn(ca(e), 0, Oe) : 0
27940                 }
27941
27942                 function ua(e) {
27943                     if ("number" == typeof e) return e;
27944                     if (oa(e)) return Ae;
27945                     if (ea(e)) {
27946                         var t = "function" == typeof e.valueOf ? e.valueOf() : e;
27947                         e = ea(t) ? t + "" : t
27948                     }
27949                     if ("string" != typeof e) return 0 === e ? e : +e;
27950                     e = e.replace(St, "");
27951                     var n = Ft.test(e);
27952                     return n || Ut.test(e) ? Cn(e.slice(2), n ? 2 : 8) : Lt.test(e) ? Ae : +e
27953                 }
27954
27955                 function da(e) {
27956                     return si(e, ga(e))
27957                 }
27958
27959                 function fa(e) {
27960                     return null == e ? "" : Pr(e)
27961                 }
27962
27963                 function ha(e, t, n) {
27964                     var r = null == e ? J : zn(e, t);
27965                     return r === J ? n : r
27966                 }
27967
27968                 function pa(e, t) {
27969                     return null != e && Xi(e, t, Zn)
27970                 }
27971
27972                 function ma(e) {
27973                     return Go(e) ? Qt(e) : sr(e)
27974                 }
27975
27976                 function ga(e) {
27977                     return Go(e) ? Qt(e, !0) : cr(e)
27978                 }
27979
27980                 function va(e, t) {
27981                     if (null == e) return {};
27982                     var n = u(qi(e), function(e) {
27983                         return [e]
27984                     });
27985                     return t = Bi(t), br(e, n, function(e, n) {
27986                         return t(e, n[0])
27987                     })
27988                 }
27989
27990                 function ba(e) {
27991                     return null == e ? [] : O(e, ma(e))
27992                 }
27993
27994                 function ya(e) {
27995                     return El(fa(e).toLowerCase())
27996                 }
27997
27998                 function $a(e) {
27999                     return (e = fa(e)) && e.replace(Bt, Fn).replace(un, "")
28000                 }
28001
28002                 function _a(e, t, n) {
28003                     return e = fa(e), (t = n ? J : t) === J ? L(e) ? Q(e) : g(e) : e.match(t) || []
28004                 }
28005
28006                 function wa(e) {
28007                     return function() {
28008                         return e
28009                     }
28010                 }
28011
28012                 function Ea(e) {
28013                     return e
28014                 }
28015
28016                 function Ca(e) {
28017                     return ar("function" == typeof e ? e : pn(e, ae))
28018                 }
28019
28020                 function xa(e, t, n) {
28021                     var r = ma(t),
28022                         o = Bn(t, r);
28023                     null != n || ea(t) && (o.length || !r.length) || (n = t, t = e, e = this, o = Bn(t, ma(t)));
28024                     var a = !(ea(n) && "chain" in n && !n.chain),
28025                         s = Xo(e);
28026                     return i(o, function(n) {
28027                         var r = t[n];
28028                         e[n] = r, s && (e.prototype[n] = function() {
28029                             var t = this.__chain__;
28030                             if (a || t) {
28031                                 var n = e(this.__wrapped__);
28032                                 return (n.__actions__ = ai(this.__actions__)).push({
28033                                     func: r,
28034                                     args: arguments,
28035                                     thisArg: e
28036                                 }), n.__chain__ = t, n
28037                             }
28038                             return r.apply(e, d([this.value()], arguments))
28039                         })
28040                     }), e
28041                 }
28042
28043                 function ka() {}
28044
28045                 function Ta(e) {
28046                     return oo(e) ? E(wo(e)) : yr(e)
28047                 }
28048
28049                 function Ma() {
28050                     return []
28051                 }
28052
28053                 function Sa() {
28054                     return !1
28055                 }
28056                 var Aa = (C = null == C ? Tn : Vn.defaults(Tn.Object(), C, Vn.pick(Tn, mn))).Array,
28057                     Oa = C.Date,
28058                     Da = C.Error,
28059                     Na = C.Function,
28060                     Ia = C.Math,
28061                     Ra = C.Object,
28062                     Pa = C.RegExp,
28063                     Ha = C.String,
28064                     ja = C.TypeError,
28065                     La = Aa.prototype,
28066                     Fa = Na.prototype,
28067                     qa = Ra.prototype,
28068                     Ua = C["__core-js_shared__"],
28069                     Va = Fa.toString,
28070                     Ba = qa.hasOwnProperty,
28071                     za = 0,
28072                     Wa = function() {
28073                         var e = /[^.]+$/.exec(Ua && Ua.keys && Ua.keys.IE_PROTO || "");
28074                         return e ? "Symbol(src)_1." + e : ""
28075                     }(),
28076                     Ya = qa.toString,
28077                     Ga = Va.call(Ra),
28078                     Ka = Tn._,
28079                     Za = Pa("^" + Va.call(Ba).replace(Tt, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
28080                     Xa = An ? C.Buffer : J,
28081                     Qa = C.Symbol,
28082                     Ja = C.Uint8Array,
28083                     es = Xa ? Xa.allocUnsafe : J,
28084                     ts = U(Ra.getPrototypeOf, Ra),
28085                     ns = Ra.create,
28086                     rs = qa.propertyIsEnumerable,
28087                     is = La.splice,
28088                     os = Qa ? Qa.isConcatSpreadable : J,
28089                     as = Qa ? Qa.iterator : J,
28090                     ss = Qa ? Qa.toStringTag : J,
28091                     cs = function() {
28092                         try {
28093                             var e = Yi(Ra, "defineProperty");
28094                             return e({}, "", {}), e
28095                         } catch (e) {}
28096                     }(),
28097                     ls = C.clearTimeout !== Tn.clearTimeout && C.clearTimeout,
28098                     us = Oa && Oa.now !== Tn.Date.now && Oa.now,
28099                     ds = C.setTimeout !== Tn.setTimeout && C.setTimeout,
28100                     fs = Ia.ceil,
28101                     hs = Ia.floor,
28102                     ps = Ra.getOwnPropertySymbols,
28103                     ms = Xa ? Xa.isBuffer : J,
28104                     gs = C.isFinite,
28105                     vs = La.join,
28106                     bs = U(Ra.keys, Ra),
28107                     ys = Ia.max,
28108                     $s = Ia.min,
28109                     _s = Oa.now,
28110                     ws = C.parseInt,
28111                     Es = Ia.random,
28112                     Cs = La.reverse,
28113                     xs = Yi(C, "DataView"),
28114                     ks = Yi(C, "Map"),
28115                     Ts = Yi(C, "Promise"),
28116                     Ms = Yi(C, "Set"),
28117                     Ss = Yi(C, "WeakMap"),
28118                     As = Yi(Ra, "create"),
28119                     Os = Ss && new Ss,
28120                     Ds = {},
28121                     Ns = Eo(xs),
28122                     Is = Eo(ks),
28123                     Rs = Eo(Ts),
28124                     Ps = Eo(Ms),
28125                     Hs = Eo(Ss),
28126                     js = Qa ? Qa.prototype : J,
28127                     Ls = js ? js.valueOf : J,
28128                     Fs = js ? js.toString : J,
28129                     qs = function() {
28130                         function e() {}
28131                         return function(t) {
28132                             if (!ea(t)) return {};
28133                             if (ns) return ns(t);
28134                             e.prototype = t;
28135                             var n = new e;
28136                             return e.prototype = J, n
28137                         }
28138                     }();
28139                 W.templateSettings = {
28140                     escape: $t,
28141                     evaluate: _t,
28142                     interpolate: wt,
28143                     variable: "",
28144                     imports: {
28145                         _: W
28146                     }
28147                 }, W.prototype = Z.prototype, W.prototype.constructor = W, X.prototype = qs(Z.prototype), X.prototype.constructor = X, Rt.prototype = qs(Z.prototype), Rt.prototype.constructor = Rt, Yt.prototype.clear = function() {
28148                     this.__data__ = As ? As(null) : {}, this.size = 0
28149                 }, Yt.prototype.delete = function(e) {
28150                     var t = this.has(e) && delete this.__data__[e];
28151                     return this.size -= t ? 1 : 0, t
28152                 }, Yt.prototype.get = function(e) {
28153                     var t = this.__data__;
28154                     if (As) {
28155                         var n = t[e];
28156                         return n === re ? J : n
28157                     }
28158                     return Ba.call(t, e) ? t[e] : J
28159                 }, Yt.prototype.has = function(e) {
28160                     var t = this.__data__;
28161                     return As ? t[e] !== J : Ba.call(t, e)
28162                 }, Yt.prototype.set = function(e, t) {
28163                     var n = this.__data__;
28164                     return this.size += this.has(e) ? 0 : 1, n[e] = As && t === J ? re : t, this
28165                 }, Gt.prototype.clear = function() {
28166                     this.__data__ = [], this.size = 0
28167                 }, Gt.prototype.delete = function(e) {
28168                     var t = this.__data__,
28169                         n = on(t, e);
28170                     return !(n < 0 || (n == t.length - 1 ? t.pop() : is.call(t, n, 1), --this.size, 0))
28171                 }, Gt.prototype.get = function(e) {
28172                     var t = this.__data__,
28173                         n = on(t, e);
28174                     return n < 0 ? J : t[n][1]
28175                 }, Gt.prototype.has = function(e) {
28176                     return on(this.__data__, e) > -1
28177                 }, Gt.prototype.set = function(e, t) {
28178                     var n = this.__data__,
28179                         r = on(n, e);
28180                     return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
28181                 }, Kt.prototype.clear = function() {
28182                     this.size = 0, this.__data__ = {
28183                         hash: new Yt,
28184                         map: new(ks || Gt),
28185                         string: new Yt
28186                     }
28187                 }, Kt.prototype.delete = function(e) {
28188                     var t = zi(this, e).delete(e);
28189                     return this.size -= t ? 1 : 0, t
28190                 }, Kt.prototype.get = function(e) {
28191                     return zi(this, e).get(e)
28192                 }, Kt.prototype.has = function(e) {
28193                     return zi(this, e).has(e)
28194                 }, Kt.prototype.set = function(e, t) {
28195                     var n = zi(this, e),
28196                         r = n.size;
28197                     return n.set(e, t), this.size += n.size == r ? 0 : 1, this
28198                 }, Zt.prototype.add = Zt.prototype.push = function(e) {
28199                     return this.__data__.set(e, re), this
28200                 }, Zt.prototype.has = function(e) {
28201                     return this.__data__.has(e)
28202                 }, Xt.prototype.clear = function() {
28203                     this.__data__ = new Gt, this.size = 0
28204                 }, Xt.prototype.delete = function(e) {
28205                     var t = this.__data__,
28206                         n = t.delete(e);
28207                     return this.size = t.size, n
28208                 }, Xt.prototype.get = function(e) {
28209                     return this.__data__.get(e)
28210                 }, Xt.prototype.has = function(e) {
28211                     return this.__data__.has(e)
28212                 }, Xt.prototype.set = function(e, t) {
28213                     var n = this.__data__;
28214                     if (n instanceof Gt) {
28215                         var r = n.__data__;
28216                         if (!ks || r.length < ee - 1) return r.push([e, t]), this.size = ++n.size, this;
28217                         n = this.__data__ = new Kt(r)
28218                     }
28219                     return n.set(e, t), this.size = n.size, this
28220                 };
28221                 var Us = fi(Dn),
28222                     Vs = fi(Ln, !0),
28223                     Bs = hi(),
28224                     zs = hi(!0),
28225                     Ws = Os ? function(e, t) {
28226                         return Os.set(e, t), e
28227                     } : Ea,
28228                     Ys = cs ? function(e, t) {
28229                         return cs(e, "toString", {
28230                             configurable: !0,
28231                             enumerable: !1,
28232                             value: wa(t),
28233                             writable: !0
28234                         })
28235                     } : Ea,
28236                     Gs = xr,
28237                     Ks = ls || function(e) {
28238                         return Tn.clearTimeout(e)
28239                     },
28240                     Zs = Ms && 1 / B(new Ms([, -0]))[1] == Te ? function(e) {
28241                         return new Ms(e)
28242                     } : ka,
28243                     Xs = Os ? function(e) {
28244                         return Os.get(e)
28245                     } : ka,
28246                     Qs = ps ? function(e) {
28247                         return null == e ? [] : (e = Ra(e), s(ps(e), function(t) {
28248                             return rs.call(e, t)
28249                         }))
28250                     } : Ma,
28251                     Js = ps ? function(e) {
28252                         for (var t = []; e;) d(t, Qs(e)), e = ts(e);
28253                         return t
28254                     } : Ma,
28255                     ec = Yn;
28256                 (xs && ec(new xs(new ArrayBuffer(1))) != rt || ks && ec(new ks) != Be || Ts && "[object Promise]" != ec(Ts.resolve()) || Ms && ec(new Ms) != Ze || Ss && ec(new Ss) != et) && (ec = function(e) {
28257                     var t = Yn(e),
28258                         n = t == Ye ? e.constructor : J,
28259                         r = n ? Eo(n) : "";
28260                     if (r) switch (r) {
28261                         case Ns:
28262                             return rt;
28263                         case Is:
28264                             return Be;
28265                         case Rs:
28266                             return "[object Promise]";
28267                         case Ps:
28268                             return Ze;
28269                         case Hs:
28270                             return et
28271                     }
28272                     return t
28273                 });
28274                 var tc = Ua ? Xo : Sa,
28275                     nc = $o(Ws),
28276                     rc = ds || function(e, t) {
28277                         return Tn.setTimeout(e, t)
28278                     },
28279                     ic = $o(Ys),
28280                     oc = function(e) {
28281                         var t = zo(e, function(e) {
28282                                 return n.size === ie && n.clear(), e
28283                             }),
28284                             n = t.cache;
28285                         return t
28286                     }(function(e) {
28287                         var t = [];
28288                         return xt.test(e) && t.push(""), e.replace(kt, function(e, n, r, i) {
28289                             t.push(r ? i.replace(Pt, "$1") : n || e)
28290                         }), t
28291                     }),
28292                     ac = xr(function(e, t) {
28293                         return Ko(e) ? wn(e, On(t, 1, Ko, !0)) : []
28294                     }),
28295                     sc = xr(function(e, t) {
28296                         var n = Ao(t);
28297                         return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), Bi(n, 2)) : []
28298                     }),
28299                     cc = xr(function(e, t) {
28300                         var n = Ao(t);
28301                         return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), J, n) : []
28302                     }),
28303                     lc = xr(function(e) {
28304                         var t = u(e, Br);
28305                         return t.length && t[0] === e[0] ? Qn(t) : []
28306                     }),
28307                     uc = xr(function(e) {
28308                         var t = Ao(e),
28309                             n = u(e, Br);
28310                         return t === Ao(n) ? t = J : n.pop(), n.length && n[0] === e[0] ? Qn(n, Bi(t, 2)) : []
28311                     }),
28312                     dc = xr(function(e) {
28313                         var t = Ao(e),
28314                             n = u(e, Br);
28315                         return (t = "function" == typeof t ? t : J) && n.pop(), n.length && n[0] === e[0] ? Qn(n, J, t) : []
28316                     }),
28317                     fc = xr(Oo),
28318                     hc = Li(function(e, t) {
28319                         var n = null == e ? 0 : e.length,
28320                             r = fn(e, t);
28321                         return _r(e, u(t, function(e) {
28322                             return ro(e, n) ? +e : e
28323                         }).sort(ni)), r
28324                     }),
28325                     pc = xr(function(e) {
28326                         return Hr(On(e, 1, Ko, !0))
28327                     }),
28328                     mc = xr(function(e) {
28329                         var t = Ao(e);
28330                         return Ko(t) && (t = J), Hr(On(e, 1, Ko, !0), Bi(t, 2))
28331                     }),
28332                     gc = xr(function(e) {
28333                         var t = Ao(e);
28334                         return t = "function" == typeof t ? t : J, Hr(On(e, 1, Ko, !0), J, t)
28335                     }),
28336                     vc = xr(function(e, t) {
28337                         return Ko(e) ? wn(e, t) : []
28338                     }),
28339                     bc = xr(function(e) {
28340                         return Ur(s(e, Ko))
28341                     }),
28342                     yc = xr(function(e) {
28343                         var t = Ao(e);
28344                         return Ko(t) && (t = J), Ur(s(e, Ko), Bi(t, 2))
28345                     }),
28346                     $c = xr(function(e) {
28347                         var t = Ao(e);
28348                         return t = "function" == typeof t ? t : J, Ur(s(e, Ko), J, t)
28349                     }),
28350                     _c = xr(No),
28351                     wc = xr(function(e) {
28352                         var t = e.length,
28353                             n = t > 1 ? e[t - 1] : J;
28354                         return n = "function" == typeof n ? (e.pop(), n) : J, Io(e, n)
28355                     }),
28356                     Ec = Li(function(e) {
28357                         var t = e.length,
28358                             n = t ? e[0] : 0,
28359                             r = this.__wrapped__,
28360                             i = function(t) {
28361                                 return fn(t, e)
28362                             };
28363                         return !(t > 1 || this.__actions__.length) && r instanceof Rt && ro(n) ? ((r = r.slice(n, +n + (t ? 1 : 0))).__actions__.push({
28364                             func: Po,
28365                             args: [i],
28366                             thisArg: J
28367                         }), new X(r, this.__chain__).thru(function(e) {
28368                             return t && !e.length && e.push(J), e
28369                         })) : this.thru(i)
28370                     }),
28371                     Cc = ui(function(e, t, n) {
28372                         Ba.call(e, n) ? ++e[n] : dn(e, n, 1)
28373                     }),
28374                     xc = yi(ko),
28375                     kc = yi(To),
28376                     Tc = ui(function(e, t, n) {
28377                         Ba.call(e, n) ? e[n].push(t) : dn(e, n, [t])
28378                     }),
28379                     Mc = xr(function(e, t, r) {
28380                         var i = -1,
28381                             o = "function" == typeof t,
28382                             a = Go(e) ? Aa(e.length) : [];
28383                         return Us(e, function(e) {
28384                             a[++i] = o ? n(t, e, r) : er(e, t, r)
28385                         }), a
28386                     }),
28387                     Sc = ui(function(e, t, n) {
28388                         dn(e, n, t)
28389                     }),
28390                     Ac = ui(function(e, t, n) {
28391                         e[n ? 0 : 1].push(t)
28392                     }, function() {
28393                         return [
28394                             [],
28395                             []
28396                         ]
28397                     }),
28398                     Oc = xr(function(e, t) {
28399                         if (null == e) return [];
28400                         var n = t.length;
28401                         return n > 1 && io(e, t[0], t[1]) ? t = [] : n > 2 && io(t[0], t[1], t[2]) && (t = [t[0]]), gr(e, On(t, 1), [])
28402                     }),
28403                     Dc = us || function() {
28404                         return Tn.Date.now()
28405                     },
28406                     Nc = xr(function(e, t, n) {
28407                         var r = de;
28408                         if (n.length) {
28409                             var i = V(n, Vi(Nc));
28410                             r |= ge
28411                         }
28412                         return Di(e, r, t, n, i)
28413                     }),
28414                     Ic = xr(function(e, t, n) {
28415                         var r = de | fe;
28416                         if (n.length) {
28417                             var i = V(n, Vi(Ic));
28418                             r |= ge
28419                         }
28420                         return Di(t, r, e, n, i)
28421                     }),
28422                     Rc = xr(function(e, t) {
28423                         return _n(e, 1, t)
28424                     }),
28425                     Pc = xr(function(e, t, n) {
28426                         return _n(e, ua(t) || 0, n)
28427                     });
28428                 zo.Cache = Kt;
28429                 var Hc = Gs(function(e, t) {
28430                         var r = (t = 1 == t.length && Bc(t[0]) ? u(t[0], A(Bi())) : u(On(t, 1), A(Bi()))).length;
28431                         return xr(function(i) {
28432                             for (var o = -1, a = $s(i.length, r); ++o < a;) i[o] = t[o].call(this, i[o]);
28433                             return n(e, this, i)
28434                         })
28435                     }),
28436                     jc = xr(function(e, t) {
28437                         var n = V(t, Vi(jc));
28438                         return Di(e, ge, J, t, n)
28439                     }),
28440                     Lc = xr(function(e, t) {
28441                         var n = V(t, Vi(Lc));
28442                         return Di(e, ve, J, t, n)
28443                     }),
28444                     Fc = Li(function(e, t) {
28445                         return Di(e, ye, J, J, J, t)
28446                     }),
28447                     qc = Mi(Gn),
28448                     Uc = Mi(function(e, t) {
28449                         return e >= t
28450                     }),
28451                     Vc = tr(function() {
28452                         return arguments
28453                     }()) ? tr : function(e) {
28454                         return ta(e) && Ba.call(e, "callee") && !rs.call(e, "callee")
28455                     },
28456                     Bc = Aa.isArray,
28457                     zc = Nn ? A(Nn) : function(e) {
28458                         return ta(e) && Yn(e) == nt
28459                     },
28460                     Wc = ms || Sa,
28461                     Yc = In ? A(In) : function(e) {
28462                         return ta(e) && Yn(e) == Le
28463                     },
28464                     Gc = Rn ? A(Rn) : function(e) {
28465                         return ta(e) && ec(e) == Be
28466                     },
28467                     Kc = Pn ? A(Pn) : function(e) {
28468                         return ta(e) && Yn(e) == Ke
28469                     },
28470                     Zc = Hn ? A(Hn) : function(e) {
28471                         return ta(e) && ec(e) == Ze
28472                     },
28473                     Xc = jn ? A(jn) : function(e) {
28474                         return ta(e) && Jo(e.length) && !!vn[Yn(e)]
28475                     },
28476                     Qc = Mi(lr),
28477                     Jc = Mi(function(e, t) {
28478                         return e <= t
28479                     }),
28480                     el = di(function(e, t) {
28481                         if (lo(t) || Go(t)) si(t, ma(t), e);
28482                         else
28483                             for (var n in t) Ba.call(t, n) && rn(e, n, t[n])
28484                     }),
28485                     tl = di(function(e, t) {
28486                         si(t, ga(t), e)
28487                     }),
28488                     nl = di(function(e, t, n, r) {
28489                         si(t, ga(t), e, r)
28490                     }),
28491                     rl = di(function(e, t, n, r) {
28492                         si(t, ma(t), e, r)
28493                     }),
28494                     il = Li(fn),
28495                     ol = xr(function(e) {
28496                         return e.push(J, Ni), n(nl, J, e)
28497                     }),
28498                     al = xr(function(e) {
28499                         return e.push(J, Ii), n(dl, J, e)
28500                     }),
28501                     sl = wi(function(e, t, n) {
28502                         e[t] = n
28503                     }, wa(Ea)),
28504                     cl = wi(function(e, t, n) {
28505                         Ba.call(e, t) ? e[t].push(n) : e[t] = [n]
28506                     }, Bi),
28507                     ll = xr(er),
28508                     ul = di(function(e, t, n) {
28509                         hr(e, t, n)
28510                     }),
28511                     dl = di(function(e, t, n, r) {
28512                         hr(e, t, n, r)
28513                     }),
28514                     fl = Li(function(e, t) {
28515                         var n = {};
28516                         if (null == e) return n;
28517                         var r = !1;
28518                         t = u(t, function(t) {
28519                             return t = Wr(t, e), r || (r = t.length > 1), t
28520                         }), si(e, qi(e), n), r && (n = pn(n, ae | se | ce, Ri));
28521                         for (var i = t.length; i--;) jr(n, t[i]);
28522                         return n
28523                     }),
28524                     hl = Li(function(e, t) {
28525                         return null == e ? {} : vr(e, t)
28526                     }),
28527                     pl = Oi(ma),
28528                     ml = Oi(ga),
28529                     gl = gi(function(e, t, n) {
28530                         return t = t.toLowerCase(), e + (n ? ya(t) : t)
28531                     }),
28532                     vl = gi(function(e, t, n) {
28533                         return e + (n ? "-" : "") + t.toLowerCase()
28534                     }),
28535                     bl = gi(function(e, t, n) {
28536                         return e + (n ? " " : "") + t.toLowerCase()
28537                     }),
28538                     yl = mi("toLowerCase"),
28539                     $l = gi(function(e, t, n) {
28540                         return e + (n ? "_" : "") + t.toLowerCase()
28541                     }),
28542                     _l = gi(function(e, t, n) {
28543                         return e + (n ? " " : "") + El(t)
28544                     }),
28545                     wl = gi(function(e, t, n) {
28546                         return e + (n ? " " : "") + t.toUpperCase()
28547                     }),
28548                     El = mi("toUpperCase"),
28549                     Cl = xr(function(e, t) {
28550                         try {
28551                             return n(e, J, t)
28552                         } catch (e) {
28553                             return Zo(e) ? e : new Da(e)
28554                         }
28555                     }),
28556                     xl = Li(function(e, t) {
28557                         return i(t, function(t) {
28558                             t = wo(t), dn(e, t, Nc(e[t], e))
28559                         }), e
28560                     }),
28561                     kl = $i(),
28562                     Tl = $i(!0),
28563                     Ml = xr(function(e, t) {
28564                         return function(n) {
28565                             return er(n, e, t)
28566                         }
28567                     }),
28568                     Sl = xr(function(e, t) {
28569                         return function(n) {
28570                             return er(e, n, t)
28571                         }
28572                     }),
28573                     Al = Ci(u),
28574                     Ol = Ci(a),
28575                     Dl = Ci(p),
28576                     Nl = Ti(),
28577                     Il = Ti(!0),
28578                     Rl = Ei(function(e, t) {
28579                         return e + t
28580                     }, 0),
28581                     Pl = Ai("ceil"),
28582                     Hl = Ei(function(e, t) {
28583                         return e / t
28584                     }, 1),
28585                     jl = Ai("floor"),
28586                     Ll = Ei(function(e, t) {
28587                         return e * t
28588                     }, 1),
28589                     Fl = Ai("round"),
28590                     ql = Ei(function(e, t) {
28591                         return e - t
28592                     }, 0);
28593                 return W.after = function(e, t) {
28594                     if ("function" != typeof t) throw new ja(ne);
28595                     return e = ca(e),
28596                         function() {
28597                             if (--e < 1) return t.apply(this, arguments)
28598                         }
28599                 }, W.ary = Fo, W.assign = el, W.assignIn = tl, W.assignInWith = nl, W.assignWith = rl, W.at = il, W.before = qo, W.bind = Nc, W.bindAll = xl, W.bindKey = Ic, W.castArray = function() {
28600                     if (!arguments.length) return [];
28601                     var e = arguments[0];
28602                     return Bc(e) ? e : [e]
28603                 }, W.chain = Ro, W.chunk = function(e, t, n) {
28604                     t = (n ? io(e, t, n) : t === J) ? 1 : ys(ca(t), 0);
28605                     var r = null == e ? 0 : e.length;
28606                     if (!r || t < 1) return [];
28607                     for (var i = 0, o = 0, a = Aa(fs(r / t)); i < r;) a[o++] = Ar(e, i, i += t);
28608                     return a
28609                 }, W.compact = function(e) {
28610                     for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
28611                         var o = e[t];
28612                         o && (i[r++] = o)
28613                     }
28614                     return i
28615                 }, W.concat = function() {
28616                     var e = arguments.length;
28617                     if (!e) return [];
28618                     for (var t = Aa(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
28619                     return d(Bc(n) ? ai(n) : [n], On(t, 1))
28620                 }, W.cond = function(e) {
28621                     var t = null == e ? 0 : e.length,
28622                         r = Bi();
28623                     return e = t ? u(e, function(e) {
28624                         if ("function" != typeof e[1]) throw new ja(ne);
28625                         return [r(e[0]), e[1]]
28626                     }) : [], xr(function(r) {
28627                         for (var i = -1; ++i < t;) {
28628                             var o = e[i];
28629                             if (n(o[0], this, r)) return n(o[1], this, r)
28630                         }
28631                     })
28632                 }, W.conforms = function(e) {
28633                     return yn(pn(e, ae))
28634                 }, W.constant = wa, W.countBy = Cc, W.create = function(e, t) {
28635                     var n = qs(e);
28636                     return null == t ? n : sn(n, t)
28637                 }, W.curry = Uo, W.curryRight = Vo, W.debounce = Bo, W.defaults = ol, W.defaultsDeep = al, W.defer = Rc, W.delay = Pc, W.difference = ac, W.differenceBy = sc, W.differenceWith = cc, W.drop = function(e, t, n) {
28638                     var r = null == e ? 0 : e.length;
28639                     return r ? (t = n || t === J ? 1 : ca(t), Ar(e, t < 0 ? 0 : t, r)) : []
28640                 }, W.dropRight = function(e, t, n) {
28641                     var r = null == e ? 0 : e.length;
28642                     return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Ar(e, 0, t < 0 ? 0 : t)) : []
28643                 }, W.dropRightWhile = function(e, t) {
28644                     return e && e.length ? Fr(e, Bi(t, 3), !0, !0) : []
28645                 }, W.dropWhile = function(e, t) {
28646                     return e && e.length ? Fr(e, Bi(t, 3), !0) : []
28647                 }, W.fill = function(e, t, n, r) {
28648                     var i = null == e ? 0 : e.length;
28649                     return i ? (n && "number" != typeof n && io(e, t, n) && (n = 0, r = i), Mn(e, t, n, r)) : []
28650                 }, W.filter = function(e, t) {
28651                     return (Bc(e) ? s : Sn)(e, Bi(t, 3))
28652                 }, W.flatMap = function(e, t) {
28653                     return On(Lo(e, t), 1)
28654                 }, W.flatMapDeep = function(e, t) {
28655                     return On(Lo(e, t), Te)
28656                 }, W.flatMapDepth = function(e, t, n) {
28657                     return n = n === J ? 1 : ca(n), On(Lo(e, t), n)
28658                 }, W.flatten = Mo, W.flattenDeep = function(e) {
28659                     return (null == e ? 0 : e.length) ? On(e, Te) : []
28660                 }, W.flattenDepth = function(e, t) {
28661                     return (null == e ? 0 : e.length) ? (t = t === J ? 1 : ca(t), On(e, t)) : []
28662                 }, W.flip = function(e) {
28663                     return Di(e, $e)
28664                 }, W.flow = kl, W.flowRight = Tl, W.fromPairs = function(e) {
28665                     for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
28666                         var i = e[t];
28667                         r[i[0]] = i[1]
28668                     }
28669                     return r
28670                 }, W.functions = function(e) {
28671                     return null == e ? [] : Bn(e, ma(e))
28672                 }, W.functionsIn = function(e) {
28673                     return null == e ? [] : Bn(e, ga(e))
28674                 }, W.groupBy = Tc, W.initial = function(e) {
28675                     return (null == e ? 0 : e.length) ? Ar(e, 0, -1) : []
28676                 }, W.intersection = lc, W.intersectionBy = uc, W.intersectionWith = dc, W.invert = sl, W.invertBy = cl, W.invokeMap = Mc, W.iteratee = Ca, W.keyBy = Sc, W.keys = ma, W.keysIn = ga, W.map = Lo, W.mapKeys = function(e, t) {
28677                     var n = {};
28678                     return t = Bi(t, 3), Dn(e, function(e, r, i) {
28679                         dn(n, t(e, r, i), e)
28680                     }), n
28681                 }, W.mapValues = function(e, t) {
28682                     var n = {};
28683                     return t = Bi(t, 3), Dn(e, function(e, r, i) {
28684                         dn(n, r, t(e, r, i))
28685                     }), n
28686                 }, W.matches = function(e) {
28687                     return dr(pn(e, ae))
28688                 }, W.matchesProperty = function(e, t) {
28689                     return fr(e, pn(t, ae))
28690                 }, W.memoize = zo, W.merge = ul, W.mergeWith = dl, W.method = Ml, W.methodOf = Sl, W.mixin = xa, W.negate = Wo, W.nthArg = function(e) {
28691                     return e = ca(e), xr(function(t) {
28692                         return mr(t, e)
28693                     })
28694                 }, W.omit = fl, W.omitBy = function(e, t) {
28695                     return va(e, Wo(Bi(t)))
28696                 }, W.once = function(e) {
28697                     return qo(2, e)
28698                 }, W.orderBy = function(e, t, n, r) {
28699                     return null == e ? [] : (Bc(t) || (t = null == t ? [] : [t]), n = r ? J : n, Bc(n) || (n = null == n ? [] : [n]), gr(e, t, n))
28700                 }, W.over = Al, W.overArgs = Hc, W.overEvery = Ol, W.overSome = Dl, W.partial = jc, W.partialRight = Lc, W.partition = Ac, W.pick = hl, W.pickBy = va, W.property = Ta, W.propertyOf = function(e) {
28701                     return function(t) {
28702                         return null == e ? J : zn(e, t)
28703                     }
28704                 }, W.pull = fc, W.pullAll = Oo, W.pullAllBy = function(e, t, n) {
28705                     return e && e.length && t && t.length ? $r(e, t, Bi(n, 2)) : e
28706                 }, W.pullAllWith = function(e, t, n) {
28707                     return e && e.length && t && t.length ? $r(e, t, J, n) : e
28708                 }, W.pullAt = hc, W.range = Nl, W.rangeRight = Il, W.rearg = Fc, W.reject = function(e, t) {
28709                     return (Bc(e) ? s : Sn)(e, Wo(Bi(t, 3)))
28710                 }, W.remove = function(e, t) {
28711                     var n = [];
28712                     if (!e || !e.length) return n;
28713                     var r = -1,
28714                         i = [],
28715                         o = e.length;
28716                     for (t = Bi(t, 3); ++r < o;) {
28717                         var a = e[r];
28718                         t(a, r, e) && (n.push(a), i.push(r))
28719                     }
28720                     return _r(e, i), n
28721                 }, W.rest = function(e, t) {
28722                     if ("function" != typeof e) throw new ja(ne);
28723                     return t = t === J ? t : ca(t), xr(e, t)
28724                 }, W.reverse = Do, W.sampleSize = function(e, t, n) {
28725                     return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), (Bc(e) ? en : Tr)(e, t)
28726                 }, W.set = function(e, t, n) {
28727                     return null == e ? e : Mr(e, t, n)
28728                 }, W.setWith = function(e, t, n, r) {
28729                     return r = "function" == typeof r ? r : J, null == e ? e : Mr(e, t, n, r)
28730                 }, W.shuffle = function(e) {
28731                     return (Bc(e) ? tn : Sr)(e)
28732                 }, W.slice = function(e, t, n) {
28733                     var r = null == e ? 0 : e.length;
28734                     return r ? (n && "number" != typeof n && io(e, t, n) ? (t = 0, n = r) : (t = null == t ? 0 : ca(t), n = n === J ? r : ca(n)), Ar(e, t, n)) : []
28735                 }, W.sortBy = Oc, W.sortedUniq = function(e) {
28736                     return e && e.length ? Ir(e) : []
28737                 }, W.sortedUniqBy = function(e, t) {
28738                     return e && e.length ? Ir(e, Bi(t, 2)) : []
28739                 }, W.split = function(e, t, n) {
28740                     return n && "number" != typeof n && io(e, t, n) && (t = n = J), (n = n === J ? Oe : n >>> 0) ? (e = fa(e)) && ("string" == typeof t || null != t && !Kc(t)) && !(t = Pr(t)) && j(e) ? Yr(K(e), 0, n) : e.split(t, n) : []
28741                 }, W.spread = function(e, t) {
28742                     if ("function" != typeof e) throw new ja(ne);
28743                     return t = null == t ? 0 : ys(ca(t), 0), xr(function(r) {
28744                         var i = r[t],
28745                             o = Yr(r, 0, t);
28746                         return i && d(o, i), n(e, this, o)
28747                     })
28748                 }, W.tail = function(e) {
28749                     var t = null == e ? 0 : e.length;
28750                     return t ? Ar(e, 1, t) : []
28751                 }, W.take = function(e, t, n) {
28752                     return e && e.length ? (t = n || t === J ? 1 : ca(t), Ar(e, 0, t < 0 ? 0 : t)) : []
28753                 }, W.takeRight = function(e, t, n) {
28754                     var r = null == e ? 0 : e.length;
28755                     return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Ar(e, t < 0 ? 0 : t, r)) : []
28756                 }, W.takeRightWhile = function(e, t) {
28757                     return e && e.length ? Fr(e, Bi(t, 3), !1, !0) : []
28758                 }, W.takeWhile = function(e, t) {
28759                     return e && e.length ? Fr(e, Bi(t, 3)) : []
28760                 }, W.tap = function(e, t) {
28761                     return t(e), e
28762                 }, W.throttle = function(e, t, n) {
28763                     var r = !0,
28764                         i = !0;
28765                     if ("function" != typeof e) throw new ja(ne);
28766                     return ea(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), Bo(e, t, {
28767                         leading: r,
28768                         maxWait: t,
28769                         trailing: i
28770                     })
28771                 }, W.thru = Po, W.toArray = aa, W.toPairs = pl, W.toPairsIn = ml, W.toPath = function(e) {
28772                     return Bc(e) ? u(e, wo) : oa(e) ? [e] : ai(oc(fa(e)))
28773                 }, W.toPlainObject = da, W.transform = function(e, t, n) {
28774                     var r = Bc(e),
28775                         o = r || Wc(e) || Xc(e);
28776                     if (t = Bi(t, 4), null == n) {
28777                         var a = e && e.constructor;
28778                         n = o ? r ? new a : [] : ea(e) && Xo(a) ? qs(ts(e)) : {}
28779                     }
28780                     return (o ? i : Dn)(e, function(e, r, i) {
28781                         return t(n, e, r, i)
28782                     }), n
28783                 }, W.unary = function(e) {
28784                     return Fo(e, 1)
28785                 }, W.union = pc, W.unionBy = mc, W.unionWith = gc, W.uniq = function(e) {
28786                     return e && e.length ? Hr(e) : []
28787                 }, W.uniqBy = function(e, t) {
28788                     return e && e.length ? Hr(e, Bi(t, 2)) : []
28789                 }, W.uniqWith = function(e, t) {
28790                     return t = "function" == typeof t ? t : J, e && e.length ? Hr(e, J, t) : []
28791                 }, W.unset = function(e, t) {
28792                     return null == e || jr(e, t)
28793                 }, W.unzip = No, W.unzipWith = Io, W.update = function(e, t, n) {
28794                     return null == e ? e : Lr(e, t, zr(n))
28795                 }, W.updateWith = function(e, t, n, r) {
28796                     return r = "function" == typeof r ? r : J, null == e ? e : Lr(e, t, zr(n), r)
28797                 }, W.values = ba, W.valuesIn = function(e) {
28798                     return null == e ? [] : O(e, ga(e))
28799                 }, W.without = vc, W.words = _a, W.wrap = function(e, t) {
28800                     return jc(zr(t), e)
28801                 }, W.xor = bc, W.xorBy = yc, W.xorWith = $c, W.zip = _c, W.zipObject = function(e, t) {
28802                     return Vr(e || [], t || [], rn)
28803                 }, W.zipObjectDeep = function(e, t) {
28804                     return Vr(e || [], t || [], Mr)
28805                 }, W.zipWith = wc, W.entries = pl, W.entriesIn = ml, W.extend = tl, W.extendWith = nl, xa(W, W), W.add = Rl, W.attempt = Cl, W.camelCase = gl, W.capitalize = ya, W.ceil = Pl, W.clamp = function(e, t, n) {
28806                     return n === J && (n = t, t = J), n !== J && (n = (n = ua(n)) === n ? n : 0), t !== J && (t = (t = ua(t)) === t ? t : 0), hn(ua(e), t, n)
28807                 }, W.clone = function(e) {
28808                     return pn(e, ce)
28809                 }, W.cloneDeep = function(e) {
28810                     return pn(e, ae | ce)
28811                 }, W.cloneDeepWith = function(e, t) {
28812                     return t = "function" == typeof t ? t : J, pn(e, ae | ce, t)
28813                 }, W.cloneWith = function(e, t) {
28814                     return t = "function" == typeof t ? t : J, pn(e, ce, t)
28815                 }, W.conformsTo = function(e, t) {
28816                     return null == t || $n(e, t, ma(t))
28817                 }, W.deburr = $a, W.defaultTo = function(e, t) {
28818                     return null == e || e !== e ? t : e
28819                 }, W.divide = Hl, W.endsWith = function(e, t, n) {
28820                     e = fa(e), t = Pr(t);
28821                     var r = e.length,
28822                         i = n = n === J ? r : hn(ca(n), 0, r);
28823                     return (n -= t.length) >= 0 && e.slice(n, i) == t
28824                 }, W.eq = Yo, W.escape = function(e) {
28825                     return (e = fa(e)) && yt.test(e) ? e.replace(vt, qn) : e
28826                 }, W.escapeRegExp = function(e) {
28827                     return (e = fa(e)) && Mt.test(e) ? e.replace(Tt, "\\$&") : e
28828                 }, W.every = function(e, t, n) {
28829                     var r = Bc(e) ? a : xn;
28830                     return n && io(e, t, n) && (t = J), r(e, Bi(t, 3))
28831                 }, W.find = xc, W.findIndex = ko, W.findKey = function(e, t) {
28832                     return v(e, Bi(t, 3), Dn)
28833                 }, W.findLast = kc, W.findLastIndex = To, W.findLastKey = function(e, t) {
28834                     return v(e, Bi(t, 3), Ln)
28835                 }, W.floor = jl, W.forEach = Ho, W.forEachRight = jo, W.forIn = function(e, t) {
28836                     return null == e ? e : Bs(e, Bi(t, 3), ga)
28837                 }, W.forInRight = function(e, t) {
28838                     return null == e ? e : zs(e, Bi(t, 3), ga)
28839                 }, W.forOwn = function(e, t) {
28840                     return e && Dn(e, Bi(t, 3))
28841                 }, W.forOwnRight = function(e, t) {
28842                     return e && Ln(e, Bi(t, 3))
28843                 }, W.get = ha, W.gt = qc, W.gte = Uc, W.has = function(e, t) {
28844                     return null != e && Xi(e, t, Kn)
28845                 }, W.hasIn = pa, W.head = So, W.identity = Ea, W.includes = function(e, t, n, r) {
28846                     e = Go(e) ? e : ba(e), n = n && !r ? ca(n) : 0;
28847                     var i = e.length;
28848                     return n < 0 && (n = ys(i + n, 0)), ia(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && y(e, t, n) > -1
28849                 }, W.indexOf = function(e, t, n) {
28850                     var r = null == e ? 0 : e.length;
28851                     if (!r) return -1;
28852                     var i = null == n ? 0 : ca(n);
28853                     return i < 0 && (i = ys(r + i, 0)), y(e, t, i)
28854                 }, W.inRange = function(e, t, n) {
28855                     return t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), e = ua(e), Xn(e, t, n)
28856                 }, W.invoke = ll, W.isArguments = Vc, W.isArray = Bc, W.isArrayBuffer = zc, W.isArrayLike = Go, W.isArrayLikeObject = Ko, W.isBoolean = function(e) {
28857                     return !0 === e || !1 === e || ta(e) && Yn(e) == je
28858                 }, W.isBuffer = Wc, W.isDate = Yc, W.isElement = function(e) {
28859                     return ta(e) && 1 === e.nodeType && !ra(e)
28860                 }, W.isEmpty = function(e) {
28861                     if (null == e) return !0;
28862                     if (Go(e) && (Bc(e) || "string" == typeof e || "function" == typeof e.splice || Wc(e) || Xc(e) || Vc(e))) return !e.length;
28863                     var t = ec(e);
28864                     if (t == Be || t == Ze) return !e.size;
28865                     if (lo(e)) return !sr(e).length;
28866                     for (var n in e)
28867                         if (Ba.call(e, n)) return !1;
28868                     return !0
28869                 }, W.isEqual = function(e, t) {
28870                     return nr(e, t)
28871                 }, W.isEqualWith = function(e, t, n) {
28872                     var r = (n = "function" == typeof n ? n : J) ? n(e, t) : J;
28873                     return r === J ? nr(e, t, J, n) : !!r
28874                 }, W.isError = Zo, W.isFinite = function(e) {
28875                     return "number" == typeof e && gs(e)
28876                 }, W.isFunction = Xo, W.isInteger = Qo, W.isLength = Jo, W.isMap = Gc, W.isMatch = function(e, t) {
28877                     return e === t || ir(e, t, Wi(t))
28878                 }, W.isMatchWith = function(e, t, n) {
28879                     return n = "function" == typeof n ? n : J, ir(e, t, Wi(t), n)
28880                 }, W.isNaN = function(e) {
28881                     return na(e) && e != +e
28882                 }, W.isNative = function(e) {
28883                     if (tc(e)) throw new Da(te);
28884                     return or(e)
28885                 }, W.isNil = function(e) {
28886                     return null == e
28887                 }, W.isNull = function(e) {
28888                     return null === e
28889                 }, W.isNumber = na, W.isObject = ea, W.isObjectLike = ta, W.isPlainObject = ra, W.isRegExp = Kc, W.isSafeInteger = function(e) {
28890                     return Qo(e) && e >= -Me && e <= Me
28891                 }, W.isSet = Zc, W.isString = ia, W.isSymbol = oa, W.isTypedArray = Xc, W.isUndefined = function(e) {
28892                     return e === J
28893                 }, W.isWeakMap = function(e) {
28894                     return ta(e) && ec(e) == et
28895                 }, W.isWeakSet = function(e) {
28896                     return ta(e) && Yn(e) == tt
28897                 }, W.join = function(e, t) {
28898                     return null == e ? "" : vs.call(e, t)
28899                 }, W.kebabCase = vl, W.last = Ao, W.lastIndexOf = function(e, t, n) {
28900                     var r = null == e ? 0 : e.length;
28901                     if (!r) return -1;
28902                     var i = r;
28903                     return n !== J && (i = (i = ca(n)) < 0 ? ys(r + i, 0) : $s(i, r - 1)), t === t ? Y(e, t, i) : b(e, _, i, !0)
28904                 }, W.lowerCase = bl, W.lowerFirst = yl, W.lt = Qc, W.lte = Jc, W.max = function(e) {
28905                     return e && e.length ? kn(e, Ea, Gn) : J
28906                 }, W.maxBy = function(e, t) {
28907                     return e && e.length ? kn(e, Bi(t, 2), Gn) : J
28908                 }, W.mean = function(e) {
28909                     return w(e, Ea)
28910                 }, W.meanBy = function(e, t) {
28911                     return w(e, Bi(t, 2))
28912                 }, W.min = function(e) {
28913                     return e && e.length ? kn(e, Ea, lr) : J
28914                 }, W.minBy = function(e, t) {
28915                     return e && e.length ? kn(e, Bi(t, 2), lr) : J
28916                 }, W.stubArray = Ma, W.stubFalse = Sa, W.stubObject = function() {
28917                     return {}
28918                 }, W.stubString = function() {
28919                     return ""
28920                 }, W.stubTrue = function() {
28921                     return !0
28922                 }, W.multiply = Ll, W.nth = function(e, t) {
28923                     return e && e.length ? mr(e, ca(t)) : J
28924                 }, W.noConflict = function() {
28925                     return Tn._ === this && (Tn._ = Ka), this
28926                 }, W.noop = ka, W.now = Dc, W.pad = function(e, t, n) {
28927                     e = fa(e);
28928                     var r = (t = ca(t)) ? G(e) : 0;
28929                     if (!t || r >= t) return e;
28930                     var i = (t - r) / 2;
28931                     return xi(hs(i), n) + e + xi(fs(i), n)
28932                 }, W.padEnd = function(e, t, n) {
28933                     e = fa(e);
28934                     var r = (t = ca(t)) ? G(e) : 0;
28935                     return t && r < t ? e + xi(t - r, n) : e
28936                 }, W.padStart = function(e, t, n) {
28937                     e = fa(e);
28938                     var r = (t = ca(t)) ? G(e) : 0;
28939                     return t && r < t ? xi(t - r, n) + e : e
28940                 }, W.parseInt = function(e, t, n) {
28941                     return n || null == t ? t = 0 : t && (t = +t), ws(fa(e).replace(At, ""), t || 0)
28942                 }, W.random = function(e, t, n) {
28943                     if (n && "boolean" != typeof n && io(e, t, n) && (t = n = J), n === J && ("boolean" == typeof t ? (n = t, t = J) : "boolean" == typeof e && (n = e, e = J)), e === J && t === J ? (e = 0, t = 1) : (e = sa(e), t === J ? (t = e, e = 0) : t = sa(t)), e > t) {
28944                         var r = e;
28945                         e = t, t = r
28946                     }
28947                     if (n || e % 1 || t % 1) {
28948                         var i = Es();
28949                         return $s(e + i * (t - e + En("1e-" + ((i + "").length - 1))), t)
28950                     }
28951                     return wr(e, t)
28952                 }, W.reduce = function(e, t, n) {
28953                     var r = Bc(e) ? f : x,
28954                         i = arguments.length < 3;
28955                     return r(e, Bi(t, 4), n, i, Us)
28956                 }, W.reduceRight = function(e, t, n) {
28957                     var r = Bc(e) ? h : x,
28958                         i = arguments.length < 3;
28959                     return r(e, Bi(t, 4), n, i, Vs)
28960                 }, W.repeat = function(e, t, n) {
28961                     return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), Cr(fa(e), t)
28962                 }, W.replace = function() {
28963                     var e = arguments,
28964                         t = fa(e[0]);
28965                     return e.length < 3 ? t : t.replace(e[1], e[2])
28966                 }, W.result = function(e, t, n) {
28967                     var r = -1,
28968                         i = (t = Wr(t, e)).length;
28969                     for (i || (i = 1, e = J); ++r < i;) {
28970                         var o = null == e ? J : e[wo(t[r])];
28971                         o === J && (r = i, o = n), e = Xo(o) ? o.call(e) : o
28972                     }
28973                     return e
28974                 }, W.round = Fl, W.runInContext = m, W.sample = function(e) {
28975                     return (Bc(e) ? Jt : kr)(e)
28976                 }, W.size = function(e) {
28977                     if (null == e) return 0;
28978                     if (Go(e)) return ia(e) ? G(e) : e.length;
28979                     var t = ec(e);
28980                     return t == Be || t == Ze ? e.size : sr(e).length
28981                 }, W.snakeCase = $l, W.some = function(e, t, n) {
28982                     var r = Bc(e) ? p : Or;
28983                     return n && io(e, t, n) && (t = J), r(e, Bi(t, 3))
28984                 }, W.sortedIndex = function(e, t) {
28985                     return Dr(e, t)
28986                 }, W.sortedIndexBy = function(e, t, n) {
28987                     return Nr(e, t, Bi(n, 2))
28988                 }, W.sortedIndexOf = function(e, t) {
28989                     var n = null == e ? 0 : e.length;
28990                     if (n) {
28991                         var r = Dr(e, t);
28992                         if (r < n && Yo(e[r], t)) return r
28993                     }
28994                     return -1
28995                 }, W.sortedLastIndex = function(e, t) {
28996                     return Dr(e, t, !0)
28997                 }, W.sortedLastIndexBy = function(e, t, n) {
28998                     return Nr(e, t, Bi(n, 2), !0)
28999                 }, W.sortedLastIndexOf = function(e, t) {
29000                     if (null == e ? 0 : e.length) {
29001                         var n = Dr(e, t, !0) - 1;
29002                         if (Yo(e[n], t)) return n
29003                     }
29004                     return -1
29005                 }, W.startCase = _l, W.startsWith = function(e, t, n) {
29006                     return e = fa(e), n = null == n ? 0 : hn(ca(n), 0, e.length), t = Pr(t), e.slice(n, n + t.length) == t
29007                 }, W.subtract = ql, W.sum = function(e) {
29008                     return e && e.length ? T(e, Ea) : 0
29009                 }, W.sumBy = function(e, t) {
29010                     return e && e.length ? T(e, Bi(t, 2)) : 0
29011                 }, W.template = function(e, t, n) {
29012                     var r = W.templateSettings;
29013                     n && io(e, t, n) && (t = J), e = fa(e), t = nl({}, t, r, Ni);
29014                     var i, o, a = nl({}, t.imports, r.imports, Ni),
29015                         s = ma(a),
29016                         c = O(a, s),
29017                         l = 0,
29018                         u = t.interpolate || zt,
29019                         d = "__p += '",
29020                         f = Pa((t.escape || zt).source + "|" + u.source + "|" + (u === wt ? Ht : zt).source + "|" + (t.evaluate || zt).source + "|$", "g"),
29021                         h = "//# sourceURL=" + ("sourceURL" in t ? t.sourceURL : "lodash.templateSources[" + ++gn + "]") + "\n";
29022                     e.replace(f, function(t, n, r, a, s, c) {
29023                         return r || (r = a), d += e.slice(l, c).replace(Wt, P), n && (i = !0, d += "' +\n__e(" + n + ") +\n'"), s && (o = !0, d += "';\n" + s + ";\n__p += '"), r && (d += "' +\n((__t = (" + r + ")) == null ? '' : __t) +\n'"), l = c + t.length, t
29024                     }), d += "';\n";
29025                     var p = t.variable;
29026                     p || (d = "with (obj) {\n" + d + "\n}\n"), d = (o ? d.replace(ht, "") : d).replace(pt, "$1").replace(mt, "$1;"), d = "function(" + (p || "obj") + ") {\n" + (p ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (i ? ", __e = _.escape" : "") + (o ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + d + "return __p\n}";
29027                     var m = Cl(function() {
29028                         return Na(s, h + "return " + d).apply(J, c)
29029                     });
29030                     if (m.source = d, Zo(m)) throw m;
29031                     return m
29032                 }, W.times = function(e, t) {
29033                     if ((e = ca(e)) < 1 || e > Me) return [];
29034                     var n = Oe,
29035                         r = $s(e, Oe);
29036                     t = Bi(t), e -= Oe;
29037                     for (var i = M(r, t); ++n < e;) t(n);
29038                     return i
29039                 }, W.toFinite = sa, W.toInteger = ca, W.toLength = la, W.toLower = function(e) {
29040                     return fa(e).toLowerCase()
29041                 }, W.toNumber = ua, W.toSafeInteger = function(e) {
29042                     return e ? hn(ca(e), -Me, Me) : 0 === e ? e : 0
29043                 }, W.toString = fa, W.toUpper = function(e) {
29044                     return fa(e).toUpperCase()
29045                 }, W.trim = function(e, t, n) {
29046                     if ((e = fa(e)) && (n || t === J)) return e.replace(St, "");
29047                     if (!e || !(t = Pr(t))) return e;
29048                     var r = K(e),
29049                         i = K(t);
29050                     return Yr(r, N(r, i), I(r, i) + 1).join("")
29051                 }, W.trimEnd = function(e, t, n) {
29052                     if ((e = fa(e)) && (n || t === J)) return e.replace(Ot, "");
29053                     if (!e || !(t = Pr(t))) return e;
29054                     var r = K(e);
29055                     return Yr(r, 0, I(r, K(t)) + 1).join("")
29056                 }, W.trimStart = function(e, t, n) {
29057                     if ((e = fa(e)) && (n || t === J)) return e.replace(At, "");
29058                     if (!e || !(t = Pr(t))) return e;
29059                     var r = K(e);
29060                     return Yr(r, N(r, K(t))).join("")
29061                 }, W.truncate = function(e, t) {
29062                     var n = _e,
29063                         r = we;
29064                     if (ea(t)) {
29065                         var i = "separator" in t ? t.separator : i;
29066                         n = "length" in t ? ca(t.length) : n, r = "omission" in t ? Pr(t.omission) : r
29067                     }
29068                     var o = (e = fa(e)).length;
29069                     if (j(e)) {
29070                         var a = K(e);
29071                         o = a.length
29072                     }
29073                     if (n >= o) return e;
29074                     var s = n - G(r);
29075                     if (s < 1) return r;
29076                     var c = a ? Yr(a, 0, s).join("") : e.slice(0, s);
29077                     if (i === J) return c + r;
29078                     if (a && (s += c.length - s), Kc(i)) {
29079                         if (e.slice(s).search(i)) {
29080                             var l, u = c;
29081                             for (i.global || (i = Pa(i.source, fa(jt.exec(i)) + "g")), i.lastIndex = 0; l = i.exec(u);) var d = l.index;
29082                             c = c.slice(0, d === J ? s : d)
29083                         }
29084                     } else if (e.indexOf(Pr(i), s) != s) {
29085                         var f = c.lastIndexOf(i);
29086                         f > -1 && (c = c.slice(0, f))
29087                     }
29088                     return c + r
29089                 }, W.unescape = function(e) {
29090                     return (e = fa(e)) && bt.test(e) ? e.replace(gt, Un) : e
29091                 }, W.uniqueId = function(e) {
29092                     var t = ++za;
29093                     return fa(e) + t
29094                 }, W.upperCase = wl, W.upperFirst = El, W.each = Ho, W.eachRight = jo, W.first = So, xa(W, function() {
29095                     var e = {};
29096                     return Dn(W, function(t, n) {
29097                         Ba.call(W.prototype, n) || (e[n] = t)
29098                     }), e
29099                 }(), {
29100                     chain: !1
29101                 }), W.VERSION = "4.17.4", i(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(e) {
29102                     W[e].placeholder = W
29103                 }), i(["drop", "take"], function(e, t) {
29104                     Rt.prototype[e] = function(n) {
29105                         n = n === J ? 1 : ys(ca(n), 0);
29106                         var r = this.__filtered__ && !t ? new Rt(this) : this.clone();
29107                         return r.__filtered__ ? r.__takeCount__ = $s(n, r.__takeCount__) : r.__views__.push({
29108                             size: $s(n, Oe),
29109                             type: e + (r.__dir__ < 0 ? "Right" : "")
29110                         }), r
29111                     }, Rt.prototype[e + "Right"] = function(t) {
29112                         return this.reverse()[e](t).reverse()
29113                     }
29114                 }), i(["filter", "map", "takeWhile"], function(e, t) {
29115                     var n = t + 1,
29116                         r = n == xe || 3 == n;
29117                     Rt.prototype[e] = function(e) {
29118                         var t = this.clone();
29119                         return t.__iteratees__.push({
29120                             iteratee: Bi(e, 3),
29121                             type: n
29122                         }), t.__filtered__ = t.__filtered__ || r, t
29123                     }
29124                 }), i(["head", "last"], function(e, t) {
29125                     var n = "take" + (t ? "Right" : "");
29126                     Rt.prototype[e] = function() {
29127                         return this[n](1).value()[0]
29128                     }
29129                 }), i(["initial", "tail"], function(e, t) {
29130                     var n = "drop" + (t ? "" : "Right");
29131                     Rt.prototype[e] = function() {
29132                         return this.__filtered__ ? new Rt(this) : this[n](1)
29133                     }
29134                 }), Rt.prototype.compact = function() {
29135                     return this.filter(Ea)
29136                 }, Rt.prototype.find = function(e) {
29137                     return this.filter(e).head()
29138                 }, Rt.prototype.findLast = function(e) {
29139                     return this.reverse().find(e)
29140                 }, Rt.prototype.invokeMap = xr(function(e, t) {
29141                     return "function" == typeof e ? new Rt(this) : this.map(function(n) {
29142                         return er(n, e, t)
29143                     })
29144                 }), Rt.prototype.reject = function(e) {
29145                     return this.filter(Wo(Bi(e)))
29146                 }, Rt.prototype.slice = function(e, t) {
29147                     e = ca(e);
29148                     var n = this;
29149                     return n.__filtered__ && (e > 0 || t < 0) ? new Rt(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== J && (n = (t = ca(t)) < 0 ? n.dropRight(-t) : n.take(t - e)), n)
29150                 }, Rt.prototype.takeRightWhile = function(e) {
29151                     return this.reverse().takeWhile(e).reverse()
29152                 }, Rt.prototype.toArray = function() {
29153                     return this.take(Oe)
29154                 }, Dn(Rt.prototype, function(e, t) {
29155                     var n = /^(?:filter|find|map|reject)|While$/.test(t),
29156                         r = /^(?:head|last)$/.test(t),
29157                         i = W[r ? "take" + ("last" == t ? "Right" : "") : t],
29158                         o = r || /^find/.test(t);
29159                     i && (W.prototype[t] = function() {
29160                         var t = this.__wrapped__,
29161                             a = r ? [1] : arguments,
29162                             s = t instanceof Rt,
29163                             c = a[0],
29164                             l = s || Bc(t),
29165                             u = function(e) {
29166                                 var t = i.apply(W, d([e], a));
29167                                 return r && f ? t[0] : t
29168                             };
29169                         l && n && "function" == typeof c && 1 != c.length && (s = l = !1);
29170                         var f = this.__chain__,
29171                             h = !!this.__actions__.length,
29172                             p = o && !f,
29173                             m = s && !h;
29174                         if (!o && l) {
29175                             t = m ? t : new Rt(this);
29176                             var g = e.apply(t, a);
29177                             return g.__actions__.push({
29178                                 func: Po,
29179                                 args: [u],
29180                                 thisArg: J
29181                             }), new X(g, f)
29182                         }
29183                         return p && m ? e.apply(this, a) : (g = this.thru(u), p ? r ? g.value()[0] : g.value() : g)
29184                     })
29185                 }), i(["pop", "push", "shift", "sort", "splice", "unshift"], function(e) {
29186                     var t = La[e],
29187                         n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
29188                         r = /^(?:pop|shift)$/.test(e);
29189                     W.prototype[e] = function() {
29190                         var e = arguments;
29191                         if (r && !this.__chain__) {
29192                             var i = this.value();
29193                             return t.apply(Bc(i) ? i : [], e)
29194                         }
29195                         return this[n](function(n) {
29196                             return t.apply(Bc(n) ? n : [], e)
29197                         })
29198                     }
29199                 }), Dn(Rt.prototype, function(e, t) {
29200                     var n = W[t];
29201                     if (n) {
29202                         var r = n.name + "";
29203                         (Ds[r] || (Ds[r] = [])).push({
29204                             name: t,
29205                             func: n
29206                         })
29207                     }
29208                 }), Ds[_i(J, fe).name] = [{
29209                     name: "wrapper",
29210                     func: J
29211                 }], Rt.prototype.clone = function() {
29212                     var e = new Rt(this.__wrapped__);
29213                     return e.__actions__ = ai(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = ai(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = ai(this.__views__), e
29214                 }, Rt.prototype.reverse = function() {
29215                     if (this.__filtered__) {
29216                         var e = new Rt(this);
29217                         e.__dir__ = -1, e.__filtered__ = !0
29218                     } else(e = this.clone()).__dir__ *= -1;
29219                     return e
29220                 }, Rt.prototype.value = function() {
29221                     var e = this.__wrapped__.value(),
29222                         t = this.__dir__,
29223                         n = Bc(e),
29224                         r = t < 0,
29225                         i = n ? e.length : 0,
29226                         o = Ki(0, i, this.__views__),
29227                         a = o.start,
29228                         s = o.end,
29229                         c = s - a,
29230                         l = r ? s : a - 1,
29231                         u = this.__iteratees__,
29232                         d = u.length,
29233                         f = 0,
29234                         h = $s(c, this.__takeCount__);
29235                     if (!n || !r && i == c && h == c) return qr(e, this.__actions__);
29236                     var p = [];
29237                     e: for (; c-- && f < h;) {
29238                         for (var m = -1, g = e[l += t]; ++m < d;) {
29239                             var v = u[m],
29240                                 b = v.iteratee,
29241                                 y = v.type,
29242                                 $ = b(g);
29243                             if (y == ke) g = $;
29244                             else if (!$) {
29245                                 if (y == xe) continue e;
29246                                 break e
29247                             }
29248                         }
29249                         p[f++] = g
29250                     }
29251                     return p
29252                 }, W.prototype.at = Ec, W.prototype.chain = function() {
29253                     return Ro(this)
29254                 }, W.prototype.commit = function() {
29255                     return new X(this.value(), this.__chain__)
29256                 }, W.prototype.next = function() {
29257                     this.__values__ === J && (this.__values__ = aa(this.value()));
29258                     var e = this.__index__ >= this.__values__.length;
29259                     return {
29260                         done: e,
29261                         value: e ? J : this.__values__[this.__index__++]
29262                     }
29263                 }, W.prototype.plant = function(e) {
29264                     for (var t, n = this; n instanceof Z;) {
29265                         var r = xo(n);
29266                         r.__index__ = 0, r.__values__ = J, t ? i.__wrapped__ = r : t = r;
29267                         var i = r;
29268                         n = n.__wrapped__
29269                     }
29270                     return i.__wrapped__ = e, t
29271                 }, W.prototype.reverse = function() {
29272                     var e = this.__wrapped__;
29273                     if (e instanceof Rt) {
29274                         var t = e;
29275                         return this.__actions__.length && (t = new Rt(this)), (t = t.reverse()).__actions__.push({
29276                             func: Po,
29277                             args: [Do],
29278                             thisArg: J
29279                         }), new X(t, this.__chain__)
29280                     }
29281                     return this.thru(Do)
29282                 }, W.prototype.toJSON = W.prototype.valueOf = W.prototype.value = function() {
29283                     return qr(this.__wrapped__, this.__actions__)
29284                 }, W.prototype.first = W.prototype.head, as && (W.prototype[as] = function() {
29285                     return this
29286                 }), W
29287             }();
29288         "function" == typeof define && "object" == typeof define.amd && define.amd ? (Tn._ = Vn, define(function() {
29289             return Vn
29290         })) : Sn ? ((Sn.exports = Vn)._ = Vn, Mn._ = Vn) : Tn._ = Vn
29291     }.call(this),
29292     function(e, t) {
29293         var n = t.isDefined,
29294             r = t.isUndefined,
29295             i = t.isNumber,
29296             o = t.isObject,
29297             a = t.isArray,
29298             s = t.isString,
29299             c = t.extend,
29300             l = t.toJson;
29301         t.module("LocalStorageModule", []).provider("localStorageService", function() {
29302             this.prefix = "ls", this.storageType = "localStorage", this.cookie = {
29303                 expiry: 30,
29304                 path: "/",
29305                 secure: !1
29306             }, this.defaultToCookie = !0, this.notify = {
29307                 setItem: !0,
29308                 removeItem: !1
29309             }, this.setPrefix = function(e) {
29310                 return this.prefix = e, this
29311             }, this.setStorageType = function(e) {
29312                 return this.storageType = e, this
29313             }, this.setDefaultToCookie = function(e) {
29314                 return this.defaultToCookie = !!e, this
29315             }, this.setStorageCookie = function(e, t, n) {
29316                 return this.cookie.expiry = e, this.cookie.path = t, this.cookie.secure = n, this
29317             }, this.setStorageCookieDomain = function(e) {
29318                 return this.cookie.domain = e, this
29319             }, this.setNotify = function(e, t) {
29320                 return this.notify = {
29321                     setItem: e,
29322                     removeItem: t
29323                 }, this
29324             }, this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(e, t, u, d, f) {
29325                 function h(n) {
29326                     if (n || (n = t.event), b.setItem && s(n.key) && w(n.key)) {
29327                         var r = _(n.key);
29328                         f(function() {
29329                             e.$broadcast("LocalStorageModule.notification.changed", {
29330                                 key: r,
29331                                 newvalue: n.newValue,
29332                                 storageType: m.storageType
29333                             })
29334                         })
29335                     }
29336                 }
29337                 var p, m = this,
29338                     g = m.prefix,
29339                     v = m.cookie,
29340                     b = m.notify,
29341                     y = m.storageType;
29342                 u ? u[0] && (u = u[0]) : u = document, "." !== g.substr(-1) && (g = g ? g + "." : "");
29343                 var $ = function(e) {
29344                         return g + e
29345                     },
29346                     _ = function(e) {
29347                         return e.replace(new RegExp("^" + g, "g"), "")
29348                     },
29349                     w = function(e) {
29350                         return 0 === e.indexOf(g)
29351                     },
29352                     E = function() {
29353                         try {
29354                             var n = y in t && null !== t[y],
29355                                 r = $("__" + Math.round(1e7 * Math.random()));
29356                             return n && ((p = t[y]).setItem(r, ""), p.removeItem(r)), n
29357                         } catch (t) {
29358                             return m.defaultToCookie && (y = "cookie"), e.$broadcast("LocalStorageModule.notification.error", t.message), !1
29359                         }
29360                     },
29361                     C = E(),
29362                     x = function(t, n, i) {
29363                         var o = N();
29364                         try {
29365                             if (I(i), n = r(n) ? null : l(n), !C && m.defaultToCookie || "cookie" === m.storageType) return C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
29366                                 key: t,
29367                                 newvalue: n,
29368                                 storageType: "cookie"
29369                             }), S(t, n);
29370                             try {
29371                                 p && p.setItem($(t), n), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
29372                                     key: t,
29373                                     newvalue: n,
29374                                     storageType: m.storageType
29375                                 })
29376                             } catch (r) {
29377                                 return e.$broadcast("LocalStorageModule.notification.error", r.message), S(t, n)
29378                             }
29379                             return !0
29380                         } finally {
29381                             I(o)
29382                         }
29383                     },
29384                     k = function(t, n) {
29385                         var r = N();
29386                         try {
29387                             if (I(n), !C && m.defaultToCookie || "cookie" === m.storageType) return C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), A(t);
29388                             var i = p ? p.getItem($(t)) : null;
29389                             if (!i || "null" === i) return null;
29390                             try {
29391                                 return JSON.parse(i)
29392                             } catch (e) {
29393                                 return i
29394                             }
29395                         } finally {
29396                             I(r)
29397                         }
29398                     },
29399                     T = function() {
29400                         var t = N();
29401                         try {
29402                             var n = 0;
29403                             arguments.length >= 1 && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (n = 1, I(arguments[arguments.length - 1]));
29404                             var r, i;
29405                             for (r = 0; r < arguments.length - n; r++)
29406                                 if (i = arguments[r], !C && m.defaultToCookie || "cookie" === m.storageType) C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
29407                                     key: i,
29408                                     storageType: "cookie"
29409                                 }), O(i);
29410                                 else try {
29411                                     p.removeItem($(i)), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
29412                                         key: i,
29413                                         storageType: m.storageType
29414                                     })
29415                                 } catch (t) {
29416                                     e.$broadcast("LocalStorageModule.notification.error", t.message), O(i)
29417                                 }
29418                         } finally {
29419                             I(t)
29420                         }
29421                     },
29422                     M = function() {
29423                         try {
29424                             return t.navigator.cookieEnabled || "cookie" in u && (u.cookie.length > 0 || (u.cookie = "test").indexOf.call(u.cookie, "test") > -1)
29425                         } catch (t) {
29426                             return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
29427                         }
29428                     }(),
29429                     S = function(t, n, s, c) {
29430                         if (r(n)) return !1;
29431                         if ((a(n) || o(n)) && (n = l(n)), !M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
29432                         try {
29433                             var d = "",
29434                                 f = new Date,
29435                                 h = "";
29436                             if (null === n ? (f.setTime(f.getTime() + -864e5), d = "; expires=" + f.toGMTString(), n = "") : i(s) && 0 !== s ? (f.setTime(f.getTime() + 24 * s * 60 * 60 * 1e3), d = "; expires=" + f.toGMTString()) : 0 !== v.expiry && (f.setTime(f.getTime() + 24 * v.expiry * 60 * 60 * 1e3), d = "; expires=" + f.toGMTString()), t) {
29437                                 var p = "; path=" + v.path;
29438                                 v.domain && (h = "; domain=" + v.domain), "boolean" == typeof c ? !0 === c && (h += "; secure") : !0 === v.secure && (h += "; secure"), u.cookie = $(t) + "=" + encodeURIComponent(n) + d + p + h
29439                             }
29440                         } catch (t) {
29441                             return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
29442                         }
29443                         return !0
29444                     },
29445                     A = function(t) {
29446                         if (!M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
29447                         for (var n = u.cookie && u.cookie.split(";") || [], r = 0; r < n.length; r++) {
29448                             for (var i = n[r];
29449                                 " " === i.charAt(0);) i = i.substring(1, i.length);
29450                             if (0 === i.indexOf($(t) + "=")) {
29451                                 var o = decodeURIComponent(i.substring(g.length + t.length + 1, i.length));
29452                                 try {
29453                                     var a = JSON.parse(o);
29454                                     return "number" == typeof a ? o : a
29455                                 } catch (e) {
29456                                     return o
29457                                 }
29458                             }
29459                         }
29460                         return null
29461                     },
29462                     O = function(e) {
29463                         S(e, null)
29464                     },
29465                     D = function() {
29466                         for (var e = null, t = g.length, n = u.cookie.split(";"), r = 0; r < n.length; r++) {
29467                             for (e = n[r];
29468                                 " " === e.charAt(0);) e = e.substring(1, e.length);
29469                             var i = e.substring(t, e.indexOf("="));
29470                             O(i)
29471                         }
29472                     },
29473                     N = function() {
29474                         return y
29475                     },
29476                     I = function(e) {
29477                         return e && y !== e && (y = e, C = E()), C
29478                     };
29479                 C && (t.addEventListener ? (t.addEventListener("storage", h, !1), e.$on("$destroy", function() {
29480                     t.removeEventListener("storage", h)
29481                 })) : t.attachEvent && (t.attachEvent("onstorage", h), e.$on("$destroy", function() {
29482                     t.detachEvent("onstorage", h)
29483                 })));
29484                 return {
29485                     isSupported: C,
29486                     getStorageType: N,
29487                     setStorageType: I,
29488                     setPrefix: function(e) {
29489                         g = e
29490                     },
29491                     set: x,
29492                     add: x,
29493                     get: k,
29494                     keys: function(t) {
29495                         var n = N();
29496                         try {
29497                             if (I(t), !C) return e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), [];
29498                             var r = g.length,
29499                                 i = [];
29500                             for (var o in p)
29501                                 if (o.substr(0, r) === g) try {
29502                                     i.push(o.substr(r))
29503                                 } catch (t) {
29504                                     return e.$broadcast("LocalStorageModule.notification.error", t.Description), []
29505                                 }
29506                                 return i
29507                         } finally {
29508                             I(n)
29509                         }
29510                     },
29511                     remove: T,
29512                     clearAll: function(t, n) {
29513                         var r = N();
29514                         try {
29515                             I(n);
29516                             var i = g ? new RegExp("^" + g) : new RegExp,
29517                                 o = t ? new RegExp(t) : new RegExp;
29518                             if (!C && m.defaultToCookie || "cookie" === m.storageType) return C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), D();
29519                             if (!C && !m.defaultToCookie) return !1;
29520                             var a = g.length;
29521                             for (var s in p)
29522                                 if (i.test(s) && o.test(s.substr(a))) try {
29523                                     T(s.substr(a))
29524                                 } catch (t) {
29525                                     return e.$broadcast("LocalStorageModule.notification.error", t.message), D()
29526                                 }
29527                                 return !0
29528                         } finally {
29529                             I(r)
29530                         }
29531                     },
29532                     bind: function(e, t, r, i, a) {
29533                         var s = k(i = i || t, a);
29534                         return null === s && n(r) ? s = r : o(s) && o(r) && (s = c(s, r)), d(t).assign(e, s), e.$watch(t, function(e) {
29535                             x(i, e, a)
29536                         }, o(e[t]))
29537                     },
29538                     deriveKey: $,
29539                     underiveKey: _,
29540                     length: function(e) {
29541                         var n = N();
29542                         try {
29543                             I(e);
29544                             for (var r = 0, i = t[y], o = 0; o < i.length; o++) 0 === i.key(o).indexOf(g) && r++;
29545                             return r
29546                         } finally {
29547                             I(n)
29548                         }
29549                     },
29550                     defaultToCookie: this.defaultToCookie,
29551                     cookie: {
29552                         isSupported: M,
29553                         set: S,
29554                         add: S,
29555                         get: A,
29556                         remove: O,
29557                         clearAll: D
29558                     }
29559                 }
29560             }]
29561         })
29562     }(window, window.angular),
29563     function(e, t) {
29564         "use strict";
29565
29566         function n(e) {
29567             var t = [];
29568             return d(t, c).chars(e), t.join("")
29569         }
29570         var r, i, o, a, s, c, l, u, d, f = t.$$minErr("$sanitize");
29571         t.module("ngSanitize", []).provider("$sanitize", function() {
29572             function n(e, t) {
29573                 var n, r = {},
29574                     i = e.split(",");
29575                 for (n = 0; n < i.length; n++) r[t ? s(i[n]) : i[n]] = !0;
29576                 return r
29577             }
29578
29579             function h(e) {
29580                 for (var t = {}, n = 0, r = e.length; n < r; n++) {
29581                     var i = e[n];
29582                     t[i.name] = i.value
29583                 }
29584                 return t
29585             }
29586
29587             function p(e) {
29588                 return e.replace(/&/g, "&amp;").replace(b, function(e) {
29589                     return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
29590                 }).replace(y, function(e) {
29591                     return "&#" + e.charCodeAt(0) + ";"
29592                 }).replace(/</g, "&lt;").replace(/>/g, "&gt;")
29593             }
29594
29595             function m(t) {
29596                 for (; t;) {
29597                     if (t.nodeType === e.Node.ELEMENT_NODE)
29598                         for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
29599                             var o = n[r],
29600                                 a = o.name.toLowerCase();
29601                             "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
29602                         }
29603                     var s = t.firstChild;
29604                     s && m(s), t = g("nextSibling", t)
29605                 }
29606             }
29607
29608             function g(e, t) {
29609                 var n = t[e];
29610                 if (n && l.call(t, n)) throw f("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
29611                 return n
29612             }
29613             var v = !1;
29614             this.$get = ["$$sanitizeUri", function(e) {
29615                 return v && i(M, k),
29616                     function(t) {
29617                         var n = [];
29618                         return u(t, d(n, function(t, n) {
29619                             return !/^unsafe:/.test(e(t, n))
29620                         })), n.join("")
29621                     }
29622             }], this.enableSvg = function(e) {
29623                 return a(e) ? (v = e, this) : v
29624             }, r = t.bind, i = t.extend, o = t.forEach, a = t.isDefined, s = t.lowercase, c = t.noop, u = function(e, t) {
29625                 null === e || void 0 === e ? e = "" : "string" != typeof e && (e = "" + e);
29626                 var n = N(e);
29627                 if (!n) return "";
29628                 var r = 5;
29629                 do {
29630                     if (0 === r) throw f("uinput", "Failed to sanitize html because the input is unstable");
29631                     r--, e = n.innerHTML, n = N(e)
29632                 } while (e !== n.innerHTML);
29633                 for (var i = n.firstChild; i;) {
29634                     switch (i.nodeType) {
29635                         case 1:
29636                             t.start(i.nodeName.toLowerCase(), h(i.attributes));
29637                             break;
29638                         case 3:
29639                             t.chars(i.textContent)
29640                     }
29641                     var o;
29642                     if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = g("nextSibling", i))))
29643                         for (; null == o && (i = g("parentNode", i)) !== n;) o = g("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
29644                     i = o
29645                 }
29646                 for (; i = n.firstChild;) n.removeChild(i)
29647             }, d = function(e, t) {
29648                 var n = !1,
29649                     i = r(e, e.push);
29650                 return {
29651                     start: function(e, r) {
29652                         e = s(e), !n && T[e] && (n = e), n || !0 !== M[e] || (i("<"), i(e), o(r, function(n, r) {
29653                             var o = s(r),
29654                                 a = "img" === e && "src" === o || "background" === o;
29655                             !0 !== D[o] || !0 === S[o] && !t(n, a) || (i(" "), i(r), i('="'), i(p(n)), i('"'))
29656                         }), i(">"))
29657                     },
29658                     end: function(e) {
29659                         e = s(e), n || !0 !== M[e] || !0 === $[e] || (i("</"), i(e), i(">")), e == n && (n = !1)
29660                     },
29661                     chars: function(e) {
29662                         n || i(p(e))
29663                     }
29664                 }
29665             }, l = e.Node.prototype.contains || function(e) {
29666                 return !!(16 & this.compareDocumentPosition(e))
29667             };
29668             var b = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
29669                 y = /([^#-~ |!])/g,
29670                 $ = n("area,br,col,hr,img,wbr"),
29671                 _ = n("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
29672                 w = n("rp,rt"),
29673                 E = i({}, w, _),
29674                 C = i({}, _, n("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),
29675                 x = i({}, w, n("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
29676                 k = n("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),
29677                 T = n("script,style"),
29678                 M = i({}, $, C, x, E),
29679                 S = n("background,cite,href,longdesc,src,xlink:href"),
29680                 A = n("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
29681                 O = n("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan", !0),
29682                 D = i({}, S, O, A),
29683                 N = function(e, t) {
29684                     var n;
29685                     if (!t || !t.implementation) throw f("noinert", "Can't create an inert html document");
29686                     var r = ((n = t.implementation.createHTMLDocument("inert")).documentElement || n.getDocumentElement()).querySelector("body");
29687                     return r.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>', r.querySelector("svg") ? (r.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">', r.querySelector("svg img") ? function(t) {
29688                         t = "<remove></remove>" + t;
29689                         try {
29690                             var n = (new e.DOMParser).parseFromString(t, "text/html").body;
29691                             return n.firstChild.remove(), n
29692                         } catch (e) {
29693                             return
29694                         }
29695                     } : function(e) {
29696                         return r.innerHTML = e, t.documentMode && m(r), r
29697                     }) : function(t) {
29698                         t = "<remove></remove>" + t;
29699                         try {
29700                             t = encodeURI(t)
29701                         } catch (e) {
29702                             return
29703                         }
29704                         var n = new e.XMLHttpRequest;
29705                         n.responseType = "document", n.open("GET", "data:text/html;charset=utf-8," + t, !1), n.send(null);
29706                         var r = n.response.body;
29707                         return r.firstChild.remove(), r
29708                     }
29709                 }(e, e.document)
29710         }).info({
29711             angularVersion: "1.6.6"
29712         }), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
29713             var r = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
29714                 i = /^mailto:/i,
29715                 o = t.$$minErr("linky"),
29716                 a = t.isDefined,
29717                 s = t.isFunction,
29718                 c = t.isObject,
29719                 l = t.isString;
29720             return function(t, u, d) {
29721                 function f(e) {
29722                     e && b.push(n(e))
29723                 }
29724                 if (null == t || "" === t) return t;
29725                 if (!l(t)) throw o("notstring", "Expected string but received: {0}", t);
29726                 for (var h, p, m, g = s(d) ? d : c(d) ? function() {
29727                         return d
29728                     } : function() {
29729                         return {}
29730                     }, v = t, b = []; h = v.match(r);) p = h[0], h[2] || h[4] || (p = (h[3] ? "http://" : "mailto:") + p), m = h.index, f(v.substr(0, m)),
29731                     function(e, t) {
29732                         var n, r = g(e);
29733                         b.push("<a ");
29734                         for (n in r) b.push(n + '="' + r[n] + '" ');
29735                         !a(u) || "target" in r || b.push('target="', u, '" '), b.push('href="', e.replace(/"/g, "&quot;"), '">'), f(t), b.push("</a>")
29736                     }(p, h[0].replace(i, "")), v = v.substring(m + h[0].length);
29737                 return f(v), e(b.join(""))
29738             }
29739         }])
29740     }(window, window.angular),
29741     function(e) {
29742         angular.module("ngCsv.config", []).value("ngCsv.config", {
29743             debug: !0
29744         }).config(["$compileProvider", function(e) {
29745             angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
29746         }]), angular.module("ngCsv.directives", ["ngCsv.services"]), angular.module("ngCsv.services", []), angular.module("ngCsv", ["ngCsv.config", "ngCsv.services", "ngCsv.directives", "ngSanitize"]), "undefined" != typeof module && "undefined" != typeof exports && module.exports === exports && (module.exports = "ngCsv"), angular.module("ngCsv.services").service("CSV", ["$q", function(e) {
29747             var t = "\r\n",
29748                 n = {
29749                     "\\t": "\t",
29750                     "\\b": "\b",
29751                     "\\v": "\v",
29752                     "\\f": "\f",
29753                     "\\r": "\r"
29754                 };
29755             this.stringifyField = function(e, t) {
29756                 return "locale" === t.decimalSep && this.isFloat(e) ? e.toLocaleString() : "." !== t.decimalSep && this.isFloat(e) ? e.toString().replace(".", t.decimalSep) : "string" == typeof e ? (e = e.replace(/"/g, '""'), (t.quoteStrings || e.indexOf(",") > -1 || e.indexOf("\n") > -1 || e.indexOf("\r") > -1) && (e = t.txtDelim + e + t.txtDelim), e) : "boolean" == typeof e ? e ? "TRUE" : "FALSE" : e
29757             }, this.isFloat = function(e) {
29758                 return +e === e && (!isFinite(e) || Boolean(e % 1))
29759             }, this.stringify = function(n, r) {
29760                 var i = e.defer(),
29761                     o = this,
29762                     a = "",
29763                     s = "",
29764                     c = e.when(n).then(function(e) {
29765                         if (angular.isDefined(r.header) && r.header) {
29766                             var n, c;
29767                             n = [], angular.forEach(r.header, function(e) {
29768                                 this.push(o.stringifyField(e, r))
29769                             }, n), c = n.join(r.fieldSep ? r.fieldSep : ","), s += c + t
29770                         }
29771                         var l = [];
29772                         if (angular.isArray(e) ? l = e : angular.isFunction(e) && (l = e()), angular.isDefined(r.label) && r.label && "boolean" == typeof r.label) {
29773                             var u, d;
29774                             u = [], angular.forEach(l[0], function(e, t) {
29775                                 this.push(o.stringifyField(t, r))
29776                             }, u), d = u.join(r.fieldSep ? r.fieldSep : ","), s += d + t
29777                         }
29778                         angular.forEach(l, function(e, n) {
29779                             var i, a, c = angular.copy(l[n]);
29780                             a = [];
29781                             var u = r.columnOrder ? r.columnOrder : c;
29782                             angular.forEach(u, function(e) {
29783                                 var t = r.columnOrder ? c[e] : e;
29784                                 this.push(o.stringifyField(t, r))
29785                             }, a), i = a.join(r.fieldSep ? r.fieldSep : ","), s += n < l.length ? i + t : i
29786                         }), r.addByteOrderMarker && (a += "\ufeff"), a += s, i.resolve(a)
29787                     });
29788                 return "function" == typeof c.catch && c.catch(function(e) {
29789                     i.reject(e)
29790                 }), i.promise
29791             }, this.isSpecialChar = function(e) {
29792                 return void 0 !== n[e]
29793             }, this.getSpecialChar = function(e) {
29794                 return n[e]
29795             }
29796         }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(t, n, r, i, o) {
29797             return {
29798                 restrict: "AC",
29799                 scope: {
29800                     data: "&ngCsv",
29801                     filename: "@filename",
29802                     header: "&csvHeader",
29803                     columnOrder: "&csvColumnOrder",
29804                     txtDelim: "@textDelimiter",
29805                     decimalSep: "@decimalSeparator",
29806                     quoteStrings: "@quoteStrings",
29807                     fieldSep: "@fieldSeparator",
29808                     lazyLoad: "@lazyLoad",
29809                     addByteOrderMarker: "@addBom",
29810                     ngClick: "&",
29811                     charset: "@charset",
29812                     label: "&csvLabel"
29813                 },
29814                 controller: ["$scope", "$element", "$attrs", "$transclude", function(e, t, i) {
29815                     function o() {
29816                         var t = {
29817                             txtDelim: e.txtDelim ? e.txtDelim : '"',
29818                             decimalSep: e.decimalSep ? e.decimalSep : ".",
29819                             quoteStrings: e.quoteStrings,
29820                             addByteOrderMarker: e.addByteOrderMarker
29821                         };
29822                         return angular.isDefined(i.csvHeader) && (t.header = e.$eval(e.header)), angular.isDefined(i.csvColumnOrder) && (t.columnOrder = e.$eval(e.columnOrder)), angular.isDefined(i.csvLabel) && (t.label = e.$eval(e.label)), t.fieldSep = e.fieldSep ? e.fieldSep : ",", t.fieldSep = r.isSpecialChar(t.fieldSep) ? r.getSpecialChar(t.fieldSep) : t.fieldSep, t
29823                     }
29824                     e.csv = "", angular.isDefined(e.lazyLoad) && "true" == e.lazyLoad || angular.isArray(e.data) && e.$watch("data", function() {
29825                         e.buildCSV()
29826                     }, !0), e.getFilename = function() {
29827                         return e.filename || "download.csv"
29828                     }, e.buildCSV = function() {
29829                         var a = n.defer();
29830                         return t.addClass(i.ngCsvLoadingClass || "ng-csv-loading"), r.stringify(e.data(), o()).then(function(n) {
29831                             e.csv = n, t.removeClass(i.ngCsvLoadingClass || "ng-csv-loading"), a.resolve(n)
29832                         }), e.$apply(), a.promise
29833                     }
29834                 }],
29835                 link: function(t, n) {
29836                     function r() {
29837                         var n = t.charset || "utf-8",
29838                             r = new Blob([t.csv], {
29839                                 type: "text/csv;charset=" + n + ";"
29840                             });
29841                         if (e.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(r, t.getFilename());
29842                         else {
29843                             var a = angular.element('<div data-tap-disabled="true"><a></a></div>'),
29844                                 s = angular.element(a.children()[0]);
29845                             s.attr("href", e.URL.createObjectURL(r)), s.attr("download", t.getFilename()), s.attr("target", "_blank"), i.find("body").append(a), o(function() {
29846                                 s[0].click(), s.remove()
29847                             }, null)
29848                         }
29849                     }
29850                     n.bind("click", function() {
29851                         t.buildCSV().then(function() {
29852                             r()
29853                         }), t.$apply()
29854                     })
29855                 }
29856             }
29857         }])
29858     }(window, document),
29859     function(e, t) {
29860         "use strict";
29861
29862         function n(e) {
29863             return null != e && "" !== e && "hasOwnProperty" !== e && a.test("." + e)
29864         }
29865
29866         function r(e, r) {
29867             if (!n(r)) throw o("badmember", 'Dotted member path "@{0}" is invalid.', r);
29868             for (var i = r.split("."), a = 0, s = i.length; a < s && t.isDefined(e); a++) {
29869                 var c = i[a];
29870                 e = null !== e ? e[c] : void 0
29871             }
29872             return e
29873         }
29874
29875         function i(e, n) {
29876             n = n || {}, t.forEach(n, function(e, t) {
29877                 delete n[t]
29878             });
29879             for (var r in e) !e.hasOwnProperty(r) || "$" === r.charAt(0) && "$" === r.charAt(1) || (n[r] = e[r]);
29880             return n
29881         }
29882         var o = t.$$minErr("$resource"),
29883             a = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
29884         t.module("ngResource", ["ng"]).info({
29885             angularVersion: "1.6.6"
29886         }).provider("$resource", function() {
29887             var e = /^https?:\/\/\[[^\]]*][^/]*/,
29888                 n = this;
29889             this.defaults = {
29890                 stripTrailingSlashes: !0,
29891                 cancellable: !1,
29892                 actions: {
29893                     get: {
29894                         method: "GET"
29895                     },
29896                     save: {
29897                         method: "POST"
29898                     },
29899                     query: {
29900                         method: "GET",
29901                         isArray: !0
29902                     },
29903                     remove: {
29904                         method: "DELETE"
29905                     },
29906                     delete: {
29907                         method: "DELETE"
29908                     }
29909                 }
29910             }, this.$get = ["$http", "$log", "$q", "$timeout", function(a, s, c, l) {
29911                 function u(e, t) {
29912                     this.template = e, this.defaults = p({}, n.defaults, t), this.urlParams = {}
29913                 }
29914
29915                 function d(e, t, $, _) {
29916                     function w(e, n) {
29917                         var i = {};
29918                         return n = p({}, t, n), h(n, function(t, n) {
29919                             b(t) && (t = t(e)), i[n] = t && t.charAt && "@" === t.charAt(0) ? r(e, t.substr(1)) : t
29920                         }), i
29921                     }
29922
29923                     function E(e) {
29924                         return e.resource
29925                     }
29926
29927                     function C(e) {
29928                         i(e || {}, this)
29929                     }
29930                     var x = new u(e, _);
29931                     return $ = p({}, n.defaults.actions, $), C.prototype.toJSON = function() {
29932                         var e = p({}, this);
29933                         return delete e.$promise, delete e.$resolved, delete e.$cancelRequest, e
29934                     }, h($, function(e, t) {
29935                         var n = !0 === e.hasBody || !1 !== e.hasBody && /^(POST|PUT|PATCH)$/i.test(e.method),
29936                             r = e.timeout,
29937                             u = v(e.cancellable) ? e.cancellable : x.defaults.cancellable;
29938                         r && !y(r) && (s.debug("ngResource:\n  Only numeric values are allowed as `timeout`.\n  Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."), delete e.timeout, r = null), C[t] = function(s, d, v, y) {
29939                             var $, _, k, T = {};
29940                             switch (arguments.length) {
29941                                 case 4:
29942                                     k = y, _ = v;
29943                                 case 3:
29944                                 case 2:
29945                                     if (!b(d)) {
29946                                         T = s, $ = d, _ = v;
29947                                         break
29948                                     }
29949                                     if (b(s)) {
29950                                         _ = s, k = d;
29951                                         break
29952                                     }
29953                                     _ = d, k = v;
29954                                 case 1:
29955                                     b(s) ? _ = s : n ? $ = s : T = s;
29956                                     break;
29957                                 case 0:
29958                                     break;
29959                                 default:
29960                                     throw o("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
29961                             }
29962                             var M, S, A = this instanceof C,
29963                                 O = A ? $ : e.isArray ? [] : new C($),
29964                                 D = {},
29965                                 N = e.interceptor && e.interceptor.response || E,
29966                                 I = e.interceptor && e.interceptor.responseError || void 0,
29967                                 R = !!k,
29968                                 P = !!I;
29969                             h(e, function(e, t) {
29970                                 switch (t) {
29971                                     default: D[t] = m(e);
29972                                     break;
29973                                     case "params":
29974                                             case "isArray":
29975                                             case "interceptor":
29976                                             case "cancellable":
29977                                 }
29978                             }), !A && u && (M = c.defer(), D.timeout = M.promise, r && (S = l(M.resolve, r))), n && (D.data = $), x.setUrlParams(D, p({}, w($, e.params || {}), T), e.url);
29979                             var H = a(D).then(function(n) {
29980                                 var r = n.data;
29981                                 if (r) {
29982                                     if (g(r) !== !!e.isArray) throw o("badcfg", "Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})", t, e.isArray ? "array" : "object", g(r) ? "array" : "object", D.method, D.url);
29983                                     if (e.isArray) O.length = 0, h(r, function(e) {
29984                                         "object" == typeof e ? O.push(new C(e)) : O.push(e)
29985                                     });
29986                                     else {
29987                                         var a = O.$promise;
29988                                         i(r, O), O.$promise = a
29989                                     }
29990                                 }
29991                                 return n.resource = O, n
29992                             }, function(e) {
29993                                 return e.resource = O, c.reject(e)
29994                             });
29995                             return H = H.finally(function() {
29996                                 O.$resolved = !0, !A && u && (O.$cancelRequest = f, l.cancel(S), M = S = D.timeout = null)
29997                             }), H = H.then(function(e) {
29998                                 var t = N(e);
29999                                 return (_ || f)(t, e.headers, e.status, e.statusText), t
30000                             }, R || P ? function(e) {
30001                                 return R && !P && H.catch(f), R && k(e), P ? I(e) : c.reject(e)
30002                             } : void 0), A ? H : (O.$promise = H, O.$resolved = !1, u && (O.$cancelRequest = function(e) {
30003                                 H.catch(f), null !== M && M.resolve(e)
30004                             }), O)
30005                         }, C.prototype["$" + t] = function(e, n, r) {
30006                             b(e) && (r = n, n = e, e = {});
30007                             var i = C[t].call(this, e, this, n, r);
30008                             return i.$promise || i
30009                         }
30010                     }), C.bind = function(n) {
30011                         var r = p({}, t, n);
30012                         return d(e, r, $, _)
30013                     }, C
30014                 }
30015                 var f = t.noop,
30016                     h = t.forEach,
30017                     p = t.extend,
30018                     m = t.copy,
30019                     g = t.isArray,
30020                     v = t.isDefined,
30021                     b = t.isFunction,
30022                     y = t.isNumber,
30023                     $ = t.$$encodeUriQuery,
30024                     _ = t.$$encodeUriSegment;
30025                 return u.prototype = {
30026                     setUrlParams: function(t, n, r) {
30027                         var i, a, s = this,
30028                             c = r || s.template,
30029                             l = "",
30030                             u = s.urlParams = Object.create(null);
30031                         h(c.split(/\W/), function(e) {
30032                             if ("hasOwnProperty" === e) throw o("badname", "hasOwnProperty is not a valid parameter name.");
30033                             !new RegExp("^\\d+$").test(e) && e && new RegExp("(^|[^\\\\]):" + e + "(\\W|$)").test(c) && (u[e] = {
30034                                 isQueryParamValue: new RegExp("\\?.*=:" + e + "(?:\\W|$)").test(c)
30035                             })
30036                         }), c = c.replace(/\\:/g, ":"), c = c.replace(e, function(e) {
30037                             return l = e, ""
30038                         }), n = n || {}, h(s.urlParams, function(e, t) {
30039                             i = n.hasOwnProperty(t) ? n[t] : s.defaults[t], v(i) && null !== i ? (a = e.isQueryParamValue ? $(i, !0) : _(i), c = c.replace(new RegExp(":" + t + "(\\W|$)", "g"), function(e, t) {
30040                                 return a + t
30041                             })) : c = c.replace(new RegExp("(/?):" + t + "(\\W|$)", "g"), function(e, t, n) {
30042                                 return "/" === n.charAt(0) ? n : t + n
30043                             })
30044                         }), s.defaults.stripTrailingSlashes && (c = c.replace(/\/+$/, "") || "/"), c = c.replace(/\/\.(?=\w+($|\?))/, "."), t.url = l + c.replace(/\/(\\|%5C)\./, "/."), h(n, function(e, n) {
30045                             s.urlParams[n] || (t.params = t.params || {}, t.params[n] = e)
30046                         })
30047                     }
30048                 }, d
30049             }]
30050         })
30051     }(window, window.angular),
30052     function(e, t) {
30053         "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
30054     }(this, function() {
30055         "use strict";
30056
30057         function e() {
30058             return bt.apply(null, arguments)
30059         }
30060
30061         function t(e) {
30062             return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
30063         }
30064
30065         function n(e) {
30066             return null != e && "[object Object]" === Object.prototype.toString.call(e)
30067         }
30068
30069         function r(e) {
30070             var t;
30071             for (t in e) return !1;
30072             return !0
30073         }
30074
30075         function i(e) {
30076             return void 0 === e
30077         }
30078
30079         function o(e) {
30080             return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
30081         }
30082
30083         function a(e) {
30084             return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
30085         }
30086
30087         function s(e, t) {
30088             var n, r = [];
30089             for (n = 0; n < e.length; ++n) r.push(t(e[n], n));
30090             return r
30091         }
30092
30093         function c(e, t) {
30094             return Object.prototype.hasOwnProperty.call(e, t)
30095         }
30096
30097         function l(e, t) {
30098             for (var n in t) c(t, n) && (e[n] = t[n]);
30099             return c(t, "toString") && (e.toString = t.toString), c(t, "valueOf") && (e.valueOf = t.valueOf), e
30100         }
30101
30102         function u(e, t, n, r) {
30103             return Re(e, t, n, r, !0).utc()
30104         }
30105
30106         function d() {
30107             return {
30108                 empty: !1,
30109                 unusedTokens: [],
30110                 unusedInput: [],
30111                 overflow: -2,
30112                 charsLeftOver: 0,
30113                 nullInput: !1,
30114                 invalidMonth: null,
30115                 invalidFormat: !1,
30116                 userInvalidated: !1,
30117                 iso: !1,
30118                 parsedDateParts: [],
30119                 meridiem: null,
30120                 rfc2822: !1,
30121                 weekdayMismatch: !1
30122             }
30123         }
30124
30125         function f(e) {
30126             return null == e._pf && (e._pf = d()), e._pf
30127         }
30128
30129         function h(e) {
30130             if (null == e._isValid) {
30131                 var t = f(e),
30132                     n = $t.call(t.parsedDateParts, function(e) {
30133                         return null != e
30134                     }),
30135                     r = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n);
30136                 if (e._strict && (r = r && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return r;
30137                 e._isValid = r
30138             }
30139             return e._isValid
30140         }
30141
30142         function p(e) {
30143             var t = u(NaN);
30144             return null != e ? l(f(t), e) : f(t).userInvalidated = !0, t
30145         }
30146
30147         function m(e, t) {
30148             var n, r, o;
30149             if (i(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), i(t._i) || (e._i = t._i), i(t._f) || (e._f = t._f), i(t._l) || (e._l = t._l), i(t._strict) || (e._strict = t._strict), i(t._tzm) || (e._tzm = t._tzm), i(t._isUTC) || (e._isUTC = t._isUTC), i(t._offset) || (e._offset = t._offset), i(t._pf) || (e._pf = f(t)), i(t._locale) || (e._locale = t._locale), _t.length > 0)
30150                 for (n = 0; n < _t.length; n++) i(o = t[r = _t[n]]) || (e[r] = o);
30151             return e
30152         }
30153
30154         function g(t) {
30155             m(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === wt && (wt = !0, e.updateOffset(this), wt = !1)
30156         }
30157
30158         function v(e) {
30159             return e instanceof g || null != e && null != e._isAMomentObject
30160         }
30161
30162         function b(e) {
30163             return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
30164         }
30165
30166         function y(e) {
30167             var t = +e,
30168                 n = 0;
30169             return 0 !== t && isFinite(t) && (n = b(t)), n
30170         }
30171
30172         function $(e, t, n) {
30173             var r, i = Math.min(e.length, t.length),
30174                 o = Math.abs(e.length - t.length),
30175                 a = 0;
30176             for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && y(e[r]) !== y(t[r])) && a++;
30177             return a + o
30178         }
30179
30180         function _(t) {
30181             !1 === e.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t)
30182         }
30183
30184         function w(t, n) {
30185             var r = !0;
30186             return l(function() {
30187                 if (null != e.deprecationHandler && e.deprecationHandler(null, t), r) {
30188                     for (var i, o = [], a = 0; a < arguments.length; a++) {
30189                         if (i = "", "object" == typeof arguments[a]) {
30190                             i += "\n[" + a + "] ";
30191                             for (var s in arguments[0]) i += s + ": " + arguments[0][s] + ", ";
30192                             i = i.slice(0, -2)
30193                         } else i = arguments[a];
30194                         o.push(i)
30195                     }
30196                     _(t + "\nArguments: " + Array.prototype.slice.call(o).join("") + "\n" + (new Error).stack), r = !1
30197                 }
30198                 return n.apply(this, arguments)
30199             }, n)
30200         }
30201
30202         function E(t, n) {
30203             null != e.deprecationHandler && e.deprecationHandler(t, n), Et[t] || (_(n), Et[t] = !0)
30204         }
30205
30206         function C(e) {
30207             return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
30208         }
30209
30210         function x(e, t) {
30211             var r, i = l({}, e);
30212             for (r in t) c(t, r) && (n(e[r]) && n(t[r]) ? (i[r] = {}, l(i[r], e[r]), l(i[r], t[r])) : null != t[r] ? i[r] = t[r] : delete i[r]);
30213             for (r in e) c(e, r) && !c(t, r) && n(e[r]) && (i[r] = l({}, i[r]));
30214             return i
30215         }
30216
30217         function k(e) {
30218             null != e && this.set(e)
30219         }
30220
30221         function T(e, t) {
30222             var n = e.toLowerCase();
30223             Ot[n] = Ot[n + "s"] = Ot[t] = e
30224         }
30225
30226         function M(e) {
30227             return "string" == typeof e ? Ot[e] || Ot[e.toLowerCase()] : void 0
30228         }
30229
30230         function S(e) {
30231             var t, n, r = {};
30232             for (n in e) c(e, n) && (t = M(n)) && (r[t] = e[n]);
30233             return r
30234         }
30235
30236         function A(e, t) {
30237             Dt[e] = t
30238         }
30239
30240         function O(e) {
30241             var t = [];
30242             for (var n in e) t.push({
30243                 unit: n,
30244                 priority: Dt[n]
30245             });
30246             return t.sort(function(e, t) {
30247                 return e.priority - t.priority
30248             }), t
30249         }
30250
30251         function D(t, n) {
30252             return function(r) {
30253                 return null != r ? (I(this, t, r), e.updateOffset(this, n), this) : N(this, t)
30254             }
30255         }
30256
30257         function N(e, t) {
30258             return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
30259         }
30260
30261         function I(e, t, n) {
30262             e.isValid() && e._d["set" + (e._isUTC ? "UTC" : "") + t](n)
30263         }
30264
30265         function R(e, t, n) {
30266             var r = "" + Math.abs(e),
30267                 i = t - r.length;
30268             return (e >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
30269         }
30270
30271         function P(e, t, n, r) {
30272             var i = r;
30273             "string" == typeof r && (i = function() {
30274                 return this[r]()
30275             }), e && (Pt[e] = i), t && (Pt[t[0]] = function() {
30276                 return R(i.apply(this, arguments), t[1], t[2])
30277             }), n && (Pt[n] = function() {
30278                 return this.localeData().ordinal(i.apply(this, arguments), e)
30279             })
30280         }
30281
30282         function H(e) {
30283             return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
30284         }
30285
30286         function j(e) {
30287             var t, n, r = e.match(Nt);
30288             for (t = 0, n = r.length; t < n; t++) Pt[r[t]] ? r[t] = Pt[r[t]] : r[t] = H(r[t]);
30289             return function(t) {
30290                 var i, o = "";
30291                 for (i = 0; i < n; i++) o += C(r[i]) ? r[i].call(t, e) : r[i];
30292                 return o
30293             }
30294         }
30295
30296         function L(e, t) {
30297             return e.isValid() ? (t = F(t, e.localeData()), Rt[t] = Rt[t] || j(t), Rt[t](e)) : e.localeData().invalidDate()
30298         }
30299
30300         function F(e, t) {
30301             var n = 5;
30302             for (It.lastIndex = 0; n >= 0 && It.test(e);) e = e.replace(It, function(e) {
30303                 return t.longDateFormat(e) || e
30304             }), It.lastIndex = 0, n -= 1;
30305             return e
30306         }
30307
30308         function q(e, t, n) {
30309             en[e] = C(t) ? t : function(e, r) {
30310                 return e && n ? n : t
30311             }
30312         }
30313
30314         function U(e, t) {
30315             return c(en, e) ? en[e](t._strict, t._locale) : new RegExp(V(e))
30316         }
30317
30318         function V(e) {
30319             return B(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, r, i) {
30320                 return t || n || r || i
30321             }))
30322         }
30323
30324         function B(e) {
30325             return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
30326         }
30327
30328         function z(e, t) {
30329             var n, r = t;
30330             for ("string" == typeof e && (e = [e]), o(t) && (r = function(e, n) {
30331                     n[t] = y(e)
30332                 }), n = 0; n < e.length; n++) tn[e[n]] = r
30333         }
30334
30335         function W(e, t) {
30336             z(e, function(e, n, r, i) {
30337                 r._w = r._w || {}, t(e, r._w, r, i)
30338             })
30339         }
30340
30341         function Y(e, t, n) {
30342             null != t && c(tn, e) && tn[e](t, n._a, n, e)
30343         }
30344
30345         function G(e, t) {
30346             return new Date(Date.UTC(e, t + 1, 0)).getUTCDate()
30347         }
30348
30349         function K(e, t, n) {
30350             var r, i, o, a = e.toLocaleLowerCase();
30351             if (!this._monthsParse)
30352                 for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r) o = u([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase();
30353             return n ? "MMM" === t ? -1 !== (i = fn.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = fn.call(this._longMonthsParse, a)) ? i : null : "MMM" === t ? -1 !== (i = fn.call(this._shortMonthsParse, a)) ? i : -1 !== (i = fn.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = fn.call(this._longMonthsParse, a)) ? i : -1 !== (i = fn.call(this._shortMonthsParse, a)) ? i : null
30354         }
30355
30356         function Z(e, t) {
30357             var n;
30358             if (!e.isValid()) return e;
30359             if ("string" == typeof t)
30360                 if (/^\d+$/.test(t)) t = y(t);
30361                 else if (t = e.localeData().monthsParse(t), !o(t)) return e;
30362             return n = Math.min(e.date(), G(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
30363         }
30364
30365         function X(t) {
30366             return null != t ? (Z(this, t), e.updateOffset(this, !0), this) : N(this, "Month")
30367         }
30368
30369         function Q() {
30370             function e(e, t) {
30371                 return t.length - e.length
30372             }
30373             var t, n, r = [],
30374                 i = [],
30375                 o = [];
30376             for (t = 0; t < 12; t++) n = u([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, ""));
30377             for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++) r[t] = B(r[t]), i[t] = B(i[t]);
30378             for (t = 0; t < 24; t++) o[t] = B(o[t]);
30379             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")
30380         }
30381
30382         function J(e) {
30383             return ee(e) ? 366 : 365
30384         }
30385
30386         function ee(e) {
30387             return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
30388         }
30389
30390         function te(e, t, n, r, i, o, a) {
30391             var s = new Date(e, t, n, r, i, o, a);
30392             return e < 100 && e >= 0 && isFinite(s.getFullYear()) && s.setFullYear(e), s
30393         }
30394
30395         function ne(e) {
30396             var t = new Date(Date.UTC.apply(null, arguments));
30397             return e < 100 && e >= 0 && isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e), t
30398         }
30399
30400         function re(e, t, n) {
30401             var r = 7 + t - n;
30402             return -((7 + ne(e, 0, r).getUTCDay() - t) % 7) + r - 1
30403         }
30404
30405         function ie(e, t, n, r, i) {
30406             var o, a, s = 1 + 7 * (t - 1) + (7 + n - r) % 7 + re(e, r, i);
30407             return s <= 0 ? a = J(o = e - 1) + s : s > J(e) ? (o = e + 1, a = s - J(e)) : (o = e, a = s), {
30408                 year: o,
30409                 dayOfYear: a
30410             }
30411         }
30412
30413         function oe(e, t, n) {
30414             var r, i, o = re(e.year(), t, n),
30415                 a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1;
30416             return a < 1 ? r = a + ae(i = e.year() - 1, t, n) : a > ae(e.year(), t, n) ? (r = a - ae(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), {
30417                 week: r,
30418                 year: i
30419             }
30420         }
30421
30422         function ae(e, t, n) {
30423             var r = re(e, t, n),
30424                 i = re(e + 1, t, n);
30425             return (J(e) - r + i) / 7
30426         }
30427
30428         function se(e, t) {
30429             return "string" != typeof e ? e : isNaN(e) ? "number" == typeof(e = t.weekdaysParse(e)) ? e : null : parseInt(e, 10)
30430         }
30431
30432         function ce(e, t) {
30433             return "string" == typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e
30434         }
30435
30436         function le(e, t, n) {
30437             var r, i, o, a = e.toLocaleLowerCase();
30438             if (!this._weekdaysParse)
30439                 for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r) o = u([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(o, "").toLocaleLowerCase();
30440             return n ? "dddd" === t ? -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : null : "dddd" === t ? -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : null
30441         }
30442
30443         function ue() {
30444             function e(e, t) {
30445                 return t.length - e.length
30446             }
30447             var t, n, r, i, o, a = [],
30448                 s = [],
30449                 c = [],
30450                 l = [];
30451             for (t = 0; t < 7; t++) n = u([2e3, 1]).day(t), r = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), o = this.weekdays(n, ""), a.push(r), s.push(i), c.push(o), l.push(r), l.push(i), l.push(o);
30452             for (a.sort(e), s.sort(e), c.sort(e), l.sort(e), t = 0; t < 7; t++) s[t] = B(s[t]), c[t] = B(c[t]), l[t] = B(l[t]);
30453             this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i")
30454         }
30455
30456         function de() {
30457             return this.hours() % 12 || 12
30458         }
30459
30460         function fe(e, t) {
30461             P(e, 0, 0, function() {
30462                 return this.localeData().meridiem(this.hours(), this.minutes(), t)
30463             })
30464         }
30465
30466         function he(e, t) {
30467             return t._meridiemParse
30468         }
30469
30470         function pe(e) {
30471             return e ? e.toLowerCase().replace("_", "-") : e
30472         }
30473
30474         function me(e) {
30475             for (var t, n, r, i, o = 0; o < e.length;) {
30476                 for (t = (i = pe(e[o]).split("-")).length, n = (n = pe(e[o + 1])) ? n.split("-") : null; t > 0;) {
30477                     if (r = ge(i.slice(0, t).join("-"))) return r;
30478                     if (n && n.length >= t && $(i, n, !0) >= t - 1) break;
30479                     t--
30480                 }
30481                 o++
30482             }
30483             return null
30484         }
30485
30486         function ge(e) {
30487             var t = null;
30488             if (!An[e] && "undefined" != typeof module && module && module.exports) try {
30489                 t = kn._abbr, require("./locale/" + e), ve(t)
30490             } catch (e) {}
30491             return An[e]
30492         }
30493
30494         function ve(e, t) {
30495             var n;
30496             return e && (n = i(t) ? ye(e) : be(e, t)) && (kn = n), kn._abbr
30497         }
30498
30499         function be(e, t) {
30500             if (null !== t) {
30501                 var n = Sn;
30502                 if (t.abbr = e, null != An[e]) E("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), n = An[e]._config;
30503                 else if (null != t.parentLocale) {
30504                     if (null == An[t.parentLocale]) return On[t.parentLocale] || (On[t.parentLocale] = []), On[t.parentLocale].push({
30505                         name: e,
30506                         config: t
30507                     }), null;
30508                     n = An[t.parentLocale]._config
30509                 }
30510                 return An[e] = new k(x(n, t)), On[e] && On[e].forEach(function(e) {
30511                     be(e.name, e.config)
30512                 }), ve(e), An[e]
30513             }
30514             return delete An[e], null
30515         }
30516
30517         function ye(e) {
30518             var n;
30519             if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return kn;
30520             if (!t(e)) {
30521                 if (n = ge(e)) return n;
30522                 e = [e]
30523             }
30524             return me(e)
30525         }
30526
30527         function $e(e) {
30528             var t, n = e._a;
30529             return n && -2 === f(e).overflow && (t = n[rn] < 0 || n[rn] > 11 ? rn : n[on] < 1 || n[on] > G(n[nn], n[rn]) ? on : n[an] < 0 || n[an] > 24 || 24 === n[an] && (0 !== n[sn] || 0 !== n[cn] || 0 !== n[ln]) ? an : n[sn] < 0 || n[sn] > 59 ? sn : n[cn] < 0 || n[cn] > 59 ? cn : n[ln] < 0 || n[ln] > 999 ? ln : -1, f(e)._overflowDayOfYear && (t < nn || t > on) && (t = on), f(e)._overflowWeeks && -1 === t && (t = un), f(e)._overflowWeekday && -1 === t && (t = dn), f(e).overflow = t), e
30530         }
30531
30532         function _e(e) {
30533             var t, n, r, i, o, a, s = e._i,
30534                 c = Dn.exec(s) || Nn.exec(s);
30535             if (c) {
30536                 for (f(e).iso = !0, t = 0, n = Rn.length; t < n; t++)
30537                     if (Rn[t][1].exec(c[1])) {
30538                         i = Rn[t][0], r = !1 !== Rn[t][2];
30539                         break
30540                     }
30541                 if (null == i) return void(e._isValid = !1);
30542                 if (c[3]) {
30543                     for (t = 0, n = Pn.length; t < n; t++)
30544                         if (Pn[t][1].exec(c[3])) {
30545                             o = (c[2] || " ") + Pn[t][0];
30546                             break
30547                         }
30548                     if (null == o) return void(e._isValid = !1)
30549                 }
30550                 if (!r && null != o) return void(e._isValid = !1);
30551                 if (c[4]) {
30552                     if (!In.exec(c[4])) return void(e._isValid = !1);
30553                     a = "Z"
30554                 }
30555                 e._f = i + (o || "") + (a || ""), Me(e)
30556             } else e._isValid = !1
30557         }
30558
30559         function we(e) {
30560             var t, n, r, i, o, a, s, c, l = {
30561                 " GMT": " +0000",
30562                 " EDT": " -0400",
30563                 " EST": " -0500",
30564                 " CDT": " -0500",
30565                 " CST": " -0600",
30566                 " MDT": " -0600",
30567                 " MST": " -0700",
30568                 " PDT": " -0700",
30569                 " PST": " -0800"
30570             };
30571             if (t = e._i.replace(/\([^\)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s|\s$/g, ""), n = jn.exec(t)) {
30572                 if (r = n[1] ? "ddd" + (5 === n[1].length ? ", " : " ") : "", i = "D MMM " + (n[2].length > 10 ? "YYYY " : "YY "), o = "HH:mm" + (n[4] ? ":ss" : ""), n[1]) {
30573                     var u = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][new Date(n[2]).getDay()];
30574                     if (n[1].substr(0, 3) !== u) return f(e).weekdayMismatch = !0, void(e._isValid = !1)
30575                 }
30576                 switch (n[5].length) {
30577                     case 2:
30578                         s = 0 === c ? " +0000" : ((c = "YXWVUTSRQPONZABCDEFGHIKLM".indexOf(n[5][1].toUpperCase()) - 12) < 0 ? " -" : " +") + ("" + c).replace(/^-?/, "0").match(/..$/)[0] + "00";
30579                         break;
30580                     case 4:
30581                         s = l[n[5]];
30582                         break;
30583                     default:
30584                         s = l[" GMT"]
30585                 }
30586                 n[5] = s, e._i = n.splice(1).join(""), a = " ZZ", e._f = r + i + o + a, Me(e), f(e).rfc2822 = !0
30587             } else e._isValid = !1
30588         }
30589
30590         function Ee(t) {
30591             var n = Hn.exec(t._i);
30592             null === n ? (_e(t), !1 === t._isValid && (delete t._isValid, we(t), !1 === t._isValid && (delete t._isValid, e.createFromInputFallback(t)))) : t._d = new Date(+n[1])
30593         }
30594
30595         function Ce(e, t, n) {
30596             return null != e ? e : null != t ? t : n
30597         }
30598
30599         function xe(t) {
30600             var n = new Date(e.now());
30601             return t._useUTC ? [n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()] : [n.getFullYear(), n.getMonth(), n.getDate()]
30602         }
30603
30604         function ke(e) {
30605             var t, n, r, i, o = [];
30606             if (!e._d) {
30607                 for (r = xe(e), e._w && null == e._a[on] && null == e._a[rn] && Te(e), null != e._dayOfYear && (i = Ce(e._a[nn], r[nn]), (e._dayOfYear > J(i) || 0 === e._dayOfYear) && (f(e)._overflowDayOfYear = !0), n = ne(i, 0, e._dayOfYear), e._a[rn] = n.getUTCMonth(), e._a[on] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = o[t] = r[t];
30608                 for (; t < 7; t++) e._a[t] = o[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
30609                 24 === e._a[an] && 0 === e._a[sn] && 0 === e._a[cn] && 0 === e._a[ln] && (e._nextDay = !0, e._a[an] = 0), e._d = (e._useUTC ? ne : te).apply(null, o), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[an] = 24)
30610             }
30611         }
30612
30613         function Te(e) {
30614             var t, n, r, i, o, a, s, c;
30615             if (null != (t = e._w).GG || null != t.W || null != t.E) o = 1, a = 4, n = Ce(t.GG, e._a[nn], oe(Pe(), 1, 4).year), r = Ce(t.W, 1), ((i = Ce(t.E, 1)) < 1 || i > 7) && (c = !0);
30616             else {
30617                 o = e._locale._week.dow, a = e._locale._week.doy;
30618                 var l = oe(Pe(), o, a);
30619                 n = Ce(t.gg, e._a[nn], l.year), r = Ce(t.w, l.week), null != t.d ? ((i = t.d) < 0 || i > 6) && (c = !0) : null != t.e ? (i = t.e + o, (t.e < 0 || t.e > 6) && (c = !0)) : i = o
30620             }
30621             r < 1 || r > ae(n, o, a) ? f(e)._overflowWeeks = !0 : null != c ? f(e)._overflowWeekday = !0 : (s = ie(n, r, i, o, a), e._a[nn] = s.year, e._dayOfYear = s.dayOfYear)
30622         }
30623
30624         function Me(t) {
30625             if (t._f !== e.ISO_8601)
30626                 if (t._f !== e.RFC_2822) {
30627                     t._a = [], f(t).empty = !0;
30628                     var n, r, i, o, a, s = "" + t._i,
30629                         c = s.length,
30630                         l = 0;
30631                     for (i = F(t._f, t._locale).match(Nt) || [], n = 0; n < i.length; n++) o = i[n], (r = (s.match(U(o, t)) || [])[0]) && ((a = s.substr(0, s.indexOf(r))).length > 0 && f(t).unusedInput.push(a), s = s.slice(s.indexOf(r) + r.length), l += r.length), Pt[o] ? (r ? f(t).empty = !1 : f(t).unusedTokens.push(o), Y(o, r, t)) : t._strict && !r && f(t).unusedTokens.push(o);
30632                     f(t).charsLeftOver = c - l, s.length > 0 && f(t).unusedInput.push(s), t._a[an] <= 12 && !0 === f(t).bigHour && t._a[an] > 0 && (f(t).bigHour = void 0), f(t).parsedDateParts = t._a.slice(0), f(t).meridiem = t._meridiem, t._a[an] = Se(t._locale, t._a[an], t._meridiem), ke(t), $e(t)
30633                 } else we(t);
30634             else _e(t)
30635         }
30636
30637         function Se(e, t, n) {
30638             var r;
30639             return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? ((r = e.isPM(n)) && t < 12 && (t += 12), r || 12 !== t || (t = 0), t) : t
30640         }
30641
30642         function Ae(e) {
30643             var t, n, r, i, o;
30644             if (0 === e._f.length) return f(e).invalidFormat = !0, void(e._d = new Date(NaN));
30645             for (i = 0; i < e._f.length; i++) o = 0, t = m({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Me(t), h(t) && (o += f(t).charsLeftOver, o += 10 * f(t).unusedTokens.length, f(t).score = o, (null == r || o < r) && (r = o, n = t));
30646             l(e, n || t)
30647         }
30648
30649         function Oe(e) {
30650             if (!e._d) {
30651                 var t = S(e._i);
30652                 e._a = s([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
30653                     return e && parseInt(e, 10)
30654                 }), ke(e)
30655             }
30656         }
30657
30658         function De(e) {
30659             var t = new g($e(Ne(e)));
30660             return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t
30661         }
30662
30663         function Ne(e) {
30664             var n = e._i,
30665                 r = e._f;
30666             return e._locale = e._locale || ye(e._l), null === n || void 0 === r && "" === n ? p({
30667                 nullInput: !0
30668             }) : ("string" == typeof n && (e._i = n = e._locale.preparse(n)), v(n) ? new g($e(n)) : (a(n) ? e._d = n : t(r) ? Ae(e) : r ? Me(e) : Ie(e), h(e) || (e._d = null), e))
30669         }
30670
30671         function Ie(r) {
30672             var c = r._i;
30673             i(c) ? r._d = new Date(e.now()) : a(c) ? r._d = new Date(c.valueOf()) : "string" == typeof c ? Ee(r) : t(c) ? (r._a = s(c.slice(0), function(e) {
30674                 return parseInt(e, 10)
30675             }), ke(r)) : n(c) ? Oe(r) : o(c) ? r._d = new Date(c) : e.createFromInputFallback(r)
30676         }
30677
30678         function Re(e, i, o, a, s) {
30679             var c = {};
30680             return !0 !== o && !1 !== o || (a = o, o = void 0), (n(e) && r(e) || t(e) && 0 === e.length) && (e = void 0), c._isAMomentObject = !0, c._useUTC = c._isUTC = s, c._l = o, c._i = e, c._f = i, c._strict = a, De(c)
30681         }
30682
30683         function Pe(e, t, n, r) {
30684             return Re(e, t, n, r, !1)
30685         }
30686
30687         function He(e, n) {
30688             var r, i;
30689             if (1 === n.length && t(n[0]) && (n = n[0]), !n.length) return Pe();
30690             for (r = n[0], i = 1; i < n.length; ++i) n[i].isValid() && !n[i][e](r) || (r = n[i]);
30691             return r
30692         }
30693
30694         function je(e) {
30695             for (var t in e)
30696                 if (-1 === qn.indexOf(t) || null != e[t] && isNaN(e[t])) return !1;
30697             for (var n = !1, r = 0; r < qn.length; ++r)
30698                 if (e[qn[r]]) {
30699                     if (n) return !1;
30700                     parseFloat(e[qn[r]]) !== y(e[qn[r]]) && (n = !0)
30701                 }
30702             return !0
30703         }
30704
30705         function Le(e) {
30706             var t = S(e),
30707                 n = t.year || 0,
30708                 r = t.quarter || 0,
30709                 i = t.month || 0,
30710                 o = t.week || 0,
30711                 a = t.day || 0,
30712                 s = t.hour || 0,
30713                 c = t.minute || 0,
30714                 l = t.second || 0,
30715                 u = t.millisecond || 0;
30716             this._isValid = je(t), this._milliseconds = +u + 1e3 * l + 6e4 * c + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = ye(), this._bubble()
30717         }
30718
30719         function Fe(e) {
30720             return e instanceof Le
30721         }
30722
30723         function qe(e) {
30724             return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
30725         }
30726
30727         function Ue(e, t) {
30728             P(e, 0, 0, function() {
30729                 var e = this.utcOffset(),
30730                     n = "+";
30731                 return e < 0 && (e = -e, n = "-"), n + R(~~(e / 60), 2) + t + R(~~e % 60, 2)
30732             })
30733         }
30734
30735         function Ve(e, t) {
30736             var n = (t || "").match(e);
30737             if (null === n) return null;
30738             var r = ((n[n.length - 1] || []) + "").match(Un) || ["-", 0, 0],
30739                 i = 60 * r[1] + y(r[2]);
30740             return 0 === i ? 0 : "+" === r[0] ? i : -i
30741         }
30742
30743         function Be(t, n) {
30744             var r, i;
30745             return n._isUTC ? (r = n.clone(), i = (v(t) || a(t) ? t.valueOf() : Pe(t).valueOf()) - r.valueOf(), r._d.setTime(r._d.valueOf() + i), e.updateOffset(r, !1), r) : Pe(t).local()
30746         }
30747
30748         function ze(e) {
30749             return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
30750         }
30751
30752         function We() {
30753             return !!this.isValid() && (this._isUTC && 0 === this._offset)
30754         }
30755
30756         function Ye(e, t) {
30757             var n, r, i, a = e,
30758                 s = null;
30759             return Fe(e) ? a = {
30760                 ms: e._milliseconds,
30761                 d: e._days,
30762                 M: e._months
30763             } : o(e) ? (a = {}, t ? a[t] = e : a.milliseconds = e) : (s = Vn.exec(e)) ? (n = "-" === s[1] ? -1 : 1, a = {
30764                 y: 0,
30765                 d: y(s[on]) * n,
30766                 h: y(s[an]) * n,
30767                 m: y(s[sn]) * n,
30768                 s: y(s[cn]) * n,
30769                 ms: y(qe(1e3 * s[ln])) * n
30770             }) : (s = Bn.exec(e)) ? (n = "-" === s[1] ? -1 : 1, a = {
30771                 y: Ge(s[2], n),
30772                 M: Ge(s[3], n),
30773                 w: Ge(s[4], n),
30774                 d: Ge(s[5], n),
30775                 h: Ge(s[6], n),
30776                 m: Ge(s[7], n),
30777                 s: Ge(s[8], n)
30778             }) : null == a ? a = {} : "object" == typeof a && ("from" in a || "to" in a) && (i = Ze(Pe(a.from), Pe(a.to)), (a = {}).ms = i.milliseconds, a.M = i.months), r = new Le(a), Fe(e) && c(e, "_locale") && (r._locale = e._locale), r
30779         }
30780
30781         function Ge(e, t) {
30782             var n = e && parseFloat(e.replace(",", "."));
30783             return (isNaN(n) ? 0 : n) * t
30784         }
30785
30786         function Ke(e, t) {
30787             var n = {
30788                 milliseconds: 0,
30789                 months: 0
30790             };
30791             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
30792         }
30793
30794         function Ze(e, t) {
30795             var n;
30796             return e.isValid() && t.isValid() ? (t = Be(t, e), e.isBefore(t) ? n = Ke(e, t) : ((n = Ke(t, e)).milliseconds = -n.milliseconds, n.months = -n.months), n) : {
30797                 milliseconds: 0,
30798                 months: 0
30799             }
30800         }
30801
30802         function Xe(e, t) {
30803             return function(n, r) {
30804                 var i, o;
30805                 return null === r || isNaN(+r) || (E(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), o = n, n = r, r = o), n = "string" == typeof n ? +n : n, i = Ye(n, r), Qe(this, i, e), this
30806             }
30807         }
30808
30809         function Qe(t, n, r, i) {
30810             var o = n._milliseconds,
30811                 a = qe(n._days),
30812                 s = qe(n._months);
30813             t.isValid() && (i = null == i || i, o && t._d.setTime(t._d.valueOf() + o * r), a && I(t, "Date", N(t, "Date") + a * r), s && Z(t, N(t, "Month") + s * r), i && e.updateOffset(t, a || s))
30814         }
30815
30816         function Je(e, t) {
30817             var n, r = 12 * (t.year() - e.year()) + (t.month() - e.month()),
30818                 i = e.clone().add(r, "months");
30819             return n = t - i < 0 ? (t - i) / (i - e.clone().add(r - 1, "months")) : (t - i) / (e.clone().add(r + 1, "months") - i), -(r + n) || 0
30820         }
30821
30822         function et(e) {
30823             var t;
30824             return void 0 === e ? this._locale._abbr : (null != (t = ye(e)) && (this._locale = t), this)
30825         }
30826
30827         function tt() {
30828             return this._locale
30829         }
30830
30831         function nt(e, t) {
30832             P(0, [e, e.length], 0, t)
30833         }
30834
30835         function rt(e, t, n, r, i) {
30836             var o;
30837             return null == e ? oe(this, r, i).year : (o = ae(e, r, i), t > o && (t = o), it.call(this, e, t, n, r, i))
30838         }
30839
30840         function it(e, t, n, r, i) {
30841             var o = ie(e, t, n, r, i),
30842                 a = ne(o.year, 0, o.dayOfYear);
30843             return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
30844         }
30845
30846         function ot(e) {
30847             return e
30848         }
30849
30850         function at(e, t, n, r) {
30851             var i = ye(),
30852                 o = u().set(r, t);
30853             return i[n](o, e)
30854         }
30855
30856         function st(e, t, n) {
30857             if (o(e) && (t = e, e = void 0), e = e || "", null != t) return at(e, t, n, "month");
30858             var r, i = [];
30859             for (r = 0; r < 12; r++) i[r] = at(e, r, n, "month");
30860             return i
30861         }
30862
30863         function ct(e, t, n, r) {
30864             "boolean" == typeof e ? (o(t) && (n = t, t = void 0), t = t || "") : (n = t = e, e = !1, o(t) && (n = t, t = void 0), t = t || "");
30865             var i = ye(),
30866                 a = e ? i._week.dow : 0;
30867             if (null != n) return at(t, (n + a) % 7, r, "day");
30868             var s, c = [];
30869             for (s = 0; s < 7; s++) c[s] = at(t, (s + a) % 7, r, "day");
30870             return c
30871         }
30872
30873         function lt(e, t, n, r) {
30874             var i = Ye(t, n);
30875             return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble()
30876         }
30877
30878         function ut(e) {
30879             return e < 0 ? Math.floor(e) : Math.ceil(e)
30880         }
30881
30882         function dt(e) {
30883             return 4800 * e / 146097
30884         }
30885
30886         function ft(e) {
30887             return 146097 * e / 4800
30888         }
30889
30890         function ht(e) {
30891             return function() {
30892                 return this.as(e)
30893             }
30894         }
30895
30896         function pt(e) {
30897             return function() {
30898                 return this.isValid() ? this._data[e] : NaN
30899             }
30900         }
30901
30902         function mt(e, t, n, r, i) {
30903             return i.relativeTime(t || 1, !!n, e, r)
30904         }
30905
30906         function gt(e, t, n) {
30907             var r = Ye(e).abs(),
30908                 i = vr(r.as("s")),
30909                 o = vr(r.as("m")),
30910                 a = vr(r.as("h")),
30911                 s = vr(r.as("d")),
30912                 c = vr(r.as("M")),
30913                 l = vr(r.as("y")),
30914                 u = i <= br.ss && ["s", i] || i < br.s && ["ss", i] || o <= 1 && ["m"] || o < br.m && ["mm", o] || a <= 1 && ["h"] || a < br.h && ["hh", a] || s <= 1 && ["d"] || s < br.d && ["dd", s] || c <= 1 && ["M"] || c < br.M && ["MM", c] || l <= 1 && ["y"] || ["yy", l];
30915             return u[2] = t, u[3] = +e > 0, u[4] = n, mt.apply(null, u)
30916         }
30917
30918         function vt() {
30919             if (!this.isValid()) return this.localeData().invalidDate();
30920             var e, t, n, r = yr(this._milliseconds) / 1e3,
30921                 i = yr(this._days),
30922                 o = yr(this._months);
30923             t = b((e = b(r / 60)) / 60), r %= 60, e %= 60;
30924             var a = n = b(o / 12),
30925                 s = o %= 12,
30926                 c = i,
30927                 l = t,
30928                 u = e,
30929                 d = r,
30930                 f = this.asSeconds();
30931             return f ? (f < 0 ? "-" : "") + "P" + (a ? a + "Y" : "") + (s ? s + "M" : "") + (c ? c + "D" : "") + (l || u || d ? "T" : "") + (l ? l + "H" : "") + (u ? u + "M" : "") + (d ? d + "S" : "") : "P0D"
30932         }
30933         var bt, yt, $t = yt = Array.prototype.some ? Array.prototype.some : function(e) {
30934                 for (var t = Object(this), n = t.length >>> 0, r = 0; r < n; r++)
30935                     if (r in t && e.call(this, t[r], r, t)) return !0;
30936                 return !1
30937             },
30938             _t = e.momentProperties = [],
30939             wt = !1,
30940             Et = {};
30941         e.suppressDeprecationWarnings = !1, e.deprecationHandler = null;
30942         var Ct, xt, kt = Ct = Object.keys ? Object.keys : function(e) {
30943                 var t, n = [];
30944                 for (t in e) c(e, t) && n.push(t);
30945                 return n
30946             },
30947             Tt = {
30948                 sameDay: "[Today at] LT",
30949                 nextDay: "[Tomorrow at] LT",
30950                 nextWeek: "dddd [at] LT",
30951                 lastDay: "[Yesterday at] LT",
30952                 lastWeek: "[Last] dddd [at] LT",
30953                 sameElse: "L"
30954             },
30955             Mt = {
30956                 LTS: "h:mm:ss A",
30957                 LT: "h:mm A",
30958                 L: "MM/DD/YYYY",
30959                 LL: "MMMM D, YYYY",
30960                 LLL: "MMMM D, YYYY h:mm A",
30961                 LLLL: "dddd, MMMM D, YYYY h:mm A"
30962             },
30963             St = /\d{1,2}/,
30964             At = {
30965                 future: "in %s",
30966                 past: "%s ago",
30967                 s: "a few seconds",
30968                 ss: "%d seconds",
30969                 m: "a minute",
30970                 mm: "%d minutes",
30971                 h: "an hour",
30972                 hh: "%d hours",
30973                 d: "a day",
30974                 dd: "%d days",
30975                 M: "a month",
30976                 MM: "%d months",
30977                 y: "a year",
30978                 yy: "%d years"
30979             },
30980             Ot = {},
30981             Dt = {},
30982             Nt = /(\[[^\[]*\])|(\\)?([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,
30983             It = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
30984             Rt = {},
30985             Pt = {},
30986             Ht = /\d/,
30987             jt = /\d\d/,
30988             Lt = /\d{3}/,
30989             Ft = /\d{4}/,
30990             qt = /[+-]?\d{6}/,
30991             Ut = /\d\d?/,
30992             Vt = /\d\d\d\d?/,
30993             Bt = /\d\d\d\d\d\d?/,
30994             zt = /\d{1,3}/,
30995             Wt = /\d{1,4}/,
30996             Yt = /[+-]?\d{1,6}/,
30997             Gt = /\d+/,
30998             Kt = /[+-]?\d+/,
30999             Zt = /Z|[+-]\d\d:?\d\d/gi,
31000             Xt = /Z|[+-]\d\d(?::?\d\d)?/gi,
31001             Qt = /[+-]?\d+(\.\d{1,3})?/,
31002             Jt = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
31003             en = {},
31004             tn = {},
31005             nn = 0,
31006             rn = 1,
31007             on = 2,
31008             an = 3,
31009             sn = 4,
31010             cn = 5,
31011             ln = 6,
31012             un = 7,
31013             dn = 8,
31014             fn = xt = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
31015                 var t;
31016                 for (t = 0; t < this.length; ++t)
31017                     if (this[t] === e) return t;
31018                 return -1
31019             };
31020         P("M", ["MM", 2], "Mo", function() {
31021             return this.month() + 1
31022         }), P("MMM", 0, 0, function(e) {
31023             return this.localeData().monthsShort(this, e)
31024         }), P("MMMM", 0, 0, function(e) {
31025             return this.localeData().months(this, e)
31026         }), T("month", "M"), A("month", 8), q("M", Ut), q("MM", Ut, jt), q("MMM", function(e, t) {
31027             return t.monthsShortRegex(e)
31028         }), q("MMMM", function(e, t) {
31029             return t.monthsRegex(e)
31030         }), z(["M", "MM"], function(e, t) {
31031             t[rn] = y(e) - 1
31032         }), z(["MMM", "MMMM"], function(e, t, n, r) {
31033             var i = n._locale.monthsParse(e, r, n._strict);
31034             null != i ? t[rn] = i : f(n).invalidMonth = e
31035         });
31036         var hn = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
31037             pn = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
31038             mn = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
31039             gn = Jt,
31040             vn = Jt;
31041         P("Y", 0, 0, function() {
31042             var e = this.year();
31043             return e <= 9999 ? "" + e : "+" + e
31044         }), P(0, ["YY", 2], 0, function() {
31045             return this.year() % 100
31046         }), P(0, ["YYYY", 4], 0, "year"), P(0, ["YYYYY", 5], 0, "year"), P(0, ["YYYYYY", 6, !0], 0, "year"), T("year", "y"), A("year", 1), q("Y", Kt), q("YY", Ut, jt), q("YYYY", Wt, Ft), q("YYYYY", Yt, qt), q("YYYYYY", Yt, qt), z(["YYYYY", "YYYYYY"], nn), z("YYYY", function(t, n) {
31047             n[nn] = 2 === t.length ? e.parseTwoDigitYear(t) : y(t)
31048         }), z("YY", function(t, n) {
31049             n[nn] = e.parseTwoDigitYear(t)
31050         }), z("Y", function(e, t) {
31051             t[nn] = parseInt(e, 10)
31052         }), e.parseTwoDigitYear = function(e) {
31053             return y(e) + (y(e) > 68 ? 1900 : 2e3)
31054         };
31055         var bn = D("FullYear", !0);
31056         P("w", ["ww", 2], "wo", "week"), P("W", ["WW", 2], "Wo", "isoWeek"), T("week", "w"), T("isoWeek", "W"), A("week", 5), A("isoWeek", 5), q("w", Ut), q("ww", Ut, jt), q("W", Ut), q("WW", Ut, jt), W(["w", "ww", "W", "WW"], function(e, t, n, r) {
31057             t[r.substr(0, 1)] = y(e)
31058         });
31059         var yn = {
31060             dow: 0,
31061             doy: 6
31062         };
31063         P("d", 0, "do", "day"), P("dd", 0, 0, function(e) {
31064             return this.localeData().weekdaysMin(this, e)
31065         }), P("ddd", 0, 0, function(e) {
31066             return this.localeData().weekdaysShort(this, e)
31067         }), P("dddd", 0, 0, function(e) {
31068             return this.localeData().weekdays(this, e)
31069         }), P("e", 0, 0, "weekday"), P("E", 0, 0, "isoWeekday"), T("day", "d"), T("weekday", "e"), T("isoWeekday", "E"), A("day", 11), A("weekday", 11), A("isoWeekday", 11), q("d", Ut), q("e", Ut), q("E", Ut), q("dd", function(e, t) {
31070             return t.weekdaysMinRegex(e)
31071         }), q("ddd", function(e, t) {
31072             return t.weekdaysShortRegex(e)
31073         }), q("dddd", function(e, t) {
31074             return t.weekdaysRegex(e)
31075         }), W(["dd", "ddd", "dddd"], function(e, t, n, r) {
31076             var i = n._locale.weekdaysParse(e, r, n._strict);
31077             null != i ? t.d = i : f(n).invalidWeekday = e
31078         }), W(["d", "e", "E"], function(e, t, n, r) {
31079             t[r] = y(e)
31080         });
31081         var $n = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
31082             _n = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
31083             wn = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
31084             En = Jt,
31085             Cn = Jt,
31086             xn = Jt;
31087         P("H", ["HH", 2], 0, "hour"), P("h", ["hh", 2], 0, de), P("k", ["kk", 2], 0, function() {
31088             return this.hours() || 24
31089         }), P("hmm", 0, 0, function() {
31090             return "" + de.apply(this) + R(this.minutes(), 2)
31091         }), P("hmmss", 0, 0, function() {
31092             return "" + de.apply(this) + R(this.minutes(), 2) + R(this.seconds(), 2)
31093         }), P("Hmm", 0, 0, function() {
31094             return "" + this.hours() + R(this.minutes(), 2)
31095         }), P("Hmmss", 0, 0, function() {
31096             return "" + this.hours() + R(this.minutes(), 2) + R(this.seconds(), 2)
31097         }), fe("a", !0), fe("A", !1), T("hour", "h"), A("hour", 13), q("a", he), q("A", he), q("H", Ut), q("h", Ut), q("k", Ut), q("HH", Ut, jt), q("hh", Ut, jt), q("kk", Ut, jt), q("hmm", Vt), q("hmmss", Bt), q("Hmm", Vt), q("Hmmss", Bt), z(["H", "HH"], an), z(["k", "kk"], function(e, t, n) {
31098             var r = y(e);
31099             t[an] = 24 === r ? 0 : r
31100         }), z(["a", "A"], function(e, t, n) {
31101             n._isPm = n._locale.isPM(e), n._meridiem = e
31102         }), z(["h", "hh"], function(e, t, n) {
31103             t[an] = y(e), f(n).bigHour = !0
31104         }), z("hmm", function(e, t, n) {
31105             var r = e.length - 2;
31106             t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r)), f(n).bigHour = !0
31107         }), z("hmmss", function(e, t, n) {
31108             var r = e.length - 4,
31109                 i = e.length - 2;
31110             t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r, 2)), t[cn] = y(e.substr(i)), f(n).bigHour = !0
31111         }), z("Hmm", function(e, t, n) {
31112             var r = e.length - 2;
31113             t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r))
31114         }), z("Hmmss", function(e, t, n) {
31115             var r = e.length - 4,
31116                 i = e.length - 2;
31117             t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r, 2)), t[cn] = y(e.substr(i))
31118         });
31119         var kn, Tn = /[ap]\.?m?\.?/i,
31120             Mn = D("Hours", !0),
31121             Sn = {
31122                 calendar: Tt,
31123                 longDateFormat: Mt,
31124                 invalidDate: "Invalid date",
31125                 ordinal: "%d",
31126                 dayOfMonthOrdinalParse: St,
31127                 relativeTime: At,
31128                 months: pn,
31129                 monthsShort: mn,
31130                 week: yn,
31131                 weekdays: $n,
31132                 weekdaysMin: wn,
31133                 weekdaysShort: _n,
31134                 meridiemParse: Tn
31135             },
31136             An = {},
31137             On = {},
31138             Dn = /^\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)?)?$/,
31139             Nn = /^\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)?)?$/,
31140             In = /Z|[+-]\d\d(?::?\d\d)?/,
31141             Rn = [
31142                 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
31143                 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
31144                 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
31145                 ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
31146                 ["YYYY-DDD", /\d{4}-\d{3}/],
31147                 ["YYYY-MM", /\d{4}-\d\d/, !1],
31148                 ["YYYYYYMMDD", /[+-]\d{10}/],
31149                 ["YYYYMMDD", /\d{8}/],
31150                 ["GGGG[W]WWE", /\d{4}W\d{3}/],
31151                 ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
31152                 ["YYYYDDD", /\d{7}/]
31153             ],
31154             Pn = [
31155                 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
31156                 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
31157                 ["HH:mm:ss", /\d\d:\d\d:\d\d/],
31158                 ["HH:mm", /\d\d:\d\d/],
31159                 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
31160                 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
31161                 ["HHmmss", /\d\d\d\d\d\d/],
31162                 ["HHmm", /\d\d\d\d/],
31163                 ["HH", /\d\d/]
31164             ],
31165             Hn = /^\/?Date\((\-?\d+)/i,
31166             jn = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;
31167         e.createFromInputFallback = w("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(e) {
31168             e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
31169         }), e.ISO_8601 = function() {}, e.RFC_2822 = function() {};
31170         var Ln = w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
31171                 var e = Pe.apply(null, arguments);
31172                 return this.isValid() && e.isValid() ? e < this ? this : e : p()
31173             }),
31174             Fn = w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
31175                 var e = Pe.apply(null, arguments);
31176                 return this.isValid() && e.isValid() ? e > this ? this : e : p()
31177             }),
31178             qn = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
31179         Ue("Z", ":"), Ue("ZZ", ""), q("Z", Xt), q("ZZ", Xt), z(["Z", "ZZ"], function(e, t, n) {
31180             n._useUTC = !0, n._tzm = Ve(Xt, e)
31181         });
31182         var Un = /([\+\-]|\d\d)/gi;
31183         e.updateOffset = function() {};
31184         var Vn = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
31185             Bn = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
31186         Ye.fn = Le.prototype, Ye.invalid = function() {
31187             return Ye(NaN)
31188         };
31189         var zn = Xe(1, "add"),
31190             Wn = Xe(-1, "subtract");
31191         e.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", e.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
31192         var Yn = w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
31193             return void 0 === e ? this.localeData() : this.locale(e)
31194         });
31195         P(0, ["gg", 2], 0, function() {
31196             return this.weekYear() % 100
31197         }), P(0, ["GG", 2], 0, function() {
31198             return this.isoWeekYear() % 100
31199         }), nt("gggg", "weekYear"), nt("ggggg", "weekYear"), nt("GGGG", "isoWeekYear"), nt("GGGGG", "isoWeekYear"), T("weekYear", "gg"), T("isoWeekYear", "GG"), A("weekYear", 1), A("isoWeekYear", 1), q("G", Kt), q("g", Kt), q("GG", Ut, jt), q("gg", Ut, jt), q("GGGG", Wt, Ft), q("gggg", Wt, Ft), q("GGGGG", Yt, qt), q("ggggg", Yt, qt), W(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, n, r) {
31200             t[r.substr(0, 2)] = y(e)
31201         }), W(["gg", "GG"], function(t, n, r, i) {
31202             n[i] = e.parseTwoDigitYear(t)
31203         }), P("Q", 0, "Qo", "quarter"), T("quarter", "Q"), A("quarter", 7), q("Q", Ht), z("Q", function(e, t) {
31204             t[rn] = 3 * (y(e) - 1)
31205         }), P("D", ["DD", 2], "Do", "date"), T("date", "D"), A("date", 9), q("D", Ut), q("DD", Ut, jt), q("Do", function(e, t) {
31206             return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
31207         }), z(["D", "DD"], on), z("Do", function(e, t) {
31208             t[on] = y(e.match(Ut)[0], 10)
31209         });
31210         var Gn = D("Date", !0);
31211         P("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), T("dayOfYear", "DDD"), A("dayOfYear", 4), q("DDD", zt), q("DDDD", Lt), z(["DDD", "DDDD"], function(e, t, n) {
31212             n._dayOfYear = y(e)
31213         }), P("m", ["mm", 2], 0, "minute"), T("minute", "m"), A("minute", 14), q("m", Ut), q("mm", Ut, jt), z(["m", "mm"], sn);
31214         var Kn = D("Minutes", !1);
31215         P("s", ["ss", 2], 0, "second"), T("second", "s"), A("second", 15), q("s", Ut), q("ss", Ut, jt), z(["s", "ss"], cn);
31216         var Zn = D("Seconds", !1);
31217         P("S", 0, 0, function() {
31218             return ~~(this.millisecond() / 100)
31219         }), P(0, ["SS", 2], 0, function() {
31220             return ~~(this.millisecond() / 10)
31221         }), P(0, ["SSS", 3], 0, "millisecond"), P(0, ["SSSS", 4], 0, function() {
31222             return 10 * this.millisecond()
31223         }), P(0, ["SSSSS", 5], 0, function() {
31224             return 100 * this.millisecond()
31225         }), P(0, ["SSSSSS", 6], 0, function() {
31226             return 1e3 * this.millisecond()
31227         }), P(0, ["SSSSSSS", 7], 0, function() {
31228             return 1e4 * this.millisecond()
31229         }), P(0, ["SSSSSSSS", 8], 0, function() {
31230             return 1e5 * this.millisecond()
31231         }), P(0, ["SSSSSSSSS", 9], 0, function() {
31232             return 1e6 * this.millisecond()
31233         }), T("millisecond", "ms"), A("millisecond", 16), q("S", zt, Ht), q("SS", zt, jt), q("SSS", zt, Lt);
31234         var Xn;
31235         for (Xn = "SSSS"; Xn.length <= 9; Xn += "S") q(Xn, Gt);
31236         for (Xn = "S"; Xn.length <= 9; Xn += "S") z(Xn, function(e, t) {
31237             t[ln] = y(1e3 * ("0." + e))
31238         });
31239         var Qn = D("Milliseconds", !1);
31240         P("z", 0, 0, "zoneAbbr"), P("zz", 0, 0, "zoneName");
31241         var Jn = g.prototype;
31242         Jn.add = zn, Jn.calendar = function(t, n) {
31243             var r = t || Pe(),
31244                 i = Be(r, this).startOf("day"),
31245                 o = e.calendarFormat(this, i) || "sameElse",
31246                 a = n && (C(n[o]) ? n[o].call(this, r) : n[o]);
31247             return this.format(a || this.localeData().calendar(o, this, Pe(r)))
31248         }, Jn.clone = function() {
31249             return new g(this)
31250         }, Jn.diff = function(e, t, n) {
31251             var r, i, o, a;
31252             return this.isValid() && (r = Be(e, this)).isValid() ? (i = 6e4 * (r.utcOffset() - this.utcOffset()), "year" === (t = M(t)) || "month" === t || "quarter" === t ? (a = Je(this, r), "quarter" === t ? a /= 3 : "year" === t && (a /= 12)) : (o = this - r, a = "second" === t ? o / 1e3 : "minute" === t ? o / 6e4 : "hour" === t ? o / 36e5 : "day" === t ? (o - i) / 864e5 : "week" === t ? (o - i) / 6048e5 : o), n ? a : b(a)) : NaN
31253         }, Jn.endOf = function(e) {
31254             return void 0 === (e = M(e)) || "millisecond" === e ? this : ("date" === e && (e = "day"), this.startOf(e).add(1, "isoWeek" === e ? "week" : e).subtract(1, "ms"))
31255         }, Jn.format = function(t) {
31256             t || (t = this.isUtc() ? e.defaultFormatUtc : e.defaultFormat);
31257             var n = L(this, t);
31258             return this.localeData().postformat(n)
31259         }, Jn.from = function(e, t) {
31260             return this.isValid() && (v(e) && e.isValid() || Pe(e).isValid()) ? Ye({
31261                 to: this,
31262                 from: e
31263             }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
31264         }, Jn.fromNow = function(e) {
31265             return this.from(Pe(), e)
31266         }, Jn.to = function(e, t) {
31267             return this.isValid() && (v(e) && e.isValid() || Pe(e).isValid()) ? Ye({
31268                 from: this,
31269                 to: e
31270             }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
31271         }, Jn.toNow = function(e) {
31272             return this.to(Pe(), e)
31273         }, Jn.get = function(e) {
31274             return e = M(e), C(this[e]) ? this[e]() : this
31275         }, Jn.invalidAt = function() {
31276             return f(this).overflow
31277         }, Jn.isAfter = function(e, t) {
31278             var n = v(e) ? e : Pe(e);
31279             return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
31280         }, Jn.isBefore = function(e, t) {
31281             var n = v(e) ? e : Pe(e);
31282             return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
31283         }, Jn.isBetween = function(e, t, n, r) {
31284             return ("(" === (r = r || "()")[0] ? this.isAfter(e, n) : !this.isBefore(e, n)) && (")" === r[1] ? this.isBefore(t, n) : !this.isAfter(t, n))
31285         }, Jn.isSame = function(e, t) {
31286             var n, r = v(e) ? e : Pe(e);
31287             return !(!this.isValid() || !r.isValid()) && ("millisecond" === (t = M(t || "millisecond")) ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
31288         }, Jn.isSameOrAfter = function(e, t) {
31289             return this.isSame(e, t) || this.isAfter(e, t)
31290         }, Jn.isSameOrBefore = function(e, t) {
31291             return this.isSame(e, t) || this.isBefore(e, t)
31292         }, Jn.isValid = function() {
31293             return h(this)
31294         }, Jn.lang = Yn, Jn.locale = et, Jn.localeData = tt, Jn.max = Fn, Jn.min = Ln, Jn.parsingFlags = function() {
31295             return l({}, f(this))
31296         }, Jn.set = function(e, t) {
31297             if ("object" == typeof e)
31298                 for (var n = O(e = S(e)), r = 0; r < n.length; r++) this[n[r].unit](e[n[r].unit]);
31299             else if (e = M(e), C(this[e])) return this[e](t);
31300             return this
31301         }, Jn.startOf = function(e) {
31302             switch (e = M(e)) {
31303                 case "year":
31304                     this.month(0);
31305                 case "quarter":
31306                 case "month":
31307                     this.date(1);
31308                 case "week":
31309                 case "isoWeek":
31310                 case "day":
31311                 case "date":
31312                     this.hours(0);
31313                 case "hour":
31314                     this.minutes(0);
31315                 case "minute":
31316                     this.seconds(0);
31317                 case "second":
31318                     this.milliseconds(0)
31319             }
31320             return "week" === e && this.weekday(0), "isoWeek" === e && this.isoWeekday(1), "quarter" === e && this.month(3 * Math.floor(this.month() / 3)), this
31321         }, Jn.subtract = Wn, Jn.toArray = function() {
31322             var e = this;
31323             return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]
31324         }, Jn.toObject = function() {
31325             var e = this;
31326             return {
31327                 years: e.year(),
31328                 months: e.month(),
31329                 date: e.date(),
31330                 hours: e.hours(),
31331                 minutes: e.minutes(),
31332                 seconds: e.seconds(),
31333                 milliseconds: e.milliseconds()
31334             }
31335         }, Jn.toDate = function() {
31336             return new Date(this.valueOf())
31337         }, Jn.toISOString = function() {
31338             if (!this.isValid()) return null;
31339             var e = this.clone().utc();
31340             return e.year() < 0 || e.year() > 9999 ? L(e, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : C(Date.prototype.toISOString) ? this.toDate().toISOString() : L(e, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
31341         }, Jn.inspect = function() {
31342             if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
31343             var e = "moment",
31344                 t = "";
31345             this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
31346             var n = "[" + e + '("]',
31347                 r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
31348                 i = t + '[")]';
31349             return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
31350         }, Jn.toJSON = function() {
31351             return this.isValid() ? this.toISOString() : null
31352         }, Jn.toString = function() {
31353             return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
31354         }, Jn.unix = function() {
31355             return Math.floor(this.valueOf() / 1e3)
31356         }, Jn.valueOf = function() {
31357             return this._d.valueOf() - 6e4 * (this._offset || 0)
31358         }, Jn.creationData = function() {
31359             return {
31360                 input: this._i,
31361                 format: this._f,
31362                 locale: this._locale,
31363                 isUTC: this._isUTC,
31364                 strict: this._strict
31365             }
31366         }, Jn.year = bn, Jn.isLeapYear = function() {
31367             return ee(this.year())
31368         }, Jn.weekYear = function(e) {
31369             return rt.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
31370         }, Jn.isoWeekYear = function(e) {
31371             return rt.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
31372         }, Jn.quarter = Jn.quarters = function(e) {
31373             return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
31374         }, Jn.month = X, Jn.daysInMonth = function() {
31375             return G(this.year(), this.month())
31376         }, Jn.week = Jn.weeks = function(e) {
31377             var t = this.localeData().week(this);
31378             return null == e ? t : this.add(7 * (e - t), "d")
31379         }, Jn.isoWeek = Jn.isoWeeks = function(e) {
31380             var t = oe(this, 1, 4).week;
31381             return null == e ? t : this.add(7 * (e - t), "d")
31382         }, Jn.weeksInYear = function() {
31383             var e = this.localeData()._week;
31384             return ae(this.year(), e.dow, e.doy)
31385         }, Jn.isoWeeksInYear = function() {
31386             return ae(this.year(), 1, 4)
31387         }, Jn.date = Gn, Jn.day = Jn.days = function(e) {
31388             if (!this.isValid()) return null != e ? this : NaN;
31389             var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
31390             return null != e ? (e = se(e, this.localeData()), this.add(e - t, "d")) : t
31391         }, Jn.weekday = function(e) {
31392             if (!this.isValid()) return null != e ? this : NaN;
31393             var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
31394             return null == e ? t : this.add(e - t, "d")
31395         }, Jn.isoWeekday = function(e) {
31396             if (!this.isValid()) return null != e ? this : NaN;
31397             if (null != e) {
31398                 var t = ce(e, this.localeData());
31399                 return this.day(this.day() % 7 ? t : t - 7)
31400             }
31401             return this.day() || 7
31402         }, Jn.dayOfYear = function(e) {
31403             var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
31404             return null == e ? t : this.add(e - t, "d")
31405         }, Jn.hour = Jn.hours = Mn, Jn.minute = Jn.minutes = Kn, Jn.second = Jn.seconds = Zn, Jn.millisecond = Jn.milliseconds = Qn, Jn.utcOffset = function(t, n, r) {
31406             var i, o = this._offset || 0;
31407             if (!this.isValid()) return null != t ? this : NaN;
31408             if (null != t) {
31409                 if ("string" == typeof t) {
31410                     if (null === (t = Ve(Xt, t))) return this
31411                 } else Math.abs(t) < 16 && !r && (t *= 60);
31412                 return !this._isUTC && n && (i = ze(this)), this._offset = t, this._isUTC = !0, null != i && this.add(i, "m"), o !== t && (!n || this._changeInProgress ? Qe(this, Ye(t - o, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, e.updateOffset(this, !0), this._changeInProgress = null)), this
31413             }
31414             return this._isUTC ? o : ze(this)
31415         }, Jn.utc = function(e) {
31416             return this.utcOffset(0, e)
31417         }, Jn.local = function(e) {
31418             return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(ze(this), "m")), this
31419         }, Jn.parseZone = function() {
31420             if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
31421             else if ("string" == typeof this._i) {
31422                 var e = Ve(Zt, this._i);
31423                 null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
31424             }
31425             return this
31426         }, Jn.hasAlignedHourOffset = function(e) {
31427             return !!this.isValid() && (e = e ? Pe(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
31428         }, Jn.isDST = function() {
31429             return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
31430         }, Jn.isLocal = function() {
31431             return !!this.isValid() && !this._isUTC
31432         }, Jn.isUtcOffset = function() {
31433             return !!this.isValid() && this._isUTC
31434         }, Jn.isUtc = We, Jn.isUTC = We, Jn.zoneAbbr = function() {
31435             return this._isUTC ? "UTC" : ""
31436         }, Jn.zoneName = function() {
31437             return this._isUTC ? "Coordinated Universal Time" : ""
31438         }, Jn.dates = w("dates accessor is deprecated. Use date instead.", Gn), Jn.months = w("months accessor is deprecated. Use month instead", X), Jn.years = w("years accessor is deprecated. Use year instead", bn), Jn.zone = w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e, t) {
31439             return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
31440         }), Jn.isDSTShifted = w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
31441             if (!i(this._isDSTShifted)) return this._isDSTShifted;
31442             var e = {};
31443             if (m(e, this), (e = Ne(e))._a) {
31444                 var t = e._isUTC ? u(e._a) : Pe(e._a);
31445                 this._isDSTShifted = this.isValid() && $(e._a, t.toArray()) > 0
31446             } else this._isDSTShifted = !1;
31447             return this._isDSTShifted
31448         });
31449         var er = k.prototype;
31450         er.calendar = function(e, t, n) {
31451             var r = this._calendar[e] || this._calendar.sameElse;
31452             return C(r) ? r.call(t, n) : r
31453         }, er.longDateFormat = function(e) {
31454             var t = this._longDateFormat[e],
31455                 n = this._longDateFormat[e.toUpperCase()];
31456             return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
31457                 return e.slice(1)
31458             }), this._longDateFormat[e])
31459         }, er.invalidDate = function() {
31460             return this._invalidDate
31461         }, er.ordinal = function(e) {
31462             return this._ordinal.replace("%d", e)
31463         }, er.preparse = ot, er.postformat = ot, er.relativeTime = function(e, t, n, r) {
31464             var i = this._relativeTime[n];
31465             return C(i) ? i(e, t, n, r) : i.replace(/%d/i, e)
31466         }, er.pastFuture = function(e, t) {
31467             var n = this._relativeTime[e > 0 ? "future" : "past"];
31468             return C(n) ? n(t) : n.replace(/%s/i, t)
31469         }, er.set = function(e) {
31470             var t, n;
31471             for (n in e) C(t = e[n]) ? this[n] = t : this["_" + n] = t;
31472             this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
31473         }, er.months = function(e, n) {
31474             return e ? t(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || hn).test(n) ? "format" : "standalone"][e.month()] : t(this._months) ? this._months : this._months.standalone
31475         }, er.monthsShort = function(e, n) {
31476             return e ? t(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[hn.test(n) ? "format" : "standalone"][e.month()] : t(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
31477         }, er.monthsParse = function(e, t, n) {
31478             var r, i, o;
31479             if (this._monthsParseExact) return K.call(this, e, t, n);
31480             for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
31481                 if (i = u([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (o = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[r].test(e)) return r;
31482                 if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r;
31483                 if (!n && this._monthsParse[r].test(e)) return r
31484             }
31485         }, er.monthsRegex = function(e) {
31486             return this._monthsParseExact ? (c(this, "_monthsRegex") || Q.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, "_monthsRegex") || (this._monthsRegex = vn), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
31487         }, er.monthsShortRegex = function(e) {
31488             return this._monthsParseExact ? (c(this, "_monthsRegex") || Q.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, "_monthsShortRegex") || (this._monthsShortRegex = gn), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
31489         }, er.week = function(e) {
31490             return oe(e, this._week.dow, this._week.doy).week
31491         }, er.firstDayOfYear = function() {
31492             return this._week.doy
31493         }, er.firstDayOfWeek = function() {
31494             return this._week.dow
31495         }, er.weekdays = function(e, n) {
31496             return e ? t(this._weekdays) ? this._weekdays[e.day()] : this._weekdays[this._weekdays.isFormat.test(n) ? "format" : "standalone"][e.day()] : t(this._weekdays) ? this._weekdays : this._weekdays.standalone
31497         }, er.weekdaysMin = function(e) {
31498             return e ? this._weekdaysMin[e.day()] : this._weekdaysMin
31499         }, er.weekdaysShort = function(e) {
31500             return e ? this._weekdaysShort[e.day()] : this._weekdaysShort
31501         }, er.weekdaysParse = function(e, t, n) {
31502             var r, i, o;
31503             if (this._weekdaysParseExact) return le.call(this, e, t, n);
31504             for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
31505                 if (i = u([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[r] || (o = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[r].test(e)) return r;
31506                 if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r;
31507                 if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r;
31508                 if (!n && this._weekdaysParse[r].test(e)) return r
31509             }
31510         }, er.weekdaysRegex = function(e) {
31511             return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || ue.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c(this, "_weekdaysRegex") || (this._weekdaysRegex = En), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
31512         }, er.weekdaysShortRegex = function(e) {
31513             return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || ue.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Cn), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
31514         }, er.weekdaysMinRegex = function(e) {
31515             return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || ue.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = xn), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
31516         }, er.isPM = function(e) {
31517             return "p" === (e + "").toLowerCase().charAt(0)
31518         }, er.meridiem = function(e, t, n) {
31519             return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM"
31520         }, ve("en", {
31521             dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
31522             ordinal: function(e) {
31523                 var t = e % 10;
31524                 return e + (1 === y(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
31525             }
31526         }), e.lang = w("moment.lang is deprecated. Use moment.locale instead.", ve), e.langData = w("moment.langData is deprecated. Use moment.localeData instead.", ye);
31527         var tr = Math.abs,
31528             nr = ht("ms"),
31529             rr = ht("s"),
31530             ir = ht("m"),
31531             or = ht("h"),
31532             ar = ht("d"),
31533             sr = ht("w"),
31534             cr = ht("M"),
31535             lr = ht("y"),
31536             ur = pt("milliseconds"),
31537             dr = pt("seconds"),
31538             fr = pt("minutes"),
31539             hr = pt("hours"),
31540             pr = pt("days"),
31541             mr = pt("months"),
31542             gr = pt("years"),
31543             vr = Math.round,
31544             br = {
31545                 ss: 44,
31546                 s: 45,
31547                 m: 45,
31548                 h: 22,
31549                 d: 26,
31550                 M: 11
31551             },
31552             yr = Math.abs,
31553             $r = Le.prototype;
31554         return $r.isValid = function() {
31555                 return this._isValid
31556             }, $r.abs = function() {
31557                 var e = this._data;
31558                 return this._milliseconds = tr(this._milliseconds), this._days = tr(this._days), this._months = tr(this._months), e.milliseconds = tr(e.milliseconds), e.seconds = tr(e.seconds), e.minutes = tr(e.minutes), e.hours = tr(e.hours), e.months = tr(e.months), e.years = tr(e.years), this
31559             }, $r.add = function(e, t) {
31560                 return lt(this, e, t, 1)
31561             }, $r.subtract = function(e, t) {
31562                 return lt(this, e, t, -1)
31563             }, $r.as = function(e) {
31564                 if (!this.isValid()) return NaN;
31565                 var t, n, r = this._milliseconds;
31566                 if ("month" === (e = M(e)) || "year" === e) return t = this._days + r / 864e5, n = this._months + dt(t), "month" === e ? n : n / 12;
31567                 switch (t = this._days + Math.round(ft(this._months)), e) {
31568                     case "week":
31569                         return t / 7 + r / 6048e5;
31570                     case "day":
31571                         return t + r / 864e5;
31572                     case "hour":
31573                         return 24 * t + r / 36e5;
31574                     case "minute":
31575                         return 1440 * t + r / 6e4;
31576                     case "second":
31577                         return 86400 * t + r / 1e3;
31578                     case "millisecond":
31579                         return Math.floor(864e5 * t) + r;
31580                     default:
31581                         throw new Error("Unknown unit " + e)
31582                 }
31583             }, $r.asMilliseconds = nr, $r.asSeconds = rr, $r.asMinutes = ir, $r.asHours = or, $r.asDays = ar, $r.asWeeks = sr, $r.asMonths = cr, $r.asYears = lr, $r.valueOf = function() {
31584                 return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * y(this._months / 12) : NaN
31585             }, $r._bubble = function() {
31586                 var e, t, n, r, i, o = this._milliseconds,
31587                     a = this._days,
31588                     s = this._months,
31589                     c = this._data;
31590                 return o >= 0 && a >= 0 && s >= 0 || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * ut(ft(s) + a), a = 0, s = 0), c.milliseconds = o % 1e3, e = b(o / 1e3), c.seconds = e % 60, t = b(e / 60), c.minutes = t % 60, n = b(t / 60), c.hours = n % 24, a += b(n / 24), i = b(dt(a)), s += i, a -= ut(ft(i)), r = b(s / 12), s %= 12, c.days = a, c.months = s, c.years = r, this
31591             }, $r.get = function(e) {
31592                 return e = M(e), this.isValid() ? this[e + "s"]() : NaN
31593             }, $r.milliseconds = ur, $r.seconds = dr, $r.minutes = fr, $r.hours = hr, $r.days = pr, $r.weeks = function() {
31594                 return b(this.days() / 7)
31595             }, $r.months = mr, $r.years = gr, $r.humanize = function(e) {
31596                 if (!this.isValid()) return this.localeData().invalidDate();
31597                 var t = this.localeData(),
31598                     n = gt(this, !e, t);
31599                 return e && (n = t.pastFuture(+this, n)), t.postformat(n)
31600             }, $r.toISOString = vt, $r.toString = vt, $r.toJSON = vt, $r.locale = et, $r.localeData = tt, $r.toIsoString = w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", vt), $r.lang = Yn, P("X", 0, 0, "unix"), P("x", 0, 0, "valueOf"), q("x", Kt), q("X", Qt), z("X", function(e, t, n) {
31601                 n._d = new Date(1e3 * parseFloat(e, 10))
31602             }), z("x", function(e, t, n) {
31603                 n._d = new Date(y(e))
31604             }), e.version = "2.18.1",
31605             function(e) {
31606                 bt = e
31607             }(Pe), e.fn = Jn, e.min = function() {
31608                 return He("isBefore", [].slice.call(arguments, 0))
31609             }, e.max = function() {
31610                 return He("isAfter", [].slice.call(arguments, 0))
31611             }, e.now = function() {
31612                 return Date.now ? Date.now() : +new Date
31613             }, e.utc = u, e.unix = function(e) {
31614                 return Pe(1e3 * e)
31615             }, e.months = function(e, t) {
31616                 return st(e, t, "months")
31617             }, e.isDate = a, e.locale = ve, e.invalid = p, e.duration = Ye, e.isMoment = v, e.weekdays = function(e, t, n) {
31618                 return ct(e, t, n, "weekdays")
31619             }, e.parseZone = function() {
31620                 return Pe.apply(null, arguments).parseZone()
31621             }, e.localeData = ye, e.isDuration = Fe, e.monthsShort = function(e, t) {
31622                 return st(e, t, "monthsShort")
31623             }, e.weekdaysMin = function(e, t, n) {
31624                 return ct(e, t, n, "weekdaysMin")
31625             }, e.defineLocale = be, e.updateLocale = function(e, t) {
31626                 if (null != t) {
31627                     var n, r = Sn;
31628                     null != An[e] && (r = An[e]._config), (n = new k(t = x(r, t))).parentLocale = An[e], An[e] = n, ve(e)
31629                 } else null != An[e] && (null != An[e].parentLocale ? An[e] = An[e].parentLocale : null != An[e] && delete An[e]);
31630                 return An[e]
31631             }, e.locales = function() {
31632                 return kt(An)
31633             }, e.weekdaysShort = function(e, t, n) {
31634                 return ct(e, t, n, "weekdaysShort")
31635             }, e.normalizeUnits = M, e.relativeTimeRounding = function(e) {
31636                 return void 0 === e ? vr : "function" == typeof e && (vr = e, !0)
31637             }, e.relativeTimeThreshold = function(e, t) {
31638                 return void 0 !== br[e] && (void 0 === t ? br[e] : (br[e] = t, "s" === e && (br.ss = t - 1), !0))
31639             }, e.calendarFormat = function(e, t) {
31640                 var n = e.diff(t, "days", !0);
31641                 return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
31642             }, e.prototype = Jn, e
31643     }),
31644     function(e, t) {
31645         "use strict";
31646         "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
31647             if (!e.document) throw new Error("jQuery requires a window with a document");
31648             return t(e)
31649         } : t(e)
31650     }("undefined" != typeof window ? window : this, function(e, t) {
31651         "use strict";
31652
31653         function n(e, t) {
31654             var n = (t = t || te).createElement("script");
31655             n.text = e, t.head.appendChild(n).parentNode.removeChild(n)
31656         }
31657
31658         function r(e) {
31659             var t = !!e && "length" in e && e.length,
31660                 n = he.type(e);
31661             return "function" !== n && !he.isWindow(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
31662         }
31663
31664         function i(e, t) {
31665             return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
31666         }
31667
31668         function o(e, t, n) {
31669             return he.isFunction(t) ? he.grep(e, function(e, r) {
31670                 return !!t.call(e, r, e) !== n
31671             }) : t.nodeType ? he.grep(e, function(e) {
31672                 return e === t !== n
31673             }) : "string" != typeof t ? he.grep(e, function(e) {
31674                 return ae.call(t, e) > -1 !== n
31675             }) : Ee.test(t) ? he.filter(t, e, n) : (t = he.filter(t, e), he.grep(e, function(e) {
31676                 return ae.call(t, e) > -1 !== n && 1 === e.nodeType
31677             }))
31678         }
31679
31680         function a(e, t) {
31681             for (;
31682                 (e = e[t]) && 1 !== e.nodeType;);
31683             return e
31684         }
31685
31686         function s(e) {
31687             var t = {};
31688             return he.each(e.match(Me) || [], function(e, n) {
31689                 t[n] = !0
31690             }), t
31691         }
31692
31693         function c(e) {
31694             return e
31695         }
31696
31697         function l(e) {
31698             throw e
31699         }
31700
31701         function u(e, t, n, r) {
31702             var i;
31703             try {
31704                 e && he.isFunction(i = e.promise) ? i.call(e).done(t).fail(n) : e && he.isFunction(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
31705             } catch (e) {
31706                 n.apply(void 0, [e])
31707             }
31708         }
31709
31710         function d() {
31711             te.removeEventListener("DOMContentLoaded", d), e.removeEventListener("load", d), he.ready()
31712         }
31713
31714         function f() {
31715             this.expando = he.expando + f.uid++
31716         }
31717
31718         function h(e) {
31719             return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Re.test(e) ? JSON.parse(e) : e)
31720         }
31721
31722         function p(e, t, n) {
31723             var r;
31724             if (void 0 === n && 1 === e.nodeType)
31725                 if (r = "data-" + t.replace(Pe, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
31726                     try {
31727                         n = h(n)
31728                     } catch (e) {}
31729                     Ie.set(e, t, n)
31730                 } else n = void 0;
31731             return n
31732         }
31733
31734         function m(e, t, n, r) {
31735             var i, o = 1,
31736                 a = 20,
31737                 s = r ? function() {
31738                     return r.cur()
31739                 } : function() {
31740                     return he.css(e, t, "")
31741                 },
31742                 c = s(),
31743                 l = n && n[3] || (he.cssNumber[t] ? "" : "px"),
31744                 u = (he.cssNumber[t] || "px" !== l && +c) && je.exec(he.css(e, t));
31745             if (u && u[3] !== l) {
31746                 l = l || u[3], n = n || [], u = +c || 1;
31747                 do {
31748                     u /= o = o || ".5", he.style(e, t, u + l)
31749                 } while (o !== (o = s() / c) && 1 !== o && --a)
31750             }
31751             return n && (u = +u || +c || 0, i = n[1] ? u + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = u, r.end = i)), i
31752         }
31753
31754         function g(e) {
31755             var t, n = e.ownerDocument,
31756                 r = e.nodeName,
31757                 i = Ue[r];
31758             return i || (t = n.body.appendChild(n.createElement(r)), i = he.css(t, "display"), t.parentNode.removeChild(t), "none" === i && (i = "block"), Ue[r] = i, i)
31759         }
31760
31761         function v(e, t) {
31762             for (var n, r, i = [], o = 0, a = e.length; o < a; o++)(r = e[o]).style && (n = r.style.display, t ? ("none" === n && (i[o] = Ne.get(r, "display") || null, i[o] || (r.style.display = "")), "" === r.style.display && Fe(r) && (i[o] = g(r))) : "none" !== n && (i[o] = "none", Ne.set(r, "display", n)));
31763             for (o = 0; o < a; o++) null != i[o] && (e[o].style.display = i[o]);
31764             return e
31765         }
31766
31767         function b(e, t) {
31768             var n;
31769             return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && i(e, t) ? he.merge([e], n) : n
31770         }
31771
31772         function y(e, t) {
31773             for (var n = 0, r = e.length; n < r; n++) Ne.set(e[n], "globalEval", !t || Ne.get(t[n], "globalEval"))
31774         }
31775
31776         function $(e, t, n, r, i) {
31777             for (var o, a, s, c, l, u, d = t.createDocumentFragment(), f = [], h = 0, p = e.length; h < p; h++)
31778                 if ((o = e[h]) || 0 === o)
31779                     if ("object" === he.type(o)) he.merge(f, o.nodeType ? [o] : o);
31780                     else if (Ye.test(o)) {
31781                 for (a = a || d.appendChild(t.createElement("div")), s = (Be.exec(o) || ["", ""])[1].toLowerCase(), c = We[s] || We._default, a.innerHTML = c[1] + he.htmlPrefilter(o) + c[2], u = c[0]; u--;) a = a.lastChild;
31782                 he.merge(f, a.childNodes), (a = d.firstChild).textContent = ""
31783             } else f.push(t.createTextNode(o));
31784             for (d.textContent = "", h = 0; o = f[h++];)
31785                 if (r && he.inArray(o, r) > -1) i && i.push(o);
31786                 else if (l = he.contains(o.ownerDocument, o), a = b(d.appendChild(o), "script"), l && y(a), n)
31787                 for (u = 0; o = a[u++];) ze.test(o.type || "") && n.push(o);
31788             return d
31789         }
31790
31791         function _() {
31792             return !0
31793         }
31794
31795         function w() {
31796             return !1
31797         }
31798
31799         function E() {
31800             try {
31801                 return te.activeElement
31802             } catch (e) {}
31803         }
31804
31805         function C(e, t, n, r, i, o) {
31806             var a, s;
31807             if ("object" == typeof t) {
31808                 "string" != typeof n && (r = r || n, n = void 0);
31809                 for (s in t) C(e, s, n, r, t[s], o);
31810                 return e
31811             }
31812             if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = w;
31813             else if (!i) return e;
31814             return 1 === o && (a = i, (i = function(e) {
31815                 return he().off(e), a.apply(this, arguments)
31816             }).guid = a.guid || (a.guid = he.guid++)), e.each(function() {
31817                 he.event.add(this, t, i, r, n)
31818             })
31819         }
31820
31821         function x(e, t) {
31822             return i(e, "table") && i(11 !== t.nodeType ? t : t.firstChild, "tr") ? he(">tbody", e)[0] || e : e
31823         }
31824
31825         function k(e) {
31826             return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
31827         }
31828
31829         function T(e) {
31830             var t = tt.exec(e.type);
31831             return t ? e.type = t[1] : e.removeAttribute("type"), e
31832         }
31833
31834         function M(e, t) {
31835             var n, r, i, o, a, s, c, l;
31836             if (1 === t.nodeType) {
31837                 if (Ne.hasData(e) && (o = Ne.access(e), a = Ne.set(t, o), l = o.events)) {
31838                     delete a.handle, a.events = {};
31839                     for (i in l)
31840                         for (n = 0, r = l[i].length; n < r; n++) he.event.add(t, i, l[i][n])
31841                 }
31842                 Ie.hasData(e) && (s = Ie.access(e), c = he.extend({}, s), Ie.set(t, c))
31843             }
31844         }
31845
31846         function S(e, t) {
31847             var n = t.nodeName.toLowerCase();
31848             "input" === n && Ve.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
31849         }
31850
31851         function A(e, t, r, i) {
31852             t = ie.apply([], t);
31853             var o, a, s, c, l, u, d = 0,
31854                 f = e.length,
31855                 h = f - 1,
31856                 p = t[0],
31857                 m = he.isFunction(p);
31858             if (m || f > 1 && "string" == typeof p && !fe.checkClone && et.test(p)) return e.each(function(n) {
31859                 var o = e.eq(n);
31860                 m && (t[0] = p.call(this, n, o.html())), A(o, t, r, i)
31861             });
31862             if (f && (o = $(t, e[0].ownerDocument, !1, e, i), a = o.firstChild, 1 === o.childNodes.length && (o = a), a || i)) {
31863                 for (c = (s = he.map(b(o, "script"), k)).length; d < f; d++) l = o, d !== h && (l = he.clone(l, !0, !0), c && he.merge(s, b(l, "script"))), r.call(e[d], l, d);
31864                 if (c)
31865                     for (u = s[s.length - 1].ownerDocument, he.map(s, T), d = 0; d < c; d++) l = s[d], ze.test(l.type || "") && !Ne.access(l, "globalEval") && he.contains(u, l) && (l.src ? he._evalUrl && he._evalUrl(l.src) : n(l.textContent.replace(nt, ""), u))
31866             }
31867             return e
31868         }
31869
31870         function O(e, t, n) {
31871             for (var r, i = t ? he.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || he.cleanData(b(r)), r.parentNode && (n && he.contains(r.ownerDocument, r) && y(b(r, "script")), r.parentNode.removeChild(r));
31872             return e
31873         }
31874
31875         function D(e, t, n) {
31876             var r, i, o, a, s = e.style;
31877             return (n = n || ot(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || he.contains(e.ownerDocument, e) || (a = he.style(e, t)), !fe.pixelMarginRight() && it.test(a) && rt.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a
31878         }
31879
31880         function N(e, t) {
31881             return {
31882                 get: function() {
31883                     if (!e()) return (this.get = t).apply(this, arguments);
31884                     delete this.get
31885                 }
31886             }
31887         }
31888
31889         function I(e) {
31890             if (e in dt) return e;
31891             for (var t = e[0].toUpperCase() + e.slice(1), n = ut.length; n--;)
31892                 if ((e = ut[n] + t) in dt) return e
31893         }
31894
31895         function R(e) {
31896             var t = he.cssProps[e];
31897             return t || (t = he.cssProps[e] = I(e) || e), t
31898         }
31899
31900         function P(e, t, n) {
31901             var r = je.exec(t);
31902             return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
31903         }
31904
31905         function H(e, t, n, r, i) {
31906             var o, a = 0;
31907             for (o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0; o < 4; o += 2) "margin" === n && (a += he.css(e, n + Le[o], !0, i)), r ? ("content" === n && (a -= he.css(e, "padding" + Le[o], !0, i)), "margin" !== n && (a -= he.css(e, "border" + Le[o] + "Width", !0, i))) : (a += he.css(e, "padding" + Le[o], !0, i), "padding" !== n && (a += he.css(e, "border" + Le[o] + "Width", !0, i)));
31908             return a
31909         }
31910
31911         function j(e, t, n) {
31912             var r, i = ot(e),
31913                 o = D(e, t, i),
31914                 a = "border-box" === he.css(e, "boxSizing", !1, i);
31915             return it.test(o) ? o : (r = a && (fe.boxSizingReliable() || o === e.style[t]), "auto" === o && (o = e["offset" + t[0].toUpperCase() + t.slice(1)]), (o = parseFloat(o) || 0) + H(e, t, n || (a ? "border" : "content"), r, i) + "px")
31916         }
31917
31918         function L(e, t, n, r, i) {
31919             return new L.prototype.init(e, t, n, r, i)
31920         }
31921
31922         function F() {
31923             ht && (!1 === te.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(F) : e.setTimeout(F, he.fx.interval), he.fx.tick())
31924         }
31925
31926         function q() {
31927             return e.setTimeout(function() {
31928                 ft = void 0
31929             }), ft = he.now()
31930         }
31931
31932         function U(e, t) {
31933             var n, r = 0,
31934                 i = {
31935                     height: e
31936                 };
31937             for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = Le[r])] = i["padding" + n] = e;
31938             return t && (i.opacity = i.width = e), i
31939         }
31940
31941         function V(e, t, n) {
31942             for (var r, i = (z.tweeners[t] || []).concat(z.tweeners["*"]), o = 0, a = i.length; o < a; o++)
31943                 if (r = i[o].call(n, t, e)) return r
31944         }
31945
31946         function B(e, t) {
31947             var n, r, i, o, a;
31948             for (n in e)
31949                 if (r = he.camelCase(n), i = t[r], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = he.cssHooks[r]) && "expand" in a) {
31950                     o = a.expand(o), delete e[r];
31951                     for (n in o) n in e || (e[n] = o[n], t[n] = i)
31952                 } else t[r] = i
31953         }
31954
31955         function z(e, t, n) {
31956             var r, i, o = 0,
31957                 a = z.prefilters.length,
31958                 s = he.Deferred().always(function() {
31959                     delete c.elem
31960                 }),
31961                 c = function() {
31962                     if (i) return !1;
31963                     for (var t = ft || q(), n = Math.max(0, l.startTime + l.duration - t), r = 1 - (n / l.duration || 0), o = 0, a = l.tweens.length; o < a; o++) l.tweens[o].run(r);
31964                     return s.notifyWith(e, [l, r, n]), r < 1 && a ? n : (a || s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l]), !1)
31965                 },
31966                 l = s.promise({
31967                     elem: e,
31968                     props: he.extend({}, t),
31969                     opts: he.extend(!0, {
31970                         specialEasing: {},
31971                         easing: he.easing._default
31972                     }, n),
31973                     originalProperties: t,
31974                     originalOptions: n,
31975                     startTime: ft || q(),
31976                     duration: n.duration,
31977                     tweens: [],
31978                     createTween: function(t, n) {
31979                         var r = he.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
31980                         return l.tweens.push(r), r
31981                     },
31982                     stop: function(t) {
31983                         var n = 0,
31984                             r = t ? l.tweens.length : 0;
31985                         if (i) return this;
31986                         for (i = !0; n < r; n++) l.tweens[n].run(1);
31987                         return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]), this
31988                     }
31989                 }),
31990                 u = l.props;
31991             for (B(u, l.opts.specialEasing); o < a; o++)
31992                 if (r = z.prefilters[o].call(l, e, u, l.opts)) return he.isFunction(r.stop) && (he._queueHooks(l.elem, l.opts.queue).stop = he.proxy(r.stop, r)), r;
31993             return he.map(u, V, l), he.isFunction(l.opts.start) && l.opts.start.call(e, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), he.fx.timer(he.extend(c, {
31994                 elem: e,
31995                 anim: l,
31996                 queue: l.opts.queue
31997             })), l
31998         }
31999
32000         function W(e) {
32001             return (e.match(Me) || []).join(" ")
32002         }
32003
32004         function Y(e) {
32005             return e.getAttribute && e.getAttribute("class") || ""
32006         }
32007
32008         function G(e, t, n, r) {
32009             var i;
32010             if (Array.isArray(t)) he.each(t, function(t, i) {
32011                 n || xt.test(e) ? r(e, i) : G(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
32012             });
32013             else if (n || "object" !== he.type(t)) r(e, t);
32014             else
32015                 for (i in t) G(e + "[" + i + "]", t[i], n, r)
32016         }
32017
32018         function K(e) {
32019             return function(t, n) {
32020                 "string" != typeof t && (n = t, t = "*");
32021                 var r, i = 0,
32022                     o = t.toLowerCase().match(Me) || [];
32023                 if (he.isFunction(n))
32024                     for (; r = o[i++];) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
32025             }
32026         }
32027
32028         function Z(e, t, n, r) {
32029             function i(s) {
32030                 var c;
32031                 return o[s] = !0, he.each(e[s] || [], function(e, s) {
32032                     var l = s(t, n, r);
32033                     return "string" != typeof l || a || o[l] ? a ? !(c = l) : void 0 : (t.dataTypes.unshift(l), i(l), !1)
32034                 }), c
32035             }
32036             var o = {},
32037                 a = e === Ht;
32038             return i(t.dataTypes[0]) || !o["*"] && i("*")
32039         }
32040
32041         function X(e, t) {
32042             var n, r, i = he.ajaxSettings.flatOptions || {};
32043             for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
32044             return r && he.extend(!0, e, r), e
32045         }
32046
32047         function Q(e, t, n) {
32048             for (var r, i, o, a, s = e.contents, c = e.dataTypes;
32049                 "*" === c[0];) c.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
32050             if (r)
32051                 for (i in s)
32052                     if (s[i] && s[i].test(r)) {
32053                         c.unshift(i);
32054                         break
32055                     }
32056             if (c[0] in n) o = c[0];
32057             else {
32058                 for (i in n) {
32059                     if (!c[0] || e.converters[i + " " + c[0]]) {
32060                         o = i;
32061                         break
32062                     }
32063                     a || (a = i)
32064                 }
32065                 o = o || a
32066             }
32067             if (o) return o !== c[0] && c.unshift(o), n[o]
32068         }
32069
32070         function J(e, t, n, r) {
32071             var i, o, a, s, c, l = {},
32072                 u = e.dataTypes.slice();
32073             if (u[1])
32074                 for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
32075             for (o = u.shift(); o;)
32076                 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !c && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), c = o, o = u.shift())
32077                     if ("*" === o) o = c;
32078                     else if ("*" !== c && c !== o) {
32079                 if (!(a = l[c + " " + o] || l["* " + o]))
32080                     for (i in l)
32081                         if ((s = i.split(" "))[1] === o && (a = l[c + " " + s[0]] || l["* " + s[0]])) {
32082                             !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], u.unshift(s[1]));
32083                             break
32084                         }
32085                 if (!0 !== a)
32086                     if (a && e.throws) t = a(t);
32087                     else try {
32088                         t = a(t)
32089                     } catch (e) {
32090                         return {
32091                             state: "parsererror",
32092                             error: a ? e : "No conversion from " + c + " to " + o
32093                         }
32094                     }
32095             }
32096             return {
32097                 state: "success",
32098                 data: t
32099             }
32100         }
32101         var ee = [],
32102             te = e.document,
32103             ne = Object.getPrototypeOf,
32104             re = ee.slice,
32105             ie = ee.concat,
32106             oe = ee.push,
32107             ae = ee.indexOf,
32108             se = {},
32109             ce = se.toString,
32110             le = se.hasOwnProperty,
32111             ue = le.toString,
32112             de = ue.call(Object),
32113             fe = {},
32114             he = function(e, t) {
32115                 return new he.fn.init(e, t)
32116             },
32117             pe = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
32118             me = /^-ms-/,
32119             ge = /-([a-z])/g,
32120             ve = function(e, t) {
32121                 return t.toUpperCase()
32122             };
32123         he.fn = he.prototype = {
32124             jquery: "3.2.1",
32125             constructor: he,
32126             length: 0,
32127             toArray: function() {
32128                 return re.call(this)
32129             },
32130             get: function(e) {
32131                 return null == e ? re.call(this) : e < 0 ? this[e + this.length] : this[e]
32132             },
32133             pushStack: function(e) {
32134                 var t = he.merge(this.constructor(), e);
32135                 return t.prevObject = this, t
32136             },
32137             each: function(e) {
32138                 return he.each(this, e)
32139             },
32140             map: function(e) {
32141                 return this.pushStack(he.map(this, function(t, n) {
32142                     return e.call(t, n, t)
32143                 }))
32144             },
32145             slice: function() {
32146                 return this.pushStack(re.apply(this, arguments))
32147             },
32148             first: function() {
32149                 return this.eq(0)
32150             },
32151             last: function() {
32152                 return this.eq(-1)
32153             },
32154             eq: function(e) {
32155                 var t = this.length,
32156                     n = +e + (e < 0 ? t : 0);
32157                 return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
32158             },
32159             end: function() {
32160                 return this.prevObject || this.constructor()
32161             },
32162             push: oe,
32163             sort: ee.sort,
32164             splice: ee.splice
32165         }, he.extend = he.fn.extend = function() {
32166             var e, t, n, r, i, o, a = arguments[0] || {},
32167                 s = 1,
32168                 c = arguments.length,
32169                 l = !1;
32170             for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || he.isFunction(a) || (a = {}), s === c && (a = this, s--); s < c; s++)
32171                 if (null != (e = arguments[s]))
32172                     for (t in e) n = a[t], a !== (r = e[t]) && (l && r && (he.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1, o = n && Array.isArray(n) ? n : []) : o = n && he.isPlainObject(n) ? n : {}, a[t] = he.extend(l, o, r)) : void 0 !== r && (a[t] = r));
32173             return a
32174         }, he.extend({
32175             expando: "jQuery" + ("3.2.1" + Math.random()).replace(/\D/g, ""),
32176             isReady: !0,
32177             error: function(e) {
32178                 throw new Error(e)
32179             },
32180             noop: function() {},
32181             isFunction: function(e) {
32182                 return "function" === he.type(e)
32183             },
32184             isWindow: function(e) {
32185                 return null != e && e === e.window
32186             },
32187             isNumeric: function(e) {
32188                 var t = he.type(e);
32189                 return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
32190             },
32191             isPlainObject: function(e) {
32192                 var t, n;
32193                 return !(!e || "[object Object]" !== ce.call(e)) && (!(t = ne(e)) || "function" == typeof(n = le.call(t, "constructor") && t.constructor) && ue.call(n) === de)
32194             },
32195             isEmptyObject: function(e) {
32196                 var t;
32197                 for (t in e) return !1;
32198                 return !0
32199             },
32200             type: function(e) {
32201                 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? se[ce.call(e)] || "object" : typeof e
32202             },
32203             globalEval: function(e) {
32204                 n(e)
32205             },
32206             camelCase: function(e) {
32207                 return e.replace(me, "ms-").replace(ge, ve)
32208             },
32209             each: function(e, t) {
32210                 var n, i = 0;
32211                 if (r(e))
32212                     for (n = e.length; i < n && !1 !== t.call(e[i], i, e[i]); i++);
32213                 else
32214                     for (i in e)
32215                         if (!1 === t.call(e[i], i, e[i])) break; return e
32216             },
32217             trim: function(e) {
32218                 return null == e ? "" : (e + "").replace(pe, "")
32219             },
32220             makeArray: function(e, t) {
32221                 var n = t || [];
32222                 return null != e && (r(Object(e)) ? he.merge(n, "string" == typeof e ? [e] : e) : oe.call(n, e)), n
32223             },
32224             inArray: function(e, t, n) {
32225                 return null == t ? -1 : ae.call(t, e, n)
32226             },
32227             merge: function(e, t) {
32228                 for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
32229                 return e.length = i, e
32230             },
32231             grep: function(e, t, n) {
32232                 for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
32233                 return r
32234             },
32235             map: function(e, t, n) {
32236                 var i, o, a = 0,
32237                     s = [];
32238                 if (r(e))
32239                     for (i = e.length; a < i; a++) null != (o = t(e[a], a, n)) && s.push(o);
32240                 else
32241                     for (a in e) null != (o = t(e[a], a, n)) && s.push(o);
32242                 return ie.apply([], s)
32243             },
32244             guid: 1,
32245             proxy: function(e, t) {
32246                 var n, r, i;
32247                 if ("string" == typeof t && (n = e[t], t = e, e = n), he.isFunction(e)) return r = re.call(arguments, 2), i = function() {
32248                     return e.apply(t || this, r.concat(re.call(arguments)))
32249                 }, i.guid = e.guid = e.guid || he.guid++, i
32250             },
32251             now: Date.now,
32252             support: fe
32253         }), "function" == typeof Symbol && (he.fn[Symbol.iterator] = ee[Symbol.iterator]), he.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
32254             se["[object " + t + "]"] = t.toLowerCase()
32255         });
32256         var be = function(e) {
32257             function t(e, t, n, r) {
32258                 var i, o, a, s, c, u, f, h = t && t.ownerDocument,
32259                     p = t ? t.nodeType : 9;
32260                 if (n = n || [], "string" != typeof e || !e || 1 !== p && 9 !== p && 11 !== p) return n;
32261                 if (!r && ((t ? t.ownerDocument || t : L) !== O && A(t), t = t || O, N)) {
32262                     if (11 !== p && (c = me.exec(e)))
32263                         if (i = c[1]) {
32264                             if (9 === p) {
32265                                 if (!(a = t.getElementById(i))) return n;
32266                                 if (a.id === i) return n.push(a), n
32267                             } else if (h && (a = h.getElementById(i)) && H(t, a) && a.id === i) return n.push(a), n
32268                         } else {
32269                             if (c[2]) return Z.apply(n, t.getElementsByTagName(e)), n;
32270                             if ((i = c[3]) && $.getElementsByClassName && t.getElementsByClassName) return Z.apply(n, t.getElementsByClassName(i)), n
32271                         }
32272                     if ($.qsa && !B[e + " "] && (!I || !I.test(e))) {
32273                         if (1 !== p) h = t, f = e;
32274                         else if ("object" !== t.nodeName.toLowerCase()) {
32275                             for ((s = t.getAttribute("id")) ? s = s.replace(ye, $e) : t.setAttribute("id", s = j), o = (u = C(e)).length; o--;) u[o] = "#" + s + " " + d(u[o]);
32276                             f = u.join(","), h = ge.test(e) && l(t.parentNode) || t
32277                         }
32278                         if (f) try {
32279                             return Z.apply(n, h.querySelectorAll(f)), n
32280                         } catch (e) {} finally {
32281                             s === j && t.removeAttribute("id")
32282                         }
32283                     }
32284                 }
32285                 return k(e.replace(oe, "$1"), t, n, r)
32286             }
32287
32288             function n() {
32289                 function e(n, r) {
32290                     return t.push(n + " ") > _.cacheLength && delete e[t.shift()], e[n + " "] = r
32291                 }
32292                 var t = [];
32293                 return e
32294             }
32295
32296             function r(e) {
32297                 return e[j] = !0, e
32298             }
32299
32300             function i(e) {
32301                 var t = O.createElement("fieldset");
32302                 try {
32303                     return !!e(t)
32304                 } catch (e) {
32305                     return !1
32306                 } finally {
32307                     t.parentNode && t.parentNode.removeChild(t), t = null
32308                 }
32309             }
32310
32311             function o(e, t) {
32312                 for (var n = e.split("|"), r = n.length; r--;) _.attrHandle[n[r]] = t
32313             }
32314
32315             function a(e, t) {
32316                 var n = t && e,
32317                     r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
32318                 if (r) return r;
32319                 if (n)
32320                     for (; n = n.nextSibling;)
32321                         if (n === t) return -1;
32322                 return e ? 1 : -1
32323             }
32324
32325             function s(e) {
32326                 return function(t) {
32327                     return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && we(t) === e : t.disabled === e : "label" in t && t.disabled === e
32328                 }
32329             }
32330
32331             function c(e) {
32332                 return r(function(t) {
32333                     return t = +t, r(function(n, r) {
32334                         for (var i, o = e([], n.length, t), a = o.length; a--;) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
32335                     })
32336                 })
32337             }
32338
32339             function l(e) {
32340                 return e && void 0 !== e.getElementsByTagName && e
32341             }
32342
32343             function u() {}
32344
32345             function d(e) {
32346                 for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
32347                 return r
32348             }
32349
32350             function f(e, t, n) {
32351                 var r = t.dir,
32352                     i = t.next,
32353                     o = i || r,
32354                     a = n && "parentNode" === o,
32355                     s = q++;
32356                 return t.first ? function(t, n, i) {
32357                     for (; t = t[r];)
32358                         if (1 === t.nodeType || a) return e(t, n, i);
32359                     return !1
32360                 } : function(t, n, c) {
32361                     var l, u, d, f = [F, s];
32362                     if (c) {
32363                         for (; t = t[r];)
32364                             if ((1 === t.nodeType || a) && e(t, n, c)) return !0
32365                     } else
32366                         for (; t = t[r];)
32367                             if (1 === t.nodeType || a)
32368                                 if (d = t[j] || (t[j] = {}), u = d[t.uniqueID] || (d[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase()) t = t[r] || t;
32369                                 else {
32370                                     if ((l = u[o]) && l[0] === F && l[1] === s) return f[2] = l[2];
32371                                     if (u[o] = f, f[2] = e(t, n, c)) return !0
32372                                 } return !1
32373                 }
32374             }
32375
32376             function h(e) {
32377                 return e.length > 1 ? function(t, n, r) {
32378                     for (var i = e.length; i--;)
32379                         if (!e[i](t, n, r)) return !1;
32380                     return !0
32381                 } : e[0]
32382             }
32383
32384             function p(e, n, r) {
32385                 for (var i = 0, o = n.length; i < o; i++) t(e, n[i], r);
32386                 return r
32387             }
32388
32389             function m(e, t, n, r, i) {
32390                 for (var o, a = [], s = 0, c = e.length, l = null != t; s < c; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
32391                 return a
32392             }
32393
32394             function g(e, t, n, i, o, a) {
32395                 return i && !i[j] && (i = g(i)), o && !o[j] && (o = g(o, a)), r(function(r, a, s, c) {
32396                     var l, u, d, f = [],
32397                         h = [],
32398                         g = a.length,
32399                         v = r || p(t || "*", s.nodeType ? [s] : s, []),
32400                         b = !e || !r && t ? v : m(v, f, e, s, c),
32401                         y = n ? o || (r ? e : g || i) ? [] : a : b;
32402                     if (n && n(b, y, s, c), i)
32403                         for (l = m(y, h), i(l, [], s, c), u = l.length; u--;)(d = l[u]) && (y[h[u]] = !(b[h[u]] = d));
32404                     if (r) {
32405                         if (o || e) {
32406                             if (o) {
32407                                 for (l = [], u = y.length; u--;)(d = y[u]) && l.push(b[u] = d);
32408                                 o(null, y = [], l, c)
32409                             }
32410                             for (u = y.length; u--;)(d = y[u]) && (l = o ? Q(r, d) : f[u]) > -1 && (r[l] = !(a[l] = d))
32411                         }
32412                     } else y = m(y === a ? y.splice(g, y.length) : y), o ? o(null, a, y, c) : Z.apply(a, y)
32413                 })
32414             }
32415
32416             function v(e) {
32417                 for (var t, n, r, i = e.length, o = _.relative[e[0].type], a = o || _.relative[" "], s = o ? 1 : 0, c = f(function(e) {
32418                         return e === t
32419                     }, a, !0), l = f(function(e) {
32420                         return Q(t, e) > -1
32421                     }, a, !0), u = [function(e, n, r) {
32422                         var i = !o && (r || n !== T) || ((t = n).nodeType ? c(e, n, r) : l(e, n, r));
32423                         return t = null, i
32424                     }]; s < i; s++)
32425                     if (n = _.relative[e[s].type]) u = [f(h(u), n)];
32426                     else {
32427                         if ((n = _.filter[e[s].type].apply(null, e[s].matches))[j]) {
32428                             for (r = ++s; r < i && !_.relative[e[r].type]; r++);
32429                             return g(s > 1 && h(u), s > 1 && d(e.slice(0, s - 1).concat({
32430                                 value: " " === e[s - 2].type ? "*" : ""
32431                             })).replace(oe, "$1"), n, s < r && v(e.slice(s, r)), r < i && v(e = e.slice(r)), r < i && d(e))
32432                         }
32433                         u.push(n)
32434                     }
32435                 return h(u)
32436             }
32437
32438             function b(e, n) {
32439                 var i = n.length > 0,
32440                     o = e.length > 0,
32441                     a = function(r, a, s, c, l) {
32442                         var u, d, f, h = 0,
32443                             p = "0",
32444                             g = r && [],
32445                             v = [],
32446                             b = T,
32447                             y = r || o && _.find.TAG("*", l),
32448                             $ = F += null == b ? 1 : Math.random() || .1,
32449                             w = y.length;
32450                         for (l && (T = a === O || a || l); p !== w && null != (u = y[p]); p++) {
32451                             if (o && u) {
32452                                 for (d = 0, a || u.ownerDocument === O || (A(u), s = !N); f = e[d++];)
32453                                     if (f(u, a || O, s)) {
32454                                         c.push(u);
32455                                         break
32456                                     }
32457                                 l && (F = $)
32458                             }
32459                             i && ((u = !f && u) && h--, r && g.push(u))
32460                         }
32461                         if (h += p, i && p !== h) {
32462                             for (d = 0; f = n[d++];) f(g, v, a, s);
32463                             if (r) {
32464                                 if (h > 0)
32465                                     for (; p--;) g[p] || v[p] || (v[p] = G.call(c));
32466                                 v = m(v)
32467                             }
32468                             Z.apply(c, v), l && !r && v.length > 0 && h + n.length > 1 && t.uniqueSort(c)
32469                         }
32470                         return l && (F = $, T = b), g
32471                     };
32472                 return i ? r(a) : a
32473             }
32474             var y, $, _, w, E, C, x, k, T, M, S, A, O, D, N, I, R, P, H, j = "sizzle" + 1 * new Date,
32475                 L = e.document,
32476                 F = 0,
32477                 q = 0,
32478                 U = n(),
32479                 V = n(),
32480                 B = n(),
32481                 z = function(e, t) {
32482                     return e === t && (S = !0), 0
32483                 },
32484                 W = {}.hasOwnProperty,
32485                 Y = [],
32486                 G = Y.pop,
32487                 K = Y.push,
32488                 Z = Y.push,
32489                 X = Y.slice,
32490                 Q = function(e, t) {
32491                     for (var n = 0, r = e.length; n < r; n++)
32492                         if (e[n] === t) return n;
32493                     return -1
32494                 },
32495                 J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
32496                 ee = "[\\x20\\t\\r\\n\\f]",
32497                 te = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
32498                 ne = "\\[" + ee + "*(" + te + ")(?:" + ee + "*([*^$|!~]?=)" + ee + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + te + "))|)" + ee + "*\\]",
32499                 re = ":(" + te + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ne + ")*)|.*)\\)|)",
32500                 ie = new RegExp(ee + "+", "g"),
32501                 oe = new RegExp("^" + ee + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ee + "+$", "g"),
32502                 ae = new RegExp("^" + ee + "*," + ee + "*"),
32503                 se = new RegExp("^" + ee + "*([>+~]|" + ee + ")" + ee + "*"),
32504                 ce = new RegExp("=" + ee + "*([^\\]'\"]*?)" + ee + "*\\]", "g"),
32505                 le = new RegExp(re),
32506                 ue = new RegExp("^" + te + "$"),
32507                 de = {
32508                     ID: new RegExp("^#(" + te + ")"),
32509                     CLASS: new RegExp("^\\.(" + te + ")"),
32510                     TAG: new RegExp("^(" + te + "|[*])"),
32511                     ATTR: new RegExp("^" + ne),
32512                     PSEUDO: new RegExp("^" + re),
32513                     CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ee + "*(even|odd|(([+-]|)(\\d*)n|)" + ee + "*(?:([+-]|)" + ee + "*(\\d+)|))" + ee + "*\\)|)", "i"),
32514                     bool: new RegExp("^(?:" + J + ")$", "i"),
32515                     needsContext: new RegExp("^" + ee + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ee + "*((?:-\\d)?\\d*)" + ee + "*\\)|)(?=[^-]|$)", "i")
32516                 },
32517                 fe = /^(?:input|select|textarea|button)$/i,
32518                 he = /^h\d$/i,
32519                 pe = /^[^{]+\{\s*\[native \w/,
32520                 me = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
32521                 ge = /[+~]/,
32522                 ve = new RegExp("\\\\([\\da-f]{1,6}" + ee + "?|(" + ee + ")|.)", "ig"),
32523                 be = function(e, t, n) {
32524                     var r = "0x" + t - 65536;
32525                     return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
32526                 },
32527                 ye = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
32528                 $e = function(e, t) {
32529                     return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
32530                 },
32531                 _e = function() {
32532                     A()
32533                 },
32534                 we = f(function(e) {
32535                     return !0 === e.disabled && ("form" in e || "label" in e)
32536                 }, {
32537                     dir: "parentNode",
32538                     next: "legend"
32539                 });
32540             try {
32541                 Z.apply(Y = X.call(L.childNodes), L.childNodes), Y[L.childNodes.length].nodeType
32542             } catch (e) {
32543                 Z = {
32544                     apply: Y.length ? function(e, t) {
32545                         K.apply(e, X.call(t))
32546                     } : function(e, t) {
32547                         for (var n = e.length, r = 0; e[n++] = t[r++];);
32548                         e.length = n - 1
32549                     }
32550                 }
32551             }
32552             $ = t.support = {}, E = t.isXML = function(e) {
32553                 var t = e && (e.ownerDocument || e).documentElement;
32554                 return !!t && "HTML" !== t.nodeName
32555             }, A = t.setDocument = function(e) {
32556                 var t, n, r = e ? e.ownerDocument || e : L;
32557                 return r !== O && 9 === r.nodeType && r.documentElement ? (O = r, D = O.documentElement, N = !E(O), L !== O && (n = O.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", _e, !1) : n.attachEvent && n.attachEvent("onunload", _e)), $.attributes = i(function(e) {
32558                     return e.className = "i", !e.getAttribute("className")
32559                 }), $.getElementsByTagName = i(function(e) {
32560                     return e.appendChild(O.createComment("")), !e.getElementsByTagName("*").length
32561                 }), $.getElementsByClassName = pe.test(O.getElementsByClassName), $.getById = i(function(e) {
32562                     return D.appendChild(e).id = j, !O.getElementsByName || !O.getElementsByName(j).length
32563                 }), $.getById ? (_.filter.ID = function(e) {
32564                     var t = e.replace(ve, be);
32565                     return function(e) {
32566                         return e.getAttribute("id") === t
32567                     }
32568                 }, _.find.ID = function(e, t) {
32569                     if (void 0 !== t.getElementById && N) {
32570                         var n = t.getElementById(e);
32571                         return n ? [n] : []
32572                     }
32573                 }) : (_.filter.ID = function(e) {
32574                     var t = e.replace(ve, be);
32575                     return function(e) {
32576                         var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
32577                         return n && n.value === t
32578                     }
32579                 }, _.find.ID = function(e, t) {
32580                     if (void 0 !== t.getElementById && N) {
32581                         var n, r, i, o = t.getElementById(e);
32582                         if (o) {
32583                             if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
32584                             for (i = t.getElementsByName(e), r = 0; o = i[r++];)
32585                                 if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
32586                         }
32587                         return []
32588                     }
32589                 }), _.find.TAG = $.getElementsByTagName ? function(e, t) {
32590                     return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : $.qsa ? t.querySelectorAll(e) : void 0
32591                 } : function(e, t) {
32592                     var n, r = [],
32593                         i = 0,
32594                         o = t.getElementsByTagName(e);
32595                     if ("*" === e) {
32596                         for (; n = o[i++];) 1 === n.nodeType && r.push(n);
32597                         return r
32598                     }
32599                     return o
32600                 }, _.find.CLASS = $.getElementsByClassName && function(e, t) {
32601                     if (void 0 !== t.getElementsByClassName && N) return t.getElementsByClassName(e)
32602                 }, R = [], I = [], ($.qsa = pe.test(O.querySelectorAll)) && (i(function(e) {
32603                     D.appendChild(e).innerHTML = "<a id='" + j + "'></a><select id='" + j + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && I.push("[*^$]=" + ee + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || I.push("\\[" + ee + "*(?:value|" + J + ")"), e.querySelectorAll("[id~=" + j + "-]").length || I.push("~="), e.querySelectorAll(":checked").length || I.push(":checked"), e.querySelectorAll("a#" + j + "+*").length || I.push(".#.+[+~]")
32604                 }), i(function(e) {
32605                     e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
32606                     var t = O.createElement("input");
32607                     t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && I.push("name" + ee + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && I.push(":enabled", ":disabled"), D.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && I.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), I.push(",.*:")
32608                 })), ($.matchesSelector = pe.test(P = D.matches || D.webkitMatchesSelector || D.mozMatchesSelector || D.oMatchesSelector || D.msMatchesSelector)) && i(function(e) {
32609                     $.disconnectedMatch = P.call(e, "*"), P.call(e, "[s!='']:x"), R.push("!=", re)
32610                 }), I = I.length && new RegExp(I.join("|")), R = R.length && new RegExp(R.join("|")), t = pe.test(D.compareDocumentPosition), H = t || pe.test(D.contains) ? function(e, t) {
32611                     var n = 9 === e.nodeType ? e.documentElement : e,
32612                         r = t && t.parentNode;
32613                     return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
32614                 } : function(e, t) {
32615                     if (t)
32616                         for (; t = t.parentNode;)
32617                             if (t === e) return !0;
32618                     return !1
32619                 }, z = t ? function(e, t) {
32620                     if (e === t) return S = !0, 0;
32621                     var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
32622                     return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !$.sortDetached && t.compareDocumentPosition(e) === n ? e === O || e.ownerDocument === L && H(L, e) ? -1 : t === O || t.ownerDocument === L && H(L, t) ? 1 : M ? Q(M, e) - Q(M, t) : 0 : 4 & n ? -1 : 1)
32623                 } : function(e, t) {
32624                     if (e === t) return S = !0, 0;
32625                     var n, r = 0,
32626                         i = e.parentNode,
32627                         o = t.parentNode,
32628                         s = [e],
32629                         c = [t];
32630                     if (!i || !o) return e === O ? -1 : t === O ? 1 : i ? -1 : o ? 1 : M ? Q(M, e) - Q(M, t) : 0;
32631                     if (i === o) return a(e, t);
32632                     for (n = e; n = n.parentNode;) s.unshift(n);
32633                     for (n = t; n = n.parentNode;) c.unshift(n);
32634                     for (; s[r] === c[r];) r++;
32635                     return r ? a(s[r], c[r]) : s[r] === L ? -1 : c[r] === L ? 1 : 0
32636                 }, O) : O
32637             }, t.matches = function(e, n) {
32638                 return t(e, null, null, n)
32639             }, t.matchesSelector = function(e, n) {
32640                 if ((e.ownerDocument || e) !== O && A(e), n = n.replace(ce, "='$1']"), $.matchesSelector && N && !B[n + " "] && (!R || !R.test(n)) && (!I || !I.test(n))) try {
32641                     var r = P.call(e, n);
32642                     if (r || $.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
32643                 } catch (e) {}
32644                 return t(n, O, null, [e]).length > 0
32645             }, t.contains = function(e, t) {
32646                 return (e.ownerDocument || e) !== O && A(e), H(e, t)
32647             }, t.attr = function(e, t) {
32648                 (e.ownerDocument || e) !== O && A(e);
32649                 var n = _.attrHandle[t.toLowerCase()],
32650                     r = n && W.call(_.attrHandle, t.toLowerCase()) ? n(e, t, !N) : void 0;
32651                 return void 0 !== r ? r : $.attributes || !N ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
32652             }, t.escape = function(e) {
32653                 return (e + "").replace(ye, $e)
32654             }, t.error = function(e) {
32655                 throw new Error("Syntax error, unrecognized expression: " + e)
32656             }, t.uniqueSort = function(e) {
32657                 var t, n = [],
32658                     r = 0,
32659                     i = 0;
32660                 if (S = !$.detectDuplicates, M = !$.sortStable && e.slice(0), e.sort(z), S) {
32661                     for (; t = e[i++];) t === e[i] && (r = n.push(i));
32662                     for (; r--;) e.splice(n[r], 1)
32663                 }
32664                 return M = null, e
32665             }, w = t.getText = function(e) {
32666                 var t, n = "",
32667                     r = 0,
32668                     i = e.nodeType;
32669                 if (i) {
32670                     if (1 === i || 9 === i || 11 === i) {
32671                         if ("string" == typeof e.textContent) return e.textContent;
32672                         for (e = e.firstChild; e; e = e.nextSibling) n += w(e)
32673                     } else if (3 === i || 4 === i) return e.nodeValue
32674                 } else
32675                     for (; t = e[r++];) n += w(t);
32676                 return n
32677             }, (_ = t.selectors = {
32678                 cacheLength: 50,
32679                 createPseudo: r,
32680                 match: de,
32681                 attrHandle: {},
32682                 find: {},
32683                 relative: {
32684                     ">": {
32685                         dir: "parentNode",
32686                         first: !0
32687                     },
32688                     " ": {
32689                         dir: "parentNode"
32690                     },
32691                     "+": {
32692                         dir: "previousSibling",
32693                         first: !0
32694                     },
32695                     "~": {
32696                         dir: "previousSibling"
32697                     }
32698                 },
32699                 preFilter: {
32700                     ATTR: function(e) {
32701                         return e[1] = e[1].replace(ve, be), e[3] = (e[3] || e[4] || e[5] || "").replace(ve, be), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
32702                     },
32703                     CHILD: function(e) {
32704                         return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]), e
32705                     },
32706                     PSEUDO: function(e) {
32707                         var t, n = !e[6] && e[2];
32708                         return de.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && le.test(n) && (t = C(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))
32709                     }
32710                 },
32711                 filter: {
32712                     TAG: function(e) {
32713                         var t = e.replace(ve, be).toLowerCase();
32714                         return "*" === e ? function() {
32715                             return !0
32716                         } : function(e) {
32717                             return e.nodeName && e.nodeName.toLowerCase() === t
32718                         }
32719                     },
32720                     CLASS: function(e) {
32721                         var t = U[e + " "];
32722                         return t || (t = new RegExp("(^|" + ee + ")" + e + "(" + ee + "|$)")) && U(e, function(e) {
32723                             return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
32724                         })
32725                     },
32726                     ATTR: function(e, n, r) {
32727                         return function(i) {
32728                             var o = t.attr(i, e);
32729                             return null == o ? "!=" === n : !n || (o += "", "=" === n ? o === r : "!=" === n ? o !== r : "^=" === n ? r && 0 === o.indexOf(r) : "*=" === n ? r && o.indexOf(r) > -1 : "$=" === n ? r && o.slice(-r.length) === r : "~=" === n ? (" " + o.replace(ie, " ") + " ").indexOf(r) > -1 : "|=" === n && (o === r || o.slice(0, r.length + 1) === r + "-"))
32730                         }
32731                     },
32732                     CHILD: function(e, t, n, r, i) {
32733                         var o = "nth" !== e.slice(0, 3),
32734                             a = "last" !== e.slice(-4),
32735                             s = "of-type" === t;
32736                         return 1 === r && 0 === i ? function(e) {
32737                             return !!e.parentNode
32738                         } : function(t, n, c) {
32739                             var l, u, d, f, h, p, m = o !== a ? "nextSibling" : "previousSibling",
32740                                 g = t.parentNode,
32741                                 v = s && t.nodeName.toLowerCase(),
32742                                 b = !c && !s,
32743                                 y = !1;
32744                             if (g) {
32745                                 if (o) {
32746                                     for (; m;) {
32747                                         for (f = t; f = f[m];)
32748                                             if (s ? f.nodeName.toLowerCase() === v : 1 === f.nodeType) return !1;
32749                                         p = m = "only" === e && !p && "nextSibling"
32750                                     }
32751                                     return !0
32752                                 }
32753                                 if (p = [a ? g.firstChild : g.lastChild], a && b) {
32754                                     for (y = (h = (l = (u = (d = (f = g)[j] || (f[j] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] || [])[0] === F && l[1]) && l[2], f = h && g.childNodes[h]; f = ++h && f && f[m] || (y = h = 0) || p.pop();)
32755                                         if (1 === f.nodeType && ++y && f === t) {
32756                                             u[e] = [F, h, y];
32757                                             break
32758                                         }
32759                                 } else if (b && (y = h = (l = (u = (d = (f = t)[j] || (f[j] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] || [])[0] === F && l[1]), !1 === y)
32760                                     for (;
32761                                         (f = ++h && f && f[m] || (y = h = 0) || p.pop()) && ((s ? f.nodeName.toLowerCase() !== v : 1 !== f.nodeType) || !++y || (b && ((u = (d = f[j] || (f[j] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] = [F, y]), f !== t)););
32762                                 return (y -= i) === r || y % r == 0 && y / r >= 0
32763                             }
32764                         }
32765                     },
32766                     PSEUDO: function(e, n) {
32767                         var i, o = _.pseudos[e] || _.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
32768                         return o[j] ? o(n) : o.length > 1 ? (i = [e, e, "", n], _.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
32769                             for (var r, i = o(e, n), a = i.length; a--;) e[r = Q(e, i[a])] = !(t[r] = i[a])
32770                         }) : function(e) {
32771                             return o(e, 0, i)
32772                         }) : o
32773                     }
32774                 },
32775                 pseudos: {
32776                     not: r(function(e) {
32777                         var t = [],
32778                             n = [],
32779                             i = x(e.replace(oe, "$1"));
32780                         return i[j] ? r(function(e, t, n, r) {
32781                             for (var o, a = i(e, null, r, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
32782                         }) : function(e, r, o) {
32783                             return t[0] = e, i(t, null, o, n), t[0] = null, !n.pop()
32784                         }
32785                     }),
32786                     has: r(function(e) {
32787                         return function(n) {
32788                             return t(e, n).length > 0
32789                         }
32790                     }),
32791                     contains: r(function(e) {
32792                         return e = e.replace(ve, be),
32793                             function(t) {
32794                                 return (t.textContent || t.innerText || w(t)).indexOf(e) > -1
32795                             }
32796                     }),
32797                     lang: r(function(e) {
32798                         return ue.test(e || "") || t.error("unsupported lang: " + e), e = e.replace(ve, be).toLowerCase(),
32799                             function(t) {
32800                                 var n;
32801                                 do {
32802                                     if (n = N ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
32803                                 } while ((t = t.parentNode) && 1 === t.nodeType);
32804                                 return !1
32805                             }
32806                     }),
32807                     target: function(t) {
32808                         var n = e.location && e.location.hash;
32809                         return n && n.slice(1) === t.id
32810                     },
32811                     root: function(e) {
32812                         return e === D
32813                     },
32814                     focus: function(e) {
32815                         return e === O.activeElement && (!O.hasFocus || O.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
32816                     },
32817                     enabled: s(!1),
32818                     disabled: s(!0),
32819                     checked: function(e) {
32820                         var t = e.nodeName.toLowerCase();
32821                         return "input" === t && !!e.checked || "option" === t && !!e.selected
32822                     },
32823                     selected: function(e) {
32824                         return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
32825                     },
32826                     empty: function(e) {
32827                         for (e = e.firstChild; e; e = e.nextSibling)
32828                             if (e.nodeType < 6) return !1;
32829                         return !0
32830                     },
32831                     parent: function(e) {
32832                         return !_.pseudos.empty(e)
32833                     },
32834                     header: function(e) {
32835                         return he.test(e.nodeName)
32836                     },
32837                     input: function(e) {
32838                         return fe.test(e.nodeName)
32839                     },
32840                     button: function(e) {
32841                         var t = e.nodeName.toLowerCase();
32842                         return "input" === t && "button" === e.type || "button" === t
32843                     },
32844                     text: function(e) {
32845                         var t;
32846                         return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
32847                     },
32848                     first: c(function() {
32849                         return [0]
32850                     }),
32851                     last: c(function(e, t) {
32852                         return [t - 1]
32853                     }),
32854                     eq: c(function(e, t, n) {
32855                         return [n < 0 ? n + t : n]
32856                     }),
32857                     even: c(function(e, t) {
32858                         for (var n = 0; n < t; n += 2) e.push(n);
32859                         return e
32860                     }),
32861                     odd: c(function(e, t) {
32862                         for (var n = 1; n < t; n += 2) e.push(n);
32863                         return e
32864                     }),
32865                     lt: c(function(e, t, n) {
32866                         for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
32867                         return e
32868                     }),
32869                     gt: c(function(e, t, n) {
32870                         for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
32871                         return e
32872                     })
32873                 }
32874             }).pseudos.nth = _.pseudos.eq;
32875             for (y in {
32876                     radio: !0,
32877                     checkbox: !0,
32878                     file: !0,
32879                     password: !0,
32880                     image: !0
32881                 }) _.pseudos[y] = function(e) {
32882                 return function(t) {
32883                     return "input" === t.nodeName.toLowerCase() && t.type === e
32884                 }
32885             }(y);
32886             for (y in {
32887                     submit: !0,
32888                     reset: !0
32889                 }) _.pseudos[y] = function(e) {
32890                 return function(t) {
32891                     var n = t.nodeName.toLowerCase();
32892                     return ("input" === n || "button" === n) && t.type === e
32893                 }
32894             }(y);
32895             return u.prototype = _.filters = _.pseudos, _.setFilters = new u, C = t.tokenize = function(e, n) {
32896                 var r, i, o, a, s, c, l, u = V[e + " "];
32897                 if (u) return n ? 0 : u.slice(0);
32898                 for (s = e, c = [], l = _.preFilter; s;) {
32899                     r && !(i = ae.exec(s)) || (i && (s = s.slice(i[0].length) || s), c.push(o = [])), r = !1, (i = se.exec(s)) && (r = i.shift(), o.push({
32900                         value: r,
32901                         type: i[0].replace(oe, " ")
32902                     }), s = s.slice(r.length));
32903                     for (a in _.filter) !(i = de[a].exec(s)) || l[a] && !(i = l[a](i)) || (r = i.shift(), o.push({
32904                         value: r,
32905                         type: a,
32906                         matches: i
32907                     }), s = s.slice(r.length));
32908                     if (!r) break
32909                 }
32910                 return n ? s.length : s ? t.error(e) : V(e, c).slice(0)
32911             }, x = t.compile = function(e, t) {
32912                 var n, r = [],
32913                     i = [],
32914                     o = B[e + " "];
32915                 if (!o) {
32916                     for (t || (t = C(e)), n = t.length; n--;)(o = v(t[n]))[j] ? r.push(o) : i.push(o);
32917                     (o = B(e, b(i, r))).selector = e
32918                 }
32919                 return o
32920             }, k = t.select = function(e, t, n, r) {
32921                 var i, o, a, s, c, u = "function" == typeof e && e,
32922                     f = !r && C(e = u.selector || e);
32923                 if (n = n || [], 1 === f.length) {
32924                     if ((o = f[0] = f[0].slice(0)).length > 2 && "ID" === (a = o[0]).type && 9 === t.nodeType && N && _.relative[o[1].type]) {
32925                         if (!(t = (_.find.ID(a.matches[0].replace(ve, be), t) || [])[0])) return n;
32926                         u && (t = t.parentNode), e = e.slice(o.shift().value.length)
32927                     }
32928                     for (i = de.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !_.relative[s = a.type]);)
32929                         if ((c = _.find[s]) && (r = c(a.matches[0].replace(ve, be), ge.test(o[0].type) && l(t.parentNode) || t))) {
32930                             if (o.splice(i, 1), !(e = r.length && d(o))) return Z.apply(n, r), n;
32931                             break
32932                         }
32933                 }
32934                 return (u || x(e, f))(r, t, !N, n, !t || ge.test(e) && l(t.parentNode) || t), n
32935             }, $.sortStable = j.split("").sort(z).join("") === j, $.detectDuplicates = !!S, A(), $.sortDetached = i(function(e) {
32936                 return 1 & e.compareDocumentPosition(O.createElement("fieldset"))
32937             }), i(function(e) {
32938                 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
32939             }) || o("type|href|height|width", function(e, t, n) {
32940                 if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
32941             }), $.attributes && i(function(e) {
32942                 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
32943             }) || o("value", function(e, t, n) {
32944                 if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
32945             }), i(function(e) {
32946                 return null == e.getAttribute("disabled")
32947             }) || o(J, function(e, t, n) {
32948                 var r;
32949                 if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
32950             }), t
32951         }(e);
32952         he.find = be, he.expr = be.selectors, he.expr[":"] = he.expr.pseudos, he.uniqueSort = he.unique = be.uniqueSort, he.text = be.getText, he.isXMLDoc = be.isXML, he.contains = be.contains, he.escapeSelector = be.escape;
32953         var ye = function(e, t, n) {
32954                 for (var r = [], i = void 0 !== n;
32955                     (e = e[t]) && 9 !== e.nodeType;)
32956                     if (1 === e.nodeType) {
32957                         if (i && he(e).is(n)) break;
32958                         r.push(e)
32959                     }
32960                 return r
32961             },
32962             $e = function(e, t) {
32963                 for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
32964                 return n
32965             },
32966             _e = he.expr.match.needsContext,
32967             we = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,
32968             Ee = /^.[^:#\[\.,]*$/;
32969         he.filter = function(e, t, n) {
32970             var r = t[0];
32971             return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? he.find.matchesSelector(r, e) ? [r] : [] : he.find.matches(e, he.grep(t, function(e) {
32972                 return 1 === e.nodeType
32973             }))
32974         }, he.fn.extend({
32975             find: function(e) {
32976                 var t, n, r = this.length,
32977                     i = this;
32978                 if ("string" != typeof e) return this.pushStack(he(e).filter(function() {
32979                     for (t = 0; t < r; t++)
32980                         if (he.contains(i[t], this)) return !0
32981                 }));
32982                 for (n = this.pushStack([]), t = 0; t < r; t++) he.find(e, i[t], n);
32983                 return r > 1 ? he.uniqueSort(n) : n
32984             },
32985             filter: function(e) {
32986                 return this.pushStack(o(this, e || [], !1))
32987             },
32988             not: function(e) {
32989                 return this.pushStack(o(this, e || [], !0))
32990             },
32991             is: function(e) {
32992                 return !!o(this, "string" == typeof e && _e.test(e) ? he(e) : e || [], !1).length
32993             }
32994         });
32995         var Ce, xe = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
32996         (he.fn.init = function(e, t, n) {
32997             var r, i;
32998             if (!e) return this;
32999             if (n = n || Ce, "string" == typeof e) {
33000                 if (!(r = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : xe.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
33001                 if (r[1]) {
33002                     if (t = t instanceof he ? t[0] : t, he.merge(this, he.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : te, !0)), we.test(r[1]) && he.isPlainObject(t))
33003                         for (r in t) he.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
33004                     return this
33005                 }
33006                 return (i = te.getElementById(r[2])) && (this[0] = i, this.length = 1), this
33007             }
33008             return e.nodeType ? (this[0] = e, this.length = 1, this) : he.isFunction(e) ? void 0 !== n.ready ? n.ready(e) : e(he) : he.makeArray(e, this)
33009         }).prototype = he.fn, Ce = he(te);
33010         var ke = /^(?:parents|prev(?:Until|All))/,
33011             Te = {
33012                 children: !0,
33013                 contents: !0,
33014                 next: !0,
33015                 prev: !0
33016             };
33017         he.fn.extend({
33018             has: function(e) {
33019                 var t = he(e, this),
33020                     n = t.length;
33021                 return this.filter(function() {
33022                     for (var e = 0; e < n; e++)
33023                         if (he.contains(this, t[e])) return !0
33024                 })
33025             },
33026             closest: function(e, t) {
33027                 var n, r = 0,
33028                     i = this.length,
33029                     o = [],
33030                     a = "string" != typeof e && he(e);
33031                 if (!_e.test(e))
33032                     for (; r < i; r++)
33033                         for (n = this[r]; n && n !== t; n = n.parentNode)
33034                             if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && he.find.matchesSelector(n, e))) {
33035                                 o.push(n);
33036                                 break
33037                             }
33038                 return this.pushStack(o.length > 1 ? he.uniqueSort(o) : o)
33039             },
33040             index: function(e) {
33041                 return e ? "string" == typeof e ? ae.call(he(e), this[0]) : ae.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
33042             },
33043             add: function(e, t) {
33044                 return this.pushStack(he.uniqueSort(he.merge(this.get(), he(e, t))))
33045             },
33046             addBack: function(e) {
33047                 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
33048             }
33049         }), he.each({
33050             parent: function(e) {
33051                 var t = e.parentNode;
33052                 return t && 11 !== t.nodeType ? t : null
33053             },
33054             parents: function(e) {
33055                 return ye(e, "parentNode")
33056             },
33057             parentsUntil: function(e, t, n) {
33058                 return ye(e, "parentNode", n)
33059             },
33060             next: function(e) {
33061                 return a(e, "nextSibling")
33062             },
33063             prev: function(e) {
33064                 return a(e, "previousSibling")
33065             },
33066             nextAll: function(e) {
33067                 return ye(e, "nextSibling")
33068             },
33069             prevAll: function(e) {
33070                 return ye(e, "previousSibling")
33071             },
33072             nextUntil: function(e, t, n) {
33073                 return ye(e, "nextSibling", n)
33074             },
33075             prevUntil: function(e, t, n) {
33076                 return ye(e, "previousSibling", n)
33077             },
33078             siblings: function(e) {
33079                 return $e((e.parentNode || {}).firstChild, e)
33080             },
33081             children: function(e) {
33082                 return $e(e.firstChild)
33083             },
33084             contents: function(e) {
33085                 return i(e, "iframe") ? e.contentDocument : (i(e, "template") && (e = e.content || e), he.merge([], e.childNodes))
33086             }
33087         }, function(e, t) {
33088             he.fn[e] = function(n, r) {
33089                 var i = he.map(this, t, n);
33090                 return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = he.filter(r, i)), this.length > 1 && (Te[e] || he.uniqueSort(i), ke.test(e) && i.reverse()), this.pushStack(i)
33091             }
33092         });
33093         var Me = /[^\x20\t\r\n\f]+/g;
33094         he.Callbacks = function(e) {
33095             e = "string" == typeof e ? s(e) : he.extend({}, e);
33096             var t, n, r, i, o = [],
33097                 a = [],
33098                 c = -1,
33099                 l = function() {
33100                     for (i = i || e.once, r = t = !0; a.length; c = -1)
33101                         for (n = a.shift(); ++c < o.length;) !1 === o[c].apply(n[0], n[1]) && e.stopOnFalse && (c = o.length, n = !1);
33102                     e.memory || (n = !1), t = !1, i && (o = n ? [] : "")
33103                 },
33104                 u = {
33105                     add: function() {
33106                         return o && (n && !t && (c = o.length - 1, a.push(n)), function t(n) {
33107                             he.each(n, function(n, r) {
33108                                 he.isFunction(r) ? e.unique && u.has(r) || o.push(r) : r && r.length && "string" !== he.type(r) && t(r)
33109                             })
33110                         }(arguments), n && !t && l()), this
33111                     },
33112                     remove: function() {
33113                         return he.each(arguments, function(e, t) {
33114                             for (var n;
33115                                 (n = he.inArray(t, o, n)) > -1;) o.splice(n, 1), n <= c && c--
33116                         }), this
33117                     },
33118                     has: function(e) {
33119                         return e ? he.inArray(e, o) > -1 : o.length > 0
33120                     },
33121                     empty: function() {
33122                         return o && (o = []), this
33123                     },
33124                     disable: function() {
33125                         return i = a = [], o = n = "", this
33126                     },
33127                     disabled: function() {
33128                         return !o
33129                     },
33130                     lock: function() {
33131                         return i = a = [], n || t || (o = n = ""), this
33132                     },
33133                     locked: function() {
33134                         return !!i
33135                     },
33136                     fireWith: function(e, n) {
33137                         return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || l()), this
33138                     },
33139                     fire: function() {
33140                         return u.fireWith(this, arguments), this
33141                     },
33142                     fired: function() {
33143                         return !!r
33144                     }
33145                 };
33146             return u
33147         }, he.extend({
33148             Deferred: function(t) {
33149                 var n = [
33150                         ["notify", "progress", he.Callbacks("memory"), he.Callbacks("memory"), 2],
33151                         ["resolve", "done", he.Callbacks("once memory"), he.Callbacks("once memory"), 0, "resolved"],
33152                         ["reject", "fail", he.Callbacks("once memory"), he.Callbacks("once memory"), 1, "rejected"]
33153                     ],
33154                     r = "pending",
33155                     i = {
33156                         state: function() {
33157                             return r
33158                         },
33159                         always: function() {
33160                             return o.done(arguments).fail(arguments), this
33161                         },
33162                         catch: function(e) {
33163                             return i.then(null, e)
33164                         },
33165                         pipe: function() {
33166                             var e = arguments;
33167                             return he.Deferred(function(t) {
33168                                 he.each(n, function(n, r) {
33169                                     var i = he.isFunction(e[r[4]]) && e[r[4]];
33170                                     o[r[1]](function() {
33171                                         var e = i && i.apply(this, arguments);
33172                                         e && he.isFunction(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments)
33173                                     })
33174                                 }), e = null
33175                             }).promise()
33176                         },
33177                         then: function(t, r, i) {
33178                             function o(t, n, r, i) {
33179                                 return function() {
33180                                     var s = this,
33181                                         u = arguments,
33182                                         d = function() {
33183                                             var e, d;
33184                                             if (!(t < a)) {
33185                                                 if ((e = r.apply(s, u)) === n.promise()) throw new TypeError("Thenable self-resolution");
33186                                                 d = e && ("object" == typeof e || "function" == typeof e) && e.then, he.isFunction(d) ? i ? d.call(e, o(a, n, c, i), o(a, n, l, i)) : (a++, d.call(e, o(a, n, c, i), o(a, n, l, i), o(a, n, c, n.notifyWith))) : (r !== c && (s = void 0, u = [e]), (i || n.resolveWith)(s, u))
33187                                             }
33188                                         },
33189                                         f = i ? d : function() {
33190                                             try {
33191                                                 d()
33192                                             } catch (e) {
33193                                                 he.Deferred.exceptionHook && he.Deferred.exceptionHook(e, f.stackTrace), t + 1 >= a && (r !== l && (s = void 0, u = [e]), n.rejectWith(s, u))
33194                                             }
33195                                         };
33196                                     t ? f() : (he.Deferred.getStackHook && (f.stackTrace = he.Deferred.getStackHook()), e.setTimeout(f))
33197                                 }
33198                             }
33199                             var a = 0;
33200                             return he.Deferred(function(e) {
33201                                 n[0][3].add(o(0, e, he.isFunction(i) ? i : c, e.notifyWith)), n[1][3].add(o(0, e, he.isFunction(t) ? t : c)), n[2][3].add(o(0, e, he.isFunction(r) ? r : l))
33202                             }).promise()
33203                         },
33204                         promise: function(e) {
33205                             return null != e ? he.extend(e, i) : i
33206                         }
33207                     },
33208                     o = {};
33209                 return he.each(n, function(e, t) {
33210                     var a = t[2],
33211                         s = t[5];
33212                     i[t[1]] = a.add, s && a.add(function() {
33213                         r = s
33214                     }, n[3 - e][2].disable, n[0][2].lock), a.add(t[3].fire), o[t[0]] = function() {
33215                         return o[t[0] + "With"](this === o ? void 0 : this, arguments), this
33216                     }, o[t[0] + "With"] = a.fireWith
33217                 }), i.promise(o), t && t.call(o, o), o
33218             },
33219             when: function(e) {
33220                 var t = arguments.length,
33221                     n = t,
33222                     r = Array(n),
33223                     i = re.call(arguments),
33224                     o = he.Deferred(),
33225                     a = function(e) {
33226                         return function(n) {
33227                             r[e] = this, i[e] = arguments.length > 1 ? re.call(arguments) : n, --t || o.resolveWith(r, i)
33228                         }
33229                     };
33230                 if (t <= 1 && (u(e, o.done(a(n)).resolve, o.reject, !t), "pending" === o.state() || he.isFunction(i[n] && i[n].then))) return o.then();
33231                 for (; n--;) u(i[n], a(n), o.reject);
33232                 return o.promise()
33233             }
33234         });
33235         var Se = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
33236         he.Deferred.exceptionHook = function(t, n) {
33237             e.console && e.console.warn && t && Se.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n)
33238         }, he.readyException = function(t) {
33239             e.setTimeout(function() {
33240                 throw t
33241             })
33242         };
33243         var Ae = he.Deferred();
33244         he.fn.ready = function(e) {
33245             return Ae.then(e).catch(function(e) {
33246                 he.readyException(e)
33247             }), this
33248         }, he.extend({
33249             isReady: !1,
33250             readyWait: 1,
33251             ready: function(e) {
33252                 (!0 === e ? --he.readyWait : he.isReady) || (he.isReady = !0, !0 !== e && --he.readyWait > 0 || Ae.resolveWith(te, [he]))
33253             }
33254         }), he.ready.then = Ae.then, "complete" === te.readyState || "loading" !== te.readyState && !te.documentElement.doScroll ? e.setTimeout(he.ready) : (te.addEventListener("DOMContentLoaded", d), e.addEventListener("load", d));
33255         var Oe = function(e, t, n, r, i, o, a) {
33256                 var s = 0,
33257                     c = e.length,
33258                     l = null == n;
33259                 if ("object" === he.type(n)) {
33260                     i = !0;
33261                     for (s in n) Oe(e, t, s, n[s], !0, o, a)
33262                 } else if (void 0 !== r && (i = !0, he.isFunction(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
33263                         return l.call(he(e), n)
33264                     })), t))
33265                     for (; s < c; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
33266                 return i ? e : l ? t.call(e) : c ? t(e[0], n) : o
33267             },
33268             De = function(e) {
33269                 return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
33270             };
33271         f.uid = 1, f.prototype = {
33272             cache: function(e) {
33273                 var t = e[this.expando];
33274                 return t || (t = {}, De(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
33275                     value: t,
33276                     configurable: !0
33277                 }))), t
33278             },
33279             set: function(e, t, n) {
33280                 var r, i = this.cache(e);
33281                 if ("string" == typeof t) i[he.camelCase(t)] = n;
33282                 else
33283                     for (r in t) i[he.camelCase(r)] = t[r];
33284                 return i
33285             },
33286             get: function(e, t) {
33287                 return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][he.camelCase(t)]
33288             },
33289             access: function(e, t, n) {
33290                 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)
33291             },
33292             remove: function(e, t) {
33293                 var n, r = e[this.expando];
33294                 if (void 0 !== r) {
33295                     if (void 0 !== t) {
33296                         n = (t = Array.isArray(t) ? t.map(he.camelCase) : (t = he.camelCase(t)) in r ? [t] : t.match(Me) || []).length;
33297                         for (; n--;) delete r[t[n]]
33298                     }(void 0 === t || he.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
33299                 }
33300             },
33301             hasData: function(e) {
33302                 var t = e[this.expando];
33303                 return void 0 !== t && !he.isEmptyObject(t)
33304             }
33305         };
33306         var Ne = new f,
33307             Ie = new f,
33308             Re = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
33309             Pe = /[A-Z]/g;
33310         he.extend({
33311             hasData: function(e) {
33312                 return Ie.hasData(e) || Ne.hasData(e)
33313             },
33314             data: function(e, t, n) {
33315                 return Ie.access(e, t, n)
33316             },
33317             removeData: function(e, t) {
33318                 Ie.remove(e, t)
33319             },
33320             _data: function(e, t, n) {
33321                 return Ne.access(e, t, n)
33322             },
33323             _removeData: function(e, t) {
33324                 Ne.remove(e, t)
33325             }
33326         }), he.fn.extend({
33327             data: function(e, t) {
33328                 var n, r, i, o = this[0],
33329                     a = o && o.attributes;
33330                 if (void 0 === e) {
33331                     if (this.length && (i = Ie.get(o), 1 === o.nodeType && !Ne.get(o, "hasDataAttrs"))) {
33332                         for (n = a.length; n--;) a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = he.camelCase(r.slice(5)), p(o, r, i[r]));
33333                         Ne.set(o, "hasDataAttrs", !0)
33334                     }
33335                     return i
33336                 }
33337                 return "object" == typeof e ? this.each(function() {
33338                     Ie.set(this, e)
33339                 }) : Oe(this, function(t) {
33340                     var n;
33341                     if (o && void 0 === t) {
33342                         if (void 0 !== (n = Ie.get(o, e))) return n;
33343                         if (void 0 !== (n = p(o, e))) return n
33344                     } else this.each(function() {
33345                         Ie.set(this, e, t)
33346                     })
33347                 }, null, t, arguments.length > 1, null, !0)
33348             },
33349             removeData: function(e) {
33350                 return this.each(function() {
33351                     Ie.remove(this, e)
33352                 })
33353             }
33354         }), he.extend({
33355             queue: function(e, t, n) {
33356                 var r;
33357                 if (e) return t = (t || "fx") + "queue", r = Ne.get(e, t), n && (!r || Array.isArray(n) ? r = Ne.access(e, t, he.makeArray(n)) : r.push(n)), r || []
33358             },
33359             dequeue: function(e, t) {
33360                 t = t || "fx";
33361                 var n = he.queue(e, t),
33362                     r = n.length,
33363                     i = n.shift(),
33364                     o = he._queueHooks(e, t);
33365                 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
33366                     he.dequeue(e, t)
33367                 }, o)), !r && o && o.empty.fire()
33368             },
33369             _queueHooks: function(e, t) {
33370                 var n = t + "queueHooks";
33371                 return Ne.get(e, n) || Ne.access(e, n, {
33372                     empty: he.Callbacks("once memory").add(function() {
33373                         Ne.remove(e, [t + "queue", n])
33374                     })
33375                 })
33376             }
33377         }), he.fn.extend({
33378             queue: function(e, t) {
33379                 var n = 2;
33380                 return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? he.queue(this[0], e) : void 0 === t ? this : this.each(function() {
33381                     var n = he.queue(this, e, t);
33382                     he._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && he.dequeue(this, e)
33383                 })
33384             },
33385             dequeue: function(e) {
33386                 return this.each(function() {
33387                     he.dequeue(this, e)
33388                 })
33389             },
33390             clearQueue: function(e) {
33391                 return this.queue(e || "fx", [])
33392             },
33393             promise: function(e, t) {
33394                 var n, r = 1,
33395                     i = he.Deferred(),
33396                     o = this,
33397                     a = this.length,
33398                     s = function() {
33399                         --r || i.resolveWith(o, [o])
33400                     };
33401                 for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;)(n = Ne.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
33402                 return s(), i.promise(t)
33403             }
33404         });
33405         var He = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
33406             je = new RegExp("^(?:([+-])=|)(" + He + ")([a-z%]*)$", "i"),
33407             Le = ["Top", "Right", "Bottom", "Left"],
33408             Fe = function(e, t) {
33409                 return "none" === (e = t || e).style.display || "" === e.style.display && he.contains(e.ownerDocument, e) && "none" === he.css(e, "display")
33410             },
33411             qe = function(e, t, n, r) {
33412                 var i, o, a = {};
33413                 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
33414                 i = n.apply(e, r || []);
33415                 for (o in t) e.style[o] = a[o];
33416                 return i
33417             },
33418             Ue = {};
33419         he.fn.extend({
33420             show: function() {
33421                 return v(this, !0)
33422             },
33423             hide: function() {
33424                 return v(this)
33425             },
33426             toggle: function(e) {
33427                 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
33428                     Fe(this) ? he(this).show() : he(this).hide()
33429                 })
33430             }
33431         });
33432         var Ve = /^(?:checkbox|radio)$/i,
33433             Be = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
33434             ze = /^$|\/(?:java|ecma)script/i,
33435             We = {
33436                 option: [1, "<select multiple='multiple'>", "</select>"],
33437                 thead: [1, "<table>", "</table>"],
33438                 col: [2, "<table><colgroup>", "</colgroup></table>"],
33439                 tr: [2, "<table><tbody>", "</tbody></table>"],
33440                 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
33441                 _default: [0, "", ""]
33442             };
33443         We.optgroup = We.option, We.tbody = We.tfoot = We.colgroup = We.caption = We.thead, We.th = We.td;
33444         var Ye = /<|&#?\w+;/;
33445         ! function() {
33446             var e = te.createDocumentFragment().appendChild(te.createElement("div")),
33447                 t = te.createElement("input");
33448             t.setAttribute("type", "radio"), t.setAttribute("checked", "checked"), t.setAttribute("name", "t"), e.appendChild(t), fe.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked, e.innerHTML = "<textarea>x</textarea>", fe.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
33449         }();
33450         var Ge = te.documentElement,
33451             Ke = /^key/,
33452             Ze = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
33453             Xe = /^([^.]*)(?:\.(.+)|)/;
33454         he.event = {
33455             global: {},
33456             add: function(e, t, n, r, i) {
33457                 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.get(e);
33458                 if (g)
33459                     for (n.handler && (n = (o = n).handler, i = o.selector), i && he.find.matchesSelector(Ge, i), n.guid || (n.guid = he.guid++), (c = g.events) || (c = g.events = {}), (a = g.handle) || (a = g.handle = function(t) {
33460                             return void 0 !== he && he.event.triggered !== t.type ? he.event.dispatch.apply(e, arguments) : void 0
33461                         }), l = (t = (t || "").match(Me) || [""]).length; l--;) h = m = (s = Xe.exec(t[l]) || [])[1], p = (s[2] || "").split(".").sort(), h && (d = he.event.special[h] || {}, h = (i ? d.delegateType : d.bindType) || h, d = he.event.special[h] || {}, u = he.extend({
33462                         type: h,
33463                         origType: m,
33464                         data: r,
33465                         handler: n,
33466                         guid: n.guid,
33467                         selector: i,
33468                         needsContext: i && he.expr.match.needsContext.test(i),
33469                         namespace: p.join(".")
33470                     }, o), (f = c[h]) || ((f = c[h] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(e, r, p, a) || e.addEventListener && e.addEventListener(h, a)), d.add && (d.add.call(e, u), u.handler.guid || (u.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, u) : f.push(u), he.event.global[h] = !0)
33471             },
33472             remove: function(e, t, n, r, i) {
33473                 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.hasData(e) && Ne.get(e);
33474                 if (g && (c = g.events)) {
33475                     for (l = (t = (t || "").match(Me) || [""]).length; l--;)
33476                         if (s = Xe.exec(t[l]) || [], h = m = s[1], p = (s[2] || "").split(".").sort(), h) {
33477                             for (d = he.event.special[h] || {}, f = c[h = (r ? d.delegateType : d.bindType) || h] || [], s = s[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = f.length; o--;) u = f[o], !i && m !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || r && r !== u.selector && ("**" !== r || !u.selector) || (f.splice(o, 1), u.selector && f.delegateCount--, d.remove && d.remove.call(e, u));
33478                             a && !f.length && (d.teardown && !1 !== d.teardown.call(e, p, g.handle) || he.removeEvent(e, h, g.handle), delete c[h])
33479                         } else
33480                             for (h in c) he.event.remove(e, h + t[l], n, r, !0);
33481                     he.isEmptyObject(c) && Ne.remove(e, "handle events")
33482                 }
33483             },
33484             dispatch: function(e) {
33485                 var t, n, r, i, o, a, s = he.event.fix(e),
33486                     c = new Array(arguments.length),
33487                     l = (Ne.get(this, "events") || {})[s.type] || [],
33488                     u = he.event.special[s.type] || {};
33489                 for (c[0] = s, t = 1; t < arguments.length; t++) c[t] = arguments[t];
33490                 if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {
33491                     for (a = he.event.handlers.call(this, s, l), t = 0;
33492                         (i = a[t++]) && !s.isPropagationStopped();)
33493                         for (s.currentTarget = i.elem, n = 0;
33494                             (o = i.handlers[n++]) && !s.isImmediatePropagationStopped();) s.rnamespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o, s.data = o.data, void 0 !== (r = ((he.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, c)) && !1 === (s.result = r) && (s.preventDefault(), s.stopPropagation()));
33495                     return u.postDispatch && u.postDispatch.call(this, s), s.result
33496                 }
33497             },
33498             handlers: function(e, t) {
33499                 var n, r, i, o, a, s = [],
33500                     c = t.delegateCount,
33501                     l = e.target;
33502                 if (c && l.nodeType && !("click" === e.type && e.button >= 1))
33503                     for (; l !== this; l = l.parentNode || this)
33504                         if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
33505                             for (o = [], a = {}, n = 0; n < c; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? he(i, this).index(l) > -1 : he.find(i, this, null, [l]).length), a[i] && o.push(r);
33506                             o.length && s.push({
33507                                 elem: l,
33508                                 handlers: o
33509                             })
33510                         }
33511                 return l = this, c < t.length && s.push({
33512                     elem: l,
33513                     handlers: t.slice(c)
33514                 }), s
33515             },
33516             addProp: function(e, t) {
33517                 Object.defineProperty(he.Event.prototype, e, {
33518                     enumerable: !0,
33519                     configurable: !0,
33520                     get: he.isFunction(t) ? function() {
33521                         if (this.originalEvent) return t(this.originalEvent)
33522                     } : function() {
33523                         if (this.originalEvent) return this.originalEvent[e]
33524                     },
33525                     set: function(t) {
33526                         Object.defineProperty(this, e, {
33527                             enumerable: !0,
33528                             configurable: !0,
33529                             writable: !0,
33530                             value: t
33531                         })
33532                     }
33533                 })
33534             },
33535             fix: function(e) {
33536                 return e[he.expando] ? e : new he.Event(e)
33537             },
33538             special: {
33539                 load: {
33540                     noBubble: !0
33541                 },
33542                 focus: {
33543                     trigger: function() {
33544                         if (this !== E() && this.focus) return this.focus(), !1
33545                     },
33546                     delegateType: "focusin"
33547                 },
33548                 blur: {
33549                     trigger: function() {
33550                         if (this === E() && this.blur) return this.blur(), !1
33551                     },
33552                     delegateType: "focusout"
33553                 },
33554                 click: {
33555                     trigger: function() {
33556                         if ("checkbox" === this.type && this.click && i(this, "input")) return this.click(), !1
33557                     },
33558                     _default: function(e) {
33559                         return i(e.target, "a")
33560                     }
33561                 },
33562                 beforeunload: {
33563                     postDispatch: function(e) {
33564                         void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
33565                     }
33566                 }
33567             }
33568         }, he.removeEvent = function(e, t, n) {
33569             e.removeEventListener && e.removeEventListener(t, n)
33570         }, he.Event = function(e, t) {
33571             if (!(this instanceof he.Event)) return new he.Event(e, t);
33572             e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? _ : w, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && he.extend(this, t), this.timeStamp = e && e.timeStamp || he.now(), this[he.expando] = !0
33573         }, he.Event.prototype = {
33574             constructor: he.Event,
33575             isDefaultPrevented: w,
33576             isPropagationStopped: w,
33577             isImmediatePropagationStopped: w,
33578             isSimulated: !1,
33579             preventDefault: function() {
33580                 var e = this.originalEvent;
33581                 this.isDefaultPrevented = _, e && !this.isSimulated && e.preventDefault()
33582             },
33583             stopPropagation: function() {
33584                 var e = this.originalEvent;
33585                 this.isPropagationStopped = _, e && !this.isSimulated && e.stopPropagation()
33586             },
33587             stopImmediatePropagation: function() {
33588                 var e = this.originalEvent;
33589                 this.isImmediatePropagationStopped = _, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
33590             }
33591         }, he.each({
33592             altKey: !0,
33593             bubbles: !0,
33594             cancelable: !0,
33595             changedTouches: !0,
33596             ctrlKey: !0,
33597             detail: !0,
33598             eventPhase: !0,
33599             metaKey: !0,
33600             pageX: !0,
33601             pageY: !0,
33602             shiftKey: !0,
33603             view: !0,
33604             char: !0,
33605             charCode: !0,
33606             key: !0,
33607             keyCode: !0,
33608             button: !0,
33609             buttons: !0,
33610             clientX: !0,
33611             clientY: !0,
33612             offsetX: !0,
33613             offsetY: !0,
33614             pointerId: !0,
33615             pointerType: !0,
33616             screenX: !0,
33617             screenY: !0,
33618             targetTouches: !0,
33619             toElement: !0,
33620             touches: !0,
33621             which: function(e) {
33622                 var t = e.button;
33623                 return null == e.which && Ke.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Ze.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
33624             }
33625         }, he.event.addProp), he.each({
33626             mouseenter: "mouseover",
33627             mouseleave: "mouseout",
33628             pointerenter: "pointerover",
33629             pointerleave: "pointerout"
33630         }, function(e, t) {
33631             he.event.special[e] = {
33632                 delegateType: t,
33633                 bindType: t,
33634                 handle: function(e) {
33635                     var n, r = this,
33636                         i = e.relatedTarget,
33637                         o = e.handleObj;
33638                     return i && (i === r || he.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
33639                 }
33640             }
33641         }), he.fn.extend({
33642             on: function(e, t, n, r) {
33643                 return C(this, e, t, n, r)
33644             },
33645             one: function(e, t, n, r) {
33646                 return C(this, e, t, n, r, 1)
33647             },
33648             off: function(e, t, n) {
33649                 var r, i;
33650                 if (e && e.preventDefault && e.handleObj) return r = e.handleObj, he(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
33651                 if ("object" == typeof e) {
33652                     for (i in e) this.off(i, t, e[i]);
33653                     return this
33654                 }
33655                 return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = w), this.each(function() {
33656                     he.event.remove(this, e, n, t)
33657                 })
33658             }
33659         });
33660         var Qe = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
33661             Je = /<script|<style|<link/i,
33662             et = /checked\s*(?:[^=]|=\s*.checked.)/i,
33663             tt = /^true\/(.*)/,
33664             nt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
33665         he.extend({
33666             htmlPrefilter: function(e) {
33667                 return e.replace(Qe, "<$1></$2>")
33668             },
33669             clone: function(e, t, n) {
33670                 var r, i, o, a, s = e.cloneNode(!0),
33671                     c = he.contains(e.ownerDocument, e);
33672                 if (!(fe.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || he.isXMLDoc(e)))
33673                     for (a = b(s), r = 0, i = (o = b(e)).length; r < i; r++) S(o[r], a[r]);
33674                 if (t)
33675                     if (n)
33676                         for (o = o || b(e), a = a || b(s), r = 0, i = o.length; r < i; r++) M(o[r], a[r]);
33677                     else M(e, s);
33678                 return (a = b(s, "script")).length > 0 && y(a, !c && b(e, "script")), s
33679             },
33680             cleanData: function(e) {
33681                 for (var t, n, r, i = he.event.special, o = 0; void 0 !== (n = e[o]); o++)
33682                     if (De(n)) {
33683                         if (t = n[Ne.expando]) {
33684                             if (t.events)
33685                                 for (r in t.events) i[r] ? he.event.remove(n, r) : he.removeEvent(n, r, t.handle);
33686                             n[Ne.expando] = void 0
33687                         }
33688                         n[Ie.expando] && (n[Ie.expando] = void 0)
33689                     }
33690             }
33691         }), he.fn.extend({
33692             detach: function(e) {
33693                 return O(this, e, !0)
33694             },
33695             remove: function(e) {
33696                 return O(this, e)
33697             },
33698             text: function(e) {
33699                 return Oe(this, function(e) {
33700                     return void 0 === e ? he.text(this) : this.empty().each(function() {
33701                         1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
33702                     })
33703                 }, null, e, arguments.length)
33704             },
33705             append: function() {
33706                 return A(this, arguments, function(e) {
33707                     1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || x(this, e).appendChild(e)
33708                 })
33709             },
33710             prepend: function() {
33711                 return A(this, arguments, function(e) {
33712                     if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
33713                         var t = x(this, e);
33714                         t.insertBefore(e, t.firstChild)
33715                     }
33716                 })
33717             },
33718             before: function() {
33719                 return A(this, arguments, function(e) {
33720                     this.parentNode && this.parentNode.insertBefore(e, this)
33721                 })
33722             },
33723             after: function() {
33724                 return A(this, arguments, function(e) {
33725                     this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
33726                 })
33727             },
33728             empty: function() {
33729                 for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (he.cleanData(b(e, !1)), e.textContent = "");
33730                 return this
33731             },
33732             clone: function(e, t) {
33733                 return e = null != e && e, t = null == t ? e : t, this.map(function() {
33734                     return he.clone(this, e, t)
33735                 })
33736             },
33737             html: function(e) {
33738                 return Oe(this, function(e) {
33739                     var t = this[0] || {},
33740                         n = 0,
33741                         r = this.length;
33742                     if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
33743                     if ("string" == typeof e && !Je.test(e) && !We[(Be.exec(e) || ["", ""])[1].toLowerCase()]) {
33744                         e = he.htmlPrefilter(e);
33745                         try {
33746                             for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (he.cleanData(b(t, !1)), t.innerHTML = e);
33747                             t = 0
33748                         } catch (e) {}
33749                     }
33750                     t && this.empty().append(e)
33751                 }, null, e, arguments.length)
33752             },
33753             replaceWith: function() {
33754                 var e = [];
33755                 return A(this, arguments, function(t) {
33756                     var n = this.parentNode;
33757                     he.inArray(this, e) < 0 && (he.cleanData(b(this)), n && n.replaceChild(t, this))
33758                 }, e)
33759             }
33760         }), he.each({
33761             appendTo: "append",
33762             prependTo: "prepend",
33763             insertBefore: "before",
33764             insertAfter: "after",
33765             replaceAll: "replaceWith"
33766         }, function(e, t) {
33767             he.fn[e] = function(e) {
33768                 for (var n, r = [], i = he(e), o = i.length - 1, a = 0; a <= o; a++) n = a === o ? this : this.clone(!0), he(i[a])[t](n), oe.apply(r, n.get());
33769                 return this.pushStack(r)
33770             }
33771         });
33772         var rt = /^margin/,
33773             it = new RegExp("^(" + He + ")(?!px)[a-z%]+$", "i"),
33774             ot = function(t) {
33775                 var n = t.ownerDocument.defaultView;
33776                 return n && n.opener || (n = e), n.getComputedStyle(t)
33777             };
33778         ! function() {
33779             function t() {
33780                 if (s) {
33781                     s.style.cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%", s.innerHTML = "", Ge.appendChild(a);
33782                     var t = e.getComputedStyle(s);
33783                     n = "1%" !== t.top, o = "2px" === t.marginLeft, r = "4px" === t.width, s.style.marginRight = "50%", i = "4px" === t.marginRight, Ge.removeChild(a), s = null
33784                 }
33785             }
33786             var n, r, i, o, a = te.createElement("div"),
33787                 s = te.createElement("div");
33788             s.style && (s.style.backgroundClip = "content-box", s.cloneNode(!0).style.backgroundClip = "", fe.clearCloneStyle = "content-box" === s.style.backgroundClip, a.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", a.appendChild(s), he.extend(fe, {
33789                 pixelPosition: function() {
33790                     return t(), n
33791                 },
33792                 boxSizingReliable: function() {
33793                     return t(), r
33794                 },
33795                 pixelMarginRight: function() {
33796                     return t(), i
33797                 },
33798                 reliableMarginLeft: function() {
33799                     return t(), o
33800                 }
33801             }))
33802         }();
33803         var at = /^(none|table(?!-c[ea]).+)/,
33804             st = /^--/,
33805             ct = {
33806                 position: "absolute",
33807                 visibility: "hidden",
33808                 display: "block"
33809             },
33810             lt = {
33811                 letterSpacing: "0",
33812                 fontWeight: "400"
33813             },
33814             ut = ["Webkit", "Moz", "ms"],
33815             dt = te.createElement("div").style;
33816         he.extend({
33817             cssHooks: {
33818                 opacity: {
33819                     get: function(e, t) {
33820                         if (t) {
33821                             var n = D(e, "opacity");
33822                             return "" === n ? "1" : n
33823                         }
33824                     }
33825                 }
33826             },
33827             cssNumber: {
33828                 animationIterationCount: !0,
33829                 columnCount: !0,
33830                 fillOpacity: !0,
33831                 flexGrow: !0,
33832                 flexShrink: !0,
33833                 fontWeight: !0,
33834                 lineHeight: !0,
33835                 opacity: !0,
33836                 order: !0,
33837                 orphans: !0,
33838                 widows: !0,
33839                 zIndex: !0,
33840                 zoom: !0
33841             },
33842             cssProps: {
33843                 float: "cssFloat"
33844             },
33845             style: function(e, t, n, r) {
33846                 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
33847                     var i, o, a, s = he.camelCase(t),
33848                         c = st.test(t),
33849                         l = e.style;
33850                     if (c || (t = R(s)), a = he.cssHooks[t] || he.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
33851                     "string" == (o = typeof n) && (i = je.exec(n)) && i[1] && (n = m(e, t, i), o = "number"), null != n && n === n && ("number" === o && (n += i && i[3] || (he.cssNumber[s] ? "" : "px")), fe.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (c ? l.setProperty(t, n) : l[t] = n))
33852                 }
33853             },
33854             css: function(e, t, n, r) {
33855                 var i, o, a, s = he.camelCase(t);
33856                 return st.test(t) || (t = R(s)), (a = he.cssHooks[t] || he.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = D(e, t, r)), "normal" === i && t in lt && (i = lt[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
33857             }
33858         }), he.each(["height", "width"], function(e, t) {
33859             he.cssHooks[t] = {
33860                 get: function(e, n, r) {
33861                     if (n) return !at.test(he.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? j(e, t, r) : qe(e, ct, function() {
33862                         return j(e, t, r)
33863                     })
33864                 },
33865                 set: function(e, n, r) {
33866                     var i, o = r && ot(e),
33867                         a = r && H(e, t, r, "border-box" === he.css(e, "boxSizing", !1, o), o);
33868                     return a && (i = je.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = he.css(e, t)), P(0, n, a)
33869                 }
33870             }
33871         }), he.cssHooks.marginLeft = N(fe.reliableMarginLeft, function(e, t) {
33872             if (t) return (parseFloat(D(e, "marginLeft")) || e.getBoundingClientRect().left - qe(e, {
33873                 marginLeft: 0
33874             }, function() {
33875                 return e.getBoundingClientRect().left
33876             })) + "px"
33877         }), he.each({
33878             margin: "",
33879             padding: "",
33880             border: "Width"
33881         }, function(e, t) {
33882             he.cssHooks[e + t] = {
33883                 expand: function(n) {
33884                     for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++) i[e + Le[r] + t] = o[r] || o[r - 2] || o[0];
33885                     return i
33886                 }
33887             }, rt.test(e) || (he.cssHooks[e + t].set = P)
33888         }), he.fn.extend({
33889             css: function(e, t) {
33890                 return Oe(this, function(e, t, n) {
33891                     var r, i, o = {},
33892                         a = 0;
33893                     if (Array.isArray(t)) {
33894                         for (r = ot(e), i = t.length; a < i; a++) o[t[a]] = he.css(e, t[a], !1, r);
33895                         return o
33896                     }
33897                     return void 0 !== n ? he.style(e, t, n) : he.css(e, t)
33898                 }, e, t, arguments.length > 1)
33899             }
33900         }), he.Tween = L, L.prototype = {
33901             constructor: L,
33902             init: function(e, t, n, r, i, o) {
33903                 this.elem = e, this.prop = n, this.easing = i || he.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (he.cssNumber[n] ? "" : "px")
33904             },
33905             cur: function() {
33906                 var e = L.propHooks[this.prop];
33907                 return e && e.get ? e.get(this) : L.propHooks._default.get(this)
33908             },
33909             run: function(e) {
33910                 var t, n = L.propHooks[this.prop];
33911                 return this.options.duration ? this.pos = t = he.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : L.propHooks._default.set(this), this
33912             }
33913         }, L.prototype.init.prototype = L.prototype, L.propHooks = {
33914             _default: {
33915                 get: function(e) {
33916                     var t;
33917                     return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = he.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
33918                 },
33919                 set: function(e) {
33920                     he.fx.step[e.prop] ? he.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[he.cssProps[e.prop]] && !he.cssHooks[e.prop] ? e.elem[e.prop] = e.now : he.style(e.elem, e.prop, e.now + e.unit)
33921                 }
33922             }
33923         }, L.propHooks.scrollTop = L.propHooks.scrollLeft = {
33924             set: function(e) {
33925                 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
33926             }
33927         }, he.easing = {
33928             linear: function(e) {
33929                 return e
33930             },
33931             swing: function(e) {
33932                 return .5 - Math.cos(e * Math.PI) / 2
33933             },
33934             _default: "swing"
33935         }, he.fx = L.prototype.init, he.fx.step = {};
33936         var ft, ht, pt = /^(?:toggle|show|hide)$/,
33937             mt = /queueHooks$/;
33938         he.Animation = he.extend(z, {
33939                 tweeners: {
33940                     "*": [function(e, t) {
33941                         var n = this.createTween(e, t);
33942                         return m(n.elem, e, je.exec(t), n), n
33943                     }]
33944                 },
33945                 tweener: function(e, t) {
33946                     he.isFunction(e) ? (t = e, e = ["*"]) : e = e.match(Me);
33947                     for (var n, r = 0, i = e.length; r < i; r++) n = e[r], z.tweeners[n] = z.tweeners[n] || [], z.tweeners[n].unshift(t)
33948                 },
33949                 prefilters: [function(e, t, n) {
33950                     var r, i, o, a, s, c, l, u, d = "width" in t || "height" in t,
33951                         f = this,
33952                         h = {},
33953                         p = e.style,
33954                         m = e.nodeType && Fe(e),
33955                         g = Ne.get(e, "fxshow");
33956                     n.queue || (null == (a = he._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
33957                         a.unqueued || s()
33958                     }), a.unqueued++, f.always(function() {
33959                         f.always(function() {
33960                             a.unqueued--, he.queue(e, "fx").length || a.empty.fire()
33961                         })
33962                     }));
33963                     for (r in t)
33964                         if (i = t[r], pt.test(i)) {
33965                             if (delete t[r], o = o || "toggle" === i, i === (m ? "hide" : "show")) {
33966                                 if ("show" !== i || !g || void 0 === g[r]) continue;
33967                                 m = !0
33968                             }
33969                             h[r] = g && g[r] || he.style(e, r)
33970                         }
33971                     if ((c = !he.isEmptyObject(t)) || !he.isEmptyObject(h)) {
33972                         d && 1 === e.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY], null == (l = g && g.display) && (l = Ne.get(e, "display")), "none" === (u = he.css(e, "display")) && (l ? u = l : (v([e], !0), l = e.style.display || l, u = he.css(e, "display"), v([e]))), ("inline" === u || "inline-block" === u && null != l) && "none" === he.css(e, "float") && (c || (f.done(function() {
33973                             p.display = l
33974                         }), null == l && (u = p.display, l = "none" === u ? "" : u)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", f.always(function() {
33975                             p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
33976                         })), c = !1;
33977                         for (r in h) c || (g ? "hidden" in g && (m = g.hidden) : g = Ne.access(e, "fxshow", {
33978                             display: l
33979                         }), o && (g.hidden = !m), m && v([e], !0), f.done(function() {
33980                             m || v([e]), Ne.remove(e, "fxshow");
33981                             for (r in h) he.style(e, r, h[r])
33982                         })), c = V(m ? g[r] : 0, r, f), r in g || (g[r] = c.start, m && (c.end = c.start, c.start = 0))
33983                     }
33984                 }],
33985                 prefilter: function(e, t) {
33986                     t ? z.prefilters.unshift(e) : z.prefilters.push(e)
33987                 }
33988             }), he.speed = function(e, t, n) {
33989                 var r = e && "object" == typeof e ? he.extend({}, e) : {
33990                     complete: n || !n && t || he.isFunction(e) && e,
33991                     duration: e,
33992                     easing: n && t || t && !he.isFunction(t) && t
33993                 };
33994                 return he.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in he.fx.speeds ? r.duration = he.fx.speeds[r.duration] : r.duration = he.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
33995                     he.isFunction(r.old) && r.old.call(this), r.queue && he.dequeue(this, r.queue)
33996                 }, r
33997             }, he.fn.extend({
33998                 fadeTo: function(e, t, n, r) {
33999                     return this.filter(Fe).css("opacity", 0).show().end().animate({
34000                         opacity: t
34001                     }, e, n, r)
34002                 },
34003                 animate: function(e, t, n, r) {
34004                     var i = he.isEmptyObject(e),
34005                         o = he.speed(t, n, r),
34006                         a = function() {
34007                             var t = z(this, he.extend({}, e), o);
34008                             (i || Ne.get(this, "finish")) && t.stop(!0)
34009                         };
34010                     return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
34011                 },
34012                 stop: function(e, t, n) {
34013                     var r = function(e) {
34014                         var t = e.stop;
34015                         delete e.stop, t(n)
34016                     };
34017                     return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each(function() {
34018                         var t = !0,
34019                             i = null != e && e + "queueHooks",
34020                             o = he.timers,
34021                             a = Ne.get(this);
34022                         if (i) a[i] && a[i].stop && r(a[i]);
34023                         else
34024                             for (i in a) a[i] && a[i].stop && mt.test(i) && r(a[i]);
34025                         for (i = o.length; i--;) o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1));
34026                         !t && n || he.dequeue(this, e)
34027                     })
34028                 },
34029                 finish: function(e) {
34030                     return !1 !== e && (e = e || "fx"), this.each(function() {
34031                         var t, n = Ne.get(this),
34032                             r = n[e + "queue"],
34033                             i = n[e + "queueHooks"],
34034                             o = he.timers,
34035                             a = r ? r.length : 0;
34036                         for (n.finish = !0, he.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
34037                         for (t = 0; t < a; t++) r[t] && r[t].finish && r[t].finish.call(this);
34038                         delete n.finish
34039                     })
34040                 }
34041             }), he.each(["toggle", "show", "hide"], function(e, t) {
34042                 var n = he.fn[t];
34043                 he.fn[t] = function(e, r, i) {
34044                     return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(U(t, !0), e, r, i)
34045                 }
34046             }), he.each({
34047                 slideDown: U("show"),
34048                 slideUp: U("hide"),
34049                 slideToggle: U("toggle"),
34050                 fadeIn: {
34051                     opacity: "show"
34052                 },
34053                 fadeOut: {
34054                     opacity: "hide"
34055                 },
34056                 fadeToggle: {
34057                     opacity: "toggle"
34058                 }
34059             }, function(e, t) {
34060                 he.fn[e] = function(e, n, r) {
34061                     return this.animate(t, e, n, r)
34062                 }
34063             }), he.timers = [], he.fx.tick = function() {
34064                 var e, t = 0,
34065                     n = he.timers;
34066                 for (ft = he.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
34067                 n.length || he.fx.stop(), ft = void 0
34068             }, he.fx.timer = function(e) {
34069                 he.timers.push(e), he.fx.start()
34070             }, he.fx.interval = 13, he.fx.start = function() {
34071                 ht || (ht = !0, F())
34072             }, he.fx.stop = function() {
34073                 ht = null
34074             }, he.fx.speeds = {
34075                 slow: 600,
34076                 fast: 200,
34077                 _default: 400
34078             }, he.fn.delay = function(t, n) {
34079                 return t = he.fx ? he.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function(n, r) {
34080                     var i = e.setTimeout(n, t);
34081                     r.stop = function() {
34082                         e.clearTimeout(i)
34083                     }
34084                 })
34085             },
34086             function() {
34087                 var e = te.createElement("input"),
34088                     t = te.createElement("select").appendChild(te.createElement("option"));
34089                 e.type = "checkbox", fe.checkOn = "" !== e.value, fe.optSelected = t.selected, (e = te.createElement("input")).value = "t", e.type = "radio", fe.radioValue = "t" === e.value
34090             }();
34091         var gt, vt = he.expr.attrHandle;
34092         he.fn.extend({
34093             attr: function(e, t) {
34094                 return Oe(this, he.attr, e, t, arguments.length > 1)
34095             },
34096             removeAttr: function(e) {
34097                 return this.each(function() {
34098                     he.removeAttr(this, e)
34099                 })
34100             }
34101         }), he.extend({
34102             attr: function(e, t, n) {
34103                 var r, i, o = e.nodeType;
34104                 if (3 !== o && 8 !== o && 2 !== o) return void 0 === e.getAttribute ? he.prop(e, t, n) : (1 === o && he.isXMLDoc(e) || (i = he.attrHooks[t.toLowerCase()] || (he.expr.match.bool.test(t) ? gt : void 0)), void 0 !== n ? null === n ? void he.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = he.find.attr(e, t)) ? void 0 : r)
34105             },
34106             attrHooks: {
34107                 type: {
34108                     set: function(e, t) {
34109                         if (!fe.radioValue && "radio" === t && i(e, "input")) {
34110                             var n = e.value;
34111                             return e.setAttribute("type", t), n && (e.value = n), t
34112                         }
34113                     }
34114                 }
34115             },
34116             removeAttr: function(e, t) {
34117                 var n, r = 0,
34118                     i = t && t.match(Me);
34119                 if (i && 1 === e.nodeType)
34120                     for (; n = i[r++];) e.removeAttribute(n)
34121             }
34122         }), gt = {
34123             set: function(e, t, n) {
34124                 return !1 === t ? he.removeAttr(e, n) : e.setAttribute(n, n), n
34125             }
34126         }, he.each(he.expr.match.bool.source.match(/\w+/g), function(e, t) {
34127             var n = vt[t] || he.find.attr;
34128             vt[t] = function(e, t, r) {
34129                 var i, o, a = t.toLowerCase();
34130                 return r || (o = vt[a], vt[a] = i, i = null != n(e, t, r) ? a : null, vt[a] = o), i
34131             }
34132         });
34133         var bt = /^(?:input|select|textarea|button)$/i,
34134             yt = /^(?:a|area)$/i;
34135         he.fn.extend({
34136             prop: function(e, t) {
34137                 return Oe(this, he.prop, e, t, arguments.length > 1)
34138             },
34139             removeProp: function(e) {
34140                 return this.each(function() {
34141                     delete this[he.propFix[e] || e]
34142                 })
34143             }
34144         }), he.extend({
34145             prop: function(e, t, n) {
34146                 var r, i, o = e.nodeType;
34147                 if (3 !== o && 8 !== o && 2 !== o) return 1 === o && he.isXMLDoc(e) || (t = he.propFix[t] || t, i = he.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]
34148             },
34149             propHooks: {
34150                 tabIndex: {
34151                     get: function(e) {
34152                         var t = he.find.attr(e, "tabindex");
34153                         return t ? parseInt(t, 10) : bt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
34154                     }
34155                 }
34156             },
34157             propFix: {
34158                 for: "htmlFor",
34159                 class: "className"
34160             }
34161         }), fe.optSelected || (he.propHooks.selected = {
34162             get: function(e) {
34163                 var t = e.parentNode;
34164                 return t && t.parentNode && t.parentNode.selectedIndex, null
34165             },
34166             set: function(e) {
34167                 var t = e.parentNode;
34168                 t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
34169             }
34170         }), he.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
34171             he.propFix[this.toLowerCase()] = this
34172         }), he.fn.extend({
34173             addClass: function(e) {
34174                 var t, n, r, i, o, a, s, c = 0;
34175                 if (he.isFunction(e)) return this.each(function(t) {
34176                     he(this).addClass(e.call(this, t, Y(this)))
34177                 });
34178                 if ("string" == typeof e && e)
34179                     for (t = e.match(Me) || []; n = this[c++];)
34180                         if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
34181                             for (a = 0; o = t[a++];) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
34182                             i !== (s = W(r)) && n.setAttribute("class", s)
34183                         }
34184                 return this
34185             },
34186             removeClass: function(e) {
34187                 var t, n, r, i, o, a, s, c = 0;
34188                 if (he.isFunction(e)) return this.each(function(t) {
34189                     he(this).removeClass(e.call(this, t, Y(this)))
34190                 });
34191                 if (!arguments.length) return this.attr("class", "");
34192                 if ("string" == typeof e && e)
34193                     for (t = e.match(Me) || []; n = this[c++];)
34194                         if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
34195                             for (a = 0; o = t[a++];)
34196                                 for (; r.indexOf(" " + o + " ") > -1;) r = r.replace(" " + o + " ", " ");
34197                             i !== (s = W(r)) && n.setAttribute("class", s)
34198                         }
34199                 return this
34200             },
34201             toggleClass: function(e, t) {
34202                 var n = typeof e;
34203                 return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : he.isFunction(e) ? this.each(function(n) {
34204                     he(this).toggleClass(e.call(this, n, Y(this), t), t)
34205                 }) : this.each(function() {
34206                     var t, r, i, o;
34207                     if ("string" === n)
34208                         for (r = 0, i = he(this), o = e.match(Me) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
34209                     else void 0 !== e && "boolean" !== n || ((t = Y(this)) && Ne.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : Ne.get(this, "__className__") || ""))
34210                 })
34211             },
34212             hasClass: function(e) {
34213                 var t, n, r = 0;
34214                 for (t = " " + e + " "; n = this[r++];)
34215                     if (1 === n.nodeType && (" " + W(Y(n)) + " ").indexOf(t) > -1) return !0;
34216                 return !1
34217             }
34218         });
34219         var $t = /\r/g;
34220         he.fn.extend({
34221             val: function(e) {
34222                 var t, n, r, i = this[0]; {
34223                     if (arguments.length) return r = he.isFunction(e), this.each(function(n) {
34224                         var i;
34225                         1 === this.nodeType && (null == (i = r ? e.call(this, n, he(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = he.map(i, function(e) {
34226                             return null == e ? "" : e + ""
34227                         })), (t = he.valHooks[this.type] || he.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
34228                     });
34229                     if (i) return (t = he.valHooks[i.type] || he.valHooks[i.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof(n = i.value) ? n.replace($t, "") : null == n ? "" : n
34230                 }
34231             }
34232         }), he.extend({
34233             valHooks: {
34234                 option: {
34235                     get: function(e) {
34236                         var t = he.find.attr(e, "value");
34237                         return null != t ? t : W(he.text(e))
34238                     }
34239                 },
34240                 select: {
34241                     get: function(e) {
34242                         var t, n, r, o = e.options,
34243                             a = e.selectedIndex,
34244                             s = "select-one" === e.type,
34245                             c = s ? null : [],
34246                             l = s ? a + 1 : o.length;
34247                         for (r = a < 0 ? l : s ? a : 0; r < l; r++)
34248                             if (((n = o[r]).selected || r === a) && !n.disabled && (!n.parentNode.disabled || !i(n.parentNode, "optgroup"))) {
34249                                 if (t = he(n).val(), s) return t;
34250                                 c.push(t)
34251                             }
34252                         return c
34253                     },
34254                     set: function(e, t) {
34255                         for (var n, r, i = e.options, o = he.makeArray(t), a = i.length; a--;)((r = i[a]).selected = he.inArray(he.valHooks.option.get(r), o) > -1) && (n = !0);
34256                         return n || (e.selectedIndex = -1), o
34257                     }
34258                 }
34259             }
34260         }), he.each(["radio", "checkbox"], function() {
34261             he.valHooks[this] = {
34262                 set: function(e, t) {
34263                     if (Array.isArray(t)) return e.checked = he.inArray(he(e).val(), t) > -1
34264                 }
34265             }, fe.checkOn || (he.valHooks[this].get = function(e) {
34266                 return null === e.getAttribute("value") ? "on" : e.value
34267             })
34268         });
34269         var _t = /^(?:focusinfocus|focusoutblur)$/;
34270         he.extend(he.event, {
34271             trigger: function(t, n, r, i) {
34272                 var o, a, s, c, l, u, d, f = [r || te],
34273                     h = le.call(t, "type") ? t.type : t,
34274                     p = le.call(t, "namespace") ? t.namespace.split(".") : [];
34275                 if (a = s = r = r || te, 3 !== r.nodeType && 8 !== r.nodeType && !_t.test(h + he.event.triggered) && (h.indexOf(".") > -1 && (h = (p = h.split(".")).shift(), p.sort()), l = h.indexOf(":") < 0 && "on" + h, t = t[he.expando] ? t : new he.Event(h, "object" == typeof t && t), t.isTrigger = i ? 2 : 3, t.namespace = p.join("."), t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = r), n = null == n ? [t] : he.makeArray(n, [t]), d = he.event.special[h] || {}, i || !d.trigger || !1 !== d.trigger.apply(r, n))) {
34276                     if (!i && !d.noBubble && !he.isWindow(r)) {
34277                         for (c = d.delegateType || h, _t.test(c + h) || (a = a.parentNode); a; a = a.parentNode) f.push(a), s = a;
34278                         s === (r.ownerDocument || te) && f.push(s.defaultView || s.parentWindow || e)
34279                     }
34280                     for (o = 0;
34281                         (a = f[o++]) && !t.isPropagationStopped();) t.type = o > 1 ? c : d.bindType || h, (u = (Ne.get(a, "events") || {})[t.type] && Ne.get(a, "handle")) && u.apply(a, n), (u = l && a[l]) && u.apply && De(a) && (t.result = u.apply(a, n), !1 === t.result && t.preventDefault());
34282                     return t.type = h, i || t.isDefaultPrevented() || d._default && !1 !== d._default.apply(f.pop(), n) || !De(r) || l && he.isFunction(r[h]) && !he.isWindow(r) && ((s = r[l]) && (r[l] = null), he.event.triggered = h, r[h](), he.event.triggered = void 0, s && (r[l] = s)), t.result
34283                 }
34284             },
34285             simulate: function(e, t, n) {
34286                 var r = he.extend(new he.Event, n, {
34287                     type: e,
34288                     isSimulated: !0
34289                 });
34290                 he.event.trigger(r, null, t)
34291             }
34292         }), he.fn.extend({
34293             trigger: function(e, t) {
34294                 return this.each(function() {
34295                     he.event.trigger(e, t, this)
34296                 })
34297             },
34298             triggerHandler: function(e, t) {
34299                 var n = this[0];
34300                 if (n) return he.event.trigger(e, t, n, !0)
34301             }
34302         }), he.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, t) {
34303             he.fn[t] = function(e, n) {
34304                 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
34305             }
34306         }), he.fn.extend({
34307             hover: function(e, t) {
34308                 return this.mouseenter(e).mouseleave(t || e)
34309             }
34310         }), fe.focusin = "onfocusin" in e, fe.focusin || he.each({
34311             focus: "focusin",
34312             blur: "focusout"
34313         }, function(e, t) {
34314             var n = function(e) {
34315                 he.event.simulate(t, e.target, he.event.fix(e))
34316             };
34317             he.event.special[t] = {
34318                 setup: function() {
34319                     var r = this.ownerDocument || this,
34320                         i = Ne.access(r, t);
34321                     i || r.addEventListener(e, n, !0), Ne.access(r, t, (i || 0) + 1)
34322                 },
34323                 teardown: function() {
34324                     var r = this.ownerDocument || this,
34325                         i = Ne.access(r, t) - 1;
34326                     i ? Ne.access(r, t, i) : (r.removeEventListener(e, n, !0), Ne.remove(r, t))
34327                 }
34328             }
34329         });
34330         var wt = e.location,
34331             Et = he.now(),
34332             Ct = /\?/;
34333         he.parseXML = function(t) {
34334             var n;
34335             if (!t || "string" != typeof t) return null;
34336             try {
34337                 n = (new e.DOMParser).parseFromString(t, "text/xml")
34338             } catch (e) {
34339                 n = void 0
34340             }
34341             return n && !n.getElementsByTagName("parsererror").length || he.error("Invalid XML: " + t), n
34342         };
34343         var xt = /\[\]$/,
34344             kt = /\r?\n/g,
34345             Tt = /^(?:submit|button|image|reset|file)$/i,
34346             Mt = /^(?:input|select|textarea|keygen)/i;
34347         he.param = function(e, t) {
34348             var n, r = [],
34349                 i = function(e, t) {
34350                     var n = he.isFunction(t) ? t() : t;
34351                     r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
34352                 };
34353             if (Array.isArray(e) || e.jquery && !he.isPlainObject(e)) he.each(e, function() {
34354                 i(this.name, this.value)
34355             });
34356             else
34357                 for (n in e) G(n, e[n], t, i);
34358             return r.join("&")
34359         }, he.fn.extend({
34360             serialize: function() {
34361                 return he.param(this.serializeArray())
34362             },
34363             serializeArray: function() {
34364                 return this.map(function() {
34365                     var e = he.prop(this, "elements");
34366                     return e ? he.makeArray(e) : this
34367                 }).filter(function() {
34368                     var e = this.type;
34369                     return this.name && !he(this).is(":disabled") && Mt.test(this.nodeName) && !Tt.test(e) && (this.checked || !Ve.test(e))
34370                 }).map(function(e, t) {
34371                     var n = he(this).val();
34372                     return null == n ? null : Array.isArray(n) ? he.map(n, function(e) {
34373                         return {
34374                             name: t.name,
34375                             value: e.replace(kt, "\r\n")
34376                         }
34377                     }) : {
34378                         name: t.name,
34379                         value: n.replace(kt, "\r\n")
34380                     }
34381                 }).get()
34382             }
34383         });
34384         var St = /%20/g,
34385             At = /#.*$/,
34386             Ot = /([?&])_=[^&]*/,
34387             Dt = /^(.*?):[ \t]*([^\r\n]*)$/gm,
34388             Nt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
34389             It = /^(?:GET|HEAD)$/,
34390             Rt = /^\/\//,
34391             Pt = {},
34392             Ht = {},
34393             jt = "*/".concat("*"),
34394             Lt = te.createElement("a");
34395         Lt.href = wt.href, he.extend({
34396             active: 0,
34397             lastModified: {},
34398             etag: {},
34399             ajaxSettings: {
34400                 url: wt.href,
34401                 type: "GET",
34402                 isLocal: Nt.test(wt.protocol),
34403                 global: !0,
34404                 processData: !0,
34405                 async: !0,
34406                 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
34407                 accepts: {
34408                     "*": jt,
34409                     text: "text/plain",
34410                     html: "text/html",
34411                     xml: "application/xml, text/xml",
34412                     json: "application/json, text/javascript"
34413                 },
34414                 contents: {
34415                     xml: /\bxml\b/,
34416                     html: /\bhtml/,
34417                     json: /\bjson\b/
34418                 },
34419                 responseFields: {
34420                     xml: "responseXML",
34421                     text: "responseText",
34422                     json: "responseJSON"
34423                 },
34424                 converters: {
34425                     "* text": String,
34426                     "text html": !0,
34427                     "text json": JSON.parse,
34428                     "text xml": he.parseXML
34429                 },
34430                 flatOptions: {
34431                     url: !0,
34432                     context: !0
34433                 }
34434             },
34435             ajaxSetup: function(e, t) {
34436                 return t ? X(X(e, he.ajaxSettings), t) : X(he.ajaxSettings, e)
34437             },
34438             ajaxPrefilter: K(Pt),
34439             ajaxTransport: K(Ht),
34440             ajax: function(t, n) {
34441                 function r(t, n, r, s) {
34442                     var l, f, h, $, _, w = n;
34443                     u || (u = !0, c && e.clearTimeout(c), i = void 0, a = s || "", E.readyState = t > 0 ? 4 : 0, l = t >= 200 && t < 300 || 304 === t, r && ($ = Q(p, E, r)), $ = J(p, $, E, l), l ? (p.ifModified && ((_ = E.getResponseHeader("Last-Modified")) && (he.lastModified[o] = _), (_ = E.getResponseHeader("etag")) && (he.etag[o] = _)), 204 === t || "HEAD" === p.type ? w = "nocontent" : 304 === t ? w = "notmodified" : (w = $.state, f = $.data, l = !(h = $.error))) : (h = w, !t && w || (w = "error", t < 0 && (t = 0))), E.status = t, E.statusText = (n || w) + "", l ? v.resolveWith(m, [f, w, E]) : v.rejectWith(m, [E, w, h]), E.statusCode(y), y = void 0, d && g.trigger(l ? "ajaxSuccess" : "ajaxError", [E, p, l ? f : h]), b.fireWith(m, [E, w]), d && (g.trigger("ajaxComplete", [E, p]), --he.active || he.event.trigger("ajaxStop")))
34444                 }
34445                 "object" == typeof t && (n = t, t = void 0), n = n || {};
34446                 var i, o, a, s, c, l, u, d, f, h, p = he.ajaxSetup({}, n),
34447                     m = p.context || p,
34448                     g = p.context && (m.nodeType || m.jquery) ? he(m) : he.event,
34449                     v = he.Deferred(),
34450                     b = he.Callbacks("once memory"),
34451                     y = p.statusCode || {},
34452                     $ = {},
34453                     _ = {},
34454                     w = "canceled",
34455                     E = {
34456                         readyState: 0,
34457                         getResponseHeader: function(e) {
34458                             var t;
34459                             if (u) {
34460                                 if (!s)
34461                                     for (s = {}; t = Dt.exec(a);) s[t[1].toLowerCase()] = t[2];
34462                                 t = s[e.toLowerCase()]
34463                             }
34464                             return null == t ? null : t
34465                         },
34466                         getAllResponseHeaders: function() {
34467                             return u ? a : null
34468                         },
34469                         setRequestHeader: function(e, t) {
34470                             return null == u && (e = _[e.toLowerCase()] = _[e.toLowerCase()] || e, $[e] = t), this
34471                         },
34472                         overrideMimeType: function(e) {
34473                             return null == u && (p.mimeType = e), this
34474                         },
34475                         statusCode: function(e) {
34476                             var t;
34477                             if (e)
34478                                 if (u) E.always(e[E.status]);
34479                                 else
34480                                     for (t in e) y[t] = [y[t], e[t]];
34481                             return this
34482                         },
34483                         abort: function(e) {
34484                             var t = e || w;
34485                             return i && i.abort(t), r(0, t), this
34486                         }
34487                     };
34488                 if (v.promise(E), p.url = ((t || p.url || wt.href) + "").replace(Rt, wt.protocol + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = (p.dataType || "*").toLowerCase().match(Me) || [""], null == p.crossDomain) {
34489                     l = te.createElement("a");
34490                     try {
34491                         l.href = p.url, l.href = l.href, p.crossDomain = Lt.protocol + "//" + Lt.host != l.protocol + "//" + l.host
34492                     } catch (e) {
34493                         p.crossDomain = !0
34494                     }
34495                 }
34496                 if (p.data && p.processData && "string" != typeof p.data && (p.data = he.param(p.data, p.traditional)), Z(Pt, p, n, E), u) return E;
34497                 (d = he.event && p.global) && 0 == he.active++ && he.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !It.test(p.type), o = p.url.replace(At, ""), p.hasContent ? p.data && p.processData && 0 === (p.contentType || "").indexOf("application/x-www-form-urlencoded") && (p.data = p.data.replace(St, "+")) : (h = p.url.slice(o.length), p.data && (o += (Ct.test(o) ? "&" : "?") + p.data, delete p.data), !1 === p.cache && (o = o.replace(Ot, "$1"), h = (Ct.test(o) ? "&" : "?") + "_=" + Et++ + h), p.url = o + h), p.ifModified && (he.lastModified[o] && E.setRequestHeader("If-Modified-Since", he.lastModified[o]), he.etag[o] && E.setRequestHeader("If-None-Match", he.etag[o])), (p.data && p.hasContent && !1 !== p.contentType || n.contentType) && E.setRequestHeader("Content-Type", p.contentType), E.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + jt + "; q=0.01" : "") : p.accepts["*"]);
34498                 for (f in p.headers) E.setRequestHeader(f, p.headers[f]);
34499                 if (p.beforeSend && (!1 === p.beforeSend.call(m, E, p) || u)) return E.abort();
34500                 if (w = "abort", b.add(p.complete), E.done(p.success), E.fail(p.error), i = Z(Ht, p, n, E)) {
34501                     if (E.readyState = 1, d && g.trigger("ajaxSend", [E, p]), u) return E;
34502                     p.async && p.timeout > 0 && (c = e.setTimeout(function() {
34503                         E.abort("timeout")
34504                     }, p.timeout));
34505                     try {
34506                         u = !1, i.send($, r)
34507                     } catch (e) {
34508                         if (u) throw e;
34509                         r(-1, e)
34510                     }
34511                 } else r(-1, "No Transport");
34512                 return E
34513             },
34514             getJSON: function(e, t, n) {
34515                 return he.get(e, t, n, "json")
34516             },
34517             getScript: function(e, t) {
34518                 return he.get(e, void 0, t, "script")
34519             }
34520         }), he.each(["get", "post"], function(e, t) {
34521             he[t] = function(e, n, r, i) {
34522                 return he.isFunction(n) && (i = i || r, r = n, n = void 0), he.ajax(he.extend({
34523                     url: e,
34524                     type: t,
34525                     dataType: i,
34526                     data: n,
34527                     success: r
34528                 }, he.isPlainObject(e) && e))
34529             }
34530         }), he._evalUrl = function(e) {
34531             return he.ajax({
34532                 url: e,
34533                 type: "GET",
34534                 dataType: "script",
34535                 cache: !0,
34536                 async: !1,
34537                 global: !1,
34538                 throws: !0
34539             })
34540         }, he.fn.extend({
34541             wrapAll: function(e) {
34542                 var t;
34543                 return this[0] && (he.isFunction(e) && (e = e.call(this[0])), t = he(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
34544                     for (var e = this; e.firstElementChild;) e = e.firstElementChild;
34545                     return e
34546                 }).append(this)), this
34547             },
34548             wrapInner: function(e) {
34549                 return he.isFunction(e) ? this.each(function(t) {
34550                     he(this).wrapInner(e.call(this, t))
34551                 }) : this.each(function() {
34552                     var t = he(this),
34553                         n = t.contents();
34554                     n.length ? n.wrapAll(e) : t.append(e)
34555                 })
34556             },
34557             wrap: function(e) {
34558                 var t = he.isFunction(e);
34559                 return this.each(function(n) {
34560                     he(this).wrapAll(t ? e.call(this, n) : e)
34561                 })
34562             },
34563             unwrap: function(e) {
34564                 return this.parent(e).not("body").each(function() {
34565                     he(this).replaceWith(this.childNodes)
34566                 }), this
34567             }
34568         }), he.expr.pseudos.hidden = function(e) {
34569             return !he.expr.pseudos.visible(e)
34570         }, he.expr.pseudos.visible = function(e) {
34571             return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
34572         }, he.ajaxSettings.xhr = function() {
34573             try {
34574                 return new e.XMLHttpRequest
34575             } catch (e) {}
34576         };
34577         var Ft = {
34578                 0: 200,
34579                 1223: 204
34580             },
34581             qt = he.ajaxSettings.xhr();
34582         fe.cors = !!qt && "withCredentials" in qt, fe.ajax = qt = !!qt, he.ajaxTransport(function(t) {
34583             var n, r;
34584             if (fe.cors || qt && !t.crossDomain) return {
34585                 send: function(i, o) {
34586                     var a, s = t.xhr();
34587                     if (s.open(t.type, t.url, t.async, t.username, t.password), t.xhrFields)
34588                         for (a in t.xhrFields) s[a] = t.xhrFields[a];
34589                     t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType), t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
34590                     for (a in i) s.setRequestHeader(a, i[a]);
34591                     n = function(e) {
34592                         return function() {
34593                             n && (n = r = s.onload = s.onerror = s.onabort = s.onreadystatechange = null, "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Ft[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
34594                                 binary: s.response
34595                             } : {
34596                                 text: s.responseText
34597                             }, s.getAllResponseHeaders()))
34598                         }
34599                     }, s.onload = n(), r = s.onerror = n("error"), void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function() {
34600                         4 === s.readyState && e.setTimeout(function() {
34601                             n && r()
34602                         })
34603                     }, n = n("abort");
34604                     try {
34605                         s.send(t.hasContent && t.data || null)
34606                     } catch (e) {
34607                         if (n) throw e
34608                     }
34609                 },
34610                 abort: function() {
34611                     n && n()
34612                 }
34613             }
34614         }), he.ajaxPrefilter(function(e) {
34615             e.crossDomain && (e.contents.script = !1)
34616         }), he.ajaxSetup({
34617             accepts: {
34618                 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
34619             },
34620             contents: {
34621                 script: /\b(?:java|ecma)script\b/
34622             },
34623             converters: {
34624                 "text script": function(e) {
34625                     return he.globalEval(e), e
34626                 }
34627             }
34628         }), he.ajaxPrefilter("script", function(e) {
34629             void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
34630         }), he.ajaxTransport("script", function(e) {
34631             if (e.crossDomain) {
34632                 var t, n;
34633                 return {
34634                     send: function(r, i) {
34635                         t = he("<script>").prop({
34636                             charset: e.scriptCharset,
34637                             src: e.url
34638                         }).on("load error", n = function(e) {
34639                             t.remove(), n = null, e && i("error" === e.type ? 404 : 200, e.type)
34640                         }), te.head.appendChild(t[0])
34641                     },
34642                     abort: function() {
34643                         n && n()
34644                     }
34645                 }
34646             }
34647         });
34648         var Ut = [],
34649             Vt = /(=)\?(?=&|$)|\?\?/;
34650         he.ajaxSetup({
34651             jsonp: "callback",
34652             jsonpCallback: function() {
34653                 var e = Ut.pop() || he.expando + "_" + Et++;
34654                 return this[e] = !0, e
34655             }
34656         }), he.ajaxPrefilter("json jsonp", function(t, n, r) {
34657             var i, o, a, s = !1 !== t.jsonp && (Vt.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && Vt.test(t.data) && "data");
34658             if (s || "jsonp" === t.dataTypes[0]) return i = t.jsonpCallback = he.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(Vt, "$1" + i) : !1 !== t.jsonp && (t.url += (Ct.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function() {
34659                 return a || he.error(i + " was not called"), a[0]
34660             }, t.dataTypes[0] = "json", o = e[i], e[i] = function() {
34661                 a = arguments
34662             }, r.always(function() {
34663                 void 0 === o ? he(e).removeProp(i) : e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, Ut.push(i)), a && he.isFunction(o) && o(a[0]), a = o = void 0
34664             }), "script"
34665         }), fe.createHTMLDocument = function() {
34666             var e = te.implementation.createHTMLDocument("").body;
34667             return e.innerHTML = "<form></form><form></form>", 2 === e.childNodes.length
34668         }(), he.parseHTML = function(e, t, n) {
34669             if ("string" != typeof e) return [];
34670             "boolean" == typeof t && (n = t, t = !1);
34671             var r, i, o;
34672             return t || (fe.createHTMLDocument ? ((r = (t = te.implementation.createHTMLDocument("")).createElement("base")).href = te.location.href, t.head.appendChild(r)) : t = te), i = we.exec(e), o = !n && [], i ? [t.createElement(i[1])] : (i = $([e], t, o), o && o.length && he(o).remove(), he.merge([], i.childNodes))
34673         }, he.fn.load = function(e, t, n) {
34674             var r, i, o, a = this,
34675                 s = e.indexOf(" ");
34676             return s > -1 && (r = W(e.slice(s)), e = e.slice(0, s)), he.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), a.length > 0 && he.ajax({
34677                 url: e,
34678                 type: i || "GET",
34679                 dataType: "html",
34680                 data: t
34681             }).done(function(e) {
34682                 o = arguments, a.html(r ? he("<div>").append(he.parseHTML(e)).find(r) : e)
34683             }).always(n && function(e, t) {
34684                 a.each(function() {
34685                     n.apply(this, o || [e.responseText, t, e])
34686                 })
34687             }), this
34688         }, he.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
34689             he.fn[t] = function(e) {
34690                 return this.on(t, e)
34691             }
34692         }), he.expr.pseudos.animated = function(e) {
34693             return he.grep(he.timers, function(t) {
34694                 return e === t.elem
34695             }).length
34696         }, he.offset = {
34697             setOffset: function(e, t, n) {
34698                 var r, i, o, a, s, c, l = he.css(e, "position"),
34699                     u = he(e),
34700                     d = {};
34701                 "static" === l && (e.style.position = "relative"), s = u.offset(), o = he.css(e, "top"), c = he.css(e, "left"), ("absolute" === l || "fixed" === l) && (o + c).indexOf("auto") > -1 ? (a = (r = u.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(c) || 0), he.isFunction(t) && (t = t.call(e, n, he.extend({}, s))), null != t.top && (d.top = t.top - s.top + a), null != t.left && (d.left = t.left - s.left + i), "using" in t ? t.using.call(e, d) : u.css(d)
34702             }
34703         }, he.fn.extend({
34704             offset: function(e) {
34705                 if (arguments.length) return void 0 === e ? this : this.each(function(t) {
34706                     he.offset.setOffset(this, e, t)
34707                 });
34708                 var t, n, r, i, o = this[0];
34709                 if (o) return o.getClientRects().length ? (r = o.getBoundingClientRect(), t = o.ownerDocument, n = t.documentElement, i = t.defaultView, {
34710                     top: r.top + i.pageYOffset - n.clientTop,
34711                     left: r.left + i.pageXOffset - n.clientLeft
34712                 }) : {
34713                     top: 0,
34714                     left: 0
34715                 }
34716             },
34717             position: function() {
34718                 if (this[0]) {
34719                     var e, t, n = this[0],
34720                         r = {
34721                             top: 0,
34722                             left: 0
34723                         };
34724                     return "fixed" === he.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), i(e[0], "html") || (r = e.offset()), r = {
34725                         top: r.top + he.css(e[0], "borderTopWidth", !0),
34726                         left: r.left + he.css(e[0], "borderLeftWidth", !0)
34727                     }), {
34728                         top: t.top - r.top - he.css(n, "marginTop", !0),
34729                         left: t.left - r.left - he.css(n, "marginLeft", !0)
34730                     }
34731                 }
34732             },
34733             offsetParent: function() {
34734                 return this.map(function() {
34735                     for (var e = this.offsetParent; e && "static" === he.css(e, "position");) e = e.offsetParent;
34736                     return e || Ge
34737                 })
34738             }
34739         }), he.each({
34740             scrollLeft: "pageXOffset",
34741             scrollTop: "pageYOffset"
34742         }, function(e, t) {
34743             var n = "pageYOffset" === t;
34744             he.fn[e] = function(r) {
34745                 return Oe(this, function(e, r, i) {
34746                     var o;
34747                     if (he.isWindow(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i) return o ? o[t] : e[r];
34748                     o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
34749                 }, e, r, arguments.length)
34750             }
34751         }), he.each(["top", "left"], function(e, t) {
34752             he.cssHooks[t] = N(fe.pixelPosition, function(e, n) {
34753                 if (n) return n = D(e, t), it.test(n) ? he(e).position()[t] + "px" : n
34754             })
34755         }), he.each({
34756             Height: "height",
34757             Width: "width"
34758         }, function(e, t) {
34759             he.each({
34760                 padding: "inner" + e,
34761                 content: t,
34762                 "": "outer" + e
34763             }, function(n, r) {
34764                 he.fn[r] = function(i, o) {
34765                     var a = arguments.length && (n || "boolean" != typeof i),
34766                         s = n || (!0 === i || !0 === o ? "margin" : "border");
34767                     return Oe(this, function(t, n, i) {
34768                         var o;
34769                         return he.isWindow(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement, Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? he.css(t, n, s) : he.style(t, n, i, s)
34770                     }, t, a ? i : void 0, a)
34771                 }
34772             })
34773         }), he.fn.extend({
34774             bind: function(e, t, n) {
34775                 return this.on(e, null, t, n)
34776             },
34777             unbind: function(e, t) {
34778                 return this.off(e, null, t)
34779             },
34780             delegate: function(e, t, n, r) {
34781                 return this.on(t, e, n, r)
34782             },
34783             undelegate: function(e, t, n) {
34784                 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
34785             }
34786         }), he.holdReady = function(e) {
34787             e ? he.readyWait++ : he.ready(!0)
34788         }, he.isArray = Array.isArray, he.parseJSON = JSON.parse, he.nodeName = i, "function" == typeof define && define.amd && define("jquery", [], function() {
34789             return he
34790         });
34791         var Bt = e.jQuery,
34792             zt = e.$;
34793         return he.noConflict = function(t) {
34794             return e.$ === he && (e.$ = zt), t && e.jQuery === he && (e.jQuery = Bt), he
34795         }, t || (e.jQuery = e.$ = he), he
34796     }),
34797     function(e) {
34798         "function" == typeof define && define.amd ? define(["jquery"], function(t) {
34799             return e(t, window, document)
34800         }) : "object" == typeof exports ? module.exports = e(require("jquery"), window, document) : e(jQuery, window, document)
34801     }(function(e, t, n) {
34802         "use strict";
34803         var r, i, o, a, s, c, l, u, d, f, h, p, m, g, v, b, y, $, _, w, E, C, x, k, T, M, S;
34804         w = {
34805             paneClass: "nano-pane",
34806             sliderClass: "nano-slider",
34807             contentClass: "nano-content",
34808             enabledClass: "has-scrollbar",
34809             flashedClass: "flashed",
34810             activeClass: "active",
34811             iOSNativeScrolling: !1,
34812             preventPageScrolling: !1,
34813             disableResize: !1,
34814             alwaysVisible: !1,
34815             flashDelay: 1500,
34816             sliderMinHeight: 20,
34817             sliderMaxHeight: null,
34818             documentContext: null,
34819             windowContext: null
34820         }, v = "scroll", l = "mousedown", u = "mouseenter", d = "mousemove", h = "mousewheel", f = "mouseup", g = "resize", s = "drag", c = "enter", y = "up", m = "panedown", o = "DOMMouseScroll", a = "down", $ = "wheel", b = "touchmove", r = "Microsoft Internet Explorer" === t.navigator.appName && /msie 7./i.test(t.navigator.appVersion) && t.ActiveXObject, i = null, k = t.requestAnimationFrame, _ = t.cancelAnimationFrame, M = n.createElement("div").style, S = function() {
34821             var e, t, n, r;
34822             for (e = n = 0, r = (t = ["t", "webkitT", "MozT", "msT", "OT"]).length; r > n; e = ++n)
34823                 if (t[e], t[e] + "ransform" in M) return t[e].substr(0, t[e].length - 1);
34824             return !1
34825         }(), T = function(e) {
34826             return !1 !== S && ("" === S ? e : S + e.charAt(0).toUpperCase() + e.substr(1))
34827         }("transform"), C = !1 !== T, E = function() {
34828             var e, t, r;
34829             return e = n.createElement("div"), t = e.style, t.position = "absolute", t.width = "100px", t.height = "100px", t.overflow = v, t.top = "-9999px", n.body.appendChild(e), r = e.offsetWidth - e.clientWidth, n.body.removeChild(e), r
34830         }, x = function() {
34831             var e, n, r;
34832             return n = t.navigator.userAgent, !!(e = /(?=.+Mac OS X)(?=.+Firefox)/.test(n)) && ((r = /Firefox\/\d{2}\./.exec(n)) && (r = r[0].replace(/\D+/g, "")), e && +r > 23)
34833         }, p = function() {
34834             function p(r, o) {
34835                 this.el = r, this.options = o, i || (i = E()), this.$el = e(this.el), this.doc = e(this.options.documentContext || n), this.win = e(this.options.windowContext || t), this.body = this.doc.find("body"), this.$content = this.$el.children("." + this.options.contentClass), this.$content.attr("tabindex", this.options.tabIndex || 0), this.content = this.$content[0], this.previousPosition = 0, this.options.iOSNativeScrolling && null != this.el.style.WebkitOverflowScrolling ? this.nativeScrolling() : this.generate(), this.createEvents(), this.addEvents(), this.reset()
34836             }
34837             return p.prototype.preventScrolling = function(e, t) {
34838                 if (this.isActive)
34839                     if (e.type === o)(t === a && e.originalEvent.detail > 0 || t === y && e.originalEvent.detail < 0) && e.preventDefault();
34840                     else if (e.type === h) {
34841                     if (!e.originalEvent || !e.originalEvent.wheelDelta) return;
34842                     (t === a && e.originalEvent.wheelDelta < 0 || t === y && e.originalEvent.wheelDelta > 0) && e.preventDefault()
34843                 }
34844             }, p.prototype.nativeScrolling = function() {
34845                 this.$content.css({
34846                     WebkitOverflowScrolling: "touch"
34847                 }), this.iOSNativeScrolling = !0, this.isActive = !0
34848             }, p.prototype.updateScrollValues = function() {
34849                 var e, t;
34850                 e = this.content, this.maxScrollTop = e.scrollHeight - e.clientHeight, this.prevScrollTop = this.contentScrollTop || 0, this.contentScrollTop = e.scrollTop, t = this.contentScrollTop > this.previousPosition ? "down" : this.contentScrollTop < this.previousPosition ? "up" : "same", this.previousPosition = this.contentScrollTop, "same" !== t && this.$el.trigger("update", {
34851                     position: this.contentScrollTop,
34852                     maximum: this.maxScrollTop,
34853                     direction: t
34854                 }), this.iOSNativeScrolling || (this.maxSliderTop = this.paneHeight - this.sliderHeight, this.sliderTop = 0 === this.maxScrollTop ? 0 : this.contentScrollTop * this.maxSliderTop / this.maxScrollTop)
34855             }, p.prototype.setOnScrollStyles = function() {
34856                 var e;
34857                 C ? (e = {}, e[T] = "translate(0, " + this.sliderTop + "px)") : e = {
34858                     top: this.sliderTop
34859                 }, k ? (_ && this.scrollRAF && _(this.scrollRAF), this.scrollRAF = k(function(t) {
34860                     return function() {
34861                         return t.scrollRAF = null, t.slider.css(e)
34862                     }
34863                 }(this))) : this.slider.css(e)
34864             }, p.prototype.createEvents = function() {
34865                 this.events = {
34866                     down: function(e) {
34867                         return function(t) {
34868                             return e.isBeingDragged = !0, e.offsetY = t.pageY - e.slider.offset().top, e.slider.is(t.target) || (e.offsetY = 0), e.pane.addClass(e.options.activeClass), e.doc.bind(d, e.events[s]).bind(f, e.events[y]), e.body.bind(u, e.events[c]), !1
34869                         }
34870                     }(this),
34871                     drag: function(e) {
34872                         return function(t) {
34873                             return e.sliderY = t.pageY - e.$el.offset().top - e.paneTop - (e.offsetY || .5 * e.sliderHeight), e.scroll(), e.contentScrollTop >= e.maxScrollTop && e.prevScrollTop !== e.maxScrollTop ? e.$el.trigger("scrollend") : 0 === e.contentScrollTop && 0 !== e.prevScrollTop && e.$el.trigger("scrolltop"), !1
34874                         }
34875                     }(this),
34876                     up: function(e) {
34877                         return function(t) {
34878                             return e.isBeingDragged = !1, e.pane.removeClass(e.options.activeClass), e.doc.unbind(d, e.events[s]).unbind(f, e.events[y]), e.body.unbind(u, e.events[c]), !1
34879                         }
34880                     }(this),
34881                     resize: function(e) {
34882                         return function(t) {
34883                             e.reset()
34884                         }
34885                     }(this),
34886                     panedown: function(e) {
34887                         return function(t) {
34888                             return e.sliderY = (t.offsetY || t.originalEvent.layerY) - .5 * e.sliderHeight, e.scroll(), e.events.down(t), !1
34889                         }
34890                     }(this),
34891                     scroll: function(e) {
34892                         return function(t) {
34893                             e.updateScrollValues(), e.isBeingDragged || (e.iOSNativeScrolling || (e.sliderY = e.sliderTop, e.setOnScrollStyles()), null != t && (e.contentScrollTop >= e.maxScrollTop ? (e.options.preventPageScrolling && e.preventScrolling(t, a), e.prevScrollTop !== e.maxScrollTop && e.$el.trigger("scrollend")) : 0 === e.contentScrollTop && (e.options.preventPageScrolling && e.preventScrolling(t, y), 0 !== e.prevScrollTop && e.$el.trigger("scrolltop"))))
34894                         }
34895                     }(this),
34896                     wheel: function(e) {
34897                         return function(t) {
34898                             var n;
34899                             if (null != t) return (n = t.delta || t.wheelDelta || t.originalEvent && t.originalEvent.wheelDelta || -t.detail || t.originalEvent && -t.originalEvent.detail) && (e.sliderY += -n / 3), e.scroll(), !1
34900                         }
34901                     }(this),
34902                     enter: function(e) {
34903                         return function(t) {
34904                             var n;
34905                             if (e.isBeingDragged) return 1 !== (t.buttons || t.which) ? (n = e.events)[y].apply(n, arguments) : void 0
34906                         }
34907                     }(this)
34908                 }
34909             }, p.prototype.addEvents = function() {
34910                 var e;
34911                 this.removeEvents(), e = this.events, this.options.disableResize || this.win.bind(g, e[g]), this.iOSNativeScrolling || (this.slider.bind(l, e[a]), this.pane.bind(l, e[m]).bind(h + " " + o, e[$])), this.$content.bind(v + " " + h + " " + o + " " + b, e[v])
34912             }, p.prototype.removeEvents = function() {
34913                 var e;
34914                 e = this.events, this.win.unbind(g, e[g]), this.iOSNativeScrolling || (this.slider.unbind(), this.pane.unbind()), this.$content.unbind(v + " " + h + " " + o + " " + b, e[v])
34915             }, p.prototype.generate = function() {
34916                 var e, n, r, o, a, s;
34917                 return r = this.options, a = r.paneClass, s = r.sliderClass, r.contentClass, (o = this.$el.children("." + a)).length || o.children("." + s).length || this.$el.append('<div class="' + a + '"><div class="' + s + '" /></div>'), this.pane = this.$el.children("." + a), this.slider = this.pane.find("." + s), 0 === i && x() ? (n = t.getComputedStyle(this.content, null).getPropertyValue("padding-right").replace(/[^0-9.]+/g, ""), e = {
34918                     right: -14,
34919                     paddingRight: +n + 14
34920                 }) : i && (e = {
34921                     right: -i
34922                 }, this.$el.addClass(r.enabledClass)), null != e && this.$content.css(e), this
34923             }, p.prototype.restore = function() {
34924                 this.stopped = !1, this.iOSNativeScrolling || this.pane.show(), this.addEvents()
34925             }, p.prototype.reset = function() {
34926                 var e, t, n, o, a, s, c, l, u, d, f, h;
34927                 return this.iOSNativeScrolling ? void(this.contentHeight = this.content.scrollHeight) : (this.$el.find("." + this.options.paneClass).length || this.generate().stop(), this.stopped && this.restore(), e = this.content, o = e.style, a = o.overflowY, r && this.$content.css({
34928                     height: this.$content.height()
34929                 }), t = e.scrollHeight + i, (d = parseInt(this.$el.css("max-height"), 10)) > 0 && (this.$el.height(""), this.$el.height(e.scrollHeight > d ? d : e.scrollHeight)), c = this.pane.outerHeight(!1), u = parseInt(this.pane.css("top"), 10), s = parseInt(this.pane.css("bottom"), 10), l = c + u + s, (h = Math.round(l / t * c)) < this.options.sliderMinHeight ? h = this.options.sliderMinHeight : null != this.options.sliderMaxHeight && h > this.options.sliderMaxHeight && (h = this.options.sliderMaxHeight), a === v && o.overflowX !== v && (h += i), this.maxSliderTop = l - h, this.contentHeight = t, this.paneHeight = c, this.paneOuterHeight = l, this.sliderHeight = h, this.paneTop = u, this.slider.height(h), this.events.scroll(), this.pane.show(), this.isActive = !0, e.scrollHeight === e.clientHeight || this.pane.outerHeight(!0) >= e.scrollHeight && a !== v ? (this.pane.hide(), this.isActive = !1) : this.el.clientHeight === e.scrollHeight && a === v ? this.slider.hide() : this.slider.show(), this.pane.css({
34930                     opacity: this.options.alwaysVisible ? 1 : "",
34931                     visibility: this.options.alwaysVisible ? "visible" : ""
34932                 }), ("static" === (n = this.$content.css("position")) || "relative" === n) && (f = parseInt(this.$content.css("right"), 10)) && this.$content.css({
34933                     right: "",
34934                     marginRight: f
34935                 }), this)
34936             }, p.prototype.scroll = function() {
34937                 return this.isActive ? (this.sliderY = Math.max(0, this.sliderY), this.sliderY = Math.min(this.maxSliderTop, this.sliderY), this.$content.scrollTop(this.maxScrollTop * this.sliderY / this.maxSliderTop), this.iOSNativeScrolling || (this.updateScrollValues(), this.setOnScrollStyles()), this) : void 0
34938             }, p.prototype.scrollBottom = function(e) {
34939                 return this.isActive ? (this.$content.scrollTop(this.contentHeight - this.$content.height() - e).trigger(h), this.stop().restore(), this) : void 0
34940             }, p.prototype.scrollTop = function(e) {
34941                 return this.isActive ? (this.$content.scrollTop(+e).trigger(h), this.stop().restore(), this) : void 0
34942             }, p.prototype.scrollTo = function(e) {
34943                 return this.isActive ? (this.scrollTop(this.$el.find(e).get(0).offsetTop), this) : void 0
34944             }, p.prototype.stop = function() {
34945                 return _ && this.scrollRAF && (_(this.scrollRAF), this.scrollRAF = null), this.stopped = !0, this.removeEvents(), this.iOSNativeScrolling || this.pane.hide(), this
34946             }, p.prototype.destroy = function() {
34947                 return this.stopped || this.stop(), !this.iOSNativeScrolling && this.pane.length && this.pane.remove(), r && this.$content.height(""), this.$content.removeAttr("tabindex"), this.$el.hasClass(this.options.enabledClass) && (this.$el.removeClass(this.options.enabledClass), this.$content.css({
34948                     right: ""
34949                 })), this
34950             }, p.prototype.flash = function() {
34951                 return !this.iOSNativeScrolling && this.isActive ? (this.reset(), this.pane.addClass(this.options.flashedClass), setTimeout(function(e) {
34952                     return function() {
34953                         e.pane.removeClass(e.options.flashedClass)
34954                     }
34955                 }(this), this.options.flashDelay), this) : void 0
34956             }, p
34957         }(), e.fn.nanoScroller = function(t) {
34958             return this.each(function() {
34959                 var n, r;
34960                 if ((r = this.nanoscroller) || (n = e.extend({}, w, t), this.nanoscroller = r = new p(this, n)), t && "object" == typeof t) {
34961                     if (e.extend(r.options, t), null != t.scrollBottom) return r.scrollBottom(t.scrollBottom);
34962                     if (null != t.scrollTop) return r.scrollTop(t.scrollTop);
34963                     if (t.scrollTo) return r.scrollTo(t.scrollTo);
34964                     if ("bottom" === t.scroll) return r.scrollBottom(0);
34965                     if ("top" === t.scroll) return r.scrollTop(0);
34966                     if (t.scroll && t.scroll instanceof e) return r.scrollTo(t.scroll);
34967                     if (t.stop) return r.stop();
34968                     if (t.destroy) return r.destroy();
34969                     if (t.flash) return r.flash()
34970                 }
34971                 return r.reset()
34972             })
34973         }, e.fn.nanoScroller.Constructor = p
34974     }),
34975     function(e, t) {
34976         "function" == typeof define && define.amd ? define(t) : "object" == typeof exports ? module.exports = t(require, exports, module) : e.Tether = t()
34977     }(this, function(e, t, n) {
34978         "use strict";
34979
34980         function r(e, t) {
34981             if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
34982         }
34983
34984         function i(e) {
34985             var t = getComputedStyle(e).position;
34986             if ("fixed" === t) return e;
34987             for (var n = e; n = n.parentNode;) {
34988                 var r = void 0;
34989                 try {
34990                     r = getComputedStyle(n)
34991                 } catch (e) {}
34992                 if (void 0 === r || null === r) return n;
34993                 var i = r.overflow,
34994                     o = r.overflowX,
34995                     a = r.overflowY;
34996                 if (/(auto|scroll)/.test(i + a + o) && ("absolute" !== t || ["relative", "absolute", "fixed"].indexOf(r.position) >= 0)) return n
34997             }
34998             return document.body
34999         }
35000
35001         function o(e) {
35002             var t = void 0;
35003             e === document ? (t = document, e = document.documentElement) : t = e.ownerDocument;
35004             var n = t.documentElement,
35005                 r = {},
35006                 i = e.getBoundingClientRect();
35007             for (var o in i) r[o] = i[o];
35008             var a = C(t);
35009             return r.top -= a.top, r.left -= a.left, void 0 === r.width && (r.width = document.body.scrollWidth - r.left - r.right), void 0 === r.height && (r.height = document.body.scrollHeight - r.top - r.bottom), r.top = r.top - n.clientTop, r.left = r.left - n.clientLeft, r.right = t.body.clientWidth - r.width - r.left, r.bottom = t.body.clientHeight - r.height - r.top, r
35010         }
35011
35012         function a(e) {
35013             return e.offsetParent || document.documentElement
35014         }
35015
35016         function s() {
35017             var e = document.createElement("div");
35018             e.style.width = "100%", e.style.height = "200px";
35019             var t = document.createElement("div");
35020             c(t.style, {
35021                 position: "absolute",
35022                 top: 0,
35023                 left: 0,
35024                 pointerEvents: "none",
35025                 visibility: "hidden",
35026                 width: "200px",
35027                 height: "150px",
35028                 overflow: "hidden"
35029             }), t.appendChild(e), document.body.appendChild(t);
35030             var n = e.offsetWidth;
35031             t.style.overflow = "scroll";
35032             var r = e.offsetWidth;
35033             n === r && (r = t.clientWidth), document.body.removeChild(t);
35034             var i = n - r;
35035             return {
35036                 width: i,
35037                 height: i
35038             }
35039         }
35040
35041         function c() {
35042             var e = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0],
35043                 t = [];
35044             return Array.prototype.push.apply(t, arguments), t.slice(1).forEach(function(t) {
35045                 if (t)
35046                     for (var n in t)({}).hasOwnProperty.call(t, n) && (e[n] = t[n])
35047             }), e
35048         }
35049
35050         function l(e, t) {
35051             if (void 0 !== e.classList) t.split(" ").forEach(function(t) {
35052                 t.trim() && e.classList.remove(t)
35053             });
35054             else {
35055                 var n = new RegExp("(^| )" + t.split(" ").join("|") + "( |$)", "gi"),
35056                     r = f(e).replace(n, " ");
35057                 h(e, r)
35058             }
35059         }
35060
35061         function u(e, t) {
35062             if (void 0 !== e.classList) t.split(" ").forEach(function(t) {
35063                 t.trim() && e.classList.add(t)
35064             });
35065             else {
35066                 l(e, t);
35067                 var n = f(e) + " " + t;
35068                 h(e, n)
35069             }
35070         }
35071
35072         function d(e, t) {
35073             if (void 0 !== e.classList) return e.classList.contains(t);
35074             var n = f(e);
35075             return new RegExp("(^| )" + t + "( |$)", "gi").test(n)
35076         }
35077
35078         function f(e) {
35079             return e.className instanceof SVGAnimatedString ? e.className.baseVal : e.className
35080         }
35081
35082         function h(e, t) {
35083             e.setAttribute("class", t)
35084         }
35085
35086         function p(e, t, n) {
35087             n.forEach(function(n) {
35088                 -1 === t.indexOf(n) && d(e, n) && l(e, n)
35089             }), t.forEach(function(t) {
35090                 d(e, t) || u(e, t)
35091             })
35092         }
35093
35094         function r(e, t) {
35095             if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
35096         }
35097
35098         function m(e, t) {
35099             var n = arguments.length <= 2 || void 0 === arguments[2] ? 1 : arguments[2];
35100             return e + n >= t && t >= e - n
35101         }
35102
35103         function g() {
35104             return "undefined" != typeof performance && void 0 !== performance.now ? performance.now() : +new Date
35105         }
35106
35107         function v() {
35108             for (var e = {
35109                     top: 0,
35110                     left: 0
35111                 }, t = arguments.length, n = Array(t), r = 0; t > r; r++) n[r] = arguments[r];
35112             return n.forEach(function(t) {
35113                 var n = t.top,
35114                     r = t.left;
35115                 "string" == typeof n && (n = parseFloat(n, 10)), "string" == typeof r && (r = parseFloat(r, 10)), e.top += n, e.left += r
35116             }), e
35117         }
35118
35119         function b(e, t) {
35120             return "string" == typeof e.left && -1 !== e.left.indexOf("%") && (e.left = parseFloat(e.left, 10) / 100 * t.width), "string" == typeof e.top && -1 !== e.top.indexOf("%") && (e.top = parseFloat(e.top, 10) / 100 * t.height), e
35121         }
35122
35123         function y(e, t) {
35124             return "scrollParent" === t ? t = e.scrollParent : "window" === t && (t = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset]), t === document && (t = t.documentElement), void 0 !== t.nodeType && function() {
35125                 var e = o(t),
35126                     n = e,
35127                     r = getComputedStyle(t);
35128                 t = [n.left, n.top, e.width + n.left, e.height + n.top], V.forEach(function(e, n) {
35129                     "Top" === (e = e[0].toUpperCase() + e.substr(1)) || "Left" === e ? t[n] += parseFloat(r["border" + e + "Width"]) : t[n] -= parseFloat(r["border" + e + "Width"])
35130                 })
35131             }(), t
35132         }
35133         var $ = function() {
35134                 function e(e, t) {
35135                     for (var n = 0; n < t.length; n++) {
35136                         var r = t[n];
35137                         r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
35138                     }
35139                 }
35140                 return function(t, n, r) {
35141                     return n && e(t.prototype, n), r && e(t, r), t
35142                 }
35143             }(),
35144             _ = void 0;
35145         void 0 === _ && (_ = {
35146             modules: []
35147         });
35148         var w = function() {
35149                 var e = 0;
35150                 return function() {
35151                     return ++e
35152                 }
35153             }(),
35154             E = {},
35155             C = function(e) {
35156                 var t = e._tetherZeroElement;
35157                 void 0 === t && ((t = e.createElement("div")).setAttribute("data-tether-id", w()), c(t.style, {
35158                     top: 0,
35159                     left: 0,
35160                     position: "absolute"
35161                 }), e.body.appendChild(t), e._tetherZeroElement = t);
35162                 var n = t.getAttribute("data-tether-id");
35163                 if (void 0 === E[n]) {
35164                     E[n] = {};
35165                     var r = t.getBoundingClientRect();
35166                     for (var i in r) E[n][i] = r[i];
35167                     k(function() {
35168                         delete E[n]
35169                     })
35170                 }
35171                 return E[n]
35172             },
35173             x = [],
35174             k = function(e) {
35175                 x.push(e)
35176             },
35177             T = function() {
35178                 for (var e = void 0; e = x.pop();) e()
35179             },
35180             M = function() {
35181                 function e() {
35182                     r(this, e)
35183                 }
35184                 return $(e, [{
35185                     key: "on",
35186                     value: function(e, t, n) {
35187                         var r = !(arguments.length <= 3 || void 0 === arguments[3]) && arguments[3];
35188                         void 0 === this.bindings && (this.bindings = {}), void 0 === this.bindings[e] && (this.bindings[e] = []), this.bindings[e].push({
35189                             handler: t,
35190                             ctx: n,
35191                             once: r
35192                         })
35193                     }
35194                 }, {
35195                     key: "once",
35196                     value: function(e, t, n) {
35197                         this.on(e, t, n, !0)
35198                     }
35199                 }, {
35200                     key: "off",
35201                     value: function(e, t) {
35202                         if (void 0 === this.bindings || void 0 === this.bindings[e])
35203                             if (void 0 === t) delete this.bindings[e];
35204                             else
35205                                 for (var n = 0; n < this.bindings[e].length;) this.bindings[e][n].handler === t ? this.bindings[e].splice(n, 1) : ++n
35206                     }
35207                 }, {
35208                     key: "trigger",
35209                     value: function(e) {
35210                         if (void 0 !== this.bindings && this.bindings[e])
35211                             for (var t = 0; t < this.bindings[e].length;) {
35212                                 var n = this.bindings[e][t],
35213                                     r = n.handler,
35214                                     i = n.ctx,
35215                                     o = n.once,
35216                                     a = i;
35217                                 void 0 === a && (a = this);
35218                                 for (var s = arguments.length, c = Array(s > 1 ? s - 1 : 0), l = 1; s > l; l++) c[l - 1] = arguments[l];
35219                                 r.apply(a, c), o ? this.bindings[e].splice(t, 1) : ++t
35220                             }
35221                     }
35222                 }]), e
35223             }();
35224         _.Utils = {
35225             getScrollParent: i,
35226             getBounds: o,
35227             getOffsetParent: a,
35228             extend: c,
35229             addClass: u,
35230             removeClass: l,
35231             hasClass: d,
35232             updateClasses: p,
35233             defer: k,
35234             flush: T,
35235             uniqueId: w,
35236             Evented: M,
35237             getScrollBarSize: s
35238         };
35239         var S = function() {
35240                 function e(e, t) {
35241                     var n = [],
35242                         r = !0,
35243                         i = !1,
35244                         o = void 0;
35245                     try {
35246                         for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);
35247                     } catch (e) {
35248                         i = !0, o = e
35249                     } finally {
35250                         try {
35251                             !r && s.return && s.return()
35252                         } finally {
35253                             if (i) throw o
35254                         }
35255                     }
35256                     return n
35257                 }
35258                 return function(t, n) {
35259                     if (Array.isArray(t)) return t;
35260                     if (Symbol.iterator in Object(t)) return e(t, n);
35261                     throw new TypeError("Invalid attempt to destructure non-iterable instance")
35262                 }
35263             }(),
35264             $ = function() {
35265                 function e(e, t) {
35266                     for (var n = 0; n < t.length; n++) {
35267                         var r = t[n];
35268                         r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
35269                     }
35270                 }
35271                 return function(t, n, r) {
35272                     return n && e(t.prototype, n), r && e(t, r), t
35273                 }
35274             }();
35275         if (void 0 === _) throw new Error("You must include the utils.js file before tether.js");
35276         var A = _.Utils,
35277             i = A.getScrollParent,
35278             o = A.getBounds,
35279             a = A.getOffsetParent,
35280             c = A.extend,
35281             u = A.addClass,
35282             l = A.removeClass,
35283             p = A.updateClasses,
35284             k = A.defer,
35285             T = A.flush,
35286             s = A.getScrollBarSize,
35287             O = function() {
35288                 for (var e = document.createElement("div"), t = ["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"], n = 0; n < t.length; ++n) {
35289                     var r = t[n];
35290                     if (void 0 !== e.style[r]) return r
35291                 }
35292             }(),
35293             D = [],
35294             N = function() {
35295                 D.forEach(function(e) {
35296                     e.position(!1)
35297                 }), T()
35298             };
35299         ! function() {
35300             var e = null,
35301                 t = null,
35302                 n = null,
35303                 r = function r() {
35304                     return void 0 !== t && t > 16 ? (t = Math.min(t - 16, 250), void(n = setTimeout(r, 250))) : void(void 0 !== e && g() - e < 10 || (void 0 !== n && (clearTimeout(n), n = null), e = g(), N(), t = g() - e))
35305                 };
35306             ["resize", "scroll", "touchmove"].forEach(function(e) {
35307                 window.addEventListener(e, r)
35308             })
35309         }();
35310         var I = {
35311                 center: "center",
35312                 left: "right",
35313                 right: "left"
35314             },
35315             R = {
35316                 middle: "middle",
35317                 top: "bottom",
35318                 bottom: "top"
35319             },
35320             P = {
35321                 top: 0,
35322                 left: 0,
35323                 middle: "50%",
35324                 center: "50%",
35325                 bottom: "100%",
35326                 right: "100%"
35327             },
35328             H = function(e, t) {
35329                 var n = e.left,
35330                     r = e.top;
35331                 return "auto" === n && (n = I[t.left]), "auto" === r && (r = R[t.top]), {
35332                     left: n,
35333                     top: r
35334                 }
35335             },
35336             j = function(e) {
35337                 var t = e.left,
35338                     n = e.top;
35339                 return void 0 !== P[e.left] && (t = P[e.left]), void 0 !== P[e.top] && (n = P[e.top]), {
35340                     left: t,
35341                     top: n
35342                 }
35343             },
35344             L = function(e) {
35345                 var t = e.split(" "),
35346                     n = S(t, 2);
35347                 return {
35348                     top: n[0],
35349                     left: n[1]
35350                 }
35351             },
35352             F = L,
35353             q = function() {
35354                 function e(t) {
35355                     var n = this;
35356                     r(this, e), this.position = this.position.bind(this), D.push(this), this.history = [], this.setOptions(t, !1), _.modules.forEach(function(e) {
35357                         void 0 !== e.initialize && e.initialize.call(n)
35358                     }), this.position()
35359                 }
35360                 return $(e, [{
35361                     key: "getClass",
35362                     value: function() {
35363                         var e = arguments.length <= 0 || void 0 === arguments[0] ? "" : arguments[0],
35364                             t = this.options.classes;
35365                         return void 0 !== t && t[e] ? this.options.classes[e] : this.options.classPrefix ? this.options.classPrefix + "-" + e : e
35366                     }
35367                 }, {
35368                     key: "setOptions",
35369                     value: function(e) {
35370                         var t = this,
35371                             n = arguments.length <= 1 || void 0 === arguments[1] || arguments[1],
35372                             r = {
35373                                 offset: "0 0",
35374                                 targetOffset: "0 0",
35375                                 targetAttachment: "auto auto",
35376                                 classPrefix: "tether"
35377                             };
35378                         this.options = c(r, e);
35379                         var o = this.options,
35380                             a = o.element,
35381                             s = o.target,
35382                             l = o.targetModifier;
35383                         if (this.element = a, this.target = s, this.targetModifier = l, "viewport" === this.target ? (this.target = document.body, this.targetModifier = "visible") : "scroll-handle" === this.target && (this.target = document.body, this.targetModifier = "scroll-handle"), ["element", "target"].forEach(function(e) {
35384                                 if (void 0 === t[e]) throw new Error("Tether Error: Both element and target must be defined");
35385                                 void 0 !== t[e].jquery ? t[e] = t[e][0] : "string" == typeof t[e] && (t[e] = document.querySelector(t[e]))
35386                             }), u(this.element, this.getClass("element")), !1 !== this.options.addTargetClasses && u(this.target, this.getClass("target")), !this.options.attachment) throw new Error("Tether Error: You must provide an attachment");
35387                         this.targetAttachment = F(this.options.targetAttachment), this.attachment = F(this.options.attachment), this.offset = L(this.options.offset), this.targetOffset = L(this.options.targetOffset), void 0 !== this.scrollParent && this.disable(), this.scrollParent = "scroll-handle" === this.targetModifier ? this.target : i(this.target), !1 !== this.options.enabled && this.enable(n)
35388                     }
35389                 }, {
35390                     key: "getTargetBounds",
35391                     value: function() {
35392                         if (void 0 === this.targetModifier) return o(this.target);
35393                         if ("visible" === this.targetModifier) return this.target === document.body ? {
35394                             top: pageYOffset,
35395                             left: pageXOffset,
35396                             height: innerHeight,
35397                             width: innerWidth
35398                         } : ((a = {
35399                             height: (e = o(this.target)).height,
35400                             width: e.width,
35401                             top: e.top,
35402                             left: e.left
35403                         }).height = Math.min(a.height, e.height - (pageYOffset - e.top)), a.height = Math.min(a.height, e.height - (e.top + e.height - (pageYOffset + innerHeight))), a.height = Math.min(innerHeight, a.height), a.height -= 2, a.width = Math.min(a.width, e.width - (pageXOffset - e.left)), a.width = Math.min(a.width, e.width - (e.left + e.width - (pageXOffset + innerWidth))), a.width = Math.min(innerWidth, a.width), a.width -= 2, a.top < pageYOffset && (a.top = pageYOffset), a.left < pageXOffset && (a.left = pageXOffset), a);
35404                         if ("scroll-handle" === this.targetModifier) {
35405                             var e = void 0,
35406                                 t = this.target;
35407                             t === document.body ? (t = document.documentElement, e = {
35408                                 left: pageXOffset,
35409                                 top: pageYOffset,
35410                                 height: innerHeight,
35411                                 width: innerWidth
35412                             }) : e = o(t);
35413                             var n = getComputedStyle(t),
35414                                 r = 0;
35415                             (t.scrollWidth > t.clientWidth || [n.overflow, n.overflowX].indexOf("scroll") >= 0 || this.target !== document.body) && (r = 15);
35416                             var i = e.height - parseFloat(n.borderTopWidth) - parseFloat(n.borderBottomWidth) - r,
35417                                 a = {
35418                                     width: 15,
35419                                     height: .975 * i * (i / t.scrollHeight),
35420                                     left: e.left + e.width - parseFloat(n.borderLeftWidth) - 15
35421                                 },
35422                                 s = 0;
35423                             408 > i && this.target === document.body && (s = -11e-5 * Math.pow(i, 2) - .00727 * i + 22.58), this.target !== document.body && (a.height = Math.max(a.height, 24));
35424                             var c = this.target.scrollTop / (t.scrollHeight - i);
35425                             return a.top = c * (i - a.height - s) + e.top + parseFloat(n.borderTopWidth), this.target === document.body && (a.height = Math.max(a.height, 24)), a
35426                         }
35427                     }
35428                 }, {
35429                     key: "clearCache",
35430                     value: function() {
35431                         this._cache = {}
35432                     }
35433                 }, {
35434                     key: "cache",
35435                     value: function(e, t) {
35436                         return void 0 === this._cache && (this._cache = {}), void 0 === this._cache[e] && (this._cache[e] = t.call(this)), this._cache[e]
35437                     }
35438                 }, {
35439                     key: "enable",
35440                     value: function() {
35441                         var e = arguments.length <= 0 || void 0 === arguments[0] || arguments[0];
35442                         !1 !== this.options.addTargetClasses && u(this.target, this.getClass("enabled")), u(this.element, this.getClass("enabled")), this.enabled = !0, this.scrollParent !== document && this.scrollParent.addEventListener("scroll", this.position), e && this.position()
35443                     }
35444                 }, {
35445                     key: "disable",
35446                     value: function() {
35447                         l(this.target, this.getClass("enabled")), l(this.element, this.getClass("enabled")), this.enabled = !1, void 0 !== this.scrollParent && this.scrollParent.removeEventListener("scroll", this.position)
35448                     }
35449                 }, {
35450                     key: "destroy",
35451                     value: function() {
35452                         var e = this;
35453                         this.disable(), D.forEach(function(t, n) {
35454                             return t === e ? void D.splice(n, 1) : void 0
35455                         })
35456                     }
35457                 }, {
35458                     key: "updateAttachClasses",
35459                     value: function(e, t) {
35460                         var n = this;
35461                         e = e || this.attachment, t = t || this.targetAttachment;
35462                         var r = ["left", "top", "bottom", "right", "middle", "center"];
35463                         void 0 !== this._addAttachClasses && this._addAttachClasses.length && this._addAttachClasses.splice(0, this._addAttachClasses.length), void 0 === this._addAttachClasses && (this._addAttachClasses = []);
35464                         var i = this._addAttachClasses;
35465                         e.top && i.push(this.getClass("element-attached") + "-" + e.top), e.left && i.push(this.getClass("element-attached") + "-" + e.left), t.top && i.push(this.getClass("target-attached") + "-" + t.top), t.left && i.push(this.getClass("target-attached") + "-" + t.left);
35466                         var o = [];
35467                         r.forEach(function(e) {
35468                             o.push(n.getClass("element-attached") + "-" + e), o.push(n.getClass("target-attached") + "-" + e)
35469                         }), k(function() {
35470                             void 0 !== n._addAttachClasses && (p(n.element, n._addAttachClasses, o), !1 !== n.options.addTargetClasses && p(n.target, n._addAttachClasses, o), delete n._addAttachClasses)
35471                         })
35472                     }
35473                 }, {
35474                     key: "position",
35475                     value: function() {
35476                         var e = this,
35477                             t = arguments.length <= 0 || void 0 === arguments[0] || arguments[0];
35478                         if (this.enabled) {
35479                             this.clearCache();
35480                             var n = H(this.targetAttachment, this.attachment);
35481                             this.updateAttachClasses(this.attachment, n);
35482                             var r = this.cache("element-bounds", function() {
35483                                     return o(e.element)
35484                                 }),
35485                                 i = r.width,
35486                                 c = r.height;
35487                             if (0 === i && 0 === c && void 0 !== this.lastSize) {
35488                                 var l = this.lastSize;
35489                                 i = l.width, c = l.height
35490                             } else this.lastSize = {
35491                                 width: i,
35492                                 height: c
35493                             };
35494                             var u = this.cache("target-bounds", function() {
35495                                     return e.getTargetBounds()
35496                                 }),
35497                                 d = u,
35498                                 f = b(j(this.attachment), {
35499                                     width: i,
35500                                     height: c
35501                                 }),
35502                                 h = b(j(n), d),
35503                                 p = b(this.offset, {
35504                                     width: i,
35505                                     height: c
35506                                 }),
35507                                 m = b(this.targetOffset, d);
35508                             f = v(f, p), h = v(h, m);
35509                             for (var g = u.left + h.left - f.left, y = u.top + h.top - f.top, $ = 0; $ < _.modules.length; ++$) {
35510                                 var w = _.modules[$].position.call(this, {
35511                                     left: g,
35512                                     top: y,
35513                                     targetAttachment: n,
35514                                     targetPos: u,
35515                                     elementPos: r,
35516                                     offset: f,
35517                                     targetOffset: h,
35518                                     manualOffset: p,
35519                                     manualTargetOffset: m,
35520                                     scrollbarSize: C,
35521                                     attachment: this.attachment
35522                                 });
35523                                 if (!1 === w) return !1;
35524                                 void 0 !== w && "object" == typeof w && (y = w.top, g = w.left)
35525                             }
35526                             var E = {
35527                                     page: {
35528                                         top: y,
35529                                         left: g
35530                                     },
35531                                     viewport: {
35532                                         top: y - pageYOffset,
35533                                         bottom: pageYOffset - y - c + innerHeight,
35534                                         left: g - pageXOffset,
35535                                         right: pageXOffset - g - i + innerWidth
35536                                     }
35537                                 },
35538                                 C = void 0;
35539                             return document.body.scrollWidth > window.innerWidth && (C = this.cache("scrollbar-size", s), E.viewport.bottom -= C.height), document.body.scrollHeight > window.innerHeight && (C = this.cache("scrollbar-size", s), E.viewport.right -= C.width), (-1 === ["", "static"].indexOf(document.body.style.position) || -1 === ["", "static"].indexOf(document.body.parentElement.style.position)) && (E.page.bottom = document.body.scrollHeight - y - c, E.page.right = document.body.scrollWidth - g - i), void 0 !== this.options.optimizations && !1 !== this.options.optimizations.moveElement && void 0 === this.targetModifier && function() {
35540                                 var t = e.cache("target-offsetparent", function() {
35541                                         return a(e.target)
35542                                     }),
35543                                     n = e.cache("target-offsetparent-bounds", function() {
35544                                         return o(t)
35545                                     }),
35546                                     r = getComputedStyle(t),
35547                                     i = n,
35548                                     s = {};
35549                                 if (["Top", "Left", "Bottom", "Right"].forEach(function(e) {
35550                                         s[e.toLowerCase()] = parseFloat(r["border" + e + "Width"])
35551                                     }), n.right = document.body.scrollWidth - n.left - i.width + s.right, n.bottom = document.body.scrollHeight - n.top - i.height + s.bottom, E.page.top >= n.top + s.top && E.page.bottom >= n.bottom && E.page.left >= n.left + s.left && E.page.right >= n.right) {
35552                                     var c = t.scrollTop,
35553                                         l = t.scrollLeft;
35554                                     E.offset = {
35555                                         top: E.page.top - n.top + c - s.top,
35556                                         left: E.page.left - n.left + l - s.left
35557                                     }
35558                                 }
35559                             }(), this.move(E), this.history.unshift(E), this.history.length > 3 && this.history.pop(), t && T(), !0
35560                         }
35561                     }
35562                 }, {
35563                     key: "move",
35564                     value: function(e) {
35565                         var t = this;
35566                         if (void 0 !== this.element.parentNode) {
35567                             var n = {};
35568                             for (var r in e) {
35569                                 n[r] = {};
35570                                 for (var i in e[r]) {
35571                                     for (var o = !1, s = 0; s < this.history.length; ++s) {
35572                                         var l = this.history[s];
35573                                         if (void 0 !== l[r] && !m(l[r][i], e[r][i])) {
35574                                             o = !0;
35575                                             break
35576                                         }
35577                                     }
35578                                     o || (n[r][i] = !0)
35579                                 }
35580                             }
35581                             var u = {
35582                                     top: "",
35583                                     left: "",
35584                                     right: "",
35585                                     bottom: ""
35586                                 },
35587                                 d = function(e, n) {
35588                                     if (!1 !== (void 0 !== t.options.optimizations ? t.options.optimizations.gpu : null)) {
35589                                         var r = void 0,
35590                                             i = void 0;
35591                                         e.top ? (u.top = 0, r = n.top) : (u.bottom = 0, r = -n.bottom), e.left ? (u.left = 0, i = n.left) : (u.right = 0, i = -n.right), u[O] = "translateX(" + Math.round(i) + "px) translateY(" + Math.round(r) + "px)", "msTransform" !== O && (u[O] += " translateZ(0)")
35592                                     } else e.top ? u.top = n.top + "px" : u.bottom = n.bottom + "px", e.left ? u.left = n.left + "px" : u.right = n.right + "px"
35593                                 },
35594                                 f = !1;
35595                             if ((n.page.top || n.page.bottom) && (n.page.left || n.page.right) ? (u.position = "absolute", d(n.page, e.page)) : (n.viewport.top || n.viewport.bottom) && (n.viewport.left || n.viewport.right) ? (u.position = "fixed", d(n.viewport, e.viewport)) : void 0 !== n.offset && n.offset.top && n.offset.left ? function() {
35596                                     u.position = "absolute";
35597                                     var r = t.cache("target-offsetparent", function() {
35598                                         return a(t.target)
35599                                     });
35600                                     a(t.element) !== r && k(function() {
35601                                         t.element.parentNode.removeChild(t.element), r.appendChild(t.element)
35602                                     }), d(n.offset, e.offset), f = !0
35603                                 }() : (u.position = "absolute", d({
35604                                     top: !0,
35605                                     left: !0
35606                                 }, e.page)), !f) {
35607                                 for (var h = !0, p = this.element.parentNode; p && "BODY" !== p.tagName;) {
35608                                     if ("static" !== getComputedStyle(p).position) {
35609                                         h = !1;
35610                                         break
35611                                     }
35612                                     p = p.parentNode
35613                                 }
35614                                 h || (this.element.parentNode.removeChild(this.element), document.body.appendChild(this.element))
35615                             }
35616                             var g = {},
35617                                 v = !1;
35618                             for (var i in u) {
35619                                 var b = u[i],
35620                                     y = this.element.style[i];
35621                                 "" !== y && "" !== b && ["top", "left", "bottom", "right"].indexOf(i) >= 0 && (y = parseFloat(y), b = parseFloat(b)), y !== b && (v = !0, g[i] = b)
35622                             }
35623                             v && k(function() {
35624                                 c(t.element.style, g)
35625                             })
35626                         }
35627                     }
35628                 }]), e
35629             }();
35630         q.modules = [], _.position = N;
35631         var U = c(q, _),
35632             S = function() {
35633                 function e(e, t) {
35634                     var n = [],
35635                         r = !0,
35636                         i = !1,
35637                         o = void 0;
35638                     try {
35639                         for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);
35640                     } catch (e) {
35641                         i = !0, o = e
35642                     } finally {
35643                         try {
35644                             !r && s.return && s.return()
35645                         } finally {
35646                             if (i) throw o
35647                         }
35648                     }
35649                     return n
35650                 }
35651                 return function(t, n) {
35652                     if (Array.isArray(t)) return t;
35653                     if (Symbol.iterator in Object(t)) return e(t, n);
35654                     throw new TypeError("Invalid attempt to destructure non-iterable instance")
35655                 }
35656             }(),
35657             o = (A = _.Utils).getBounds,
35658             c = A.extend,
35659             p = A.updateClasses,
35660             k = A.defer,
35661             V = ["left", "top", "right", "bottom"];
35662         _.modules.push({
35663             position: function(e) {
35664                 var t = this,
35665                     n = e.top,
35666                     r = e.left,
35667                     i = e.targetAttachment;
35668                 if (!this.options.constraints) return !0;
35669                 var a = this.cache("element-bounds", function() {
35670                         return o(t.element)
35671                     }),
35672                     s = a.height,
35673                     l = a.width;
35674                 if (0 === l && 0 === s && void 0 !== this.lastSize) {
35675                     var u = this.lastSize;
35676                     l = u.width, s = u.height
35677                 }
35678                 var d = this.cache("target-bounds", function() {
35679                         return t.getTargetBounds()
35680                     }),
35681                     f = d.height,
35682                     h = d.width,
35683                     m = [this.getClass("pinned"), this.getClass("out-of-bounds")];
35684                 this.options.constraints.forEach(function(e) {
35685                     var t = e.outOfBoundsClass,
35686                         n = e.pinnedClass;
35687                     t && m.push(t), n && m.push(n)
35688                 }), m.forEach(function(e) {
35689                     ["left", "top", "right", "bottom"].forEach(function(t) {
35690                         m.push(e + "-" + t)
35691                     })
35692                 });
35693                 var g = [],
35694                     v = c({}, i),
35695                     b = c({}, this.attachment);
35696                 return this.options.constraints.forEach(function(e) {
35697                     var o = e.to,
35698                         a = e.attachment,
35699                         c = e.pin;
35700                     void 0 === a && (a = "");
35701                     var u = void 0,
35702                         d = void 0;
35703                     if (a.indexOf(" ") >= 0) {
35704                         var p = a.split(" "),
35705                             m = S(p, 2);
35706                         d = m[0], u = m[1]
35707                     } else u = d = a;
35708                     var $ = y(t, o);
35709                     ("target" === d || "both" === d) && (n < $[1] && "top" === v.top && (n += f, v.top = "bottom"), n + s > $[3] && "bottom" === v.top && (n -= f, v.top = "top")), "together" === d && (n < $[1] && "top" === v.top && ("bottom" === b.top ? (n += f, v.top = "bottom", n += s, b.top = "top") : "top" === b.top && (n += f, v.top = "bottom", n -= s, b.top = "bottom")), n + s > $[3] && "bottom" === v.top && ("top" === b.top ? (n -= f, v.top = "top", n -= s, b.top = "bottom") : "bottom" === b.top && (n -= f, v.top = "top", n += s, b.top = "top")), "middle" === v.top && (n + s > $[3] && "top" === b.top ? (n -= s, b.top = "bottom") : n < $[1] && "bottom" === b.top && (n += s, b.top = "top"))), ("target" === u || "both" === u) && (r < $[0] && "left" === v.left && (r += h, v.left = "right"), r + l > $[2] && "right" === v.left && (r -= h, v.left = "left")), "together" === u && (r < $[0] && "left" === v.left ? "right" === b.left ? (r += h, v.left = "right", r += l, b.left = "left") : "left" === b.left && (r += h, v.left = "right", r -= l, b.left = "right") : r + l > $[2] && "right" === v.left ? "left" === b.left ? (r -= h, v.left = "left", r -= l, b.left = "right") : "right" === b.left && (r -= h, v.left = "left", r += l, b.left = "left") : "center" === v.left && (r + l > $[2] && "left" === b.left ? (r -= l, b.left = "right") : r < $[0] && "right" === b.left && (r += l, b.left = "left"))), ("element" === d || "both" === d) && (n < $[1] && "bottom" === b.top && (n += s, b.top = "top"), n + s > $[3] && "top" === b.top && (n -= s, b.top = "bottom")), ("element" === u || "both" === u) && (r < $[0] && "right" === b.left && (r += l, b.left = "left"), r + l > $[2] && "left" === b.left && (r -= l, b.left = "right")), "string" == typeof c ? c = c.split(",").map(function(e) {
35710                         return e.trim()
35711                     }) : !0 === c && (c = ["top", "left", "right", "bottom"]), c = c || [];
35712                     var _ = [],
35713                         w = [];
35714                     n < $[1] && (c.indexOf("top") >= 0 ? (n = $[1], _.push("top")) : w.push("top")), n + s > $[3] && (c.indexOf("bottom") >= 0 ? (n = $[3] - s, _.push("bottom")) : w.push("bottom")), r < $[0] && (c.indexOf("left") >= 0 ? (r = $[0], _.push("left")) : w.push("left")), r + l > $[2] && (c.indexOf("right") >= 0 ? (r = $[2] - l, _.push("right")) : w.push("right")), _.length && function() {
35715                         var e = void 0;
35716                         e = void 0 !== t.options.pinnedClass ? t.options.pinnedClass : t.getClass("pinned"), g.push(e), _.forEach(function(t) {
35717                             g.push(e + "-" + t)
35718                         })
35719                     }(), w.length && function() {
35720                         var e = void 0;
35721                         e = void 0 !== t.options.outOfBoundsClass ? t.options.outOfBoundsClass : t.getClass("out-of-bounds"), g.push(e), w.forEach(function(t) {
35722                             g.push(e + "-" + t)
35723                         })
35724                     }(), (_.indexOf("left") >= 0 || _.indexOf("right") >= 0) && (b.left = v.left = !1), (_.indexOf("top") >= 0 || _.indexOf("bottom") >= 0) && (b.top = v.top = !1), (v.top !== i.top || v.left !== i.left || b.top !== t.attachment.top || b.left !== t.attachment.left) && t.updateAttachClasses(b, v)
35725                 }), k(function() {
35726                     !1 !== t.options.addTargetClasses && p(t.target, g, m), p(t.element, g, m)
35727                 }), {
35728                     top: n,
35729                     left: r
35730                 }
35731             }
35732         });
35733         var o = (A = _.Utils).getBounds,
35734             p = A.updateClasses,
35735             k = A.defer;
35736         _.modules.push({
35737             position: function(e) {
35738                 var t = this,
35739                     n = e.top,
35740                     r = e.left,
35741                     i = this.cache("element-bounds", function() {
35742                         return o(t.element)
35743                     }),
35744                     a = i.height,
35745                     s = i.width,
35746                     c = this.getTargetBounds(),
35747                     l = n + a,
35748                     u = r + s,
35749                     d = [];
35750                 n <= c.bottom && l >= c.top && ["left", "right"].forEach(function(e) {
35751                     var t = c[e];
35752                     (t === r || t === u) && d.push(e)
35753                 }), r <= c.right && u >= c.left && ["top", "bottom"].forEach(function(e) {
35754                     var t = c[e];
35755                     (t === n || t === l) && d.push(e)
35756                 });
35757                 var f = [],
35758                     h = [],
35759                     m = ["left", "top", "right", "bottom"];
35760                 return f.push(this.getClass("abutted")), m.forEach(function(e) {
35761                     f.push(t.getClass("abutted") + "-" + e)
35762                 }), d.length && h.push(this.getClass("abutted")), d.forEach(function(e) {
35763                     h.push(t.getClass("abutted") + "-" + e)
35764                 }), k(function() {
35765                     !1 !== t.options.addTargetClasses && p(t.target, h, f), p(t.element, h, f)
35766                 }), !0
35767             }
35768         });
35769         S = function() {
35770             function e(e, t) {
35771                 var n = [],
35772                     r = !0,
35773                     i = !1,
35774                     o = void 0;
35775                 try {
35776                     for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);
35777                 } catch (e) {
35778                     i = !0, o = e
35779                 } finally {
35780                     try {
35781                         !r && s.return && s.return()
35782                     } finally {
35783                         if (i) throw o
35784                     }
35785                 }
35786                 return n
35787             }
35788             return function(t, n) {
35789                 if (Array.isArray(t)) return t;
35790                 if (Symbol.iterator in Object(t)) return e(t, n);
35791                 throw new TypeError("Invalid attempt to destructure non-iterable instance")
35792             }
35793         }();
35794         return _.modules.push({
35795             position: function(e) {
35796                 var t = e.top,
35797                     n = e.left;
35798                 if (this.options.shift) {
35799                     var r = this.options.shift;
35800                     "function" == typeof this.options.shift && (r = this.options.shift.call(this, {
35801                         top: t,
35802                         left: n
35803                     }));
35804                     var i = void 0,
35805                         o = void 0;
35806                     if ("string" == typeof r) {
35807                         (r = r.split(" "))[1] = r[1] || r[0];
35808                         var a = S(r, 2);
35809                         i = a[0], o = a[1], i = parseFloat(i, 10), o = parseFloat(o, 10)
35810                     } else i = r.top, o = r.left;
35811                     return t += i, n += o, {
35812                         top: t,
35813                         left: n
35814                     }
35815                 }
35816             }
35817         }), U
35818     });
35819 var Config = {};
35820 Config.Emoji = {
35821     "00a9": ["©", ["copyright"]],
35822     "00ae": ["®", ["registered"]],
35823     "203c": ["‼", ["bangbang"]],
35824     2049: ["⁉", ["interrobang"]],
35825     2122: ["™", ["tm"]],
35826     2139: ["ℹ", ["information_source"]],
35827     2194: ["↔", ["left_right_arrow"]],
35828     2195: ["↕", ["arrow_up_down"]],
35829     2196: ["↖", ["arrow_upper_left"]],
35830     2197: ["↗", ["arrow_upper_right"]],
35831     2198: ["↘", ["arrow_lower_right"]],
35832     2199: ["↙", ["arrow_lower_left"]],
35833     "21a9": ["↩", ["leftwards_arrow_with_hook"]],
35834     "21aa": ["↪", ["arrow_right_hook"]],
35835     "231a": ["⌚", ["watch"]],
35836     "231b": ["⌛", ["hourglass"]],
35837     "23e9": ["⏩", ["fast_forward"]],
35838     "23ea": ["⏪", ["rewind"]],
35839     "23eb": ["⏫", ["arrow_double_up"]],
35840     "23ec": ["⏬", ["arrow_double_down"]],
35841     "23f0": ["⏰", ["alarm_clock"]],
35842     "23f3": ["⏳", ["hourglass_flowing_sand"]],
35843     "24c2": ["Ⓜ", ["m"]],
35844     "25aa": ["▪", ["black_small_square"]],
35845     "25ab": ["▫", ["white_small_square"]],
35846     "25b6": ["▶", ["arrow_forward"]],
35847     "25c0": ["◀", ["arrow_backward"]],
35848     "25fb": ["◻", ["white_medium_square"]],
35849     "25fc": ["◼", ["black_medium_square"]],
35850     "25fd": ["◽", ["white_medium_small_square"]],
35851     "25fe": ["◾", ["black_medium_small_square"]],
35852     2600: ["☀", ["sunny"]],
35853     2601: ["☁", ["cloud"]],
35854     "260e": ["☎", ["phone", "telephone"]],
35855     2611: ["☑", ["ballot_box_with_check"]],
35856     2614: ["☔", ["umbrella"]],
35857     2615: ["☕", ["coffee"]],
35858     "261d": ["☝", ["point_up"]],
35859     "263a": ["☺", ["relaxed"]],
35860     2648: ["♈", ["aries"]],
35861     2649: ["♉", ["taurus"]],
35862     "264a": ["♊", ["gemini"]],
35863     "264b": ["♋", ["cancer"]],
35864     "264c": ["♌", ["leo"]],
35865     "264d": ["♍", ["virgo"]],
35866     "264e": ["♎", ["libra"]],
35867     "264f": ["♏", ["scorpius"]],
35868     2650: ["♐", ["sagittarius"]],
35869     2651: ["♑", ["capricorn"]],
35870     2652: ["♒", ["aquarius"]],
35871     2653: ["♓", ["pisces"]],
35872     2660: ["♠", ["spades"]],
35873     2663: ["♣", ["clubs"]],
35874     2665: ["♥", ["hearts"]],
35875     2666: ["♦", ["diamonds"]],
35876     2668: ["♨", ["hotsprings"]],
35877     "267b": ["♻", ["recycle"]],
35878     "267f": ["♿", ["wheelchair"]],
35879     2693: ["⚓", ["anchor"]],
35880     "26a0": ["⚠", ["warning"]],
35881     "26a1": ["⚡", ["zap"]],
35882     "26aa": ["⚪", ["white_circle"]],
35883     "26ab": ["⚫", ["black_circle"]],
35884     "26bd": ["⚽", ["soccer"]],
35885     "26be": ["⚾", ["baseball"]],
35886     "26c4": ["⛄", ["snowman"]],
35887     "26c5": ["⛅", ["partly_sunny"]],
35888     "26ce": ["⛎", ["ophiuchus"]],
35889     "26d4": ["⛔", ["no_entry"]],
35890     "26ea": ["⛪", ["church"]],
35891     "26f2": ["⛲", ["fountain"]],
35892     "26f3": ["⛳", ["golf"]],
35893     "26f5": ["⛵", ["boat", "sailboat"]],
35894     "26fa": ["⛺", ["tent"]],
35895     "26fd": ["⛽", ["fuelpump"]],
35896     2702: ["✂", ["scissors"]],
35897     2705: ["✅", ["white_check_mark"]],
35898     2708: ["✈", ["airplane"]],
35899     2709: ["✉", ["email", "envelope"]],
35900     "270a": ["✊", ["fist"]],
35901     "270b": ["✋", ["hand", "raised_hand"]],
35902     "270c": ["✌", ["v"]],
35903     "270f": ["✏", ["pencil2"]],
35904     2712: ["✒", ["black_nib"]],
35905     2714: ["✔", ["heavy_check_mark"]],
35906     2716: ["✖", ["heavy_multiplication_x"]],
35907     2728: ["✨", ["sparkles"]],
35908     2733: ["✳", ["eight_spoked_asterisk"]],
35909     2734: ["✴", ["eight_pointed_black_star"]],
35910     2744: ["❄", ["snowflake"]],
35911     2747: ["❇", ["sparkle"]],
35912     "274c": ["❌", ["x"]],
35913     "274e": ["❎", ["negative_squared_cross_mark"]],
35914     2753: ["❓", ["question"]],
35915     2754: ["❔", ["grey_question"]],
35916     2755: ["❕", ["grey_exclamation"]],
35917     2757: ["❗", ["exclamation", "heavy_exclamation_mark"]],
35918     2764: ["❤", ["heart"], "<3"],
35919     2795: ["➕", ["heavy_plus_sign"]],
35920     2796: ["➖", ["heavy_minus_sign"]],
35921     2797: ["➗", ["heavy_division_sign"]],
35922     "27a1": ["➡", ["arrow_right"]],
35923     "27b0": ["➰", ["curly_loop"]],
35924     "27bf": ["➿", ["loop"]],
35925     2934: ["⤴", ["arrow_heading_up"]],
35926     2935: ["⤵", ["arrow_heading_down"]],
35927     "2b05": ["⬅", ["arrow_left"]],
35928     "2b06": ["⬆", ["arrow_up"]],
35929     "2b07": ["⬇", ["arrow_down"]],
35930     "2b1b": ["⬛", ["black_large_square"]],
35931     "2b1c": ["⬜", ["white_large_square"]],
35932     "2b50": ["⭐", ["star"]],
35933     "2b55": ["⭕", ["o"]],
35934     3030: ["〰", ["wavy_dash"]],
35935     "303d": ["〽", ["part_alternation_mark"]],
35936     3297: ["㊗", ["congratulations"]],
35937     3299: ["㊙", ["secret"]],
35938     "1f004": ["🀄", ["mahjong"]],
35939     "1f0cf": ["🃏", ["black_joker"]],
35940     "1f170": ["🅰", ["a"]],
35941     "1f171": ["🅱", ["b"]],
35942     "1f17e": ["🅾", ["o2"]],
35943     "1f17f": ["🅿", ["parking"]],
35944     "1f18e": ["🆎", ["ab"]],
35945     "1f191": ["🆑", ["cl"]],
35946     "1f192": ["🆒", ["cool"]],
35947     "1f193": ["🆓", ["free"]],
35948     "1f194": ["🆔", ["id"]],
35949     "1f195": ["🆕", ["new"]],
35950     "1f196": ["🆖", ["ng"]],
35951     "1f197": ["🆗", ["ok"]],
35952     "1f198": ["🆘", ["sos"]],
35953     "1f199": ["🆙", ["up"]],
35954     "1f19a": ["🆚", ["vs"]],
35955     "1f201": ["🈁", ["koko"]],
35956     "1f202": ["🈂", ["sa"]],
35957     "1f21a": ["🈚", ["u7121"]],
35958     "1f22f": ["🈯", ["u6307"]],
35959     "1f232": ["🈲", ["u7981"]],
35960     "1f233": ["🈳", ["u7a7a"]],
35961     "1f234": ["🈴", ["u5408"]],
35962     "1f235": ["🈵", ["u6e80"]],
35963     "1f236": ["🈶", ["u6709"]],
35964     "1f237": ["🈷", ["u6708"]],
35965     "1f238": ["🈸", ["u7533"]],
35966     "1f239": ["🈹", ["u5272"]],
35967     "1f23a": ["🈺", ["u55b6"]],
35968     "1f250": ["🉐", ["ideograph_advantage"]],
35969     "1f251": ["🉑", ["accept"]],
35970     "1f300": ["🌀", ["cyclone"]],
35971     "1f301": ["🌁", ["foggy"]],
35972     "1f302": ["🌂", ["closed_umbrella"]],
35973     "1f303": ["🌃", ["night_with_stars"]],
35974     "1f304": ["🌄", ["sunrise_over_mountains"]],
35975     "1f305": ["🌅", ["sunrise"]],
35976     "1f306": ["🌆", ["city_sunset"]],
35977     "1f307": ["🌇", ["city_sunrise"]],
35978     "1f308": ["🌈", ["rainbow"]],
35979     "1f309": ["🌉", ["bridge_at_night"]],
35980     "1f30a": ["🌊", ["ocean"]],
35981     "1f30b": ["🌋", ["volcano"]],
35982     "1f30c": ["🌌", ["milky_way"]],
35983     "1f30d": ["🌍", ["earth_africa"]],
35984     "1f30e": ["🌎", ["earth_americas"]],
35985     "1f30f": ["🌏", ["earth_asia"]],
35986     "1f310": ["🌐", ["globe_with_meridians"]],
35987     "1f311": ["🌑", ["new_moon"]],
35988     "1f312": ["🌒", ["waxing_crescent_moon"]],
35989     "1f313": ["🌓", ["first_quarter_moon"]],
35990     "1f314": ["🌔", ["moon", "waxing_gibbous_moon"]],
35991     "1f315": ["🌕", ["full_moon"]],
35992     "1f316": ["🌖", ["waning_gibbous_moon"]],
35993     "1f317": ["🌗", ["last_quarter_moon"]],
35994     "1f318": ["🌘", ["waning_crescent_moon"]],
35995     "1f319": ["🌙", ["crescent_moon"]],
35996     "1f320": ["🌠", ["stars"]],
35997     "1f31a": ["🌚", ["new_moon_with_face"]],
35998     "1f31b": ["🌛", ["first_quarter_moon_with_face"]],
35999     "1f31c": ["🌜", ["last_quarter_moon_with_face"]],
36000     "1f31d": ["🌝", ["full_moon_with_face"]],
36001     "1f31e": ["🌞", ["sun_with_face"]],
36002     "1f31f": ["🌟", ["star2"]],
36003     "1f330": ["🌰", ["chestnut"]],
36004     "1f331": ["🌱", ["seedling"]],
36005     "1f332": ["🌲", ["evergreen_tree"]],
36006     "1f333": ["🌳", ["deciduous_tree"]],
36007     "1f334": ["🌴", ["palm_tree"]],
36008     "1f335": ["🌵", ["cactus"]],
36009     "1f337": ["🌷", ["tulip"]],
36010     "1f338": ["🌸", ["cherry_blossom"]],
36011     "1f339": ["🌹", ["rose"]],
36012     "1f33a": ["🌺", ["hibiscus"]],
36013     "1f33b": ["🌻", ["sunflower"]],
36014     "1f33c": ["🌼", ["blossom"]],
36015     "1f33d": ["🌽", ["corn"]],
36016     "1f33e": ["🌾", ["ear_of_rice"]],
36017     "1f33f": ["🌿", ["herb"]],
36018     "1f340": ["🍀", ["four_leaf_clover"]],
36019     "1f341": ["🍁", ["maple_leaf"]],
36020     "1f342": ["🍂", ["fallen_leaf"]],
36021     "1f343": ["🍃", ["leaves"]],
36022     "1f344": ["🍄", ["mushroom"]],
36023     "1f345": ["🍅", ["tomato"]],
36024     "1f346": ["🍆", ["eggplant"]],
36025     "1f347": ["🍇", ["grapes"]],
36026     "1f348": ["🍈", ["melon"]],
36027     "1f349": ["🍉", ["watermelon"]],
36028     "1f34a": ["🍊", ["tangerine"]],
36029     "1f34b": ["🍋", ["lemon"]],
36030     "1f34c": ["🍌", ["banana"]],
36031     "1f34d": ["🍍", ["pineapple"]],
36032     "1f34e": ["🍎", ["apple"]],
36033     "1f34f": ["🍏", ["green_apple"]],
36034     "1f350": ["🍐", ["pear"]],
36035     "1f351": ["🍑", ["peach"]],
36036     "1f352": ["🍒", ["cherries"]],
36037     "1f353": ["🍓", ["strawberry"]],
36038     "1f354": ["🍔", ["hamburger"]],
36039     "1f355": ["🍕", ["pizza"]],
36040     "1f356": ["🍖", ["meat_on_bone"]],
36041     "1f357": ["🍗", ["poultry_leg"]],
36042     "1f358": ["🍘", ["rice_cracker"]],
36043     "1f359": ["🍙", ["rice_ball"]],
36044     "1f35a": ["🍚", ["rice"]],
36045     "1f35b": ["🍛", ["curry"]],
36046     "1f35c": ["🍜", ["ramen"]],
36047     "1f35d": ["🍝", ["spaghetti"]],
36048     "1f35e": ["🍞", ["bread"]],
36049     "1f35f": ["🍟", ["fries"]],
36050     "1f360": ["🍠", ["sweet_potato"]],
36051     "1f361": ["🍡", ["dango"]],
36052     "1f362": ["🍢", ["oden"]],
36053     "1f363": ["🍣", ["sushi"]],
36054     "1f364": ["🍤", ["fried_shrimp"]],
36055     "1f365": ["🍥", ["fish_cake"]],
36056     "1f366": ["🍦", ["icecream"]],
36057     "1f367": ["🍧", ["shaved_ice"]],
36058     "1f368": ["🍨", ["ice_cream"]],
36059     "1f369": ["🍩", ["doughnut"]],
36060     "1f36a": ["🍪", ["cookie"]],
36061     "1f36b": ["🍫", ["chocolate_bar"]],
36062     "1f36c": ["🍬", ["candy"]],
36063     "1f36d": ["🍭", ["lollipop"]],
36064     "1f36e": ["🍮", ["custard"]],
36065     "1f36f": ["🍯", ["honey_pot"]],
36066     "1f370": ["🍰", ["cake"]],
36067     "1f371": ["🍱", ["bento"]],
36068     "1f372": ["🍲", ["stew"]],
36069     "1f373": ["🍳", ["egg"]],
36070     "1f374": ["🍴", ["fork_and_knife"]],
36071     "1f375": ["🍵", ["tea"]],
36072     "1f376": ["🍶", ["sake"]],
36073     "1f377": ["🍷", ["wine_glass"]],
36074     "1f378": ["🍸", ["cocktail"]],
36075     "1f379": ["🍹", ["tropical_drink"]],
36076     "1f37a": ["🍺", ["beer"]],
36077     "1f37b": ["🍻", ["beers"]],
36078     "1f37c": ["🍼", ["baby_bottle"]],
36079     "1f380": ["🎀", ["ribbon"]],
36080     "1f381": ["🎁", ["gift"]],
36081     "1f382": ["🎂", ["birthday"]],
36082     "1f383": ["🎃", ["jack_o_lantern"]],
36083     "1f384": ["🎄", ["christmas_tree"]],
36084     "1f385": ["🎅", ["santa"]],
36085     "1f386": ["🎆", ["fireworks"]],
36086     "1f387": ["🎇", ["sparkler"]],
36087     "1f388": ["🎈", ["balloon"]],
36088     "1f389": ["🎉", ["tada"]],
36089     "1f38a": ["🎊", ["confetti_ball"]],
36090     "1f38b": ["🎋", ["tanabata_tree"]],
36091     "1f38c": ["🎌", ["crossed_flags"]],
36092     "1f38d": ["🎍", ["bamboo"]],
36093     "1f38e": ["🎎", ["dolls"]],
36094     "1f38f": ["🎏", ["flags"]],
36095     "1f390": ["🎐", ["wind_chime"]],
36096     "1f391": ["🎑", ["rice_scene"]],
36097     "1f392": ["🎒", ["school_satchel"]],
36098     "1f393": ["🎓", ["mortar_board"]],
36099     "1f3a0": ["🎠", ["carousel_horse"]],
36100     "1f3a1": ["🎡", ["ferris_wheel"]],
36101     "1f3a2": ["🎢", ["roller_coaster"]],
36102     "1f3a3": ["🎣", ["fishing_pole_and_fish"]],
36103     "1f3a4": ["🎤", ["microphone"]],
36104     "1f3a5": ["🎥", ["movie_camera"]],
36105     "1f3a6": ["🎦", ["cinema"]],
36106     "1f3a7": ["🎧", ["headphones"]],
36107     "1f3a8": ["🎨", ["art"]],
36108     "1f3a9": ["🎩", ["tophat"]],
36109     "1f3aa": ["🎪", ["circus_tent"]],
36110     "1f3ab": ["🎫", ["ticket"]],
36111     "1f3ac": ["🎬", ["clapper"]],
36112     "1f3ad": ["🎭", ["performing_arts"]],
36113     "1f3ae": ["🎮", ["video_game"]],
36114     "1f3af": ["🎯", ["dart"]],
36115     "1f3b0": ["🎰", ["slot_machine"]],
36116     "1f3b1": ["🎱", ["8ball"]],
36117     "1f3b2": ["🎲", ["game_die"]],
36118     "1f3b3": ["🎳", ["bowling"]],
36119     "1f3b4": ["🎴", ["flower_playing_cards"]],
36120     "1f3b5": ["🎵", ["musical_note"]],
36121     "1f3b6": ["🎶", ["notes"]],
36122     "1f3b7": ["🎷", ["saxophone"]],
36123     "1f3b8": ["🎸", ["guitar"]],
36124     "1f3b9": ["🎹", ["musical_keyboard"]],
36125     "1f3ba": ["🎺", ["trumpet"]],
36126     "1f3bb": ["🎻", ["violin"]],
36127     "1f3bc": ["🎼", ["musical_score"]],
36128     "1f3bd": ["🎽", ["running_shirt_with_sash"]],
36129     "1f3be": ["🎾", ["tennis"]],
36130     "1f3bf": ["🎿", ["ski"]],
36131     "1f3c0": ["🏀", ["basketball"]],
36132     "1f3c1": ["🏁", ["checkered_flag"]],
36133     "1f3c2": ["🏂", ["snowboarder"]],
36134     "1f3c3": ["🏃", ["runner", "running"]],
36135     "1f3c4": ["🏄", ["surfer"]],
36136     "1f3c6": ["🏆", ["trophy"]],
36137     "1f3c7": ["🏇", ["horse_racing"]],
36138     "1f3c8": ["🏈", ["football"]],
36139     "1f3c9": ["🏉", ["rugby_football"]],
36140     "1f3ca": ["🏊", ["swimmer"]],
36141     "1f3e0": ["🏠", ["house"]],
36142     "1f3e1": ["🏡", ["house_with_garden"]],
36143     "1f3e2": ["🏢", ["office"]],
36144     "1f3e3": ["🏣", ["post_office"]],
36145     "1f3e4": ["🏤", ["european_post_office"]],
36146     "1f3e5": ["🏥", ["hospital"]],
36147     "1f3e6": ["🏦", ["bank"]],
36148     "1f3e7": ["🏧", ["atm"]],
36149     "1f3e8": ["🏨", ["hotel"]],
36150     "1f3e9": ["🏩", ["love_hotel"]],
36151     "1f3ea": ["🏪", ["convenience_store"]],
36152     "1f3eb": ["🏫", ["school"]],
36153     "1f3ec": ["🏬", ["department_store"]],
36154     "1f3ed": ["🏭", ["factory"]],
36155     "1f3ee": ["🏮", ["izakaya_lantern", "lantern"]],
36156     "1f3ef": ["🏯", ["japanese_castle"]],
36157     "1f3f0": ["🏰", ["european_castle"]],
36158     "1f400": ["🐀", ["rat"]],
36159     "1f401": ["🐁", ["mouse2"]],
36160     "1f402": ["🐂", ["ox"]],
36161     "1f403": ["🐃", ["water_buffalo"]],
36162     "1f404": ["🐄", ["cow2"]],
36163     "1f405": ["🐅", ["tiger2"]],
36164     "1f406": ["🐆", ["leopard"]],
36165     "1f407": ["🐇", ["rabbit2"]],
36166     "1f408": ["🐈", ["cat2"]],
36167     "1f409": ["🐉", ["dragon"]],
36168     "1f40a": ["🐊", ["crocodile"]],
36169     "1f40b": ["🐋", ["whale2"]],
36170     "1f40c": ["🐌", ["snail"]],
36171     "1f40d": ["🐍", ["snake"]],
36172     "1f40e": ["🐎", ["racehorse"]],
36173     "1f40f": ["🐏", ["ram"]],
36174     "1f410": ["🐐", ["goat"]],
36175     "1f411": ["🐑", ["sheep"]],
36176     "1f412": ["🐒", ["monkey"]],
36177     "1f413": ["🐓", ["rooster"]],
36178     "1f414": ["🐔", ["chicken"]],
36179     "1f415": ["🐕", ["dog2"]],
36180     "1f416": ["🐖", ["pig2"]],
36181     "1f417": ["🐗", ["boar"]],
36182     "1f418": ["🐘", ["elephant"]],
36183     "1f419": ["🐙", ["octopus"]],
36184     "1f41a": ["🐚", ["shell"]],
36185     "1f41b": ["🐛", ["bug"]],
36186     "1f41c": ["🐜", ["ant"]],
36187     "1f41d": ["🐝", ["bee", "honeybee"]],
36188     "1f41e": ["🐞", ["beetle"]],
36189     "1f41f": ["🐟", ["fish"]],
36190     "1f420": ["🐠", ["tropical_fish"]],
36191     "1f421": ["🐡", ["blowfish"]],
36192     "1f422": ["🐢", ["turtle"]],
36193     "1f423": ["🐣", ["hatching_chick"]],
36194     "1f424": ["🐤", ["baby_chick"]],
36195     "1f425": ["🐥", ["hatched_chick"]],
36196     "1f426": ["🐦", ["bird"]],
36197     "1f427": ["🐧", ["penguin"]],
36198     "1f428": ["🐨", ["koala"]],
36199     "1f429": ["🐩", ["poodle"]],
36200     "1f42a": ["🐪", ["dromedary_camel"]],
36201     "1f42b": ["🐫", ["camel"]],
36202     "1f42c": ["🐬", ["dolphin", "flipper"]],
36203     "1f42d": ["🐭", ["mouse"]],
36204     "1f42e": ["🐮", ["cow"]],
36205     "1f42f": ["🐯", ["tiger"]],
36206     "1f430": ["🐰", ["rabbit"]],
36207     "1f431": ["🐱", ["cat"]],
36208     "1f432": ["🐲", ["dragon_face"]],
36209     "1f433": ["🐳", ["whale"]],
36210     "1f434": ["🐴", ["horse"]],
36211     "1f435": ["🐵", ["monkey_face"]],
36212     "1f436": ["🐶", ["dog"]],
36213     "1f437": ["🐷", ["pig"]],
36214     "1f438": ["🐸", ["frog"]],
36215     "1f439": ["🐹", ["hamster"]],
36216     "1f43a": ["🐺", ["wolf"]],
36217     "1f43b": ["🐻", ["bear"]],
36218     "1f43c": ["🐼", ["panda_face"]],
36219     "1f43d": ["🐽", ["pig_nose"]],
36220     "1f43e": ["🐾", ["feet", "paw_prints"]],
36221     "1f440": ["👀", ["eyes"]],
36222     "1f442": ["👂", ["ear"]],
36223     "1f443": ["👃", ["nose"]],
36224     "1f444": ["👄", ["lips"]],
36225     "1f445": ["👅", ["tongue"]],
36226     "1f446": ["👆", ["point_up_2"]],
36227     "1f447": ["👇", ["point_down"]],
36228     "1f448": ["👈", ["point_left"]],
36229     "1f449": ["👉", ["point_right"]],
36230     "1f44a": ["👊", ["facepunch", "punch"]],
36231     "1f44b": ["👋", ["wave"]],
36232     "1f44c": ["👌", ["ok_hand"]],
36233     "1f44d": ["👍", ["+1", "thumbsup"]],
36234     "1f44e": ["👎", ["-1", "thumbsdown"]],
36235     "1f44f": ["👏", ["clap"]],
36236     "1f450": ["👐", ["open_hands"]],
36237     "1f451": ["👑", ["crown"]],
36238     "1f452": ["👒", ["womans_hat"]],
36239     "1f453": ["👓", ["eyeglasses"]],
36240     "1f454": ["👔", ["necktie"]],
36241     "1f455": ["👕", ["shirt", "tshirt"]],
36242     "1f456": ["👖", ["jeans"]],
36243     "1f457": ["👗", ["dress"]],
36244     "1f458": ["👘", ["kimono"]],
36245     "1f459": ["👙", ["bikini"]],
36246     "1f45a": ["👚", ["womans_clothes"]],
36247     "1f45b": ["👛", ["purse"]],
36248     "1f45c": ["👜", ["handbag"]],
36249     "1f45d": ["👝", ["pouch"]],
36250     "1f45e": ["👞", ["mans_shoe", "shoe"]],
36251     "1f45f": ["👟", ["athletic_shoe"]],
36252     "1f460": ["👠", ["high_heel"]],
36253     "1f461": ["👡", ["sandal"]],
36254     "1f462": ["👢", ["boot"]],
36255     "1f463": ["👣", ["footprints"]],
36256     "1f464": ["👤", ["bust_in_silhouette"]],
36257     "1f465": ["👥", ["busts_in_silhouette"]],
36258     "1f466": ["👦", ["boy"]],
36259     "1f467": ["👧", ["girl"]],
36260     "1f468": ["👨", ["man"]],
36261     "1f469": ["👩", ["woman"]],
36262     "1f46a": ["👪", ["family"]],
36263     "1f46b": ["👫", ["couple"]],
36264     "1f46c": ["👬", ["two_men_holding_hands"]],
36265     "1f46d": ["👭", ["two_women_holding_hands"]],
36266     "1f46e": ["👮", ["cop"]],
36267     "1f46f": ["👯", ["dancers"]],
36268     "1f470": ["👰", ["bride_with_veil"]],
36269     "1f471": ["👱", ["person_with_blond_hair"]],
36270     "1f472": ["👲", ["man_with_gua_pi_mao"]],
36271     "1f473": ["👳", ["man_with_turban"]],
36272     "1f474": ["👴", ["older_man"]],
36273     "1f475": ["👵", ["older_woman"]],
36274     "1f476": ["👶", ["baby"]],
36275     "1f477": ["👷", ["construction_worker"]],
36276     "1f478": ["👸", ["princess"]],
36277     "1f479": ["👹", ["japanese_ogre"]],
36278     "1f47a": ["👺", ["japanese_goblin"]],
36279     "1f47b": ["👻", ["ghost"]],
36280     "1f47c": ["👼", ["angel"]],
36281     "1f47d": ["👽", ["alien"]],
36282     "1f47e": ["👾", ["space_invader"]],
36283     "1f47f": ["👿", ["imp"]],
36284     "1f480": ["💀", ["skull"]],
36285     "1f481": ["💁", ["information_desk_person"]],
36286     "1f482": ["💂", ["guardsman"]],
36287     "1f483": ["💃", ["dancer"]],
36288     "1f484": ["💄", ["lipstick"]],
36289     "1f485": ["💅", ["nail_care"]],
36290     "1f486": ["💆", ["massage"]],
36291     "1f487": ["💇", ["haircut"]],
36292     "1f488": ["💈", ["barber"]],
36293     "1f489": ["💉", ["syringe"]],
36294     "1f48a": ["💊", ["pill"]],
36295     "1f48b": ["💋", ["kiss"]],
36296     "1f48c": ["💌", ["love_letter"]],
36297     "1f48d": ["💍", ["ring"]],
36298     "1f48e": ["💎", ["gem"]],
36299     "1f48f": ["💏", ["couplekiss"]],
36300     "1f490": ["💐", ["bouquet"]],
36301     "1f491": ["💑", ["couple_with_heart"]],
36302     "1f492": ["💒", ["wedding"]],
36303     "1f493": ["💓", ["heartbeat"]],
36304     "1f494": ["💔", ["broken_heart"], "</3"],
36305     "1f495": ["💕", ["two_hearts"]],
36306     "1f496": ["💖", ["sparkling_heart"]],
36307     "1f497": ["💗", ["heartpulse"]],
36308     "1f498": ["💘", ["cupid"]],
36309     "1f499": ["💙", ["blue_heart"], "<3"],
36310     "1f49a": ["💚", ["green_heart"], "<3"],
36311     "1f49b": ["💛", ["yellow_heart"], "<3"],
36312     "1f49c": ["💜", ["purple_heart"], "<3"],
36313     "1f49d": ["💝", ["gift_heart"]],
36314     "1f49e": ["💞", ["revolving_hearts"]],
36315     "1f49f": ["💟", ["heart_decoration"]],
36316     "1f4a0": ["💠", ["diamond_shape_with_a_dot_inside"]],
36317     "1f4a1": ["💡", ["bulb"]],
36318     "1f4a2": ["💢", ["anger"]],
36319     "1f4a3": ["💣", ["bomb"]],
36320     "1f4a4": ["💤", ["zzz"]],
36321     "1f4a5": ["💥", ["boom", "collision"]],
36322     "1f4a6": ["💦", ["sweat_drops"]],
36323     "1f4a7": ["💧", ["droplet"]],
36324     "1f4a8": ["💨", ["dash"]],
36325     "1f4a9": ["💩", ["hankey", "poop", "shit"]],
36326     "1f4aa": ["💪", ["muscle"]],
36327     "1f4ab": ["💫", ["dizzy"]],
36328     "1f4ac": ["💬", ["speech_balloon"]],
36329     "1f4ad": ["💭", ["thought_balloon"]],
36330     "1f4ae": ["💮", ["white_flower"]],
36331     "1f4af": ["💯", ["100"]],
36332     "1f4b0": ["💰", ["moneybag"]],
36333     "1f4b1": ["💱", ["currency_exchange"]],
36334     "1f4b2": ["💲", ["heavy_dollar_sign"]],
36335     "1f4b3": ["💳", ["credit_card"]],
36336     "1f4b4": ["💴", ["yen"]],
36337     "1f4b5": ["💵", ["dollar"]],
36338     "1f4b6": ["💶", ["euro"]],
36339     "1f4b7": ["💷", ["pound"]],
36340     "1f4b8": ["💸", ["money_with_wings"]],
36341     "1f4b9": ["💹", ["chart"]],
36342     "1f4ba": ["💺", ["seat"]],
36343     "1f4bb": ["💻", ["computer"]],
36344     "1f4bc": ["💼", ["briefcase"]],
36345     "1f4bd": ["💽", ["minidisc"]],
36346     "1f4be": ["💾", ["floppy_disk"]],
36347     "1f4bf": ["💿", ["cd"]],
36348     "1f4c0": ["📀", ["dvd"]],
36349     "1f4c1": ["📁", ["file_folder"]],
36350     "1f4c2": ["📂", ["open_file_folder"]],
36351     "1f4c3": ["📃", ["page_with_curl"]],
36352     "1f4c4": ["📄", ["page_facing_up"]],
36353     "1f4c5": ["📅", ["date"]],
36354     "1f4c6": ["📆", ["calendar"]],
36355     "1f4c7": ["📇", ["card_index"]],
36356     "1f4c8": ["📈", ["chart_with_upwards_trend"]],
36357     "1f4c9": ["📉", ["chart_with_downwards_trend"]],
36358     "1f4ca": ["📊", ["bar_chart"]],
36359     "1f4cb": ["📋", ["clipboard"]],
36360     "1f4cc": ["📌", ["pushpin"]],
36361     "1f4cd": ["📍", ["round_pushpin"]],
36362     "1f4ce": ["📎", ["paperclip"]],
36363     "1f4cf": ["📏", ["straight_ruler"]],
36364     "1f4d0": ["📐", ["triangular_ruler"]],
36365     "1f4d1": ["📑", ["bookmark_tabs"]],
36366     "1f4d2": ["📒", ["ledger"]],
36367     "1f4d3": ["📓", ["notebook"]],
36368     "1f4d4": ["📔", ["notebook_with_decorative_cover"]],
36369     "1f4d5": ["📕", ["closed_book"]],
36370     "1f4d6": ["📖", ["book", "open_book"]],
36371     "1f4d7": ["📗", ["green_book"]],
36372     "1f4d8": ["📘", ["blue_book"]],
36373     "1f4d9": ["📙", ["orange_book"]],
36374     "1f4da": ["📚", ["books"]],
36375     "1f4db": ["📛", ["name_badge"]],
36376     "1f4dc": ["📜", ["scroll"]],
36377     "1f4dd": ["📝", ["memo", "pencil"]],
36378     "1f4de": ["📞", ["telephone_receiver"]],
36379     "1f4df": ["📟", ["pager"]],
36380     "1f4e0": ["📠", ["fax"]],
36381     "1f4e1": ["📡", ["satellite"]],
36382     "1f4e2": ["📢", ["loudspeaker"]],
36383     "1f4e3": ["📣", ["mega"]],
36384     "1f4e4": ["📤", ["outbox_tray"]],
36385     "1f4e5": ["📥", ["inbox_tray"]],
36386     "1f4e6": ["📦", ["package"]],
36387     "1f4e7": ["📧", ["e-mail"]],
36388     "1f4e8": ["📨", ["incoming_envelope"]],
36389     "1f4e9": ["📩", ["envelope_with_arrow"]],
36390     "1f4ea": ["📪", ["mailbox_closed"]],
36391     "1f4eb": ["📫", ["mailbox"]],
36392     "1f4ec": ["📬", ["mailbox_with_mail"]],
36393     "1f4ed": ["📭", ["mailbox_with_no_mail"]],
36394     "1f4ee": ["📮", ["postbox"]],
36395     "1f4ef": ["📯", ["postal_horn"]],
36396     "1f4f0": ["📰", ["newspaper"]],
36397     "1f4f1": ["📱", ["iphone"]],
36398     "1f4f2": ["📲", ["calling"]],
36399     "1f4f3": ["📳", ["vibration_mode"]],
36400     "1f4f4": ["📴", ["mobile_phone_off"]],
36401     "1f4f5": ["📵", ["no_mobile_phones"]],
36402     "1f4f6": ["📶", ["signal_strength"]],
36403     "1f4f7": ["📷", ["camera"]],
36404     "1f4f9": ["📹", ["video_camera"]],
36405     "1f4fa": ["📺", ["tv"]],
36406     "1f4fb": ["📻", ["radio"]],
36407     "1f4fc": ["📼", ["vhs"]],
36408     "1f500": ["🔀", ["twisted_rightwards_arrows"]],
36409     "1f501": ["🔁", ["repeat"]],
36410     "1f502": ["🔂", ["repeat_one"]],
36411     "1f503": ["🔃", ["arrows_clockwise"]],
36412     "1f504": ["🔄", ["arrows_counterclockwise"]],
36413     "1f505": ["🔅", ["low_brightness"]],
36414     "1f506": ["🔆", ["high_brightness"]],
36415     "1f507": ["🔇", ["mute"]],
36416     "1f508": ["🔉", ["speaker"]],
36417     "1f509": ["🔉", ["sound"]],
36418     "1f50a": ["🔊", ["loud_sound"]],
36419     "1f50b": ["🔋", ["battery"]],
36420     "1f50c": ["🔌", ["electric_plug"]],
36421     "1f50d": ["🔍", ["mag"]],
36422     "1f50e": ["🔎", ["mag_right"]],
36423     "1f50f": ["🔏", ["lock_with_ink_pen"]],
36424     "1f510": ["🔐", ["closed_lock_with_key"]],
36425     "1f511": ["🔑", ["key"]],
36426     "1f512": ["🔒", ["lock"]],
36427     "1f513": ["🔓", ["unlock"]],
36428     "1f514": ["🔔", ["bell"]],
36429     "1f515": ["🔕", ["no_bell"]],
36430     "1f516": ["🔖", ["bookmark"]],
36431     "1f517": ["🔗", ["link"]],
36432     "1f518": ["🔘", ["radio_button"]],
36433     "1f519": ["🔙", ["back"]],
36434     "1f51a": ["🔚", ["end"]],
36435     "1f51b": ["🔛", ["on"]],
36436     "1f51c": ["🔜", ["soon"]],
36437     "1f51d": ["🔝", ["top"]],
36438     "1f51e": ["🔞", ["underage"]],
36439     "1f51f": ["🔟", ["keycap_ten"]],
36440     "1f520": ["🔠", ["capital_abcd"]],
36441     "1f521": ["🔡", ["abcd"]],
36442     "1f522": ["🔢", ["1234"]],
36443     "1f523": ["🔣", ["symbols"]],
36444     "1f524": ["🔤", ["abc"]],
36445     "1f525": ["🔥", ["fire"]],
36446     "1f526": ["🔦", ["flashlight"]],
36447     "1f527": ["🔧", ["wrench"]],
36448     "1f528": ["🔨", ["hammer"]],
36449     "1f529": ["🔩", ["nut_and_bolt"]],
36450     "1f52a": ["🔪", ["hocho"]],
36451     "1f52b": ["🔫", ["gun"]],
36452     "1f52c": ["🔬", ["microscope"]],
36453     "1f52d": ["🔭", ["telescope"]],
36454     "1f52e": ["🔮", ["crystal_ball"]],
36455     "1f52f": ["🔯", ["six_pointed_star"]],
36456     "1f530": ["🔰", ["beginner"]],
36457     "1f531": ["🔱", ["trident"]],
36458     "1f532": ["🔲", ["black_square_button"]],
36459     "1f533": ["🔳", ["white_square_button"]],
36460     "1f534": ["🔴", ["red_circle"]],
36461     "1f535": ["🔵", ["large_blue_circle"]],
36462     "1f536": ["🔶", ["large_orange_diamond"]],
36463     "1f537": ["🔷", ["large_blue_diamond"]],
36464     "1f538": ["🔸", ["small_orange_diamond"]],
36465     "1f539": ["🔹", ["small_blue_diamond"]],
36466     "1f53a": ["🔺", ["small_red_triangle"]],
36467     "1f53b": ["🔻", ["small_red_triangle_down"]],
36468     "1f53c": ["🔼", ["arrow_up_small"]],
36469     "1f53d": ["🔽", ["arrow_down_small"]],
36470     "1f550": ["🕐", ["clock1"]],
36471     "1f551": ["🕑", ["clock2"]],
36472     "1f552": ["🕒", ["clock3"]],
36473     "1f553": ["🕓", ["clock4"]],
36474     "1f554": ["🕔", ["clock5"]],
36475     "1f555": ["🕕", ["clock6"]],
36476     "1f556": ["🕖", ["clock7"]],
36477     "1f557": ["🕗", ["clock8"]],
36478     "1f558": ["🕘", ["clock9"]],
36479     "1f559": ["🕙", ["clock10"]],
36480     "1f55a": ["🕚", ["clock11"]],
36481     "1f55b": ["🕛", ["clock12"]],
36482     "1f55c": ["🕜", ["clock130"]],
36483     "1f55d": ["🕝", ["clock230"]],
36484     "1f55e": ["🕞", ["clock330"]],
36485     "1f55f": ["🕟", ["clock430"]],
36486     "1f560": ["🕠", ["clock530"]],
36487     "1f561": ["🕡", ["clock630"]],
36488     "1f562": ["🕢", ["clock730"]],
36489     "1f563": ["🕣", ["clock830"]],
36490     "1f564": ["🕤", ["clock930"]],
36491     "1f565": ["🕥", ["clock1030"]],
36492     "1f566": ["🕦", ["clock1130"]],
36493     "1f567": ["🕧", ["clock1230"]],
36494     "1f5fb": ["🗻", ["mount_fuji"]],
36495     "1f5fc": ["🗼", ["tokyo_tower"]],
36496     "1f5fd": ["🗽", ["statue_of_liberty"]],
36497     "1f5fe": ["🗾", ["japan"]],
36498     "1f5ff": ["🗿", ["moyai"]],
36499     "1f600": ["😀", ["grinning"]],
36500     "1f601": ["😁", ["grin"]],
36501     "1f602": ["😂", ["joy"]],
36502     "1f603": ["😃", ["smiley"], ":)"],
36503     "1f604": ["😄", ["smile"], ":)"],
36504     "1f605": ["😅", ["sweat_smile"]],
36505     "1f606": ["😆", ["satisfied"]],
36506     "1f607": ["😇", ["innocent"]],
36507     "1f608": ["😈", ["smiling_imp"]],
36508     "1f609": ["😉", ["wink"], ";)"],
36509     "1f60a": ["😊", ["blush"]],
36510     "1f60b": ["😋", ["yum"]],
36511     "1f60c": ["😌", ["relieved"]],
36512     "1f60d": ["😍", ["heart_eyes"]],
36513     "1f60e": ["😎", ["sunglasses"]],
36514     "1f60f": ["😏", ["smirk"]],
36515     "1f610": ["😐", ["neutral_face"]],
36516     "1f611": ["😑", ["expressionless"]],
36517     "1f612": ["😒", ["unamused"]],
36518     "1f613": ["😓", ["sweat"]],
36519     "1f614": ["😔", ["pensive"]],
36520     "1f615": ["😕", ["confused"]],
36521     "1f616": ["😖", ["confounded"]],
36522     "1f617": ["😗", ["kissing"]],
36523     "1f618": ["😘", ["kissing_heart"]],
36524     "1f619": ["😙", ["kissing_smiling_eyes"]],
36525     "1f61a": ["😚", ["kissing_closed_eyes"]],
36526     "1f61b": ["😛", ["stuck_out_tongue"]],
36527     "1f61c": ["😜", ["stuck_out_tongue_winking_eye"], ";p"],
36528     "1f61d": ["😝", ["stuck_out_tongue_closed_eyes"]],
36529     "1f61e": ["😞", ["disappointed"], ":("],
36530     "1f61f": ["😟", ["worried"]],
36531     "1f620": ["😠", ["angry"]],
36532     "1f621": ["😡", ["rage"]],
36533     "1f622": ["😢", ["cry"], ":'("],
36534     "1f623": ["😣", ["persevere"]],
36535     "1f624": ["😤", ["triumph"]],
36536     "1f625": ["😥", ["disappointed_relieved"]],
36537     "1f626": ["😦", ["frowning"]],
36538     "1f627": ["😧", ["anguished"]],
36539     "1f628": ["😨", ["fearful"]],
36540     "1f629": ["😩", ["weary"]],
36541     "1f62a": ["😪", ["sleepy"]],
36542     "1f62b": ["😫", ["tired_face"]],
36543     "1f62c": ["😬", ["grimacing"]],
36544     "1f62d": ["😭", ["sob"], ":'("],
36545     "1f62e": ["😮", ["open_mouth"]],
36546     "1f62f": ["😯", ["hushed"]],
36547     "1f630": ["😰", ["cold_sweat"]],
36548     "1f631": ["😱", ["scream"]],
36549     "1f632": ["😲", ["astonished"]],
36550     "1f633": ["😳", ["flushed"]],
36551     "1f634": ["😴", ["sleeping"]],
36552     "1f635": ["😵", ["dizzy_face"]],
36553     "1f636": ["😶", ["no_mouth"]],
36554     "1f637": ["😷", ["mask"]],
36555     "1f638": ["😸", ["smile_cat"]],
36556     "1f639": ["😹", ["joy_cat"]],
36557     "1f63a": ["😺", ["smiley_cat"]],
36558     "1f63b": ["😻", ["heart_eyes_cat"]],
36559     "1f63c": ["😼", ["smirk_cat"]],
36560     "1f63d": ["😽", ["kissing_cat"]],
36561     "1f63e": ["😾", ["pouting_cat"]],
36562     "1f63f": ["😿", ["crying_cat_face"]],
36563     "1f640": ["🙀", ["scream_cat"]],
36564     "1f645": ["🙅", ["no_good"]],
36565     "1f646": ["🙆", ["ok_woman"]],
36566     "1f647": ["🙇", ["bow"]],
36567     "1f648": ["🙈", ["see_no_evil"]],
36568     "1f649": ["🙉", ["hear_no_evil"]],
36569     "1f64a": ["🙊", ["speak_no_evil"]],
36570     "1f64b": ["🙋", ["raising_hand"]],
36571     "1f64c": ["🙌", ["raised_hands"]],
36572     "1f64d": ["🙍", ["person_frowning"]],
36573     "1f64e": ["🙎", ["person_with_pouting_face"]],
36574     "1f64f": ["🙏", ["pray"]],
36575     "1f680": ["🚀", ["rocket"]],
36576     "1f681": ["🚁", ["helicopter"]],
36577     "1f682": ["🚂", ["steam_locomotive"]],
36578     "1f683": ["🚃", ["railway_car"]],
36579     "1f68b": ["🚋", ["train"]],
36580     "1f684": ["🚄", ["bullettrain_side"]],
36581     "1f685": ["🚅", ["bullettrain_front"]],
36582     "1f686": ["🚆", ["train2"]],
36583     "1f687": ["🚇", ["metro"]],
36584     "1f688": ["🚈", ["light_rail"]],
36585     "1f689": ["🚉", ["station"]],
36586     "1f68a": ["🚊", ["tram"]],
36587     "1f68c": ["🚌", ["bus"]],
36588     "1f68d": ["🚍", ["oncoming_bus"]],
36589     "1f68e": ["🚎", ["trolleybus"]],
36590     "1f68f": ["🚏", ["busstop"]],
36591     "1f690": ["🚐", ["minibus"]],
36592     "1f691": ["🚑", ["ambulance"]],
36593     "1f692": ["🚒", ["fire_engine"]],
36594     "1f693": ["🚓", ["police_car"]],
36595     "1f694": ["🚔", ["oncoming_police_car"]],
36596     "1f695": ["🚕", ["taxi"]],
36597     "1f696": ["🚖", ["oncoming_taxi"]],
36598     "1f697": ["🚗", ["car", "red_car"]],
36599     "1f698": ["🚘", ["oncoming_automobile"]],
36600     "1f699": ["🚙", ["blue_car"]],
36601     "1f69a": ["🚚", ["truck"]],
36602     "1f69b": ["🚛", ["articulated_lorry"]],
36603     "1f69c": ["🚜", ["tractor"]],
36604     "1f69d": ["🚝", ["monorail"]],
36605     "1f69e": ["🚞", ["mountain_railway"]],
36606     "1f69f": ["🚟", ["suspension_railway"]],
36607     "1f6a0": ["🚠", ["mountain_cableway"]],
36608     "1f6a1": ["🚡", ["aerial_tramway"]],
36609     "1f6a2": ["🚢", ["ship"]],
36610     "1f6a3": ["🚣", ["rowboat"]],
36611     "1f6a4": ["🚤", ["speedboat"]],
36612     "1f6a5": ["🚥", ["traffic_light"]],
36613     "1f6a6": ["🚦", ["vertical_traffic_light"]],
36614     "1f6a7": ["🚧", ["construction"]],
36615     "1f6a8": ["🚨", ["rotating_light"]],
36616     "1f6a9": ["🚩", ["triangular_flag_on_post"]],
36617     "1f6aa": ["🚪", ["door"]],
36618     "1f6ab": ["🚫", ["no_entry_sign"]],
36619     "1f6ac": ["🚬", ["smoking"]],
36620     "1f6ad": ["🚭", ["no_smoking"]],
36621     "1f6ae": ["🚮", ["put_litter_in_its_place"]],
36622     "1f6af": ["🚯", ["do_not_litter"]],
36623     "1f6b0": ["🚰", ["potable_water"]],
36624     "1f6b1": ["🚱", ["non-potable_water"]],
36625     "1f6b2": ["🚲", ["bike"]],
36626     "1f6b3": ["🚳", ["no_bicycles"]],
36627     "1f6b4": ["🚴", ["bicyclist"]],
36628     "1f6b5": ["🚵", ["mountain_bicyclist"]],
36629     "1f6b6": ["🚶", ["walking"]],
36630     "1f6b7": ["🚷", ["no_pedestrians"]],
36631     "1f6b8": ["🚸", ["children_crossing"]],
36632     "1f6b9": ["🚹", ["mens"]],
36633     "1f6ba": ["🚺", ["womens"]],
36634     "1f6bb": ["🚻", ["restroom"]],
36635     "1f6bc": ["🚼", ["baby_symbol"]],
36636     "1f6bd": ["🚽", ["toilet"]],
36637     "1f6be": ["🚾", ["wc"]],
36638     "1f6bf": ["🚿", ["shower"]],
36639     "1f6c0": ["🛀", ["bath"]],
36640     "1f6c1": ["🛁", ["bathtub"]],
36641     "1f6c2": ["🛂", ["passport_control"]],
36642     "1f6c3": ["🛃", ["customs"]],
36643     "1f6c4": ["🛄", ["baggage_claim"]],
36644     "1f6c5": ["🛅", ["left_luggage"]],
36645     "0023": ["#⃣", ["hash"]],
36646     "0030": ["0⃣", ["zero"]],
36647     "0031": ["1⃣", ["one"]],
36648     "0032": ["2⃣", ["two"]],
36649     "0033": ["3⃣", ["three"]],
36650     "0034": ["4⃣", ["four"]],
36651     "0035": ["5⃣", ["five"]],
36652     "0036": ["6⃣", ["six"]],
36653     "0037": ["7⃣", ["seven"]],
36654     "0038": ["8⃣", ["eight"]],
36655     "0039": ["9⃣", ["nine"]],
36656     "1f1e8-1f1f3": ["🇨🇳", ["cn"]],
36657     "1f1e9-1f1ea": ["🇩🇪", ["de"]],
36658     "1f1ea-1f1f8": ["🇪🇸", ["es"]],
36659     "1f1eb-1f1f7": ["🇫🇷", ["fr"]],
36660     "1f1ec-1f1e7": ["🇬🇧", ["gb", "uk"]],
36661     "1f1ee-1f1f9": ["🇮🇹", ["it"]],
36662     "1f1ef-1f1f5": ["🇯🇵", ["jp"]],
36663     "1f1f0-1f1f7": ["🇰🇷", ["kr"]],
36664     "1f1f7-1f1fa": ["🇷🇺", ["ru"]],
36665     "1f1fa-1f1f8": ["🇺🇸", ["us"]]
36666 }, Config.EmojiCategories = [
36667     ["1f604", "1f603", "1f600", "1f60a", "263a", "1f609", "1f60d", "1f618", "1f61a", "1f617", "1f619", "1f61c", "1f61d", "1f61b", "1f633", "1f601", "1f614", "1f60c", "1f612", "1f61e", "1f623", "1f622", "1f602", "1f62d", "1f62a", "1f625", "1f630", "1f605", "1f613", "1f629", "1f62b", "1f628", "1f631", "1f620", "1f621", "1f624", "1f616", "1f606", "1f60b", "1f637", "1f60e", "1f634", "1f635", "1f632", "1f61f", "1f626", "1f627", "1f608", "1f47f", "1f62e", "1f62c", "1f610", "1f615", "1f62f", "1f636", "1f607", "1f60f", "1f611", "1f472", "1f473", "1f46e", "1f477", "1f482", "1f476", "1f466", "1f467", "1f468", "1f469", "1f474", "1f475", "1f471", "1f47c", "1f478", "1f63a", "1f638", "1f63b", "1f63d", "1f63c", "1f640", "1f63f", "1f639", "1f63e", "1f479", "1f47a", "1f648", "1f649", "1f64a", "1f480", "1f47d", "1f4a9", "1f525", "2728", "1f31f", "1f4ab", "1f4a5", "1f4a2", "1f4a6", "1f4a7", "1f4a4", "1f4a8", "1f442", "1f440", "1f443", "1f445", "1f444", "1f44d", "1f44e", "1f44c", "1f44a", "270a", "270c", "1f44b", "270b", "1f450", "1f446", "1f447", "1f449", "1f448", "1f64c", "1f64f", "261d", "1f44f", "1f4aa", "1f6b6", "1f3c3", "1f483", "1f46b", "1f46a", "1f46c", "1f46d", "1f48f", "1f491", "1f46f", "1f646", "1f645", "1f481", "1f64b", "1f486", "1f487", "1f485", "1f470", "1f64e", "1f64d", "1f647", "1f3a9", "1f451", "1f452", "1f45f", "1f45e", "1f461", "1f460", "1f462", "1f455", "1f454", "1f45a", "1f457", "1f3bd", "1f456", "1f458", "1f459", "1f4bc", "1f45c", "1f45d", "1f45b", "1f453", "1f380", "1f302", "1f484", "1f49b", "1f499", "1f49c", "1f49a", "2764", "1f494", "1f497", "1f493", "1f495", "1f496", "1f49e", "1f498", "1f48c", "1f48b", "1f48d", "1f48e", "1f464", "1f465", "1f4ac", "1f463", "1f4ad"],
36668     ["1f436", "1f43a", "1f431", "1f42d", "1f439", "1f430", "1f438", "1f42f", "1f428", "1f43b", "1f437", "1f43d", "1f42e", "1f417", "1f435", "1f412", "1f434", "1f411", "1f418", "1f43c", "1f427", "1f426", "1f424", "1f425", "1f423", "1f414", "1f40d", "1f422", "1f41b", "1f41d", "1f41c", "1f41e", "1f40c", "1f419", "1f41a", "1f420", "1f41f", "1f42c", "1f433", "1f40b", "1f404", "1f40f", "1f400", "1f403", "1f405", "1f407", "1f409", "1f40e", "1f410", "1f413", "1f415", "1f416", "1f401", "1f402", "1f432", "1f421", "1f40a", "1f42b", "1f42a", "1f406", "1f408", "1f429", "1f43e", "1f490", "1f338", "1f337", "1f340", "1f339", "1f33b", "1f33a", "1f341", "1f343", "1f342", "1f33f", "1f33e", "1f344", "1f335", "1f334", "1f332", "1f333", "1f330", "1f331", "1f33c", "1f310", "1f31e", "1f31d", "1f31a", "1f311", "1f312", "1f313", "1f314", "1f315", "1f316", "1f317", "1f318", "1f31c", "1f31b", "1f319", "1f30d", "1f30e", "1f30f", "1f30b", "1f30c", "1f320", "2b50", "2600", "26c5", "2601", "26a1", "2614", "2744", "26c4", "1f300", "1f301", "1f308", "1f30a"],
36669     ["1f38d", "1f49d", "1f38e", "1f392", "1f393", "1f38f", "1f386", "1f387", "1f390", "1f391", "1f383", "1f47b", "1f385", "1f384", "1f381", "1f38b", "1f389", "1f38a", "1f388", "1f38c", "1f52e", "1f3a5", "1f4f7", "1f4f9", "1f4fc", "1f4bf", "1f4c0", "1f4bd", "1f4be", "1f4bb", "1f4f1", "260e", "1f4de", "1f4df", "1f4e0", "1f4e1", "1f4fa", "1f4fb", "1f50a", "1f509", "1f508", "1f507", "1f514", "1f515", "1f4e3", "1f4e2", "23f3", "231b", "23f0", "231a", "1f513", "1f512", "1f50f", "1f510", "1f511", "1f50e", "1f4a1", "1f526", "1f506", "1f505", "1f50c", "1f50b", "1f50d", "1f6c0", "1f6c1", "1f6bf", "1f6bd", "1f527", "1f529", "1f528", "1f6aa", "1f6ac", "1f4a3", "1f52b", "1f52a", "1f48a", "1f489", "1f4b0", "1f4b4", "1f4b5", "1f4b7", "1f4b6", "1f4b3", "1f4b8", "1f4f2", "1f4e7", "1f4e5", "1f4e4", "2709", "1f4e9", "1f4e8", "1f4ef", "1f4eb", "1f4ea", "1f4ec", "1f4ed", "1f4ee", "1f4e6", "1f4dd", "1f4c4", "1f4c3", "1f4d1", "1f4ca", "1f4c8", "1f4c9", "1f4dc", "1f4cb", "1f4c5", "1f4c6", "1f4c7", "1f4c1", "1f4c2", "2702", "1f4cc", "1f4ce", "2712", "270f", "1f4cf", "1f4d0", "1f4d5", "1f4d7", "1f4d8", "1f4d9", "1f4d3", "1f4d4", "1f4d2", "1f4da", "1f4d6", "1f516", "1f4db", "1f52c", "1f52d", "1f4f0", "1f3a8", "1f3ac", "1f3a4", "1f3a7", "1f3bc", "1f3b5", "1f3b6", "1f3b9", "1f3bb", "1f3ba", "1f3b7", "1f3b8", "1f47e", "1f3ae", "1f0cf", "1f3b4", "1f004", "1f3b2", "1f3af", "1f3c8", "1f3c0", "26bd", "26be", "1f3be", "1f3b1", "1f3c9", "1f3b3", "26f3", "1f6b5", "1f6b4", "1f3c1", "1f3c7", "1f3c6", "1f3bf", "1f3c2", "1f3ca", "1f3c4", "1f3a3", "2615", "1f375", "1f376", "1f37c", "1f37a", "1f37b", "1f378", "1f379", "1f377", "1f374", "1f355", "1f354", "1f35f", "1f357", "1f356", "1f35d", "1f35b", "1f364", "1f371", "1f363", "1f365", "1f359", "1f358", "1f35a", "1f35c", "1f372", "1f362", "1f361", "1f373", "1f35e", "1f369", "1f36e", "1f366", "1f368", "1f367", "1f382", "1f370", "1f36a", "1f36b", "1f36c", "1f36d", "1f36f", "1f34e", "1f34f", "1f34a", "1f34b", "1f352", "1f347", "1f349", "1f353", "1f351", "1f348", "1f34c", "1f350", "1f34d", "1f360", "1f346", "1f345", "1f33d"],
36670     ["1f3e0", "1f3e1", "1f3eb", "1f3e2", "1f3e3", "1f3e5", "1f3e6", "1f3ea", "1f3e9", "1f3e8", "1f492", "26ea", "1f3ec", "1f3e4", "1f307", "1f306", "1f3ef", "1f3f0", "26fa", "1f3ed", "1f5fc", "1f5fe", "1f5fb", "1f304", "1f305", "1f303", "1f5fd", "1f309", "1f3a0", "1f3a1", "26f2", "1f3a2", "1f6a2", "26f5", "1f6a4", "1f6a3", "2693", "1f680", "2708", "1f4ba", "1f681", "1f682", "1f68a", "1f689", "1f69e", "1f686", "1f684", "1f685", "1f688", "1f687", "1f69d", "1f683", "1f68b", "1f68e", "1f68c", "1f68d", "1f699", "1f698", "1f697", "1f695", "1f696", "1f69b", "1f69a", "1f6a8", "1f693", "1f694", "1f692", "1f691", "1f690", "1f6b2", "1f6a1", "1f69f", "1f6a0", "1f69c", "1f488", "1f68f", "1f3ab", "1f6a6", "1f6a5", "26a0", "1f6a7", "1f530", "26fd", "1f3ee", "1f3b0", "2668", "1f5ff", "1f3aa", "1f3ad", "1f4cd", "1f6a9", "1f1ef-1f1f5", "1f1f0-1f1f7", "1f1e9-1f1ea", "1f1e8-1f1f3", "1f1fa-1f1f8", "1f1eb-1f1f7", "1f1ea-1f1f8", "1f1ee-1f1f9", "1f1f7-1f1fa", "1f1ec-1f1e7"],
36671     ["0031", "0032", "0033", "0034", "0035", "0036", "0037", "0038", "0039", "0030", "1f51f", "1f522", "0023", "1f523", "2b06", "2b07", "2b05", "27a1", "1f520", "1f521", "1f524", "2197", "2196", "2198", "2199", "2194", "2195", "1f504", "25c0", "25b6", "1f53c", "1f53d", "21a9", "21aa", "2139", "23ea", "23e9", "23eb", "23ec", "2935", "2934", "1f197", "1f500", "1f501", "1f502", "1f195", "1f199", "1f192", "1f193", "1f196", "1f4f6", "1f3a6", "1f201", "1f22f", "1f233", "1f235", "1f234", "1f232", "1f250", "1f239", "1f23a", "1f236", "1f21a", "1f6bb", "1f6b9", "1f6ba", "1f6bc", "1f6be", "1f6b0", "1f6ae", "1f17f", "267f", "1f6ad", "1f237", "1f238", "1f202", "24c2", "1f6c2", "1f6c4", "1f6c5", "1f6c3", "1f251", "3299", "3297", "1f191", "1f198", "1f194", "1f6ab", "1f51e", "1f4f5", "1f6af", "1f6b1", "1f6b3", "1f6b7", "1f6b8", "26d4", "2733", "2747", "274e", "2705", "2734", "1f49f", "1f19a", "1f4f3", "1f4f4", "1f170", "1f171", "1f18e", "1f17e", "1f4a0", "27bf", "267b", "2648", "2649", "264a", "264b", "264c", "264d", "264e", "264f", "2650", "2651", "2652", "2653", "26ce", "1f52f", "1f3e7", "1f4b9", "1f4b2", "1f4b1", "00a9", "00ae", "2122", "274c", "203c", "2049", "2757", "2753", "2755", "2754", "2b55", "1f51d", "1f51a", "1f519", "1f51b", "1f51c", "1f503", "1f55b", "1f567", "1f550", "1f55c", "1f551", "1f55d", "1f552", "1f55e", "1f553", "1f55f", "1f554", "1f560", "1f555", "1f556", "1f557", "1f558", "1f559", "1f55a", "1f561", "1f562", "1f563", "1f564", "1f565", "1f566", "2716", "2795", "2796", "2797", "2660", "2665", "2663", "2666", "1f4ae", "1f4af", "2714", "2611", "1f518", "1f517", "27b0", "3030", "303d", "1f531", "25fc", "25fb", "25fe", "25fd", "25aa", "25ab", "1f53a", "1f532", "1f533", "26ab", "26aa", "1f534", "1f535", "1f53b", "2b1c", "2b1b", "1f536", "1f537", "1f538", "1f539"]
36672 ], Config.EmojiCategorySpritesheetDimens = [
36673     [7, 27],
36674     [4, 29],
36675     [7, 33],
36676     [3, 34],
36677     [7, 34]
36678 ], Config.emoji_data = {
36679     "00a9": [
36680         ["©"], "\e24e", "\feb29", ["copyright"], 0, 0
36681     ],
36682     "00ae": [
36683         ["®"], "\e24f", "\feb2d", ["registered"], 0, 1
36684     ],
36685     "203c": [
36686         ["‼️", "‼"], "", "\feb06", ["bangbang"], 0, 2
36687     ],
36688     2049: [
36689         ["⁉️", "⁉"], "", "\feb05", ["interrobang"], 0, 3
36690     ],
36691     2122: [
36692         ["™"], "\e537", "\feb2a", ["tm"], 0, 4
36693     ],
36694     2139: [
36695         ["ℹ️", "ℹ"], "", "\feb47", ["information_source"], 0, 5
36696     ],
36697     2194: [
36698         ["↔️", "↔"], "", "\feaf6", ["left_right_arrow"], 0, 6
36699     ],
36700     2195: [
36701         ["↕️", "↕"], "", "\feaf7", ["arrow_up_down"], 0, 7
36702     ],
36703     2196: [
36704         ["↖️", "↖"], "\e237", "\feaf2", ["arrow_upper_left"], 0, 8
36705     ],
36706     2197: [
36707         ["↗️", "↗"], "\e236", "\feaf0", ["arrow_upper_right"], 0, 9
36708     ],
36709     2198: [
36710         ["↘️", "↘"], "\e238", "\feaf1", ["arrow_lower_right"], 0, 10
36711     ],
36712     2199: [
36713         ["↙️", "↙"], "\e239", "\feaf3", ["arrow_lower_left"], 0, 11
36714     ],
36715     "21a9": [
36716         ["↩️", "↩"], "", "\feb83", ["leftwards_arrow_with_hook"], 0, 12
36717     ],
36718     "21aa": [
36719         ["↪️", "↪"], "", "\feb88", ["arrow_right_hook"], 0, 13
36720     ],
36721     "231a": [
36722         ["⌚️", "⌚"], "", "\fe01d", ["watch"], 0, 14
36723     ],
36724     "231b": [
36725         ["⌛️", "⌛"], "", "\fe01c", ["hourglass"], 0, 15
36726     ],
36727     "23e9": [
36728         ["⏩"], "\e23c", "\feafe", ["fast_forward"], 0, 16
36729     ],
36730     "23ea": [
36731         ["⏪"], "\e23d", "\feaff", ["rewind"], 0, 17
36732     ],
36733     "23eb": [
36734         ["⏫"], "", "\feb03", ["arrow_double_up"], 0, 18
36735     ],
36736     "23ec": [
36737         ["⏬"], "", "\feb02", ["arrow_double_down"], 0, 19
36738     ],
36739     "23f0": [
36740         ["⏰"], "\e02d", "\fe02a", ["alarm_clock"], 0, 20
36741     ],
36742     "23f3": [
36743         ["⏳"], "", "\fe01b", ["hourglass_flowing_sand"], 0, 21
36744     ],
36745     "24c2": [
36746         ["Ⓜ️", "Ⓜ"], "\e434", "\fe7e1", ["m"], 0, 22
36747     ],
36748     "25aa": [
36749         ["▪️", "▪"], "\e21a", "\feb6e", ["black_small_square"], 0, 23
36750     ],
36751     "25ab": [
36752         ["▫️", "▫"], "\e21b", "\feb6d", ["white_small_square"], 0, 24
36753     ],
36754     "25b6": [
36755         ["▶️", "▶"], "\e23a", "\feafc", ["arrow_forward"], 0, 25
36756     ],
36757     "25c0": [
36758         ["◀️", "◀"], "\e23b", "\feafd", ["arrow_backward"], 0, 26
36759     ],
36760     "25fb": [
36761         ["◻️", "◻"], "\e21b", "\feb71", ["white_medium_square"], 0, 27
36762     ],
36763     "25fc": [
36764         ["◼️", "◼"], "\e21a", "\feb72", ["black_medium_square"], 0, 28
36765     ],
36766     "25fd": [
36767         ["◽️", "◽"], "\e21b", "\feb6f", ["white_medium_small_square"], 0, 29
36768     ],
36769     "25fe": [
36770         ["◾️", "◾"], "\e21a", "\feb70", ["black_medium_small_square"], 1, 0
36771     ],
36772     2600: [
36773         ["☀️", "☀"], "\e04a", "\fe000", ["sunny"], 1, 1
36774     ],
36775     2601: [
36776         ["☁️", "☁"], "\e049", "\fe001", ["cloud"], 1, 2
36777     ],
36778     "260e": [
36779         ["☎️", "☎"], "\e009", "\fe523", ["phone", "telephone"], 1, 3
36780     ],
36781     2611: [
36782         ["☑️", "☑"], "", "\feb8b", ["ballot_box_with_check"], 1, 4
36783     ],
36784     2614: [
36785         ["☔️", "☔"], "\e04b", "\fe002", ["umbrella"], 1, 5
36786     ],
36787     2615: [
36788         ["☕️", "☕"], "\e045", "\fe981", ["coffee"], 1, 6
36789     ],
36790     "261d": [
36791         ["☝️", "☝"], "\e00f", "\feb98", ["point_up"], 1, 7
36792     ],
36793     "263a": [
36794         ["☺️", "☺"], "\e414", "\fe336", ["relaxed"], 1, 8
36795     ],
36796     2648: [
36797         ["♈️", "♈"], "\e23f", "\fe02b", ["aries"], 1, 9
36798     ],
36799     2649: [
36800         ["♉️", "♉"], "\e240", "\fe02c", ["taurus"], 1, 10
36801     ],
36802     "264a": [
36803         ["♊️", "♊"], "\e241", "\fe02d", ["gemini"], 1, 11
36804     ],
36805     "264b": [
36806         ["♋️", "♋"], "\e242", "\fe02e", ["cancer"], 1, 12
36807     ],
36808     "264c": [
36809         ["♌️", "♌"], "\e243", "\fe02f", ["leo"], 1, 13
36810     ],
36811     "264d": [
36812         ["♍️", "♍"], "\e244", "\fe030", ["virgo"], 1, 14
36813     ],
36814     "264e": [
36815         ["♎️", "♎"], "\e245", "\fe031", ["libra"], 1, 15
36816     ],
36817     "264f": [
36818         ["♏️", "♏"], "\e246", "\fe032", ["scorpius"], 1, 16
36819     ],
36820     2650: [
36821         ["♐️", "♐"], "\e247", "\fe033", ["sagittarius"], 1, 17
36822     ],
36823     2651: [
36824         ["♑️", "♑"], "\e248", "\fe034", ["capricorn"], 1, 18
36825     ],
36826     2652: [
36827         ["♒️", "♒"], "\e249", "\fe035", ["aquarius"], 1, 19
36828     ],
36829     2653: [
36830         ["♓️", "♓"], "\e24a", "\fe036", ["pisces"], 1, 20
36831     ],
36832     2660: [
36833         ["♠️", "♠"], "\e20e", "\feb1b", ["spades"], 1, 21
36834     ],
36835     2663: [
36836         ["♣️", "♣"], "\e20f", "\feb1d", ["clubs"], 1, 22
36837     ],
36838     2665: [
36839         ["♥️", "♥"], "\e20c", "\feb1a", ["hearts"], 1, 23
36840     ],
36841     2666: [
36842         ["♦️", "♦"], "\e20d", "\feb1c", ["diamonds"], 1, 24
36843     ],
36844     2668: [
36845         ["♨️", "♨"], "\e123", "\fe7fa", ["hotsprings"], 1, 25
36846     ],
36847     "267b": [
36848         ["♻️", "♻"], "", "\feb2c", ["recycle"], 1, 26
36849     ],
36850     "267f": [
36851         ["♿️", "♿"], "\e20a", "\feb20", ["wheelchair"], 1, 27
36852     ],
36853     2693: [
36854         ["⚓️", "⚓"], "\e202", "\fe4c1", ["anchor"], 1, 28
36855     ],
36856     "26a0": [
36857         ["⚠️", "⚠"], "\e252", "\feb23", ["warning"], 1, 29
36858     ],
36859     "26a1": [
36860         ["⚡️", "⚡"], "\e13d", "\fe004", ["zap"], 2, 0
36861     ],
36862     "26aa": [
36863         ["⚪️", "⚪"], "\e219", "\feb65", ["white_circle"], 2, 1
36864     ],
36865     "26ab": [
36866         ["⚫️", "⚫"], "\e219", "\feb66", ["black_circle"], 2, 2
36867     ],
36868     "26bd": [
36869         ["⚽️", "⚽"], "\e018", "\fe7d4", ["soccer"], 2, 3
36870     ],
36871     "26be": [
36872         ["⚾️", "⚾"], "\e016", "\fe7d1", ["baseball"], 2, 4
36873     ],
36874     "26c4": [
36875         ["⛄️", "⛄"], "\e048", "\fe003", ["snowman"], 2, 5
36876     ],
36877     "26c5": [
36878         ["⛅️", "⛅"], "\e04a\e049", "\fe00f", ["partly_sunny"], 2, 6
36879     ],
36880     "26ce": [
36881         ["⛎"], "\e24b", "\fe037", ["ophiuchus"], 2, 7
36882     ],
36883     "26d4": [
36884         ["⛔️", "⛔"], "\e137", "\feb26", ["no_entry"], 2, 8
36885     ],
36886     "26ea": [
36887         ["⛪️", "⛪"], "\e037", "\fe4bb", ["church"], 2, 9
36888     ],
36889     "26f2": [
36890         ["⛲️", "⛲"], "\e121", "\fe4bc", ["fountain"], 2, 10
36891     ],
36892     "26f3": [
36893         ["⛳️", "⛳"], "\e014", "\fe7d2", ["golf"], 2, 11
36894     ],
36895     "26f5": [
36896         ["⛵️", "⛵"], "\e01c", "\fe7ea", ["boat", "sailboat"], 2, 12
36897     ],
36898     "26fa": [
36899         ["⛺️", "⛺"], "\e122", "\fe7fb", ["tent"], 2, 13
36900     ],
36901     "26fd": [
36902         ["⛽️", "⛽"], "\e03a", "\fe7f5", ["fuelpump"], 2, 14
36903     ],
36904     2702: [
36905         ["✂️", "✂"], "\e313", "\fe53e", ["scissors"], 2, 15
36906     ],
36907     2705: [
36908         ["✅"], "", "\feb4a", ["white_check_mark"], 2, 16
36909     ],
36910     2708: [
36911         ["✈️", "✈"], "\e01d", "\fe7e9", ["airplane"], 2, 17
36912     ],
36913     2709: [
36914         ["✉️", "✉"], "\e103", "\fe529", ["email", "envelope"], 2, 18
36915     ],
36916     "270a": [
36917         ["✊"], "\e010", "\feb93", ["fist"], 2, 19
36918     ],
36919     "270b": [
36920         ["✋"], "\e012", "\feb95", ["hand", "raised_hand"], 2, 20
36921     ],
36922     "270c": [
36923         ["✌️", "✌"], "\e011", "\feb94", ["v"], 2, 21
36924     ],
36925     "270f": [
36926         ["✏️", "✏"], "\e301", "\fe539", ["pencil2"], 2, 22
36927     ],
36928     2712: [
36929         ["✒️", "✒"], "", "\fe536", ["black_nib"], 2, 23
36930     ],
36931     2714: [
36932         ["✔️", "✔"], "", "\feb49", ["heavy_check_mark"], 2, 24
36933     ],
36934     2716: [
36935         ["✖️", "✖"], "\e333", "\feb53", ["heavy_multiplication_x"], 2, 25
36936     ],
36937     2728: [
36938         ["✨"], "\e32e", "\feb60", ["sparkles"], 2, 26
36939     ],
36940     2733: [
36941         ["✳️", "✳"], "\e206", "\feb62", ["eight_spoked_asterisk"], 2, 27
36942     ],
36943     2734: [
36944         ["✴️", "✴"], "\e205", "\feb61", ["eight_pointed_black_star"], 2, 28
36945     ],
36946     2744: [
36947         ["❄️", "❄"], "", "\fe00e", ["snowflake"], 2, 29
36948     ],
36949     2747: [
36950         ["❇️", "❇"], "\e32e", "\feb77", ["sparkle"], 3, 0
36951     ],
36952     "274c": [
36953         ["❌"], "\e333", "\feb45", ["x"], 3, 1
36954     ],
36955     "274e": [
36956         ["❎"], "\e333", "\feb46", ["negative_squared_cross_mark"], 3, 2
36957     ],
36958     2753: [
36959         ["❓"], "\e020", "\feb09", ["question"], 3, 3
36960     ],
36961     2754: [
36962         ["❔"], "\e336", "\feb0a", ["grey_question"], 3, 4
36963     ],
36964     2755: [
36965         ["❕"], "\e337", "\feb0b", ["grey_exclamation"], 3, 5
36966     ],
36967     2757: [
36968         ["❗️", "❗"], "\e021", "\feb04", ["exclamation", "heavy_exclamation_mark"], 3, 6
36969     ],
36970     2764: [
36971         ["❤️", "❤"], "\e022", "\feb0c", ["heart"], 3, 7, "<3"
36972     ],
36973     2795: [
36974         ["➕"], "", "\feb51", ["heavy_plus_sign"], 3, 8
36975     ],
36976     2796: [
36977         ["➖"], "", "\feb52", ["heavy_minus_sign"], 3, 9
36978     ],
36979     2797: [
36980         ["➗"], "", "\feb54", ["heavy_division_sign"], 3, 10
36981     ],
36982     "27a1": [
36983         ["➡️", "➡"], "\e234", "\feafa", ["arrow_right"], 3, 11
36984     ],
36985     "27b0": [
36986         ["➰"], "", "\feb08", ["curly_loop"], 3, 12
36987     ],
36988     "27bf": [
36989         ["➿"], "\e211", "\fe82b", ["loop"], 3, 13
36990     ],
36991     2934: [
36992         ["⤴️", "⤴"], "\e236", "\feaf4", ["arrow_heading_up"], 3, 14
36993     ],
36994     2935: [
36995         ["⤵️", "⤵"], "\e238", "\feaf5", ["arrow_heading_down"], 3, 15
36996     ],
36997     "2b05": [
36998         ["⬅️", "⬅"], "\e235", "\feafb", ["arrow_left"], 3, 16
36999     ],
37000     "2b06": [
37001         ["⬆️", "⬆"], "\e232", "\feaf8", ["arrow_up"], 3, 17
37002     ],
37003     "2b07": [
37004         ["⬇️", "⬇"], "\e233", "\feaf9", ["arrow_down"], 3, 18
37005     ],
37006     "2b1b": [
37007         ["⬛️", "⬛"], "\e21a", "\feb6c", ["black_large_square"], 3, 19
37008     ],
37009     "2b1c": [
37010         ["⬜️", "⬜"], "\e21b", "\feb6b", ["white_large_square"], 3, 20
37011     ],
37012     "2b50": [
37013         ["⭐️", "⭐"], "\e32f", "\feb68", ["star"], 3, 21
37014     ],
37015     "2b55": [
37016         ["⭕️", "⭕"], "\e332", "\feb44", ["o"], 3, 22
37017     ],
37018     3030: [
37019         ["〰"], "", "\feb07", ["wavy_dash"], 3, 23
37020     ],
37021     "303d": [
37022         ["〽️", "〽"], "\e12c", "\fe81b", ["part_alternation_mark"], 3, 24
37023     ],
37024     3297: [
37025         ["㊗️", "㊗"], "\e30d", "\feb43", ["congratulations"], 3, 25
37026     ],
37027     3299: [
37028         ["㊙️", "㊙"], "\e315", "\feb2b", ["secret"], 3, 26
37029     ],
37030     "1f004": [
37031         ["🀄️", "🀄"], "\e12d", "\fe80b", ["mahjong"], 3, 27
37032     ],
37033     "1f0cf": [
37034         ["🃏"], "", "\fe812", ["black_joker"], 3, 28
37035     ],
37036     "1f170": [
37037         ["🅰"], "\e532", "\fe50b", ["a"], 3, 29
37038     ],
37039     "1f171": [
37040         ["🅱"], "\e533", "\fe50c", ["b"], 4, 0
37041     ],
37042     "1f17e": [
37043         ["🅾"], "\e535", "\fe50e", ["o2"], 4, 1
37044     ],
37045     "1f17f": [
37046         ["🅿️", "🅿"], "\e14f", "\fe7f6", ["parking"], 4, 2
37047     ],
37048     "1f18e": [
37049         ["🆎"], "\e534", "\fe50d", ["ab"], 4, 3
37050     ],
37051     "1f191": [
37052         ["🆑"], "", "\feb84", ["cl"], 4, 4
37053     ],
37054     "1f192": [
37055         ["🆒"], "\e214", "\feb38", ["cool"], 4, 5
37056     ],
37057     "1f193": [
37058         ["🆓"], "", "\feb21", ["free"], 4, 6
37059     ],
37060     "1f194": [
37061         ["🆔"], "\e229", "\feb81", ["id"], 4, 7
37062     ],
37063     "1f195": [
37064         ["🆕"], "\e212", "\feb36", ["new"], 4, 8
37065     ],
37066     "1f196": [
37067         ["🆖"], "", "\feb28", ["ng"], 4, 9
37068     ],
37069     "1f197": [
37070         ["🆗"], "\e24d", "\feb27", ["ok"], 4, 10
37071     ],
37072     "1f198": [
37073         ["🆘"], "", "\feb4f", ["sos"], 4, 11
37074     ],
37075     "1f199": [
37076         ["🆙"], "\e213", "\feb37", ["up"], 4, 12
37077     ],
37078     "1f19a": [
37079         ["🆚"], "\e12e", "\feb32", ["vs"], 4, 13
37080     ],
37081     "1f201": [
37082         ["🈁"], "\e203", "\feb24", ["koko"], 4, 14
37083     ],
37084     "1f202": [
37085         ["🈂"], "\e228", "\feb3f", ["sa"], 4, 15
37086     ],
37087     "1f21a": [
37088         ["🈚️", "🈚"], "\e216", "\feb3a", ["u7121"], 4, 16
37089     ],
37090     "1f22f": [
37091         ["🈯️", "🈯"], "\e22c", "\feb40", ["u6307"], 4, 17
37092     ],
37093     "1f232": [
37094         ["🈲"], "", "\feb2e", ["u7981"], 4, 18
37095     ],
37096     "1f233": [
37097         ["🈳"], "\e22b", "\feb2f", ["u7a7a"], 4, 19
37098     ],
37099     "1f234": [
37100         ["🈴"], "", "\feb30", ["u5408"], 4, 20
37101     ],
37102     "1f235": [
37103         ["🈵"], "\e22a", "\feb31", ["u6e80"], 4, 21
37104     ],
37105     "1f236": [
37106         ["🈶"], "\e215", "\feb39", ["u6709"], 4, 22
37107     ],
37108     "1f237": [
37109         ["🈷"], "\e217", "\feb3b", ["u6708"], 4, 23
37110     ],
37111     "1f238": [
37112         ["🈸"], "\e218", "\feb3c", ["u7533"], 4, 24
37113     ],
37114     "1f239": [
37115         ["🈹"], "\e227", "\feb3e", ["u5272"], 4, 25
37116     ],
37117     "1f23a": [
37118         ["🈺"], "\e22d", "\feb41", ["u55b6"], 4, 26
37119     ],
37120     "1f250": [
37121         ["🉐"], "\e226", "\feb3d", ["ideograph_advantage"], 4, 27
37122     ],
37123     "1f251": [
37124         ["🉑"], "", "\feb50", ["accept"], 4, 28
37125     ],
37126     "1f300": [
37127         ["🌀"], "\e443", "\fe005", ["cyclone"], 4, 29
37128     ],
37129     "1f301": [
37130         ["🌁"], "", "\fe006", ["foggy"], 5, 0
37131     ],
37132     "1f302": [
37133         ["🌂"], "\e43c", "\fe007", ["closed_umbrella"], 5, 1
37134     ],
37135     "1f303": [
37136         ["🌃"], "\e44b", "\fe008", ["night_with_stars"], 5, 2
37137     ],
37138     "1f304": [
37139         ["🌄"], "\e04d", "\fe009", ["sunrise_over_mountains"], 5, 3
37140     ],
37141     "1f305": [
37142         ["🌅"], "\e449", "\fe00a", ["sunrise"], 5, 4
37143     ],
37144     "1f306": [
37145         ["🌆"], "\e146", "\fe00b", ["city_sunset"], 5, 5
37146     ],
37147     "1f307": [
37148         ["🌇"], "\e44a", "\fe00c", ["city_sunrise"], 5, 6
37149     ],
37150     "1f308": [
37151         ["🌈"], "\e44c", "\fe00d", ["rainbow"], 5, 7
37152     ],
37153     "1f309": [
37154         ["🌉"], "\e44b", "\fe010", ["bridge_at_night"], 5, 8
37155     ],
37156     "1f30a": [
37157         ["🌊"], "\e43e", "\fe038", ["ocean"], 5, 9
37158     ],
37159     "1f30b": [
37160         ["🌋"], "", "\fe03a", ["volcano"], 5, 10
37161     ],
37162     "1f30c": [
37163         ["🌌"], "\e44b", "\fe03b", ["milky_way"], 5, 11
37164     ],
37165     "1f30d": [
37166         ["🌍"], "", "", ["earth_africa"], 5, 12
37167     ],
37168     "1f30e": [
37169         ["🌎"], "", "", ["earth_americas"], 5, 13
37170     ],
37171     "1f30f": [
37172         ["🌏"], "", "\fe039", ["earth_asia"], 5, 14
37173     ],
37174     "1f310": [
37175         ["🌐"], "", "", ["globe_with_meridians"], 5, 15
37176     ],
37177     "1f311": [
37178         ["🌑"], "", "\fe011", ["new_moon"], 5, 16
37179     ],
37180     "1f312": [
37181         ["🌒"], "", "", ["waxing_crescent_moon"], 5, 17
37182     ],
37183     "1f313": [
37184         ["🌓"], "\e04c", "\fe013", ["first_quarter_moon"], 5, 18
37185     ],
37186     "1f314": [
37187         ["🌔"], "\e04c", "\fe012", ["moon", "waxing_gibbous_moon"], 5, 19
37188     ],
37189     "1f315": [
37190         ["🌕"], "", "\fe015", ["full_moon"], 5, 20
37191     ],
37192     "1f316": [
37193         ["🌖"], "", "", ["waning_gibbous_moon"], 5, 21
37194     ],
37195     "1f317": [
37196         ["🌗"], "", "", ["last_quarter_moon"], 5, 22
37197     ],
37198     "1f318": [
37199         ["🌘"], "", "", ["waning_crescent_moon"], 5, 23
37200     ],
37201     "1f319": [
37202         ["🌙"], "\e04c", "\fe014", ["crescent_moon"], 5, 24
37203     ],
37204     "1f31a": [
37205         ["🌚"], "", "", ["new_moon_with_face"], 5, 25
37206     ],
37207     "1f31b": [
37208         ["🌛"], "\e04c", "\fe016", ["first_quarter_moon_with_face"], 5, 26
37209     ],
37210     "1f31c": [
37211         ["🌜"], "", "", ["last_quarter_moon_with_face"], 5, 27
37212     ],
37213     "1f31d": [
37214         ["🌝"], "", "", ["full_moon_with_face"], 5, 28
37215     ],
37216     "1f31e": [
37217         ["🌞"], "", "", ["sun_with_face"], 5, 29
37218     ],
37219     "1f31f": [
37220         ["🌟"], "\e335", "\feb69", ["star2"], 6, 0
37221     ],
37222     "1f320": [
37223         ["🌠"], "", "\feb6a", ["stars"], 6, 1
37224     ],
37225     "1f330": [
37226         ["🌰"], "", "\fe04c", ["chestnut"], 6, 2
37227     ],
37228     "1f331": [
37229         ["🌱"], "\e110", "\fe03e", ["seedling"], 6, 3
37230     ],
37231     "1f332": [
37232         ["🌲"], "", "", ["evergreen_tree"], 6, 4
37233     ],
37234     "1f333": [
37235         ["🌳"], "", "", ["deciduous_tree"], 6, 5
37236     ],
37237     "1f334": [
37238         ["🌴"], "\e307", "\fe047", ["palm_tree"], 6, 6
37239     ],
37240     "1f335": [
37241         ["🌵"], "\e308", "\fe048", ["cactus"], 6, 7
37242     ],
37243     "1f337": [
37244         ["🌷"], "\e304", "\fe03d", ["tulip"], 6, 8
37245     ],
37246     "1f338": [
37247         ["🌸"], "\e030", "\fe040", ["cherry_blossom"], 6, 9
37248     ],
37249     "1f339": [
37250         ["🌹"], "\e032", "\fe041", ["rose"], 6, 10
37251     ],
37252     "1f33a": [
37253         ["🌺"], "\e303", "\fe045", ["hibiscus"], 6, 11
37254     ],
37255     "1f33b": [
37256         ["🌻"], "\e305", "\fe046", ["sunflower"], 6, 12
37257     ],
37258     "1f33c": [
37259         ["🌼"], "\e305", "\fe04d", ["blossom"], 6, 13
37260     ],
37261     "1f33d": [
37262         ["🌽"], "", "\fe04a", ["corn"], 6, 14
37263     ],
37264     "1f33e": [
37265         ["🌾"], "\e444", "\fe049", ["ear_of_rice"], 6, 15
37266     ],
37267     "1f33f": [
37268         ["🌿"], "\e110", "\fe04e", ["herb"], 6, 16
37269     ],
37270     "1f340": [
37271         ["🍀"], "\e110", "\fe03c", ["four_leaf_clover"], 6, 17
37272     ],
37273     "1f341": [
37274         ["🍁"], "\e118", "\fe03f", ["maple_leaf"], 6, 18
37275     ],
37276     "1f342": [
37277         ["🍂"], "\e119", "\fe042", ["fallen_leaf"], 6, 19
37278     ],
37279     "1f343": [
37280         ["🍃"], "\e447", "\fe043", ["leaves"], 6, 20
37281     ],
37282     "1f344": [
37283         ["🍄"], "", "\fe04b", ["mushroom"], 6, 21
37284     ],
37285     "1f345": [
37286         ["🍅"], "\e349", "\fe055", ["tomato"], 6, 22
37287     ],
37288     "1f346": [
37289         ["🍆"], "\e34a", "\fe056", ["eggplant"], 6, 23
37290     ],
37291     "1f347": [
37292         ["🍇"], "", "\fe059", ["grapes"], 6, 24
37293     ],
37294     "1f348": [
37295         ["🍈"], "", "\fe057", ["melon"], 6, 25
37296     ],
37297     "1f349": [
37298         ["🍉"], "\e348", "\fe054", ["watermelon"], 6, 26
37299     ],
37300     "1f34a": [
37301         ["🍊"], "\e346", "\fe052", ["tangerine"], 6, 27
37302     ],
37303     "1f34b": [
37304         ["🍋"], "", "", ["lemon"], 6, 28
37305     ],
37306     "1f34c": [
37307         ["🍌"], "", "\fe050", ["banana"], 6, 29
37308     ],
37309     "1f34d": [
37310         ["🍍"], "", "\fe058", ["pineapple"], 7, 0
37311     ],
37312     "1f34e": [
37313         ["🍎"], "\e345", "\fe051", ["apple"], 7, 1
37314     ],
37315     "1f34f": [
37316         ["🍏"], "\e345", "\fe05b", ["green_apple"], 7, 2
37317     ],
37318     "1f350": [
37319         ["🍐"], "", "", ["pear"], 7, 3
37320     ],
37321     "1f351": [
37322         ["🍑"], "", "\fe05a", ["peach"], 7, 4
37323     ],
37324     "1f352": [
37325         ["🍒"], "", "\fe04f", ["cherries"], 7, 5
37326     ],
37327     "1f353": [
37328         ["🍓"], "\e347", "\fe053", ["strawberry"], 7, 6
37329     ],
37330     "1f354": [
37331         ["🍔"], "\e120", "\fe960", ["hamburger"], 7, 7
37332     ],
37333     "1f355": [
37334         ["🍕"], "", "\fe975", ["pizza"], 7, 8
37335     ],
37336     "1f356": [
37337         ["🍖"], "", "\fe972", ["meat_on_bone"], 7, 9
37338     ],
37339     "1f357": [
37340         ["🍗"], "", "\fe976", ["poultry_leg"], 7, 10
37341     ],
37342     "1f358": [
37343         ["🍘"], "\e33d", "\fe969", ["rice_cracker"], 7, 11
37344     ],
37345     "1f359": [
37346         ["🍙"], "\e342", "\fe961", ["rice_ball"], 7, 12
37347     ],
37348     "1f35a": [
37349         ["🍚"], "\e33e", "\fe96a", ["rice"], 7, 13
37350     ],
37351     "1f35b": [
37352         ["🍛"], "\e341", "\fe96c", ["curry"], 7, 14
37353     ],
37354     "1f35c": [
37355         ["🍜"], "\e340", "\fe963", ["ramen"], 7, 15
37356     ],
37357     "1f35d": [
37358         ["🍝"], "\e33f", "\fe96b", ["spaghetti"], 7, 16
37359     ],
37360     "1f35e": [
37361         ["🍞"], "\e339", "\fe964", ["bread"], 7, 17
37362     ],
37363     "1f35f": [
37364         ["🍟"], "\e33b", "\fe967", ["fries"], 7, 18
37365     ],
37366     "1f360": [
37367         ["🍠"], "", "\fe974", ["sweet_potato"], 7, 19
37368     ],
37369     "1f361": [
37370         ["🍡"], "\e33c", "\fe968", ["dango"], 7, 20
37371     ],
37372     "1f362": [
37373         ["🍢"], "\e343", "\fe96d", ["oden"], 7, 21
37374     ],
37375     "1f363": [
37376         ["🍣"], "\e344", "\fe96e", ["sushi"], 7, 22
37377     ],
37378     "1f364": [
37379         ["🍤"], "", "\fe97f", ["fried_shrimp"], 7, 23
37380     ],
37381     "1f365": [
37382         ["🍥"], "", "\fe973", ["fish_cake"], 7, 24
37383     ],
37384     "1f366": [
37385         ["🍦"], "\e33a", "\fe966", ["icecream"], 7, 25
37386     ],
37387     "1f367": [
37388         ["🍧"], "\e43f", "\fe971", ["shaved_ice"], 7, 26
37389     ],
37390     "1f368": [
37391         ["🍨"], "", "\fe977", ["ice_cream"], 7, 27
37392     ],
37393     "1f369": [
37394         ["🍩"], "", "\fe978", ["doughnut"], 7, 28
37395     ],
37396     "1f36a": [
37397         ["🍪"], "", "\fe979", ["cookie"], 7, 29
37398     ],
37399     "1f36b": [
37400         ["🍫"], "", "\fe97a", ["chocolate_bar"], 8, 0
37401     ],
37402     "1f36c": [
37403         ["🍬"], "", "\fe97b", ["candy"], 8, 1
37404     ],
37405     "1f36d": [
37406         ["🍭"], "", "\fe97c", ["lollipop"], 8, 2
37407     ],
37408     "1f36e": [
37409         ["🍮"], "", "\fe97d", ["custard"], 8, 3
37410     ],
37411     "1f36f": [
37412         ["🍯"], "", "\fe97e", ["honey_pot"], 8, 4
37413     ],
37414     "1f370": [
37415         ["🍰"], "\e046", "\fe962", ["cake"], 8, 5
37416     ],
37417     "1f371": [
37418         ["🍱"], "\e34c", "\fe96f", ["bento"], 8, 6
37419     ],
37420     "1f372": [
37421         ["🍲"], "\e34d", "\fe970", ["stew"], 8, 7
37422     ],
37423     "1f373": [
37424         ["🍳"], "\e147", "\fe965", ["egg"], 8, 8
37425     ],
37426     "1f374": [
37427         ["🍴"], "\e043", "\fe980", ["fork_and_knife"], 8, 9
37428     ],
37429     "1f375": [
37430         ["🍵"], "\e338", "\fe984", ["tea"], 8, 10
37431     ],
37432     "1f376": [
37433         ["🍶"], "\e30b", "\fe985", ["sake"], 8, 11
37434     ],
37435     "1f377": [
37436         ["🍷"], "\e044", "\fe986", ["wine_glass"], 8, 12
37437     ],
37438     "1f378": [
37439         ["🍸"], "\e044", "\fe982", ["cocktail"], 8, 13
37440     ],
37441     "1f379": [
37442         ["🍹"], "\e044", "\fe988", ["tropical_drink"], 8, 14
37443     ],
37444     "1f37a": [
37445         ["🍺"], "\e047", "\fe983", ["beer"], 8, 15
37446     ],
37447     "1f37b": [
37448         ["🍻"], "\e30c", "\fe987", ["beers"], 8, 16
37449     ],
37450     "1f37c": [
37451         ["🍼"], "", "", ["baby_bottle"], 8, 17
37452     ],
37453     "1f380": [
37454         ["🎀"], "\e314", "\fe50f", ["ribbon"], 8, 18
37455     ],
37456     "1f381": [
37457         ["🎁"], "\e112", "\fe510", ["gift"], 8, 19
37458     ],
37459     "1f382": [
37460         ["🎂"], "\e34b", "\fe511", ["birthday"], 8, 20
37461     ],
37462     "1f383": [
37463         ["🎃"], "\e445", "\fe51f", ["jack_o_lantern"], 8, 21
37464     ],
37465     "1f384": [
37466         ["🎄"], "\e033", "\fe512", ["christmas_tree"], 8, 22
37467     ],
37468     "1f385": [
37469         ["🎅"], "\e448", "\fe513", ["santa"], 8, 23
37470     ],
37471     "1f386": [
37472         ["🎆"], "\e117", "\fe515", ["fireworks"], 8, 24
37473     ],
37474     "1f387": [
37475         ["🎇"], "\e440", "\fe51d", ["sparkler"], 8, 25
37476     ],
37477     "1f388": [
37478         ["🎈"], "\e310", "\fe516", ["balloon"], 8, 26
37479     ],
37480     "1f389": [
37481         ["🎉"], "\e312", "\fe517", ["tada"], 8, 27
37482     ],
37483     "1f38a": [
37484         ["🎊"], "", "\fe520", ["confetti_ball"], 8, 28
37485     ],
37486     "1f38b": [
37487         ["🎋"], "", "\fe521", ["tanabata_tree"], 8, 29
37488     ],
37489     "1f38c": [
37490         ["🎌"], "\e143", "\fe514", ["crossed_flags"], 9, 0
37491     ],
37492     "1f38d": [
37493         ["🎍"], "\e436", "\fe518", ["bamboo"], 9, 1
37494     ],
37495     "1f38e": [
37496         ["🎎"], "\e438", "\fe519", ["dolls"], 9, 2
37497     ],
37498     "1f38f": [
37499         ["🎏"], "\e43b", "\fe51c", ["flags"], 9, 3
37500     ],
37501     "1f390": [
37502         ["🎐"], "\e442", "\fe51e", ["wind_chime"], 9, 4
37503     ],
37504     "1f391": [
37505         ["🎑"], "\e446", "\fe017", ["rice_scene"], 9, 5
37506     ],
37507     "1f392": [
37508         ["🎒"], "\e43a", "\fe51b", ["school_satchel"], 9, 6
37509     ],
37510     "1f393": [
37511         ["🎓"], "\e439", "\fe51a", ["mortar_board"], 9, 7
37512     ],
37513     "1f3a0": [
37514         ["🎠"], "", "\fe7fc", ["carousel_horse"], 9, 8
37515     ],
37516     "1f3a1": [
37517         ["🎡"], "\e124", "\fe7fd", ["ferris_wheel"], 9, 9
37518     ],
37519     "1f3a2": [
37520         ["🎢"], "\e433", "\fe7fe", ["roller_coaster"], 9, 10
37521     ],
37522     "1f3a3": [
37523         ["🎣"], "\e019", "\fe7ff", ["fishing_pole_and_fish"], 9, 11
37524     ],
37525     "1f3a4": [
37526         ["🎤"], "\e03c", "\fe800", ["microphone"], 9, 12
37527     ],
37528     "1f3a5": [
37529         ["🎥"], "\e03d", "\fe801", ["movie_camera"], 9, 13
37530     ],
37531     "1f3a6": [
37532         ["🎦"], "\e507", "\fe802", ["cinema"], 9, 14
37533     ],
37534     "1f3a7": [
37535         ["🎧"], "\e30a", "\fe803", ["headphones"], 9, 15
37536     ],
37537     "1f3a8": [
37538         ["🎨"], "\e502", "\fe804", ["art"], 9, 16
37539     ],
37540     "1f3a9": [
37541         ["🎩"], "\e503", "\fe805", ["tophat"], 9, 17
37542     ],
37543     "1f3aa": [
37544         ["🎪"], "", "\fe806", ["circus_tent"], 9, 18
37545     ],
37546     "1f3ab": [
37547         ["🎫"], "\e125", "\fe807", ["ticket"], 9, 19
37548     ],
37549     "1f3ac": [
37550         ["🎬"], "\e324", "\fe808", ["clapper"], 9, 20
37551     ],
37552     "1f3ad": [
37553         ["🎭"], "\e503", "\fe809", ["performing_arts"], 9, 21
37554     ],
37555     "1f3ae": [
37556         ["🎮"], "", "\fe80a", ["video_game"], 9, 22
37557     ],
37558     "1f3af": [
37559         ["🎯"], "\e130", "\fe80c", ["dart"], 9, 23
37560     ],
37561     "1f3b0": [
37562         ["🎰"], "\e133", "\fe80d", ["slot_machine"], 9, 24
37563     ],
37564     "1f3b1": [
37565         ["🎱"], "\e42c", "\fe80e", ["8ball"], 9, 25
37566     ],
37567     "1f3b2": [
37568         ["🎲"], "", "\fe80f", ["game_die"], 9, 26
37569     ],
37570     "1f3b3": [
37571         ["🎳"], "", "\fe810", ["bowling"], 9, 27
37572     ],
37573     "1f3b4": [
37574         ["🎴"], "", "\fe811", ["flower_playing_cards"], 9, 28
37575     ],
37576     "1f3b5": [
37577         ["🎵"], "\e03e", "\fe813", ["musical_note"], 9, 29
37578     ],
37579     "1f3b6": [
37580         ["🎶"], "\e326", "\fe814", ["notes"], 10, 0
37581     ],
37582     "1f3b7": [
37583         ["🎷"], "\e040", "\fe815", ["saxophone"], 10, 1
37584     ],
37585     "1f3b8": [
37586         ["🎸"], "\e041", "\fe816", ["guitar"], 10, 2
37587     ],
37588     "1f3b9": [
37589         ["🎹"], "", "\fe817", ["musical_keyboard"], 10, 3
37590     ],
37591     "1f3ba": [
37592         ["🎺"], "\e042", "\fe818", ["trumpet"], 10, 4
37593     ],
37594     "1f3bb": [
37595         ["🎻"], "", "\fe819", ["violin"], 10, 5
37596     ],
37597     "1f3bc": [
37598         ["🎼"], "\e326", "\fe81a", ["musical_score"], 10, 6
37599     ],
37600     "1f3bd": [
37601         ["🎽"], "", "\fe7d0", ["running_shirt_with_sash"], 10, 7
37602     ],
37603     "1f3be": [
37604         ["🎾"], "\e015", "\fe7d3", ["tennis"], 10, 8
37605     ],
37606     "1f3bf": [
37607         ["🎿"], "\e013", "\fe7d5", ["ski"], 10, 9
37608     ],
37609     "1f3c0": [
37610         ["🏀"], "\e42a", "\fe7d6", ["basketball"], 10, 10
37611     ],
37612     "1f3c1": [
37613         ["🏁"], "\e132", "\fe7d7", ["checkered_flag"], 10, 11
37614     ],
37615     "1f3c2": [
37616         ["🏂"], "", "\fe7d8", ["snowboarder"], 10, 12
37617     ],
37618     "1f3c3": [
37619         ["🏃"], "\e115", "\fe7d9", ["runner", "running"], 10, 13
37620     ],
37621     "1f3c4": [
37622         ["🏄"], "\e017", "\fe7da", ["surfer"], 10, 14
37623     ],
37624     "1f3c6": [
37625         ["🏆"], "\e131", "\fe7db", ["trophy"], 10, 15
37626     ],
37627     "1f3c7": [
37628         ["🏇"], "", "", ["horse_racing"], 10, 16
37629     ],
37630     "1f3c8": [
37631         ["🏈"], "\e42b", "\fe7dd", ["football"], 10, 17
37632     ],
37633     "1f3c9": [
37634         ["🏉"], "", "", ["rugby_football"], 10, 18
37635     ],
37636     "1f3ca": [
37637         ["🏊"], "\e42d", "\fe7de", ["swimmer"], 10, 19
37638     ],
37639     "1f3e0": [
37640         ["🏠"], "\e036", "\fe4b0", ["house"], 10, 20
37641     ],
37642     "1f3e1": [
37643         ["🏡"], "\e036", "\fe4b1", ["house_with_garden"], 10, 21
37644     ],
37645     "1f3e2": [
37646         ["🏢"], "\e038", "\fe4b2", ["office"], 10, 22
37647     ],
37648     "1f3e3": [
37649         ["🏣"], "\e153", "\fe4b3", ["post_office"], 10, 23
37650     ],
37651     "1f3e4": [
37652         ["🏤"], "", "", ["european_post_office"], 10, 24
37653     ],
37654     "1f3e5": [
37655         ["🏥"], "\e155", "\fe4b4", ["hospital"], 10, 25
37656     ],
37657     "1f3e6": [
37658         ["🏦"], "\e14d", "\fe4b5", ["bank"], 10, 26
37659     ],
37660     "1f3e7": [
37661         ["🏧"], "\e154", "\fe4b6", ["atm"], 10, 27
37662     ],
37663     "1f3e8": [
37664         ["🏨"], "\e158", "\fe4b7", ["hotel"], 10, 28
37665     ],
37666     "1f3e9": [
37667         ["🏩"], "\e501", "\fe4b8", ["love_hotel"], 10, 29
37668     ],
37669     "1f3ea": [
37670         ["🏪"], "\e156", "\fe4b9", ["convenience_store"], 11, 0
37671     ],
37672     "1f3eb": [
37673         ["🏫"], "\e157", "\fe4ba", ["school"], 11, 1
37674     ],
37675     "1f3ec": [
37676         ["🏬"], "\e504", "\fe4bd", ["department_store"], 11, 2
37677     ],
37678     "1f3ed": [
37679         ["🏭"], "\e508", "\fe4c0", ["factory"], 11, 3
37680     ],
37681     "1f3ee": [
37682         ["🏮"], "\e30b", "\fe4c2", ["izakaya_lantern", "lantern"], 11, 4
37683     ],
37684     "1f3ef": [
37685         ["🏯"], "\e505", "\fe4be", ["japanese_castle"], 11, 5
37686     ],
37687     "1f3f0": [
37688         ["🏰"], "\e506", "\fe4bf", ["european_castle"], 11, 6
37689     ],
37690     "1f400": [
37691         ["🐀"], "", "", ["rat"], 11, 7
37692     ],
37693     "1f401": [
37694         ["🐁"], "", "", ["mouse2"], 11, 8
37695     ],
37696     "1f402": [
37697         ["🐂"], "", "", ["ox"], 11, 9
37698     ],
37699     "1f403": [
37700         ["🐃"], "", "", ["water_buffalo"], 11, 10
37701     ],
37702     "1f404": [
37703         ["🐄"], "", "", ["cow2"], 11, 11
37704     ],
37705     "1f405": [
37706         ["🐅"], "", "", ["tiger2"], 11, 12
37707     ],
37708     "1f406": [
37709         ["🐆"], "", "", ["leopard"], 11, 13
37710     ],
37711     "1f407": [
37712         ["🐇"], "", "", ["rabbit2"], 11, 14
37713     ],
37714     "1f408": [
37715         ["🐈"], "", "", ["cat2"], 11, 15
37716     ],
37717     "1f409": [
37718         ["🐉"], "", "", ["dragon"], 11, 16
37719     ],
37720     "1f40a": [
37721         ["🐊"], "", "", ["crocodile"], 11, 17
37722     ],
37723     "1f40b": [
37724         ["🐋"], "", "", ["whale2"], 11, 18
37725     ],
37726     "1f40c": [
37727         ["🐌"], "", "\fe1b9", ["snail"], 11, 19
37728     ],
37729     "1f40d": [
37730         ["🐍"], "\e52d", "\fe1d3", ["snake"], 11, 20
37731     ],
37732     "1f40e": [
37733         ["🐎"], "\e134", "\fe7dc", ["racehorse"], 11, 21
37734     ],
37735     "1f40f": [
37736         ["🐏"], "", "", ["ram"], 11, 22
37737     ],
37738     "1f410": [
37739         ["🐐"], "", "", ["goat"], 11, 23
37740     ],
37741     "1f411": [
37742         ["🐑"], "\e529", "\fe1cf", ["sheep"], 11, 24
37743     ],
37744     "1f412": [
37745         ["🐒"], "\e528", "\fe1ce", ["monkey"], 11, 25
37746     ],
37747     "1f413": [
37748         ["🐓"], "", "", ["rooster"], 11, 26
37749     ],
37750     "1f414": [
37751         ["🐔"], "\e52e", "\fe1d4", ["chicken"], 11, 27
37752     ],
37753     "1f415": [
37754         ["🐕"], "", "", ["dog2"], 11, 28
37755     ],
37756     "1f416": [
37757         ["🐖"], "", "", ["pig2"], 11, 29
37758     ],
37759     "1f417": [
37760         ["🐗"], "\e52f", "\fe1d5", ["boar"], 12, 0
37761     ],
37762     "1f418": [
37763         ["🐘"], "\e526", "\fe1cc", ["elephant"], 12, 1
37764     ],
37765     "1f419": [
37766         ["🐙"], "\e10a", "\fe1c5", ["octopus"], 12, 2
37767     ],
37768     "1f41a": [
37769         ["🐚"], "\e441", "\fe1c6", ["shell"], 12, 3
37770     ],
37771     "1f41b": [
37772         ["🐛"], "\e525", "\fe1cb", ["bug"], 12, 4
37773     ],
37774     "1f41c": [
37775         ["🐜"], "", "\fe1da", ["ant"], 12, 5
37776     ],
37777     "1f41d": [
37778         ["🐝"], "", "\fe1e1", ["bee", "honeybee"], 12, 6
37779     ],
37780     "1f41e": [
37781         ["🐞"], "", "\fe1e2", ["beetle"], 12, 7
37782     ],
37783     "1f41f": [
37784         ["🐟"], "\e019", "\fe1bd", ["fish"], 12, 8
37785     ],
37786     "1f420": [
37787         ["🐠"], "\e522", "\fe1c9", ["tropical_fish"], 12, 9
37788     ],
37789     "1f421": [
37790         ["🐡"], "\e019", "\fe1d9", ["blowfish"], 12, 10
37791     ],
37792     "1f422": [
37793         ["🐢"], "", "\fe1dc", ["turtle"], 12, 11
37794     ],
37795     "1f423": [
37796         ["🐣"], "\e523", "\fe1dd", ["hatching_chick"], 12, 12
37797     ],
37798     "1f424": [
37799         ["🐤"], "\e523", "\fe1ba", ["baby_chick"], 12, 13
37800     ],
37801     "1f425": [
37802         ["🐥"], "\e523", "\fe1bb", ["hatched_chick"], 12, 14
37803     ],
37804     "1f426": [
37805         ["🐦"], "\e521", "\fe1c8", ["bird"], 12, 15
37806     ],
37807     "1f427": [
37808         ["🐧"], "\e055", "\fe1bc", ["penguin"], 12, 16
37809     ],
37810     "1f428": [
37811         ["🐨"], "\e527", "\fe1cd", ["koala"], 12, 17
37812     ],
37813     "1f429": [
37814         ["🐩"], "\e052", "\fe1d8", ["poodle"], 12, 18
37815     ],
37816     "1f42a": [
37817         ["🐪"], "", "", ["dromedary_camel"], 12, 19
37818     ],
37819     "1f42b": [
37820         ["🐫"], "\e530", "\fe1d6", ["camel"], 12, 20
37821     ],
37822     "1f42c": [
37823         ["🐬"], "\e520", "\fe1c7", ["dolphin", "flipper"], 12, 21
37824     ],
37825     "1f42d": [
37826         ["🐭"], "\e053", "\fe1c2", ["mouse"], 12, 22
37827     ],
37828     "1f42e": [
37829         ["🐮"], "\e52b", "\fe1d1", ["cow"], 12, 23
37830     ],
37831     "1f42f": [
37832         ["🐯"], "\e050", "\fe1c0", ["tiger"], 12, 24
37833     ],
37834     "1f430": [
37835         ["🐰"], "\e52c", "\fe1d2", ["rabbit"], 12, 25
37836     ],
37837     "1f431": [
37838         ["🐱"], "\e04f", "\fe1b8", ["cat"], 12, 26
37839     ],
37840     "1f432": [
37841         ["🐲"], "", "\fe1de", ["dragon_face"], 12, 27
37842     ],
37843     "1f433": [
37844         ["🐳"], "\e054", "\fe1c3", ["whale"], 12, 28
37845     ],
37846     "1f434": [
37847         ["🐴"], "\e01a", "\fe1be", ["horse"], 12, 29
37848     ],
37849     "1f435": [
37850         ["🐵"], "\e109", "\fe1c4", ["monkey_face"], 13, 0
37851     ],
37852     "1f436": [
37853         ["🐶"], "\e052", "\fe1b7", ["dog"], 13, 1
37854     ],
37855     "1f437": [
37856         ["🐷"], "\e10b", "\fe1bf", ["pig"], 13, 2
37857     ],
37858     "1f438": [
37859         ["🐸"], "\e531", "\fe1d7", ["frog"], 13, 3
37860     ],
37861     "1f439": [
37862         ["🐹"], "\e524", "\fe1ca", ["hamster"], 13, 4
37863     ],
37864     "1f43a": [
37865         ["🐺"], "\e52a", "\fe1d0", ["wolf"], 13, 5
37866     ],
37867     "1f43b": [
37868         ["🐻"], "\e051", "\fe1c1", ["bear"], 13, 6
37869     ],
37870     "1f43c": [
37871         ["🐼"], "", "\fe1df", ["panda_face"], 13, 7
37872     ],
37873     "1f43d": [
37874         ["🐽"], "\e10b", "\fe1e0", ["pig_nose"], 13, 8
37875     ],
37876     "1f43e": [
37877         ["🐾"], "\e536", "\fe1db", ["feet", "paw_prints"], 13, 9
37878     ],
37879     "1f440": [
37880         ["👀"], "\e419", "\fe190", ["eyes"], 13, 10
37881     ],
37882     "1f442": [
37883         ["👂"], "\e41b", "\fe191", ["ear"], 13, 11
37884     ],
37885     "1f443": [
37886         ["👃"], "\e41a", "\fe192", ["nose"], 13, 12
37887     ],
37888     "1f444": [
37889         ["👄"], "\e41c", "\fe193", ["lips"], 13, 13
37890     ],
37891     "1f445": [
37892         ["👅"], "\e409", "\fe194", ["tongue"], 13, 14
37893     ],
37894     "1f446": [
37895         ["👆"], "\e22e", "\feb99", ["point_up_2"], 13, 15
37896     ],
37897     "1f447": [
37898         ["👇"], "\e22f", "\feb9a", ["point_down"], 13, 16
37899     ],
37900     "1f448": [
37901         ["👈"], "\e230", "\feb9b", ["point_left"], 13, 17
37902     ],
37903     "1f449": [
37904         ["👉"], "\e231", "\feb9c", ["point_right"], 13, 18
37905     ],
37906     "1f44a": [
37907         ["👊"], "\e00d", "\feb96", ["facepunch", "punch"], 13, 19
37908     ],
37909     "1f44b": [
37910         ["👋"], "\e41e", "\feb9d", ["wave"], 13, 20
37911     ],
37912     "1f44c": [
37913         ["👌"], "\e420", "\feb9f", ["ok_hand"], 13, 21
37914     ],
37915     "1f44d": [
37916         ["👍"], "\e00e", "\feb97", ["+1", "thumbsup"], 13, 22
37917     ],
37918     "1f44e": [
37919         ["👎"], "\e421", "\feba0", ["-1", "thumbsdown"], 13, 23
37920     ],
37921     "1f44f": [
37922         ["👏"], "\e41f", "\feb9e", ["clap"], 13, 24
37923     ],
37924     "1f450": [
37925         ["👐"], "\e422", "\feba1", ["open_hands"], 13, 25
37926     ],
37927     "1f451": [
37928         ["👑"], "\e10e", "\fe4d1", ["crown"], 13, 26
37929     ],
37930     "1f452": [
37931         ["👒"], "\e318", "\fe4d4", ["womans_hat"], 13, 27
37932     ],
37933     "1f453": [
37934         ["👓"], "", "\fe4ce", ["eyeglasses"], 13, 28
37935     ],
37936     "1f454": [
37937         ["👔"], "\e302", "\fe4d3", ["necktie"], 13, 29
37938     ],
37939     "1f455": [
37940         ["👕"], "\e006", "\fe4cf", ["shirt", "tshirt"], 14, 0
37941     ],
37942     "1f456": [
37943         ["👖"], "", "\fe4d0", ["jeans"], 14, 1
37944     ],
37945     "1f457": [
37946         ["👗"], "\e319", "\fe4d5", ["dress"], 14, 2
37947     ],
37948     "1f458": [
37949         ["👘"], "\e321", "\fe4d9", ["kimono"], 14, 3
37950     ],
37951     "1f459": [
37952         ["👙"], "\e322", "\fe4da", ["bikini"], 14, 4
37953     ],
37954     "1f45a": [
37955         ["👚"], "\e006", "\fe4db", ["womans_clothes"], 14, 5
37956     ],
37957     "1f45b": [
37958         ["👛"], "", "\fe4dc", ["purse"], 14, 6
37959     ],
37960     "1f45c": [
37961         ["👜"], "\e323", "\fe4f0", ["handbag"], 14, 7
37962     ],
37963     "1f45d": [
37964         ["👝"], "", "\fe4f1", ["pouch"], 14, 8
37965     ],
37966     "1f45e": [
37967         ["👞"], "\e007", "\fe4cc", ["mans_shoe", "shoe"], 14, 9
37968     ],
37969     "1f45f": [
37970         ["👟"], "\e007", "\fe4cd", ["athletic_shoe"], 14, 10
37971     ],
37972     "1f460": [
37973         ["👠"], "\e13e", "\fe4d6", ["high_heel"], 14, 11
37974     ],
37975     "1f461": [
37976         ["👡"], "\e31a", "\fe4d7", ["sandal"], 14, 12
37977     ],
37978     "1f462": [
37979         ["👢"], "\e31b", "\fe4d8", ["boot"], 14, 13
37980     ],
37981     "1f463": [
37982         ["👣"], "\e536", "\fe553", ["footprints"], 14, 14
37983     ],
37984     "1f464": [
37985         ["👤"], "", "\fe19a", ["bust_in_silhouette"], 14, 15
37986     ],
37987     "1f465": [
37988         ["👥"], "", "", ["busts_in_silhouette"], 14, 16
37989     ],
37990     "1f466": [
37991         ["👦"], "\e001", "\fe19b", ["boy"], 14, 17
37992     ],
37993     "1f467": [
37994         ["👧"], "\e002", "\fe19c", ["girl"], 14, 18
37995     ],
37996     "1f468": [
37997         ["👨"], "\e004", "\fe19d", ["man"], 14, 19
37998     ],
37999     "1f469": [
38000         ["👩"], "\e005", "\fe19e", ["woman"], 14, 20
38001     ],
38002     "1f46a": [
38003         ["👪"], "", "\fe19f", ["family"], 14, 21
38004     ],
38005     "1f46b": [
38006         ["👫"], "\e428", "\fe1a0", ["couple"], 14, 22
38007     ],
38008     "1f46c": [
38009         ["👬"], "", "", ["two_men_holding_hands"], 14, 23
38010     ],
38011     "1f46d": [
38012         ["👭"], "", "", ["two_women_holding_hands"], 14, 24
38013     ],
38014     "1f46e": [
38015         ["👮"], "\e152", "\fe1a1", ["cop"], 14, 25
38016     ],
38017     "1f46f": [
38018         ["👯"], "\e429", "\fe1a2", ["dancers"], 14, 26
38019     ],
38020     "1f470": [
38021         ["👰"], "", "\fe1a3", ["bride_with_veil"], 14, 27
38022     ],
38023     "1f471": [
38024         ["👱"], "\e515", "\fe1a4", ["person_with_blond_hair"], 14, 28
38025     ],
38026     "1f472": [
38027         ["👲"], "\e516", "\fe1a5", ["man_with_gua_pi_mao"], 14, 29
38028     ],
38029     "1f473": [
38030         ["👳"], "\e517", "\fe1a6", ["man_with_turban"], 15, 0
38031     ],
38032     "1f474": [
38033         ["👴"], "\e518", "\fe1a7", ["older_man"], 15, 1
38034     ],
38035     "1f475": [
38036         ["👵"], "\e519", "\fe1a8", ["older_woman"], 15, 2
38037     ],
38038     "1f476": [
38039         ["👶"], "\e51a", "\fe1a9", ["baby"], 15, 3
38040     ],
38041     "1f477": [
38042         ["👷"], "\e51b", "\fe1aa", ["construction_worker"], 15, 4
38043     ],
38044     "1f478": [
38045         ["👸"], "\e51c", "\fe1ab", ["princess"], 15, 5
38046     ],
38047     "1f479": [
38048         ["👹"], "", "\fe1ac", ["japanese_ogre"], 15, 6
38049     ],
38050     "1f47a": [
38051         ["👺"], "", "\fe1ad", ["japanese_goblin"], 15, 7
38052     ],
38053     "1f47b": [
38054         ["👻"], "\e11b", "\fe1ae", ["ghost"], 15, 8
38055     ],
38056     "1f47c": [
38057         ["👼"], "\e04e", "\fe1af", ["angel"], 15, 9
38058     ],
38059     "1f47d": [
38060         ["👽"], "\e10c", "\fe1b0", ["alien"], 15, 10
38061     ],
38062     "1f47e": [
38063         ["👾"], "\e12b", "\fe1b1", ["space_invader"], 15, 11
38064     ],
38065     "1f47f": [
38066         ["👿"], "\e11a", "\fe1b2", ["imp"], 15, 12
38067     ],
38068     "1f480": [
38069         ["💀"], "\e11c", "\fe1b3", ["skull"], 15, 13
38070     ],
38071     "1f481": [
38072         ["💁"], "\e253", "\fe1b4", ["information_desk_person"], 15, 14
38073     ],
38074     "1f482": [
38075         ["💂"], "\e51e", "\fe1b5", ["guardsman"], 15, 15
38076     ],
38077     "1f483": [
38078         ["💃"], "\e51f", "\fe1b6", ["dancer"], 15, 16
38079     ],
38080     "1f484": [
38081         ["💄"], "\e31c", "\fe195", ["lipstick"], 15, 17
38082     ],
38083     "1f485": [
38084         ["💅"], "\e31d", "\fe196", ["nail_care"], 15, 18
38085     ],
38086     "1f486": [
38087         ["💆"], "\e31e", "\fe197", ["massage"], 15, 19
38088     ],
38089     "1f487": [
38090         ["💇"], "\e31f", "\fe198", ["haircut"], 15, 20
38091     ],
38092     "1f488": [
38093         ["💈"], "\e320", "\fe199", ["barber"], 15, 21
38094     ],
38095     "1f489": [
38096         ["💉"], "\e13b", "\fe509", ["syringe"], 15, 22
38097     ],
38098     "1f48a": [
38099         ["💊"], "\e30f", "\fe50a", ["pill"], 15, 23
38100     ],
38101     "1f48b": [
38102         ["💋"], "\e003", "\fe823", ["kiss"], 15, 24
38103     ],
38104     "1f48c": [
38105         ["💌"], "\e103\e328", "\fe824", ["love_letter"], 15, 25
38106     ],
38107     "1f48d": [
38108         ["💍"], "\e034", "\fe825", ["ring"], 15, 26
38109     ],
38110     "1f48e": [
38111         ["💎"], "\e035", "\fe826", ["gem"], 15, 27
38112     ],
38113     "1f48f": [
38114         ["💏"], "\e111", "\fe827", ["couplekiss"], 15, 28
38115     ],
38116     "1f490": [
38117         ["💐"], "\e306", "\fe828", ["bouquet"], 15, 29
38118     ],
38119     "1f491": [
38120         ["💑"], "\e425", "\fe829", ["couple_with_heart"], 16, 0
38121     ],
38122     "1f492": [
38123         ["💒"], "\e43d", "\fe82a", ["wedding"], 16, 1
38124     ],
38125     "1f493": [
38126         ["💓"], "\e327", "\feb0d", ["heartbeat"], 16, 2
38127     ],
38128     "1f494": [
38129         ["💔"], "\e023", "\feb0e", ["broken_heart"], 16, 3, "</3"
38130     ],
38131     "1f495": [
38132         ["💕"], "\e327", "\feb0f", ["two_hearts"], 16, 4
38133     ],
38134     "1f496": [
38135         ["💖"], "\e327", "\feb10", ["sparkling_heart"], 16, 5
38136     ],
38137     "1f497": [
38138         ["💗"], "\e328", "\feb11", ["heartpulse"], 16, 6
38139     ],
38140     "1f498": [
38141         ["💘"], "\e329", "\feb12", ["cupid"], 16, 7
38142     ],
38143     "1f499": [
38144         ["💙"], "\e32a", "\feb13", ["blue_heart"], 16, 8, "<3"
38145     ],
38146     "1f49a": [
38147         ["💚"], "\e32b", "\feb14", ["green_heart"], 16, 9, "<3"
38148     ],
38149     "1f49b": [
38150         ["💛"], "\e32c", "\feb15", ["yellow_heart"], 16, 10, "<3"
38151     ],
38152     "1f49c": [
38153         ["💜"], "\e32d", "\feb16", ["purple_heart"], 16, 11, "<3"
38154     ],
38155     "1f49d": [
38156         ["💝"], "\e437", "\feb17", ["gift_heart"], 16, 12
38157     ],
38158     "1f49e": [
38159         ["💞"], "\e327", "\feb18", ["revolving_hearts"], 16, 13
38160     ],
38161     "1f49f": [
38162         ["💟"], "\e204", "\feb19", ["heart_decoration"], 16, 14
38163     ],
38164     "1f4a0": [
38165         ["💠"], "", "\feb55", ["diamond_shape_with_a_dot_inside"], 16, 15
38166     ],
38167     "1f4a1": [
38168         ["💡"], "\e10f", "\feb56", ["bulb"], 16, 16
38169     ],
38170     "1f4a2": [
38171         ["💢"], "\e334", "\feb57", ["anger"], 16, 17
38172     ],
38173     "1f4a3": [
38174         ["💣"], "\e311", "\feb58", ["bomb"], 16, 18
38175     ],
38176     "1f4a4": [
38177         ["💤"], "\e13c", "\feb59", ["zzz"], 16, 19
38178     ],
38179     "1f4a5": [
38180         ["💥"], "", "\feb5a", ["boom", "collision"], 16, 20
38181     ],
38182     "1f4a6": [
38183         ["💦"], "\e331", "\feb5b", ["sweat_drops"], 16, 21
38184     ],
38185     "1f4a7": [
38186         ["💧"], "\e331", "\feb5c", ["droplet"], 16, 22
38187     ],
38188     "1f4a8": [
38189         ["💨"], "\e330", "\feb5d", ["dash"], 16, 23
38190     ],
38191     "1f4a9": [
38192         ["💩"], "\e05a", "\fe4f4", ["hankey", "poop", "shit"], 16, 24
38193     ],
38194     "1f4aa": [
38195         ["💪"], "\e14c", "\feb5e", ["muscle"], 16, 25
38196     ],
38197     "1f4ab": [
38198         ["💫"], "\e407", "\feb5f", ["dizzy"], 16, 26
38199     ],
38200     "1f4ac": [
38201         ["💬"], "", "\fe532", ["speech_balloon"], 16, 27
38202     ],
38203     "1f4ad": [
38204         ["💭"], "", "", ["thought_balloon"], 16, 28
38205     ],
38206     "1f4ae": [
38207         ["💮"], "", "\feb7a", ["white_flower"], 16, 29
38208     ],
38209     "1f4af": [
38210         ["💯"], "", "\feb7b", ["100"], 17, 0
38211     ],
38212     "1f4b0": [
38213         ["💰"], "\e12f", "\fe4dd", ["moneybag"], 17, 1
38214     ],
38215     "1f4b1": [
38216         ["💱"], "\e149", "\fe4de", ["currency_exchange"], 17, 2
38217     ],
38218     "1f4b2": [
38219         ["💲"], "\e12f", "\fe4e0", ["heavy_dollar_sign"], 17, 3
38220     ],
38221     "1f4b3": [
38222         ["💳"], "", "\fe4e1", ["credit_card"], 17, 4
38223     ],
38224     "1f4b4": [
38225         ["💴"], "", "\fe4e2", ["yen"], 17, 5
38226     ],
38227     "1f4b5": [
38228         ["💵"], "\e12f", "\fe4e3", ["dollar"], 17, 6
38229     ],
38230     "1f4b6": [
38231         ["💶"], "", "", ["euro"], 17, 7
38232     ],
38233     "1f4b7": [
38234         ["💷"], "", "", ["pound"], 17, 8
38235     ],
38236     "1f4b8": [
38237         ["💸"], "", "\fe4e4", ["money_with_wings"], 17, 9
38238     ],
38239     "1f4b9": [
38240         ["💹"], "\e14a", "\fe4df", ["chart"], 17, 10
38241     ],
38242     "1f4ba": [
38243         ["💺"], "\e11f", "\fe537", ["seat"], 17, 11
38244     ],
38245     "1f4bb": [
38246         ["💻"], "\e00c", "\fe538", ["computer"], 17, 12
38247     ],
38248     "1f4bc": [
38249         ["💼"], "\e11e", "\fe53b", ["briefcase"], 17, 13
38250     ],
38251     "1f4bd": [
38252         ["💽"], "\e316", "\fe53c", ["minidisc"], 17, 14
38253     ],
38254     "1f4be": [
38255         ["💾"], "\e316", "\fe53d", ["floppy_disk"], 17, 15
38256     ],
38257     "1f4bf": [
38258         ["💿"], "\e126", "\fe81d", ["cd"], 17, 16
38259     ],
38260     "1f4c0": [
38261         ["📀"], "\e127", "\fe81e", ["dvd"], 17, 17
38262     ],
38263     "1f4c1": [
38264         ["📁"], "", "\fe543", ["file_folder"], 17, 18
38265     ],
38266     "1f4c2": [
38267         ["📂"], "", "\fe544", ["open_file_folder"], 17, 19
38268     ],
38269     "1f4c3": [
38270         ["📃"], "\e301", "\fe540", ["page_with_curl"], 17, 20
38271     ],
38272     "1f4c4": [
38273         ["📄"], "\e301", "\fe541", ["page_facing_up"], 17, 21
38274     ],
38275     "1f4c5": [
38276         ["📅"], "", "\fe542", ["date"], 17, 22
38277     ],
38278     "1f4c6": [
38279         ["📆"], "", "\fe549", ["calendar"], 17, 23
38280     ],
38281     "1f4c7": [
38282         ["📇"], "\e148", "\fe54d", ["card_index"], 17, 24
38283     ],
38284     "1f4c8": [
38285         ["📈"], "\e14a", "\fe54b", ["chart_with_upwards_trend"], 17, 25
38286     ],
38287     "1f4c9": [
38288         ["📉"], "", "\fe54c", ["chart_with_downwards_trend"], 17, 26
38289     ],
38290     "1f4ca": [
38291         ["📊"], "\e14a", "\fe54a", ["bar_chart"], 17, 27
38292     ],
38293     "1f4cb": [
38294         ["📋"], "\e301", "\fe548", ["clipboard"], 17, 28
38295     ],
38296     "1f4cc": [
38297         ["📌"], "", "\fe54e", ["pushpin"], 17, 29
38298     ],
38299     "1f4cd": [
38300         ["📍"], "", "\fe53f", ["round_pushpin"], 18, 0
38301     ],
38302     "1f4ce": [
38303         ["📎"], "", "\fe53a", ["paperclip"], 18, 1
38304     ],
38305     "1f4cf": [
38306         ["📏"], "", "\fe550", ["straight_ruler"], 18, 2
38307     ],
38308     "1f4d0": [
38309         ["📐"], "", "\fe551", ["triangular_ruler"], 18, 3
38310     ],
38311     "1f4d1": [
38312         ["📑"], "\e301", "\fe552", ["bookmark_tabs"], 18, 4
38313     ],
38314     "1f4d2": [
38315         ["📒"], "\e148", "\fe54f", ["ledger"], 18, 5
38316     ],
38317     "1f4d3": [
38318         ["📓"], "\e148", "\fe545", ["notebook"], 18, 6
38319     ],
38320     "1f4d4": [
38321         ["📔"], "\e148", "\fe547", ["notebook_with_decorative_cover"], 18, 7
38322     ],
38323     "1f4d5": [
38324         ["📕"], "\e148", "\fe502", ["closed_book"], 18, 8
38325     ],
38326     "1f4d6": [
38327         ["📖"], "\e148", "\fe546", ["book", "open_book"], 18, 9
38328     ],
38329     "1f4d7": [
38330         ["📗"], "\e148", "\fe4ff", ["green_book"], 18, 10
38331     ],
38332     "1f4d8": [
38333         ["📘"], "\e148", "\fe500", ["blue_book"], 18, 11
38334     ],
38335     "1f4d9": [
38336         ["📙"], "\e148", "\fe501", ["orange_book"], 18, 12
38337     ],
38338     "1f4da": [
38339         ["📚"], "\e148", "\fe503", ["books"], 18, 13
38340     ],
38341     "1f4db": [
38342         ["📛"], "", "\fe504", ["name_badge"], 18, 14
38343     ],
38344     "1f4dc": [
38345         ["📜"], "", "\fe4fd", ["scroll"], 18, 15
38346     ],
38347     "1f4dd": [
38348         ["📝"], "\e301", "\fe527", ["memo", "pencil"], 18, 16
38349     ],
38350     "1f4de": [
38351         ["📞"], "\e009", "\fe524", ["telephone_receiver"], 18, 17
38352     ],
38353     "1f4df": [
38354         ["📟"], "", "\fe522", ["pager"], 18, 18
38355     ],
38356     "1f4e0": [
38357         ["📠"], "\e00b", "\fe528", ["fax"], 18, 19
38358     ],
38359     "1f4e1": [
38360         ["📡"], "\e14b", "\fe531", ["satellite"], 18, 20
38361     ],
38362     "1f4e2": [
38363         ["📢"], "\e142", "\fe52f", ["loudspeaker"], 18, 21
38364     ],
38365     "1f4e3": [
38366         ["📣"], "\e317", "\fe530", ["mega"], 18, 22
38367     ],
38368     "1f4e4": [
38369         ["📤"], "", "\fe533", ["outbox_tray"], 18, 23
38370     ],
38371     "1f4e5": [
38372         ["📥"], "", "\fe534", ["inbox_tray"], 18, 24
38373     ],
38374     "1f4e6": [
38375         ["📦"], "\e112", "\fe535", ["package"], 18, 25
38376     ],
38377     "1f4e7": [
38378         ["📧"], "\e103", "\feb92", ["e-mail"], 18, 26
38379     ],
38380     "1f4e8": [
38381         ["📨"], "\e103", "\fe52a", ["incoming_envelope"], 18, 27
38382     ],
38383     "1f4e9": [
38384         ["📩"], "\e103", "\fe52b", ["envelope_with_arrow"], 18, 28
38385     ],
38386     "1f4ea": [
38387         ["📪"], "\e101", "\fe52c", ["mailbox_closed"], 18, 29
38388     ],
38389     "1f4eb": [
38390         ["📫"], "\e101", "\fe52d", ["mailbox"], 19, 0
38391     ],
38392     "1f4ec": [
38393         ["📬"], "", "", ["mailbox_with_mail"], 19, 1
38394     ],
38395     "1f4ed": [
38396         ["📭"], "", "", ["mailbox_with_no_mail"], 19, 2
38397     ],
38398     "1f4ee": [
38399         ["📮"], "\e102", "\fe52e", ["postbox"], 19, 3
38400     ],
38401     "1f4ef": [
38402         ["📯"], "", "", ["postal_horn"], 19, 4
38403     ],
38404     "1f4f0": [
38405         ["📰"], "", "\fe822", ["newspaper"], 19, 5
38406     ],
38407     "1f4f1": [
38408         ["📱"], "\e00a", "\fe525", ["iphone"], 19, 6
38409     ],
38410     "1f4f2": [
38411         ["📲"], "\e104", "\fe526", ["calling"], 19, 7
38412     ],
38413     "1f4f3": [
38414         ["📳"], "\e250", "\fe839", ["vibration_mode"], 19, 8
38415     ],
38416     "1f4f4": [
38417         ["📴"], "\e251", "\fe83a", ["mobile_phone_off"], 19, 9
38418     ],
38419     "1f4f5": [
38420         ["📵"], "", "", ["no_mobile_phones"], 19, 10
38421     ],
38422     "1f4f6": [
38423         ["📶"], "\e20b", "\fe838", ["signal_strength"], 19, 11
38424     ],
38425     "1f4f7": [
38426         ["📷"], "\e008", "\fe4ef", ["camera"], 19, 12
38427     ],
38428     "1f4f9": [
38429         ["📹"], "\e03d", "\fe4f9", ["video_camera"], 19, 13
38430     ],
38431     "1f4fa": [
38432         ["📺"], "\e12a", "\fe81c", ["tv"], 19, 14
38433     ],
38434     "1f4fb": [
38435         ["📻"], "\e128", "\fe81f", ["radio"], 19, 15
38436     ],
38437     "1f4fc": [
38438         ["📼"], "\e129", "\fe820", ["vhs"], 19, 16
38439     ],
38440     "1f500": [
38441         ["🔀"], "", "", ["twisted_rightwards_arrows"], 19, 17
38442     ],
38443     "1f501": [
38444         ["🔁"], "", "", ["repeat"], 19, 18
38445     ],
38446     "1f502": [
38447         ["🔂"], "", "", ["repeat_one"], 19, 19
38448     ],
38449     "1f503": [
38450         ["🔃"], "", "\feb91", ["arrows_clockwise"], 19, 20
38451     ],
38452     "1f504": [
38453         ["🔄"], "", "", ["arrows_counterclockwise"], 19, 21
38454     ],
38455     "1f505": [
38456         ["🔅"], "", "", ["low_brightness"], 19, 22
38457     ],
38458     "1f506": [
38459         ["🔆"], "", "", ["high_brightness"], 19, 23
38460     ],
38461     "1f507": [
38462         ["🔇"], "", "", ["mute"], 19, 24
38463     ],
38464     "1f508": [
38465         ["🔈"], "", "", ["speaker"], 19, 25
38466     ],
38467     "1f509": [
38468         ["🔉"], "", "", ["sound"], 19, 26
38469     ],
38470     "1f50a": [
38471         ["🔊"], "\e141", "\fe821", ["loud_sound"], 19, 27
38472     ],
38473     "1f50b": [
38474         ["🔋"], "", "\fe4fc", ["battery"], 19, 28
38475     ],
38476     "1f50c": [
38477         ["🔌"], "", "\fe4fe", ["electric_plug"], 19, 29
38478     ],
38479     "1f50d": [
38480         ["🔍"], "\e114", "\feb85", ["mag"], 20, 0
38481     ],
38482     "1f50e": [
38483         ["🔎"], "\e114", "\feb8d", ["mag_right"], 20, 1
38484     ],
38485     "1f50f": [
38486         ["🔏"], "\e144", "\feb90", ["lock_with_ink_pen"], 20, 2
38487     ],
38488     "1f510": [
38489         ["🔐"], "\e144", "\feb8a", ["closed_lock_with_key"], 20, 3
38490     ],
38491     "1f511": [
38492         ["🔑"], "\e03f", "\feb82", ["key"], 20, 4
38493     ],
38494     "1f512": [
38495         ["🔒"], "\e144", "\feb86", ["lock"], 20, 5
38496     ],
38497     "1f513": [
38498         ["🔓"], "\e145", "\feb87", ["unlock"], 20, 6
38499     ],
38500     "1f514": [
38501         ["🔔"], "\e325", "\fe4f2", ["bell"], 20, 7
38502     ],
38503     "1f515": [
38504         ["🔕"], "", "", ["no_bell"], 20, 8
38505     ],
38506     "1f516": [
38507         ["🔖"], "", "\feb8f", ["bookmark"], 20, 9
38508     ],
38509     "1f517": [
38510         ["🔗"], "", "\feb4b", ["link"], 20, 10
38511     ],
38512     "1f518": [
38513         ["🔘"], "", "\feb8c", ["radio_button"], 20, 11
38514     ],
38515     "1f519": [
38516         ["🔙"], "\e235", "\feb8e", ["back"], 20, 12
38517     ],
38518     "1f51a": [
38519         ["🔚"], "", "\fe01a", ["end"], 20, 13
38520     ],
38521     "1f51b": [
38522         ["🔛"], "", "\fe019", ["on"], 20, 14
38523     ],
38524     "1f51c": [
38525         ["🔜"], "", "\fe018", ["soon"], 20, 15
38526     ],
38527     "1f51d": [
38528         ["🔝"], "\e24c", "\feb42", ["top"], 20, 16
38529     ],
38530     "1f51e": [
38531         ["🔞"], "\e207", "\feb25", ["underage"], 20, 17
38532     ],
38533     "1f51f": [
38534         ["🔟"], "", "\fe83b", ["keycap_ten"], 20, 18
38535     ],
38536     "1f520": [
38537         ["🔠"], "", "\feb7c", ["capital_abcd"], 20, 19
38538     ],
38539     "1f521": [
38540         ["🔡"], "", "\feb7d", ["abcd"], 20, 20
38541     ],
38542     "1f522": [
38543         ["🔢"], "", "\feb7e", ["1234"], 20, 21
38544     ],
38545     "1f523": [
38546         ["🔣"], "", "\feb7f", ["symbols"], 20, 22
38547     ],
38548     "1f524": [
38549         ["🔤"], "", "\feb80", ["abc"], 20, 23
38550     ],
38551     "1f525": [
38552         ["🔥"], "\e11d", "\fe4f6", ["fire"], 20, 24
38553     ],
38554     "1f526": [
38555         ["🔦"], "", "\fe4fb", ["flashlight"], 20, 25
38556     ],
38557     "1f527": [
38558         ["🔧"], "", "\fe4c9", ["wrench"], 20, 26
38559     ],
38560     "1f528": [
38561         ["🔨"], "\e116", "\fe4ca", ["hammer"], 20, 27
38562     ],
38563     "1f529": [
38564         ["🔩"], "", "\fe4cb", ["nut_and_bolt"], 20, 28
38565     ],
38566     "1f52a": [
38567         ["🔪"], "", "\fe4fa", ["hocho", "knife"], 20, 29
38568     ],
38569     "1f52b": [
38570         ["🔫"], "\e113", "\fe4f5", ["gun"], 21, 0
38571     ],
38572     "1f52c": [
38573         ["🔬"], "", "", ["microscope"], 21, 1
38574     ],
38575     "1f52d": [
38576         ["🔭"], "", "", ["telescope"], 21, 2
38577     ],
38578     "1f52e": [
38579         ["🔮"], "\e23e", "\fe4f7", ["crystal_ball"], 21, 3
38580     ],
38581     "1f52f": [
38582         ["🔯"], "\e23e", "\fe4f8", ["six_pointed_star"], 21, 4
38583     ],
38584     "1f530": [
38585         ["🔰"], "\e209", "\fe044", ["beginner"], 21, 5
38586     ],
38587     "1f531": [
38588         ["🔱"], "\e031", "\fe4d2", ["trident"], 21, 6
38589     ],
38590     "1f532": [
38591         ["🔲"], "\e21a", "\feb64", ["black_square_button"], 21, 7
38592     ],
38593     "1f533": [
38594         ["🔳"], "\e21b", "\feb67", ["white_square_button"], 21, 8
38595     ],
38596     "1f534": [
38597         ["🔴"], "\e219", "\feb63", ["red_circle"], 21, 9
38598     ],
38599     "1f535": [
38600         ["🔵"], "\e21a", "\feb64", ["large_blue_circle"], 21, 10
38601     ],
38602     "1f536": [
38603         ["🔶"], "\e21b", "\feb73", ["large_orange_diamond"], 21, 11
38604     ],
38605     "1f537": [
38606         ["🔷"], "\e21b", "\feb74", ["large_blue_diamond"], 21, 12
38607     ],
38608     "1f538": [
38609         ["🔸"], "\e21b", "\feb75", ["small_orange_diamond"], 21, 13
38610     ],
38611     "1f539": [
38612         ["🔹"], "\e21b", "\feb76", ["small_blue_diamond"], 21, 14
38613     ],
38614     "1f53a": [
38615         ["🔺"], "", "\feb78", ["small_red_triangle"], 21, 15
38616     ],
38617     "1f53b": [
38618         ["🔻"], "", "\feb79", ["small_red_triangle_down"], 21, 16
38619     ],
38620     "1f53c": [
38621         ["🔼"], "", "\feb01", ["arrow_up_small"], 21, 17
38622     ],
38623     "1f53d": [
38624         ["🔽"], "", "\feb00", ["arrow_down_small"], 21, 18
38625     ],
38626     "1f550": [
38627         ["🕐"], "\e024", "\fe01e", ["clock1"], 21, 19
38628     ],
38629     "1f551": [
38630         ["🕑"], "\e025", "\fe01f", ["clock2"], 21, 20
38631     ],
38632     "1f552": [
38633         ["🕒"], "\e026", "\fe020", ["clock3"], 21, 21
38634     ],
38635     "1f553": [
38636         ["🕓"], "\e027", "\fe021", ["clock4"], 21, 22
38637     ],
38638     "1f554": [
38639         ["🕔"], "\e028", "\fe022", ["clock5"], 21, 23
38640     ],
38641     "1f555": [
38642         ["🕕"], "\e029", "\fe023", ["clock6"], 21, 24
38643     ],
38644     "1f556": [
38645         ["🕖"], "\e02a", "\fe024", ["clock7"], 21, 25
38646     ],
38647     "1f557": [
38648         ["🕗"], "\e02b", "\fe025", ["clock8"], 21, 26
38649     ],
38650     "1f558": [
38651         ["🕘"], "\e02c", "\fe026", ["clock9"], 21, 27
38652     ],
38653     "1f559": [
38654         ["🕙"], "\e02d", "\fe027", ["clock10"], 21, 28
38655     ],
38656     "1f55a": [
38657         ["🕚"], "\e02e", "\fe028", ["clock11"], 21, 29
38658     ],
38659     "1f55b": [
38660         ["🕛"], "\e02f", "\fe029", ["clock12"], 22, 0
38661     ],
38662     "1f55c": [
38663         ["🕜"], "", "", ["clock130"], 22, 1
38664     ],
38665     "1f55d": [
38666         ["🕝"], "", "", ["clock230"], 22, 2
38667     ],
38668     "1f55e": [
38669         ["🕞"], "", "", ["clock330"], 22, 3
38670     ],
38671     "1f55f": [
38672         ["🕟"], "", "", ["clock430"], 22, 4
38673     ],
38674     "1f560": [
38675         ["🕠"], "", "", ["clock530"], 22, 5
38676     ],
38677     "1f561": [
38678         ["🕡"], "", "", ["clock630"], 22, 6
38679     ],
38680     "1f562": [
38681         ["🕢"], "", "", ["clock730"], 22, 7
38682     ],
38683     "1f563": [
38684         ["🕣"], "", "", ["clock830"], 22, 8
38685     ],
38686     "1f564": [
38687         ["🕤"], "", "", ["clock930"], 22, 9
38688     ],
38689     "1f565": [
38690         ["🕥"], "", "", ["clock1030"], 22, 10
38691     ],
38692     "1f566": [
38693         ["🕦"], "", "", ["clock1130"], 22, 11
38694     ],
38695     "1f567": [
38696         ["🕧"], "", "", ["clock1230"], 22, 12
38697     ],
38698     "1f5fb": [
38699         ["🗻"], "\e03b", "\fe4c3", ["mount_fuji"], 22, 13
38700     ],
38701     "1f5fc": [
38702         ["🗼"], "\e509", "\fe4c4", ["tokyo_tower"], 22, 14
38703     ],
38704     "1f5fd": [
38705         ["🗽"], "\e51d", "\fe4c6", ["statue_of_liberty"], 22, 15
38706     ],
38707     "1f5fe": [
38708         ["🗾"], "", "\fe4c7", ["japan"], 22, 16
38709     ],
38710     "1f5ff": [
38711         ["🗿"], "", "\fe4c8", ["moyai"], 22, 17
38712     ],
38713     "1f600": [
38714         ["😀"], "", "", ["grinning"], 22, 18, ":D"
38715     ],
38716     "1f601": [
38717         ["😁"], "\e404", "\fe333", ["grin"], 22, 19
38718     ],
38719     "1f602": [
38720         ["😂"], "\e412", "\fe334", ["joy"], 22, 20
38721     ],
38722     "1f603": [
38723         ["😃"], "\e057", "\fe330", ["smiley"], 22, 21, ":)"
38724     ],
38725     "1f604": [
38726         ["😄"], "\e415", "\fe338", ["smile"], 22, 22, ":)"
38727     ],
38728     "1f605": [
38729         ["😅"], "\e415\e331", "\fe331", ["sweat_smile"], 22, 23
38730     ],
38731     "1f606": [
38732         ["😆"], "\e40a", "\fe332", ["satisfied"], 22, 24
38733     ],
38734     "1f607": [
38735         ["😇"], "", "", ["innocent"], 22, 25
38736     ],
38737     "1f608": [
38738         ["😈"], "", "", ["smiling_imp"], 22, 26
38739     ],
38740     "1f609": [
38741         ["😉"], "\e405", "\fe347", ["wink"], 22, 27, ";)"
38742     ],
38743     "1f60a": [
38744         ["😊"], "\e056", "\fe335", ["blush"], 22, 28
38745     ],
38746     "1f60b": [
38747         ["😋"], "\e056", "\fe32b", ["yum"], 22, 29
38748     ],
38749     "1f60c": [
38750         ["😌"], "\e40a", "\fe33e", ["relieved"], 23, 0
38751     ],
38752     "1f60d": [
38753         ["😍"], "\e106", "\fe327", ["heart_eyes"], 23, 1
38754     ],
38755     "1f60e": [
38756         ["😎"], "", "", ["sunglasses"], 23, 2
38757     ],
38758     "1f60f": [
38759         ["😏"], "\e402", "\fe343", ["smirk"], 23, 3
38760     ],
38761     "1f610": [
38762         ["😐"], "", "", ["neutral_face"], 23, 4
38763     ],
38764     "1f611": [
38765         ["😑"], "", "", ["expressionless"], 23, 5
38766     ],
38767     "1f612": [
38768         ["😒"], "\e40e", "\fe326", ["unamused"], 23, 6
38769     ],
38770     "1f613": [
38771         ["😓"], "\e108", "\fe344", ["sweat"], 23, 7
38772     ],
38773     "1f614": [
38774         ["😔"], "\e403", "\fe340", ["pensive"], 23, 8
38775     ],
38776     "1f615": [
38777         ["😕"], "", "", ["confused"], 23, 9
38778     ],
38779     "1f616": [
38780         ["😖"], "\e407", "\fe33f", ["confounded"], 23, 10
38781     ],
38782     "1f617": [
38783         ["😗"], "", "", ["kissing"], 23, 11
38784     ],
38785     "1f618": [
38786         ["😘"], "\e418", "\fe32c", ["kissing_heart"], 23, 12
38787     ],
38788     "1f619": [
38789         ["😙"], "", "", ["kissing_smiling_eyes"], 23, 13
38790     ],
38791     "1f61a": [
38792         ["😚"], "\e417", "\fe32d", ["kissing_closed_eyes"], 23, 14
38793     ],
38794     "1f61b": [
38795         ["😛"], "", "", ["stuck_out_tongue"], 23, 15, ":p"
38796     ],
38797     "1f61c": [
38798         ["😜"], "\e105", "\fe329", ["stuck_out_tongue_winking_eye"], 23, 16, ";p"
38799     ],
38800     "1f61d": [
38801         ["😝"], "\e409", "\fe32a", ["stuck_out_tongue_closed_eyes"], 23, 17
38802     ],
38803     "1f61e": [
38804         ["😞"], "\e058", "\fe323", ["disappointed"], 23, 18, ":("
38805     ],
38806     "1f61f": [
38807         ["😟"], "", "", ["worried"], 23, 19
38808     ],
38809     "1f620": [
38810         ["😠"], "\e059", "\fe320", ["angry"], 23, 20
38811     ],
38812     "1f621": [
38813         ["😡"], "\e416", "\fe33d", ["rage"], 23, 21
38814     ],
38815     "1f622": [
38816         ["😢"], "\e413", "\fe339", ["cry"], 23, 22, ":'("
38817     ],
38818     "1f623": [
38819         ["😣"], "\e406", "\fe33c", ["persevere"], 23, 23
38820     ],
38821     "1f624": [
38822         ["😤"], "\e404", "\fe328", ["triumph"], 23, 24
38823     ],
38824     "1f625": [
38825         ["😥"], "\e401", "\fe345", ["disappointed_relieved"], 23, 25
38826     ],
38827     "1f626": [
38828         ["😦"], "", "", ["frowning"], 23, 26
38829     ],
38830     "1f627": [
38831         ["😧"], "", "", ["anguished"], 23, 27
38832     ],
38833     "1f628": [
38834         ["😨"], "\e40b", "\fe33b", ["fearful"], 23, 28
38835     ],
38836     "1f629": [
38837         ["😩"], "\e403", "\fe321", ["weary"], 23, 29
38838     ],
38839     "1f62a": [
38840         ["😪"], "\e408", "\fe342", ["sleepy"], 24, 0
38841     ],
38842     "1f62b": [
38843         ["😫"], "\e406", "\fe346", ["tired_face"], 24, 1
38844     ],
38845     "1f62c": [
38846         ["😬"], "", "", ["grimacing"], 24, 2
38847     ],
38848     "1f62d": [
38849         ["😭"], "\e411", "\fe33a", ["sob"], 24, 3, ":'("
38850     ],
38851     "1f62e": [
38852         ["😮"], "", "", ["open_mouth"], 24, 4
38853     ],
38854     "1f62f": [
38855         ["😯"], "", "", ["hushed"], 24, 5
38856     ],
38857     "1f630": [
38858         ["😰"], "\e40f", "\fe325", ["cold_sweat"], 24, 6
38859     ],
38860     "1f631": [
38861         ["😱"], "\e107", "\fe341", ["scream"], 24, 7
38862     ],
38863     "1f632": [
38864         ["😲"], "\e410", "\fe322", ["astonished"], 24, 8
38865     ],
38866     "1f633": [
38867         ["😳"], "\e40d", "\fe32f", ["flushed"], 24, 9
38868     ],
38869     "1f634": [
38870         ["😴"], "", "", ["sleeping"], 24, 10
38871     ],
38872     "1f635": [
38873         ["😵"], "\e406", "\fe324", ["dizzy_face"], 24, 11
38874     ],
38875     "1f636": [
38876         ["😶"], "", "", ["no_mouth"], 24, 12
38877     ],
38878     "1f637": [
38879         ["😷"], "\e40c", "\fe32e", ["mask"], 24, 13
38880     ],
38881     "1f638": [
38882         ["😸"], "\e404", "\fe349", ["smile_cat"], 24, 14
38883     ],
38884     "1f639": [
38885         ["😹"], "\e412", "\fe34a", ["joy_cat"], 24, 15
38886     ],
38887     "1f63a": [
38888         ["😺"], "\e057", "\fe348", ["smiley_cat"], 24, 16
38889     ],
38890     "1f63b": [
38891         ["😻"], "\e106", "\fe34c", ["heart_eyes_cat"], 24, 17
38892     ],
38893     "1f63c": [
38894         ["😼"], "\e404", "\fe34f", ["smirk_cat"], 24, 18
38895     ],
38896     "1f63d": [
38897         ["😽"], "\e418", "\fe34b", ["kissing_cat"], 24, 19
38898     ],
38899     "1f63e": [
38900         ["😾"], "\e416", "\fe34e", ["pouting_cat"], 24, 20
38901     ],
38902     "1f63f": [
38903         ["😿"], "\e413", "\fe34d", ["crying_cat_face"], 24, 21
38904     ],
38905     "1f640": [
38906         ["🙀"], "\e403", "\fe350", ["scream_cat"], 24, 22
38907     ],
38908     "1f645": [
38909         ["🙅"], "\e423", "\fe351", ["no_good"], 24, 23
38910     ],
38911     "1f646": [
38912         ["🙆"], "\e424", "\fe352", ["ok_woman"], 24, 24
38913     ],
38914     "1f647": [
38915         ["🙇"], "\e426", "\fe353", ["bow"], 24, 25
38916     ],
38917     "1f648": [
38918         ["🙈"], "", "\fe354", ["see_no_evil"], 24, 26
38919     ],
38920     "1f649": [
38921         ["🙉"], "", "\fe356", ["hear_no_evil"], 24, 27
38922     ],
38923     "1f64a": [
38924         ["🙊"], "", "\fe355", ["speak_no_evil"], 24, 28
38925     ],
38926     "1f64b": [
38927         ["🙋"], "\e012", "\fe357", ["raising_hand"], 24, 29
38928     ],
38929     "1f64c": [
38930         ["🙌"], "\e427", "\fe358", ["raised_hands"], 25, 0
38931     ],
38932     "1f64d": [
38933         ["🙍"], "\e403", "\fe359", ["person_frowning"], 25, 1
38934     ],
38935     "1f64e": [
38936         ["🙎"], "\e416", "\fe35a", ["person_with_pouting_face"], 25, 2
38937     ],
38938     "1f64f": [
38939         ["🙏"], "\e41d", "\fe35b", ["pray"], 25, 3
38940     ],
38941     "1f680": [
38942         ["🚀"], "\e10d", "\fe7ed", ["rocket"], 25, 4
38943     ],
38944     "1f681": [
38945         ["🚁"], "", "", ["helicopter"], 25, 5
38946     ],
38947     "1f682": [
38948         ["🚂"], "", "", ["steam_locomotive"], 25, 6
38949     ],
38950     "1f683": [
38951         ["🚃"], "\e01e", "\fe7df", ["railway_car"], 25, 7
38952     ],
38953     "1f684": [
38954         ["🚄"], "\e435", "\fe7e2", ["bullettrain_side"], 25, 8
38955     ],
38956     "1f685": [
38957         ["🚅"], "\e01f", "\fe7e3", ["bullettrain_front"], 25, 9
38958     ],
38959     "1f686": [
38960         ["🚆"], "", "", ["train2"], 25, 10
38961     ],
38962     "1f687": [
38963         ["🚇"], "\e434", "\fe7e0", ["metro"], 25, 11
38964     ],
38965     "1f688": [
38966         ["🚈"], "", "", ["light_rail"], 25, 12
38967     ],
38968     "1f689": [
38969         ["🚉"], "\e039", "\fe7ec", ["station"], 25, 13
38970     ],
38971     "1f68a": [
38972         ["🚊"], "", "", ["tram"], 25, 14
38973     ],
38974     "1f68b": [
38975         ["🚋"], "", "", ["train"], 25, 15
38976     ],
38977     "1f68c": [
38978         ["🚌"], "\e159", "\fe7e6", ["bus"], 25, 16
38979     ],
38980     "1f68d": [
38981         ["🚍"], "", "", ["oncoming_bus"], 25, 17
38982     ],
38983     "1f68e": [
38984         ["🚎"], "", "", ["trolleybus"], 25, 18
38985     ],
38986     "1f68f": [
38987         ["🚏"], "\e150", "\fe7e7", ["busstop"], 25, 19
38988     ],
38989     "1f690": [
38990         ["🚐"], "", "", ["minibus"], 25, 20
38991     ],
38992     "1f691": [
38993         ["🚑"], "\e431", "\fe7f3", ["ambulance"], 25, 21
38994     ],
38995     "1f692": [
38996         ["🚒"], "\e430", "\fe7f2", ["fire_engine"], 25, 22
38997     ],
38998     "1f693": [
38999         ["🚓"], "\e432", "\fe7f4", ["police_car"], 25, 23
39000     ],
39001     "1f694": [
39002         ["🚔"], "", "", ["oncoming_police_car"], 25, 24
39003     ],
39004     "1f695": [
39005         ["🚕"], "\e15a", "\fe7ef", ["taxi"], 25, 25
39006     ],
39007     "1f696": [
39008         ["🚖"], "", "", ["oncoming_taxi"], 25, 26
39009     ],
39010     "1f697": [
39011         ["🚗"], "\e01b", "\fe7e4", ["car", "red_car"], 25, 27
39012     ],
39013     "1f698": [
39014         ["🚘"], "", "", ["oncoming_automobile"], 25, 28
39015     ],
39016     "1f699": [
39017         ["🚙"], "\e42e", "\fe7e5", ["blue_car"], 25, 29
39018     ],
39019     "1f69a": [
39020         ["🚚"], "\e42f", "\fe7f1", ["truck"], 26, 0
39021     ],
39022     "1f69b": [
39023         ["🚛"], "", "", ["articulated_lorry"], 26, 1
39024     ],
39025     "1f69c": [
39026         ["🚜"], "", "", ["tractor"], 26, 2
39027     ],
39028     "1f69d": [
39029         ["🚝"], "", "", ["monorail"], 26, 3
39030     ],
39031     "1f69e": [
39032         ["🚞"], "", "", ["mountain_railway"], 26, 4
39033     ],
39034     "1f69f": [
39035         ["🚟"], "", "", ["suspension_railway"], 26, 5
39036     ],
39037     "1f6a0": [
39038         ["🚠"], "", "", ["mountain_cableway"], 26, 6
39039     ],
39040     "1f6a1": [
39041         ["🚡"], "", "", ["aerial_tramway"], 26, 7
39042     ],
39043     "1f6a2": [
39044         ["🚢"], "\e202", "\fe7e8", ["ship"], 26, 8
39045     ],
39046     "1f6a3": [
39047         ["🚣"], "", "", ["rowboat"], 26, 9
39048     ],
39049     "1f6a4": [
39050         ["🚤"], "\e135", "\fe7ee", ["speedboat"], 26, 10
39051     ],
39052     "1f6a5": [
39053         ["🚥"], "\e14e", "\fe7f7", ["traffic_light"], 26, 11
39054     ],
39055     "1f6a6": [
39056         ["🚦"], "", "", ["vertical_traffic_light"], 26, 12
39057     ],
39058     "1f6a7": [
39059         ["🚧"], "\e137", "\fe7f8", ["construction"], 26, 13
39060     ],
39061     "1f6a8": [
39062         ["🚨"], "\e432", "\fe7f9", ["rotating_light"], 26, 14
39063     ],
39064     "1f6a9": [
39065         ["🚩"], "", "\feb22", ["triangular_flag_on_post"], 26, 15
39066     ],
39067     "1f6aa": [
39068         ["🚪"], "", "\fe4f3", ["door"], 26, 16
39069     ],
39070     "1f6ab": [
39071         ["🚫"], "", "\feb48", ["no_entry_sign"], 26, 17
39072     ],
39073     "1f6ac": [
39074         ["🚬"], "\e30e", "\feb1e", ["smoking"], 26, 18
39075     ],
39076     "1f6ad": [
39077         ["🚭"], "\e208", "\feb1f", ["no_smoking"], 26, 19
39078     ],
39079     "1f6ae": [
39080         ["🚮"], "", "", ["put_litter_in_its_place"], 26, 20
39081     ],
39082     "1f6af": [
39083         ["🚯"], "", "", ["do_not_litter"], 26, 21
39084     ],
39085     "1f6b0": [
39086         ["🚰"], "", "", ["potable_water"], 26, 22
39087     ],
39088     "1f6b1": [
39089         ["🚱"], "", "", ["non-potable_water"], 26, 23
39090     ],
39091     "1f6b2": [
39092         ["🚲"], "\e136", "\fe7eb", ["bike"], 26, 24
39093     ],
39094     "1f6b3": [
39095         ["🚳"], "", "", ["no_bicycles"], 26, 25
39096     ],
39097     "1f6b4": [
39098         ["🚴"], "", "", ["bicyclist"], 26, 26
39099     ],
39100     "1f6b5": [
39101         ["🚵"], "", "", ["mountain_bicyclist"], 26, 27
39102     ],
39103     "1f6b6": [
39104         ["🚶"], "\e201", "\fe7f0", ["walking"], 26, 28
39105     ],
39106     "1f6b7": [
39107         ["🚷"], "", "", ["no_pedestrians"], 26, 29
39108     ],
39109     "1f6b8": [
39110         ["🚸"], "", "", ["children_crossing"], 27, 0
39111     ],
39112     "1f6b9": [
39113         ["🚹"], "\e138", "\feb33", ["mens"], 27, 1
39114     ],
39115     "1f6ba": [
39116         ["🚺"], "\e139", "\feb34", ["womens"], 27, 2
39117     ],
39118     "1f6bb": [
39119         ["🚻"], "\e151", "\fe506", ["restroom"], 27, 3
39120     ],
39121     "1f6bc": [
39122         ["🚼"], "\e13a", "\feb35", ["baby_symbol"], 27, 4
39123     ],
39124     "1f6bd": [
39125         ["🚽"], "\e140", "\fe507", ["toilet"], 27, 5
39126     ],
39127     "1f6be": [
39128         ["🚾"], "\e309", "\fe508", ["wc"], 27, 6
39129     ],
39130     "1f6bf": [
39131         ["🚿"], "", "", ["shower"], 27, 7
39132     ],
39133     "1f6c0": [
39134         ["🛀"], "\e13f", "\fe505", ["bath"], 27, 8
39135     ],
39136     "1f6c1": [
39137         ["🛁"], "", "", ["bathtub"], 27, 9
39138     ],
39139     "1f6c2": [
39140         ["🛂"], "", "", ["passport_control"], 27, 10
39141     ],
39142     "1f6c3": [
39143         ["🛃"], "", "", ["customs"], 27, 11
39144     ],
39145     "1f6c4": [
39146         ["🛄"], "", "", ["baggage_claim"], 27, 12
39147     ],
39148     "1f6c5": [
39149         ["🛅"], "", "", ["left_luggage"], 27, 13
39150     ],
39151     "0023-20e3": [
39152         ["#️⃣", "#⃣"], "\e210", "\fe82c", ["hash"], 27, 14
39153     ],
39154     "0030-20e3": [
39155         ["0️⃣", "0⃣"], "\e225", "\fe837", ["zero"], 27, 15
39156     ],
39157     "0031-20e3": [
39158         ["1️⃣", "1⃣"], "\e21c", "\fe82e", ["one"], 27, 16
39159     ],
39160     "0032-20e3": [
39161         ["2️⃣", "2⃣"], "\e21d", "\fe82f", ["two"], 27, 17
39162     ],
39163     "0033-20e3": [
39164         ["3️⃣", "3⃣"], "\e21e", "\fe830", ["three"], 27, 18
39165     ],
39166     "0034-20e3": [
39167         ["4️⃣", "4⃣"], "\e21f", "\fe831", ["four"], 27, 19
39168     ],
39169     "0035-20e3": [
39170         ["5️⃣", "5⃣"], "\e220", "\fe832", ["five"], 27, 20
39171     ],
39172     "0036-20e3": [
39173         ["6️⃣", "6⃣"], "\e221", "\fe833", ["six"], 27, 21
39174     ],
39175     "0037-20e3": [
39176         ["7️⃣", "7⃣"], "\e222", "\fe834", ["seven"], 27, 22
39177     ],
39178     "0038-20e3": [
39179         ["8️⃣", "8⃣"], "\e223", "\fe835", ["eight"], 27, 23
39180     ],
39181     "0039-20e3": [
39182         ["9️⃣", "9⃣"], "\e224", "\fe836", ["nine"], 27, 24
39183     ],
39184     "1f1e8-1f1f3": [
39185         ["🇨🇳"], "\e513", "\fe4ed", ["cn"], 27, 25
39186     ],
39187     "1f1e9-1f1ea": [
39188         ["🇩🇪"], "\e50e", "\fe4e8", ["de"], 27, 26
39189     ],
39190     "1f1ea-1f1f8": [
39191         ["🇪🇸"], "\e511", "\fe4eb", ["es"], 27, 27
39192     ],
39193     "1f1eb-1f1f7": [
39194         ["🇫🇷"], "\e50d", "\fe4e7", ["fr"], 27, 28
39195     ],
39196     "1f1ec-1f1e7": [
39197         ["🇬🇧"], "\e510", "\fe4ea", ["gb", "uk"], 27, 29
39198     ],
39199     "1f1ee-1f1f9": [
39200         ["🇮🇹"], "\e50f", "\fe4e9", ["it"], 28, 0
39201     ],
39202     "1f1ef-1f1f5": [
39203         ["🇯🇵"], "\e50b", "\fe4e5", ["jp"], 28, 1
39204     ],
39205     "1f1f0-1f1f7": [
39206         ["🇰🇷"], "\e514", "\fe4ee", ["kr"], 28, 2
39207     ],
39208     "1f1f7-1f1fa": [
39209         ["🇷🇺"], "\e512", "\fe4ec", ["ru"], 28, 3
39210     ],
39211     "1f1fa-1f1f8": [
39212         ["🇺🇸"], "\e50c", "\fe4e6", ["us"], 28, 4
39213     ]
39214 }, Config.smileys = {
39215     "<3": "heart",
39216     "</3": "broken_heart",
39217     ":)": "blush",
39218     "(:": "blush",
39219     ":-)": "blush",
39220     "C:": "smile",
39221     "c:": "smile",
39222     ":D": "smile",
39223     ":-D": "smile",
39224     ";)": "wink",
39225     ";-)": "wink",
39226     "):": "disappointed",
39227     ":(": "disappointed",
39228     ":-(": "disappointed",
39229     ":'(": "cry",
39230     "=)": "smiley",
39231     "=-)": "smiley",
39232     ":*": "kiss",
39233     ":-*": "kiss",
39234     ":>": "laughing",
39235     ":->": "laughing",
39236     "8)": "sunglasses",
39237     ":\\\\": "confused",
39238     ":-\\\\": "confused",
39239     ":/": "confused",
39240     ":-/": "confused",
39241     ":|": "neutral_face",
39242     ":-|": "neutral_face",
39243     ":o": "open_mouth",
39244     ":-o": "open_mouth",
39245     ">:(": "angry",
39246     ">:-(": "angry",
39247     ":p": "stuck_out_tongue",
39248     ":-p": "stuck_out_tongue",
39249     ":P": "stuck_out_tongue",
39250     ":-P": "stuck_out_tongue",
39251     ":b": "stuck_out_tongue",
39252     ":-b": "stuck_out_tongue",
39253     ";p": "stuck_out_tongue_winking_eye",
39254     ";-p": "stuck_out_tongue_winking_eye",
39255     ";b": "stuck_out_tongue_winking_eye",
39256     ";-b": "stuck_out_tongue_winking_eye",
39257     ";P": "stuck_out_tongue_winking_eye",
39258     ";-P": "stuck_out_tongue_winking_eye",
39259     ":o)": "monkey_face",
39260     "D:": "anguished"
39261 }, Config.inits = {}, Config.map = {}, Config.mapcolon = {};
39262 var a = [];
39263 Config.reversemap = {}, Config.init_emoticons = function() {
39264         if (!Config.inits.emoticons) {
39265             Config.init_colons(), Config.inits.emoticons = 1;
39266             var e = [];
39267             Config.map.emoticons = {};
39268             for (var t in Config.emoticons_data) {
39269                 var n = t.replace(/\&/g, "&amp;").replace(/\</g, "&lt;").replace(/\>/g, "&gt;");
39270                 Config.map.colons[emoji.emoticons_data[t]] && (Config.map.emoticons[n] = Config.map.colons[Config.emoticons_data[t]], e.push(Config.escape_rx(n)))
39271             }
39272             Config.rx_emoticons = new RegExp("(^|\\s)(" + e.join("|") + ")(?=$|[\\s|\\?\\.,!])", "g")
39273         }
39274     }, Config.init_colons = function() {
39275         if (!Config.inits.colons) {
39276             Config.inits.colons = 1, Config.rx_colons = new RegExp(":[^\\s:]+:", "g"), Config.map.colons = {};
39277             for (var e in Config.data)
39278                 for (var t = 0; t < Config.data[e][3].length; t++) Config.map.colons[emoji.data[e][3][t]] = e
39279         }
39280     }, Config.init_unified = function() {
39281         Config.inits.unified || (Config.inits.unified = 1, buildMap())
39282     }, Config.escape_rx = function(e) {
39283         return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
39284     },
39285     function(e) {
39286         function t() {
39287             return r ? (r = !1, "") : n
39288         }
39289         var n = "",
39290             r = !1,
39291             i = {},
39292             o = !!(e.chrome && chrome.storage && chrome.storage.local),
39293             a = !o && !!e.localStorage;
39294         e.ConfigStorage = {
39295             prefix: function(e) {
39296                 n = e
39297             },
39298             noPrefix: function() {
39299                 r = !0
39300             },
39301             get: function() {
39302                 var e, n, r, s = Array.prototype.slice.call(arguments),
39303                     c = s.pop(),
39304                     l = [],
39305                     u = 1 == s.length,
39306                     d = !0,
39307                     f = t();
39308                 for (n = 0; n < s.length; n++)
39309                     if ("xt_" != (r = s[n] = f + s[n]).substr(0, 3) && void 0 !== i[r]) l.push(i[r]);
39310                     else if (a) {
39311                     try {
39312                         e = localStorage.getItem(r)
39313                     } catch (e) {
39314                         a = !1
39315                     }
39316                     try {
39317                         e = void 0 !== e && null !== e && JSON.parse(e)
39318                     } catch (t) {
39319                         e = !1
39320                     }
39321                     l.push(i[r] = e)
39322                 } else o ? d = !1 : l.push(i[r] = !1);
39323                 if (d) return c(u ? l[0] : l);
39324                 chrome.storage.local.get(s, function(e) {
39325                     var t;
39326                     for (l = [], n = 0; n < s.length; n++) t = void 0 !== (t = e[r = s[n]]) && null !== t && JSON.parse(t), l.push(i[r] = t);
39327                     c(u ? l[0] : l)
39328                 })
39329             },
39330             set: function(e, n) {
39331                 var r, s, c = {},
39332                     l = t();
39333                 for (r in e)
39334                     if (e.hasOwnProperty(r))
39335                         if (s = e[r], r = l + r, i[r] = s, s = JSON.stringify(s), a) try {
39336                             localStorage.setItem(r, s)
39337                         } catch (e) {
39338                             a = !1
39339                         } else c[r] = s;
39340                         !a && o ? chrome.storage.local.set(c, n) : n && n()
39341             },
39342             remove: function() {
39343                 var e, n, r, s = Array.prototype.slice.call(arguments),
39344                     c = t();
39345                 for ("function" == typeof s[s.length - 1] && (r = s.pop()), e = 0; e < s.length; e++)
39346                     if (n = s[e] = c + s[e], delete i[n], a) try {
39347                         localStorage.removeItem(n)
39348                     } catch (e) {
39349                         a = !1
39350                     }
39351                     o ? chrome.storage.local.remove(s, r): r && r()
39352             }
39353         }
39354     }(this),
39355     function(e, t, n) {
39356         var r = [8, 9, 17, 18, 37, 38, 39, 40, 91, 46];
39357         e.emojiarea = {
39358             assetsPath: "",
39359             iconSize: 25,
39360             emojiAttachmentLocation: "bottom right",
39361             emojiMenuLocation: "top left",
39362             icons: {}
39363         };
39364         var i = ":joy:,:kissing_heart:,:heart:,:heart_eyes:,:blush:,:grin:,:+1:,:relaxed:,:pensive:,:smile:,:sob:,:kiss:,:unamused:,:flushed:,:stuck_out_tongue_winking_eye:,:see_no_evil:,:wink:,:smiley:,:cry:,:stuck_out_tongue_closed_eyes:,:scream:,:rage:,:smirk:,:disappointed:,:sweat_smile:,:kissing_closed_eyes:,:speak_no_evil:,:relieved:,:grinning:,:yum:,:laughing:,:ok_hand:,:neutral_face:,:confused:".split(",");
39365         e.fn.emojiarea = function(t) {
39366             return (t = e.extend({}, t)).elemId && this.push(e("#" + t.elemId)), this.each(function() {
39367                 var n = e(this),
39368                     r = getGuid();
39369                 new s(n, r, t), n.attr({
39370                     "data-emojiable": "converted",
39371                     "data-id": r,
39372                     "data-type": "original-input"
39373                 })
39374             })
39375         };
39376         var o = {};
39377         o.restoreSelection = t.getSelection ? function(e) {
39378             var n = t.getSelection();
39379             n.removeAllRanges();
39380             for (var r = 0, i = e.length; r < i; ++r) n.addRange(e[r])
39381         } : n.selection && n.selection.createRange ? function(e) {
39382             e && e.select()
39383         } : void 0, o.saveSelection = t.getSelection ? function() {
39384             var e = t.getSelection(),
39385                 n = [];
39386             if (e.rangeCount)
39387                 for (var r = 0, i = e.rangeCount; r < i; ++r) n.push(e.getRangeAt(r));
39388             return n
39389         } : n.selection && n.selection.createRange ? function() {
39390             var e = n.selection;
39391             return "none" !== e.type.toLowerCase() ? e.createRange() : null
39392         } : void 0, o.replaceSelection = t.getSelection ? function(e) {
39393             var r, i = t.getSelection(),
39394                 o = "string" == typeof e ? n.createTextNode(e) : e;
39395             i.getRangeAt && i.rangeCount && ((r = i.getRangeAt(0)).deleteContents(), r.insertNode(o), r.setStart(o, 0), t.setTimeout(function() {
39396                 (r = n.createRange()).setStartAfter(o), r.collapse(!0), i.removeAllRanges(), i.addRange(r)
39397             }, 0))
39398         } : n.selection && n.selection.createRange ? function(e) {
39399             var t = n.selection.createRange();
39400             "string" == typeof e ? t.text = e : t.pasteHTML(e.outerHTML)
39401         } : void 0, o.insertAtCursor = function(e, t) {
39402             e = " " + e;
39403             var r, i, o = t.value;
39404             void 0 !== t.selectionStart && void 0 !== t.selectionEnd ? (r = t.selectionStart, t.selectionEnd, t.value = o.substring(0, r) + e + o.substring(t.selectionEnd), t.selectionStart = t.selectionEnd = r + e.length) : void 0 !== n.selection && void 0 !== n.selection.createRange && ((i = n.selection.createRange()).text = e, i.select())
39405         }, o.extend = function(e, t) {
39406             if (void 0 !== e && e || (e = {}), "object" == typeof t)
39407                 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
39408             return e
39409         }, o.escapeRegex = function(e) {
39410             return (e + "").replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1")
39411         }, o.htmlEntities = function(e) {
39412             return String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;")
39413         }, o.emojiInserted = function(e, t) {
39414             ConfigStorage.get("emojis_recent", function(t) {
39415                 var n = (t = t || i || []).indexOf(e);
39416                 if (!n) return !1; - 1 != n && t.splice(n, 1), t.unshift(e), t.length > 42 && (t = t.slice(42)), ConfigStorage.set({
39417                     emojis_recent: t
39418                 })
39419             })
39420         };
39421         var a = function() {};
39422         a.prototype.setup = function() {
39423             var e = this;
39424             e.emojiMenu = new c(e), this.setupButton()
39425         }, a.prototype.setupButton = function() {
39426             var t = this,
39427                 n = e("[data-id=" + this.id + "][data-type=picker]");
39428             n.on("click", function(e) {
39429                 t.emojiMenu.show(t)
39430             }), this.$button = n, this.$dontHideOnClick = "emoji-picker"
39431         }, a.createIcon = function(t, n) {
39432             var r = t[0],
39433                 i = t[1],
39434                 a = t[2],
39435                 s = t[3],
39436                 c = e.emojiarea.assetsPath + "/emoji_spritesheet_!.png",
39437                 l = e.emojiarea.assetsPath + "/blank.gif",
39438                 u = n && Config.Mobile ? 26 : e.emojiarea.iconSize,
39439                 d = -u * a,
39440                 f = -u * i,
39441                 h = Config.EmojiCategorySpritesheetDimens[r][1] * u,
39442                 p = Config.EmojiCategorySpritesheetDimens[r][0] * u,
39443                 m = "display:inline-block;";
39444             return m += "width:" + u + "px;", m += "height:" + u + "px;", m += "background:url('" + c.replace("!", r) + "') " + d + "px " + f + "px no-repeat;", m += "background-size:" + h + "px " + p + "px;", '<img src="' + l + '" class="img" style="' + m + '" alt="' + o.htmlEntities(s) + '">'
39445         }, e.emojiarea.createIcon = a.createIcon;
39446         var s = function(e, i, o) {
39447             this.options = o, this.$textarea = e, this.options.inputMethod = "unicode", this.emojiPopup = o.emojiPopup, this.$editor = e, this.id = i;
39448             var a = this.emojiPopup.unicodeToImage(e.val());
39449             this.$editor.html(a), this.$editor.attr({
39450                 "data-id": i,
39451                 "data-type": "input",
39452                 placeholder: e.attr("placeholder"),
39453                 contenteditable: "true"
39454             });
39455             this.options.norealTime;
39456             var s = this.$editor;
39457             if (this.$editor.on("change keydown keyup resize scroll", function(e) {
39458                     -1 != r.indexOf(e.which) || (e.ctrlKey || e.metaKey) && 65 == e.which || (e.ctrlKey || e.metaKey) && 67 == e.which || !(s.text().length + s.find("img").length >= s.attr("maxlength")) || e.preventDefault()
39459                 }), this.options.onPaste) {
39460                 var c = this;
39461                 this.$editor.on("paste", function(e) {
39462                     if (e.preventDefault(), (e.originalEvent || e).clipboardData) {
39463                         var r = (e.originalEvent || e).clipboardData.getData("text/plain"),
39464                             i = c.options.onPaste(r);
39465                         n.execCommand("insertText", !1, i)
39466                     } else if (t.clipboardData) {
39467                         var r = t.clipboardData.getData("Text"),
39468                             i = c.options.onPaste(r);
39469                         n.selection.createRange().pasteHTML(i)
39470                     }
39471                     s.scrollTop(s[0].scrollHeight)
39472                 })
39473             }
39474             e.after("<i class='emoji-picker-icon emoji-picker " + this.options.popupButtonClasses + "' data-id='" + i + "' data-type='picker'></i>"), this.setup()
39475         };
39476         s.prototype.insert = function(e) {
39477             var t = "";
39478             t = this.emojiPopup.colonToUnicode(e), o.insertAtCursor(t, this.$textarea[0]), o.emojiInserted(e, this.menu), this.$textarea.trigger("change"), this.$textarea.focus()
39479         }, s.prototype.val = function() {
39480             return "\n" == this.$textarea ? "" : this.$textarea.val()
39481         }, o.extend(s.prototype, a.prototype), jQuery.fn.hasScrollbar = function() {
39482             var e = this.get(0).scrollHeight;
39483             return this.outerHeight() < e
39484         };
39485         var c = function(r) {
39486             var i = this;
39487             i.id = r.id;
39488             var o = e(n.body);
39489             e(t);
39490             this.visible = !1, this.emojiarea = r, c.menuZIndex = 5e3, this.$menu = e("<div>"), this.$menu.addClass("emoji-menu"), this.$menu.attr("data-id", i.id), this.$menu.attr("data-type", "menu"), this.$menu.hide(), this.$itemsTailWrap = e('<div class="emoji-items-wrap1"></div>').appendTo(this.$menu), this.$categoryTabs = e('<table class="emoji-menu-tabs"><tr><td><a class="emoji-menu-tab icon-recent" ></a></td><td><a class="emoji-menu-tab icon-smile" ></a></td><td><a class="emoji-menu-tab icon-flower"></a></td><td><a class="emoji-menu-tab icon-bell"></a></td><td><a class="emoji-menu-tab icon-car"></a></td><td><a class="emoji-menu-tab icon-grid"></a></td></tr></table>').appendTo(this.$itemsTailWrap), this.$itemsWrap = e('<div class="emoji-items-wrap nano mobile_scrollable_wrap"></div>').appendTo(this.$itemsTailWrap), this.$items = e('<div class="emoji-items nano-content">').appendTo(this.$itemsWrap), o.append(this.$menu), Config.Mobile || this.$itemsWrap.nanoScroller({
39491                 preventPageScrolling: !0,
39492                 tabIndex: -1
39493             }), o.on("keydown", function(e) {
39494                 27 !== e.keyCode && 9 !== e.keyCode || i.hide()
39495             }), o.on("message_send", function(e) {
39496                 i.hide()
39497             }), o.on("mouseup", function(n) {
39498                 var r = (n = n.originalEvent || n).originalTarget || n.target || t;
39499                 if (!e(r).hasClass(i.emojiarea.$dontHideOnClick)) {
39500                     for (; r && r != t;)
39501                         if ((r = r.parentNode) == i.$menu[0] || i.emojiarea && r == i.emojiarea.$button[0]) return;
39502                     i.hide()
39503                 }
39504             }), this.$menu.on("mouseup", "a", function(e) {
39505                 return e.stopPropagation(), !1
39506             }), this.$menu.on("click", "a", function(n) {
39507                 if (e(this).hasClass("emoji-menu-tab")) return i.getTabIndex(this) !== i.currentCategory && i.selectCategory(i.getTabIndex(this)), !1;
39508                 var r = e(".label", e(this)).text();
39509                 return t.setTimeout(function() {
39510                     i.onItemSelected(r), (n.ctrlKey || n.metaKey) && i.hide()
39511                 }, 0), n.stopPropagation(), !1
39512             }), this.selectCategory(0)
39513         };
39514         c.prototype.getTabIndex = function(e) {
39515             return this.$categoryTabs.find(".emoji-menu-tab").index(e)
39516         }, c.prototype.selectCategory = function(e) {
39517             this.$categoryTabs.find(".emoji-menu-tab").each(function(t) {
39518                 t === e ? this.className += "-selected" : this.className = this.className.replace("-selected", "")
39519             }), this.currentCategory = e, this.load(e), Config.Mobile || this.$itemsWrap.nanoScroller({
39520                 scroll: "top"
39521             })
39522         }, c.prototype.onItemSelected = function(e) {
39523             this.emojiarea.$editor.text().length + this.emojiarea.$editor.find("img").length >= this.emojiarea.$editor.attr("maxlength") || this.emojiarea.insert(e)
39524         }, c.prototype.load = function(t) {
39525             var n = [],
39526                 r = e.emojiarea.icons,
39527                 s = e.emojiarea.assetsPath,
39528                 c = this;
39529             s.length && "/" !== s.charAt(s.length - 1) && (s += "/");
39530             var l = function() {
39531                 c.$items.html(n.join("")), Config.Mobile || setTimeout(function() {
39532                     c.$itemsWrap.nanoScroller()
39533                 }, 100)
39534             };
39535             if (t > 0) {
39536                 for (var u in r) r.hasOwnProperty(u) && r[u][0] === t - 1 && n.push('<a href="javascript:void(0)" title="' + o.htmlEntities(u) + '">' + a.createIcon(r[u], !0) + '<span class="label">' + o.htmlEntities(u) + "</span></a>");
39537                 l()
39538             } else ConfigStorage.get("emojis_recent", function(e) {
39539                 e = e || i || [];
39540                 var t, s;
39541                 for (s = 0; s < e.length; s++) t = e[s], r[t] && n.push('<a href="javascript:void(0)" title="' + o.htmlEntities(t) + '">' + a.createIcon(r[t], !0) + '<span class="label">' + o.htmlEntities(t) + "</span></a>");
39542                 l()
39543             })
39544         }, c.prototype.reposition = function(e, t) {
39545             this.tether = new Tether({
39546                 element: '[data-id="' + this.id + '"][data-type="menu"]',
39547                 target: '[data-id="' + this.id + '"][data-type="picker"]',
39548                 attachment: e,
39549                 targetAttachment: t,
39550                 constraints: [{
39551                     to: "html",
39552                     pin: !0
39553                 }]
39554             })
39555         }, c.prototype.hide = function(e) {
39556             this.visible = !1, this.$menu.hide("fast")
39557         }, c.prototype.show = function(t) {
39558             if (this.visible) return this.hide();
39559             this.reposition(t.options.emojiAttachmentLocation, t.options.emojiMenuLocation), e(this.$menu).css("z-index", ++c.menuZIndex), this.$menu.show("fast"), this.currentCategory || this.load(0), this.visible = !0, this.tether.position()
39560         }, angular.module("ngEmojiPicker", []).directive("emojiPicker", ["$timeout", function(e) {
39561             return {
39562                 link: function(t, n, r) {
39563                     var i = r.emojiAttachmentLocation || "bottom right",
39564                         o = r.emojiMenuLocation || "top left",
39565                         a = r.id || null,
39566                         s = r.emojiAssetsPath || "/assets/images/ng-emoji-picker",
39567                         c = r.emojiPopupButtonClasses || "fa fa-smile-o",
39568                         l = new EmojiPicker({
39569                             emojiable_selector: '[emoji-picker="emoji-picker"]',
39570                             assetsPath: s,
39571                             popupButtonClasses: c,
39572                             emojiAttachmentLocation: i,
39573                             emojiMenuLocation: o,
39574                             elemId: a
39575                         });
39576                     e(function() {
39577                         l.discover()
39578                     })
39579                 }
39580             }
39581         }])
39582     }(jQuery, window, document),
39583     function() {
39584         this.EmojiPicker = function() {
39585             function e(e) {
39586                 var t, n;
39587                 null == e && (e = {}), $.emojiarea.iconSize = null != (t = e.iconSize) ? t : 25, $.emojiarea.assetsPath = null != (n = e.assetsPath) ? n : "", this.generateEmojiIconSets(e), e.emojiable_selector || (e.emojiable_selector = "[data-emojiable=true]"), this.options = e
39588             }
39589             return e.prototype.discover = function() {
39590                 if (!(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream)) return $(this.options.emojiable_selector).emojiarea($.extend({
39591                     emojiPopup: this,
39592                     norealTime: !0
39593                 }, this.options))
39594             }, e.prototype.generateEmojiIconSets = function(e) {
39595                 var t, n, r, i, o, a, s, c, l;
39596                 for (i = {}, s = {}, r = void 0, o = void 0, void 0, a = void 0, n = void 0, c = void 0, t = void 0, l = void 0, o = 0; o < Config.EmojiCategories.length;) {
39597                     for (l = Config.EmojiCategorySpritesheetDimens[o][1], r = 0; r < Config.EmojiCategories[o].length;) a = (n = Config.Emoji[Config.EmojiCategories[o][r]])[1][0], c = Math.floor(r / l), t = r % l, i[":" + a + ":"] = [o, c, t, ":" + a + ":"], s[a] = n[0], r++;
39598                     o++
39599                 }
39600                 return $.emojiarea.icons = i, $.emojiarea.reverseIcons = s
39601             }, e.prototype.colonToUnicode = function(e) {
39602                 return e ? (Config.rx_colons || Config.init_unified(), e.replace(Config.rx_colons, function(e) {
39603                     return Config.mapcolon[e] || ""
39604                 })) : ""
39605             }, e.prototype.unicodeToImage = function(e) {
39606                 return e ? (Config.rx_codes || Config.init_unified(), e.replace(Config.rx_codes, function(e) {
39607                     var t;
39608                     return (t = Config.reversemap[e]) ? (t = ":" + t + ":", $.emojiarea.createIcon($.emojiarea.icons[t])) : ""
39609                 })) : ""
39610             }, e.prototype.colonToImage = function(e) {
39611                 return e ? (Config.rx_colons || Config.init_unified(), e.replace(Config.rx_colons, function(e) {
39612                     return e ? $.emojiarea.createIcon($.emojiarea.icons[e]) : ""
39613                 })) : ""
39614             }, e
39615         }()
39616     }.call(this), angular.module("ngRateIt", []).directive("ngRateIt", ["$q", function(e) {
39617         "use strict";
39618         return {
39619             scope: {
39620                 ngModel: "=",
39621                 min: "=?min",
39622                 max: "=?max",
39623                 step: "=?step",
39624                 readOnly: "&?readOnly",
39625                 pristine: "=?pristine",
39626                 resetable: "&?resetable",
39627                 starWidth: "=?starWidth",
39628                 starHeight: "=?starHeight",
39629                 canelWidth: "=?canelWidth",
39630                 cancelHeight: "=?cancelHeight",
39631                 rated: "=?rated",
39632                 reset: "=?reset",
39633                 beforeRated: "=?beforeRated",
39634                 beforeReset: "=?beforeReset"
39635             },
39636             templateUrl: "ngRateIt/ng-rate-it.html",
39637             require: "ngModel",
39638             replace: !0,
39639             link: function(t, n, r) {
39640                 r.readOnly || (t.readOnly = function() {
39641                     return !1
39642                 }), r.resetable || (t.resetable = function() {
39643                     return !0
39644                 }), r.beforeRated || (t.beforeRated = function() {
39645                     var t = e.defer();
39646                     return t.resolve(), t.promise
39647                 }), r.rated || (t.rated = function() {}), r.beforeReset || (t.beforeReset = function() {
39648                     var t = e.defer();
39649                     return t.resolve(), t.promise
39650                 }), r.reset || (t.reset = function() {})
39651             },
39652             controller: "ngRateItController"
39653         }
39654     }]).controller("ngRateItController", ["$scope", "$timeout", function(e, t) {
39655         "use strict";
39656         e.isTouch = !!window.hasOwnProperty("ontouchstart") || window.navigator.msMaxTouchPoints > 0, e.orgValue = angular.copy(e.ngModel), e.min = e.min || 0, e.max = e.max || 5, e.step = e.step || .5, e.pristine = e.orgValue === e.ngModel, e.starWidth = e.starWidth || 16, e.starPartWidth = e.starWidth * e.step, e.starHeight = e.starHeight || 16, e.canelWidth = e.canelWidth || e.starWidth, e.cancelHeight = e.cancelHeight || e.starHeight;
39657         var n = e.max - e.min,
39658             r = n / e.step,
39659             i = e.$watch("ngModel", function() {
39660                 e.pristine = e.orgValue === e.ngModel
39661             }),
39662             o = function(e) {
39663                 return (e + 1) / r * n
39664             };
39665         e.getStartParts = function() {
39666             return new Array(r)
39667         }, e.getStarOffset = function(t) {
39668             var n = 1 / e.step;
39669             return -e.starWidth / n * (t % n)
39670         }, e.isSelected = function(t) {
39671             return o(t) <= e.ngModel - e.min
39672         }, e.removeRating = function() {
39673             e.resetable() && !e.readOnly() && e.beforeReset().then(function() {
39674                 e.ngModel = e.min, e.reset()
39675             })
39676         }, e.setValue = function(n) {
39677             if (!e.readOnly()) {
39678                 var r = angular.copy(e.min + o(n));
39679                 e.beforeRated(r).then(function() {
39680                     e.ngModel = r, t(function() {
39681                         e.rated()
39682                     })
39683                 })
39684             }
39685         }, e.$on("$destroy", function() {
39686             i()
39687         })
39688     }]).run(["$templateCache", function(e) {
39689         "use strict";
39690         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>")
39691     }]),
39692     function(e, t, n) {
39693         "use strict";
39694
39695         function r(t) {
39696             if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
39697                 this.supportDirectory = /Chrome/.test(e.navigator.userAgent) || /Firefox/.test(e.navigator.userAgent) || /Edge/.test(e.navigator.userAgent), this.files = [], this.defaults = {
39698                     chunkSize: 1048576,
39699                     forceChunkSize: !1,
39700                     simultaneousUploads: 3,
39701                     singleFile: !1,
39702                     fileParameterName: "file",
39703                     progressCallbacksInterval: 500,
39704                     speedSmoothingFactor: .1,
39705                     query: {},
39706                     headers: {},
39707                     withCredentials: !1,
39708                     preprocess: null,
39709                     method: "multipart",
39710                     testMethod: "GET",
39711                     uploadMethod: "POST",
39712                     prioritizeFirstAndLastChunk: !1,
39713                     allowDuplicateUploads: !1,
39714                     target: "/",
39715                     testChunks: !0,
39716                     generateUniqueIdentifier: null,
39717                     maxChunkRetries: 0,
39718                     chunkRetryInterval: null,
39719                     permanentErrors: [404, 413, 415, 500, 501],
39720                     successStatuses: [200, 201, 202],
39721                     onDropStopPropagation: !1,
39722                     initFileFn: null,
39723                     readFileFn: o
39724                 }, this.opts = {}, this.events = {};
39725                 var n = this;
39726                 this.onDrop = function(e) {
39727                     n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
39728                     var t = e.dataTransfer;
39729                     t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
39730                 }, this.preventEvent = function(e) {
39731                     e.preventDefault()
39732                 }, this.opts = r.extend({}, this.defaults, t || {})
39733             }
39734         }
39735
39736         function i(e, t, r) {
39737             this.flowObj = e, this.bytes = null, this.file = t, this.name = t.fileName || t.name, this.size = t.size, this.relativePath = t.relativePath || t.webkitRelativePath || this.name, this.uniqueIdentifier = r === n ? e.generateUniqueIdentifier(t) : r, this.chunks = [], this.paused = !1, this.error = !1, this.averageSpeed = 0, this.currentSpeed = 0, this._lastProgressCallback = Date.now(), this._prevUploadedSize = 0, this._prevProgress = 0, this.bootstrap()
39738         }
39739
39740         function o(e, t, n, r, i) {
39741             var o = "slice";
39742             e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
39743         }
39744
39745         function a(e, t, n) {
39746             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() {
39747                 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
39748                 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
39749             }, this.endByte = this.computeEndByte(), this.xhr = null;
39750             var r = this;
39751             this.event = function(e, t) {
39752                 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
39753             }, this.progressHandler = function(e) {
39754                 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
39755             }, this.testHandler = function(e) {
39756                 var t = r.status(!0);
39757                 "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())
39758             }, this.doneHandler = function(e) {
39759                 var t = r.status();
39760                 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
39761                 else {
39762                     r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
39763                     var n = r.flowObj.opts.chunkRetryInterval;
39764                     null !== n ? setTimeout(function() {
39765                         r.send()
39766                     }, n) : r.send()
39767                 }
39768             }
39769         }
39770
39771         function s(e, t) {
39772             var n = e.indexOf(t);
39773             n > -1 && e.splice(n, 1)
39774         }
39775
39776         function c(e, t) {
39777             return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
39778         }
39779
39780         function l(e, t) {
39781             setTimeout(e.bind(t), 0)
39782         }
39783
39784         function u(e, t) {
39785             return d(arguments, function(t) {
39786                 t !== e && d(t, function(t, n) {
39787                     e[n] = t
39788                 })
39789             }), e
39790         }
39791
39792         function d(e, t, n) {
39793             if (e) {
39794                 var r;
39795                 if (void 0 !== e.length) {
39796                     for (r = 0; r < e.length; r++)
39797                         if (!1 === t.call(n, e[r], r)) return
39798                 } else
39799                     for (r in e)
39800                         if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
39801             }
39802         }
39803         var f = e.navigator.msPointerEnabled;
39804         r.prototype = {
39805             on: function(e, t) {
39806                 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
39807             },
39808             off: function(e, t) {
39809                 e !== n ? (e = e.toLowerCase(), t !== n ? this.events.hasOwnProperty(e) && s(this.events[e], t) : delete this.events[e]) : this.events = {}
39810             },
39811             fire: function(e, t) {
39812                 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
39813                 var n = !1;
39814                 return this.events.hasOwnProperty(e) && d(this.events[e], function(e) {
39815                     n = !1 === e.apply(this, t.slice(1)) || n
39816                 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
39817             },
39818             webkitReadDataTransfer: function(e) {
39819                 function t(e) {
39820                     e.readEntries(function(o) {
39821                         o.length ? (a += o.length, d(o, function(e) {
39822                             if (e.isFile) {
39823                                 var i = e.fullPath;
39824                                 e.file(function(e) {
39825                                     n(e, i)
39826                                 }, r)
39827                             } else e.isDirectory && t(e.createReader())
39828                         }), t(e)) : i()
39829                     }, r)
39830                 }
39831
39832                 function n(e, t) {
39833                     e.relativePath = t.substring(1), s.push(e), i()
39834                 }
39835
39836                 function r(e) {
39837                     throw e
39838                 }
39839
39840                 function i() {
39841                     0 == --a && o.addFiles(s, e)
39842                 }
39843                 var o = this,
39844                     a = e.dataTransfer.items.length,
39845                     s = [];
39846                 d(e.dataTransfer.items, function(e) {
39847                     var r = e.webkitGetAsEntry();
39848                     r ? r.isFile ? n(e.getAsFile(), r.fullPath) : t(r.createReader()) : i()
39849                 })
39850             },
39851             generateUniqueIdentifier: function(e) {
39852                 var t = this.opts.generateUniqueIdentifier;
39853                 if ("function" == typeof t) return t(e);
39854                 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
39855                 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
39856             },
39857             uploadNextChunk: function(e) {
39858                 var t = !1;
39859                 if (this.opts.prioritizeFirstAndLastChunk && (d(this.files, function(e) {
39860                         return !e.paused && e.chunks.length && "pending" === e.chunks[0].status() ? (e.chunks[0].send(), t = !0, !1) : !e.paused && e.chunks.length > 1 && "pending" === e.chunks[e.chunks.length - 1].status() ? (e.chunks[e.chunks.length - 1].send(), t = !0, !1) : void 0
39861                     }), t)) return t;
39862                 if (d(this.files, function(e) {
39863                         if (e.paused || d(e.chunks, function(e) {
39864                                 if ("pending" === e.status()) return e.send(), t = !0, !1
39865                             }), t) return !1
39866                     }), t) return !0;
39867                 var n = !1;
39868                 return d(this.files, function(e) {
39869                     if (!e.isComplete()) return n = !0, !1
39870                 }), n || e || l(function() {
39871                     this.fire("complete")
39872                 }, this), !1
39873             },
39874             assignBrowse: function(e, n, r, i) {
39875                 e instanceof Element && (e = [e]), d(e, function(e) {
39876                     var o;
39877                     "INPUT" === e.tagName && "file" === e.type ? o = e : ((o = t.createElement("input")).setAttribute("type", "file"), u(o.style, {
39878                         visibility: "hidden",
39879                         position: "absolute",
39880                         width: "1px",
39881                         height: "1px"
39882                     }), e.appendChild(o), e.addEventListener("click", function() {
39883                         o.click()
39884                     }, !1)), this.opts.singleFile || r || o.setAttribute("multiple", "multiple"), n && o.setAttribute("webkitdirectory", "webkitdirectory"), d(i, function(e, t) {
39885                         o.setAttribute(t, e)
39886                     });
39887                     var a = this;
39888                     o.addEventListener("change", function(e) {
39889                         e.target.value && (a.addFiles(e.target.files, e), e.target.value = "")
39890                     }, !1)
39891                 }, this)
39892             },
39893             assignDrop: function(e) {
39894                 void 0 === e.length && (e = [e]), d(e, function(e) {
39895                     e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
39896                 }, this)
39897             },
39898             unAssignDrop: function(e) {
39899                 void 0 === e.length && (e = [e]), d(e, function(e) {
39900                     e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
39901                 }, this)
39902             },
39903             isUploading: function() {
39904                 var e = !1;
39905                 return d(this.files, function(t) {
39906                     if (t.isUploading()) return e = !0, !1
39907                 }), e
39908             },
39909             _shouldUploadNext: function() {
39910                 var e = 0,
39911                     t = !0,
39912                     n = this.opts.simultaneousUploads;
39913                 return d(this.files, function(r) {
39914                     d(r.chunks, function(r) {
39915                         if ("uploading" === r.status() && ++e >= n) return t = !1, !1
39916                     })
39917                 }), t && e
39918             },
39919             upload: function() {
39920                 var e = this._shouldUploadNext();
39921                 if (!1 !== e) {
39922                     this.fire("uploadStart");
39923                     for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
39924                     t || l(function() {
39925                         this.fire("complete")
39926                     }, this)
39927                 }
39928             },
39929             resume: function() {
39930                 d(this.files, function(e) {
39931                     e.isComplete() || e.resume()
39932                 })
39933             },
39934             pause: function() {
39935                 d(this.files, function(e) {
39936                     e.pause()
39937                 })
39938             },
39939             cancel: function() {
39940                 for (var e = this.files.length - 1; e >= 0; e--) this.files[e].cancel()
39941             },
39942             progress: function() {
39943                 var e = 0,
39944                     t = 0;
39945                 return d(this.files, function(n) {
39946                     e += n.progress() * n.size, t += n.size
39947                 }), t > 0 ? e / t : 0
39948             },
39949             addFile: function(e, t) {
39950                 this.addFiles([e], t)
39951             },
39952             addFiles: function(e, t) {
39953                 var n = [];
39954                 d(e, function(e) {
39955                     if ((!f || f && e.size > 0) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
39956                         var r = this.generateUniqueIdentifier(e);
39957                         if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(r)) {
39958                             var o = new i(this, e, r);
39959                             this.fire("fileAdded", o, t) && n.push(o)
39960                         }
39961                     }
39962                 }, this), this.fire("filesAdded", n, t) && (d(n, function(e) {
39963                     this.opts.singleFile && this.files.length > 0 && this.removeFile(this.files[0]), this.files.push(e)
39964                 }, this), this.fire("filesSubmitted", n, t))
39965             },
39966             removeFile: function(e) {
39967                 for (var t = this.files.length - 1; t >= 0; t--) this.files[t] === e && (this.files.splice(t, 1), e.abort(), this.fire("fileRemoved", e))
39968             },
39969             getFromUniqueIdentifier: function(e) {
39970                 var t = !1;
39971                 return d(this.files, function(n) {
39972                     n.uniqueIdentifier === e && (t = n)
39973                 }), t
39974             },
39975             getSize: function() {
39976                 var e = 0;
39977                 return d(this.files, function(t) {
39978                     e += t.size
39979                 }), e
39980             },
39981             sizeUploaded: function() {
39982                 var e = 0;
39983                 return d(this.files, function(t) {
39984                     e += t.sizeUploaded()
39985                 }), e
39986             },
39987             timeRemaining: function() {
39988                 var e = 0,
39989                     t = 0;
39990                 return d(this.files, function(n) {
39991                     n.paused || n.error || (e += n.size - n.sizeUploaded(), t += n.averageSpeed)
39992                 }), e && !t ? Number.POSITIVE_INFINITY : e || t ? Math.floor(e / t) : 0
39993             }
39994         }, i.prototype = {
39995             measureSpeed: function() {
39996                 var e = Date.now() - this._lastProgressCallback;
39997                 if (e) {
39998                     var t = this.flowObj.opts.speedSmoothingFactor,
39999                         n = this.sizeUploaded();
40000                     this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
40001                 }
40002             },
40003             chunkEvent: function(e, t, n) {
40004                 switch (t) {
40005                     case "progress":
40006                         if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
40007                         this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
40008                         break;
40009                     case "error":
40010                         this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
40011                         break;
40012                     case "success":
40013                         if (this.error) return;
40014                         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));
40015                         break;
40016                     case "retry":
40017                         this.flowObj.fire("fileRetry", this, e)
40018                 }
40019             },
40020             pause: function() {
40021                 this.paused = !0, this.abort()
40022             },
40023             resume: function() {
40024                 this.paused = !1, this.flowObj.upload()
40025             },
40026             abort: function(e) {
40027                 this.currentSpeed = 0, this.averageSpeed = 0;
40028                 var t = this.chunks;
40029                 e && (this.chunks = []), d(t, function(e) {
40030                     "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
40031                 }, this)
40032             },
40033             cancel: function() {
40034                 this.flowObj.removeFile(this)
40035             },
40036             retry: function() {
40037                 this.bootstrap(), this.flowObj.upload()
40038             },
40039             bootstrap: function() {
40040                 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
40041                 for (var e = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor, t = Math.max(e(this.size / this.flowObj.opts.chunkSize), 1), n = 0; n < t; n++) this.chunks.push(new a(this.flowObj, this, n))
40042             },
40043             progress: function() {
40044                 if (this.error) return 1;
40045                 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
40046                 var e = 0;
40047                 d(this.chunks, function(t) {
40048                     e += t.progress() * (t.endByte - t.startByte)
40049                 });
40050                 var t = e / this.size;
40051                 return this._prevProgress = Math.max(this._prevProgress, t > .9999 ? 1 : t), this._prevProgress
40052             },
40053             isUploading: function() {
40054                 var e = !1;
40055                 return d(this.chunks, function(t) {
40056                     if ("uploading" === t.status()) return e = !0, !1
40057                 }), e
40058             },
40059             isComplete: function() {
40060                 var e = !1;
40061                 return d(this.chunks, function(t) {
40062                     var n = t.status();
40063                     if ("pending" === n || "uploading" === n || "reading" === n || 1 === t.preprocessState || 1 === t.readState) return e = !0, !1
40064                 }), !e
40065             },
40066             sizeUploaded: function() {
40067                 var e = 0;
40068                 return d(this.chunks, function(t) {
40069                     e += t.sizeUploaded()
40070                 }), e
40071             },
40072             timeRemaining: function() {
40073                 if (this.paused || this.error) return 0;
40074                 var e = this.size - this.sizeUploaded();
40075                 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
40076             },
40077             getType: function() {
40078                 return this.file.type && this.file.type.split("/")[1]
40079             },
40080             getExtension: function() {
40081                 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
40082             }
40083         }, a.prototype = {
40084             getParams: function() {
40085                 return {
40086                     flowChunkNumber: this.offset + 1,
40087                     flowChunkSize: this.flowObj.opts.chunkSize,
40088                     flowCurrentChunkSize: this.endByte - this.startByte,
40089                     flowTotalSize: this.fileObj.size,
40090                     flowIdentifier: this.fileObj.uniqueIdentifier,
40091                     flowFilename: this.fileObj.name,
40092                     flowRelativePath: this.fileObj.relativePath,
40093                     flowTotalChunks: this.fileObj.chunks.length
40094                 }
40095             },
40096             getTarget: function(e, t) {
40097                 return e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&")
40098             },
40099             test: function() {
40100                 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
40101                 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
40102                     t = this.prepareXhrRequest(e, !0);
40103                 this.xhr.send(t)
40104             },
40105             preprocessFinished: function() {
40106                 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
40107             },
40108             readFinished: function(e) {
40109                 this.readState = 2, this.bytes = e, this.send()
40110             },
40111             send: function() {
40112                 var e = this.flowObj.opts.preprocess,
40113                     t = this.flowObj.opts.readFileFn;
40114                 if ("function" == typeof e) switch (this.preprocessState) {
40115                     case 0:
40116                         return this.preprocessState = 1, void e(this);
40117                     case 1:
40118                         return
40119                 }
40120                 switch (this.readState) {
40121                     case 0:
40122                         return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
40123                     case 1:
40124                         return
40125                 }
40126                 if (!this.flowObj.opts.testChunks || this.tested) {
40127                     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);
40128                     var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
40129                         r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
40130                     this.xhr.send(r)
40131                 } else this.test()
40132             },
40133             abort: function() {
40134                 var e = this.xhr;
40135                 this.xhr = null, e && e.abort()
40136             },
40137             status: function(e) {
40138                 return 1 === this.readState ? "reading" : this.pendingRetry || 1 === this.preprocessState ? "uploading" : this.xhr ? this.xhr.readyState < 4 ? "uploading" : this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1 ? "success" : this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 || !e && this.retries >= this.flowObj.opts.maxChunkRetries ? "error" : (this.abort(), "pending") : "pending"
40139             },
40140             message: function() {
40141                 return this.xhr ? this.xhr.responseText : ""
40142             },
40143             progress: function() {
40144                 if (this.pendingRetry) return 0;
40145                 var e = this.status();
40146                 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : this.total > 0 ? this.loaded / this.total : 0
40147             },
40148             sizeUploaded: function() {
40149                 var e = this.endByte - this.startByte;
40150                 return "success" !== this.status() && (e = this.progress() * e), e
40151             },
40152             prepareXhrRequest: function(e, t, n, r) {
40153                 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
40154                 i = u(i, this.getParams());
40155                 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
40156                     a = null;
40157                 if ("GET" === e || "octet" === n) {
40158                     var s = [];
40159                     d(i, function(e, t) {
40160                         s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
40161                     }), o = this.getTarget(o, s), a = r || null
40162                 } else a = new FormData, d(i, function(e, t) {
40163                     a.append(t, e)
40164                 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
40165                 return this.xhr.open(e, o, !0), this.xhr.withCredentials = this.flowObj.opts.withCredentials, d(c(this.flowObj.opts.headers, this.fileObj, this, t), function(e, t) {
40166                     this.xhr.setRequestHeader(t, e)
40167                 }, this), a
40168             }
40169         }, r.evalOpts = c, r.extend = u, r.each = d, r.FlowFile = i, r.FlowChunk = a, r.version = "2.13.0", "object" == typeof module && module && "object" == typeof module.exports ? module.exports = r : (e.Flow = r, "function" == typeof define && define.amd && define("flow", [], function() {
40170             return r
40171         }))
40172     }(window, document), angular.module("flow.provider", []).provider("flowFactory", function() {
40173         "use strict";
40174         this.defaults = {}, this.factory = function(e) {
40175             return new Flow(e)
40176         }, this.events = [], this.on = function(e, t) {
40177             this.events.push([e, t])
40178         }, this.$get = function() {
40179             var e = this.factory,
40180                 t = this.defaults,
40181                 n = this.events;
40182             return {
40183                 create: function(r) {
40184                     var i = e(angular.extend({}, t, r));
40185                     return angular.forEach(n, function(e) {
40186                         i.on(e[0], e[1])
40187                     }), i
40188                 }
40189             }
40190         }
40191     }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(e, t, n, r) {
40192         var i = angular.extend({}, e.$eval(t.flowInit)),
40193             o = e.$eval(t.flowObject) || r.create(i),
40194             a = function(t) {
40195                 var n = Array.prototype.slice.call(arguments);
40196                 n.shift();
40197                 var r = e.$broadcast.apply(e, ["flow::" + t, o].concat(n));
40198                 if ({
40199                         progress: 1,
40200                         filesSubmitted: 1,
40201                         fileSuccess: 1,
40202                         fileError: 1,
40203                         complete: 1
40204                     }[t] && e.$apply(), r.defaultPrevented) return !1
40205             };
40206         o.on("catchAll", a), e.$on("$destroy", function() {
40207             o.off("catchAll", a)
40208         }), e.$flow = o, t.hasOwnProperty("flowName") && (n(t.flowName).assign(e, o), e.$on("$destroy", function() {
40209             n(t.flowName).assign(e)
40210         }))
40211     }]).directive("flowInit", [function() {
40212         return {
40213             scope: !0,
40214             controller: "flowCtrl"
40215         }
40216     }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
40217         return {
40218             restrict: "EA",
40219             scope: !1,
40220             require: "^flowInit",
40221             link: function(e, t, n) {
40222                 var r = n.hasOwnProperty("flowDirectory"),
40223                     i = n.hasOwnProperty("flowSingleFile"),
40224                     o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
40225                 e.$flow.assignBrowse(t, r, i, o)
40226             }
40227         }
40228     }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
40229         return {
40230             scope: !1,
40231             link: function(e, t, n) {
40232                 t.bind("drop dragover", function(e) {
40233                     e.preventDefault()
40234                 })
40235             }
40236         }
40237     }).directive("flowDragEnter", ["$timeout", function(e) {
40238         return {
40239             scope: !1,
40240             link: function(t, n, r) {
40241                 function i(e) {
40242                     var t = !1,
40243                         n = e.dataTransfer || e.originalEvent.dataTransfer;
40244                     return angular.forEach(n && n.types, function(e) {
40245                         "Files" === e && (t = !0)
40246                     }), t
40247                 }
40248                 var o, a = !1;
40249                 n.bind("dragover", function(n) {
40250                     i(n) && (a || (t.$apply(r.flowDragEnter), a = !0), e.cancel(o), n.preventDefault())
40251                 }), n.bind("dragleave drop", function(n) {
40252                     e.cancel(o), o = e(function() {
40253                         t.$eval(r.flowDragLeave), o = null, a = !1
40254                     }, 100)
40255                 })
40256             }
40257         }
40258     }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
40259         return {
40260             scope: !1,
40261             require: "^flowInit",
40262             link: function(e, t, n) {
40263                 function r() {
40264                     e.$flow.assignDrop(t)
40265                 }
40266
40267                 function i() {
40268                     e.$flow.unAssignDrop(t)
40269                 }
40270                 n.flowDropEnabled ? e.$watch(n.flowDropEnabled, function(e) {
40271                     e ? r() : i()
40272                 }) : r()
40273             }
40274         }
40275     }),
40276     function(e) {
40277         "use strict";
40278
40279         function t(e) {
40280             return e.charAt(0).toUpperCase() + e.slice(1)
40281         }
40282         var n = e.module("flow.events", ["flow.init"]),
40283             r = {
40284                 fileSuccess: ["$file", "$message"],
40285                 fileProgress: ["$file"],
40286                 fileAdded: ["$file", "$event"],
40287                 filesAdded: ["$files", "$event"],
40288                 filesSubmitted: ["$files", "$event"],
40289                 fileRetry: ["$file"],
40290                 fileRemoved: ["$file"],
40291                 fileError: ["$file", "$message"],
40292                 uploadStart: [],
40293                 complete: [],
40294                 progress: [],
40295                 error: ["$message", "$file"]
40296             };
40297         e.forEach(r, function(r, i) {
40298             var o = "flow" + t(i);
40299             "flowUploadStart" == o && (o = "flowUploadStarted"), n.directive(o, [function() {
40300                 return {
40301                     require: "^flowInit",
40302                     controller: ["$scope", "$attrs", function(t, n) {
40303                         t.$on("flow::" + i, function() {
40304                             var i = Array.prototype.slice.call(arguments),
40305                                 a = i.shift();
40306                             if (t.$flow === i.shift()) {
40307                                 var s = {};
40308                                 e.forEach(r, function(e, t) {
40309                                     s[e] = i[t]
40310                                 }), !1 === t.$eval(n[o], s) && a.preventDefault()
40311                             }
40312                         })
40313                     }]
40314                 }
40315             }])
40316         })
40317     }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
40318         return {
40319             scope: !1,
40320             require: "^flowInit",
40321             link: function(e, t, n) {
40322                 var r = n.flowImg;
40323                 e.$watch(r, function(t) {
40324                     if (t) {
40325                         var r = new FileReader;
40326                         r.readAsDataURL(t.file), r.onload = function(t) {
40327                             e.$apply(function() {
40328                                 n.$set("src", t.target.result)
40329                             })
40330                         }
40331                     }
40332                 })
40333             }
40334         }
40335     }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
40336         return {
40337             scope: !0,
40338             require: "^flowInit",
40339             link: function(e) {
40340                 e.transfers = e.$flow.files
40341             }
40342         }
40343     }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
40344     function() {
40345         "use strict";
40346         angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(e) {
40347             var t = [{
40348                     text: ":)",
40349                     class: "smiley",
40350                     code: "e60a"
40351                 }, {
40352                     text: ":D",
40353                     class: "happy",
40354                     code: "e608"
40355                 }, {
40356                     text: ":d",
40357                     class: "happy",
40358                     code: "e608"
40359                 }, {
40360                     text: ":(",
40361                     class: "sad",
40362                     code: "e60e"
40363                 }, {
40364                     text: ":/",
40365                     class: "wondering",
40366                     code: "e620"
40367                 }, {
40368                     text: ":P",
40369                     class: "tongue",
40370                     code: "e60c"
40371                 }, {
40372                     text: ":p",
40373                     class: "tongue",
40374                     code: "e60c"
40375                 }, {
40376                     text: "3:)",
40377                     class: "evil",
40378                     code: "e618"
40379                 }, {
40380                     text: "(^)",
40381                     class: "thumbsup2",
40382                     code: "e607"
40383                 }, {
40384                     text: ";)",
40385                     class: "wink",
40386                     code: "e610"
40387                 }, {
40388                     text: ":o",
40389                     class: "shocked",
40390                     code: "e61a"
40391                 }, {
40392                     text: "-_-",
40393                     class: "neutral",
40394                     code: "e61e"
40395                 }, {
40396                     text: "(y)",
40397                     class: "thumbs-up",
40398                     code: "e606"
40399                 }, {
40400                     text: ":*",
40401                     class: "heart",
40402                     code: "e604"
40403                 }, {
40404                     text: "&lt;3",
40405                     class: "heart",
40406                     code: "e604"
40407                 }, {
40408                     text: "<3",
40409                     class: "heart",
40410                     code: "e604"
40411                 }, {
40412                     text: "&lt;/3",
40413                     class: "heart-broken",
40414                     code: "e605"
40415                 }, {
40416                     text: "</3",
40417                     class: "heart-broken",
40418                     code: "e605"
40419                 }, {
40420                     text: "^_^",
40421                     class: "grin",
40422                     code: "e612"
40423                 }, {
40424                     text: "8-)",
40425                     class: "cool",
40426                     code: "e614"
40427                 }, {
40428                     text: "8|",
40429                     class: "cool",
40430                     code: "e614"
40431                 }, {
40432                     text: ":S",
40433                     class: "confused",
40434                     code: "e61c"
40435                 }, {
40436                     text: ":s",
40437                     class: "confused",
40438                     code: "e61c"
40439                 }],
40440                 n = ["bowtie", "smile", "laughing", "blush", "smiley", "relaxed", "smirk", "heart_eyes", "kissing_heart", "kissing_closed_eyes", "flushed", "relieved", "satisfied", "grin", "wink", "stuck_out_tongue_winking_eye", "stuck_out_tongue_closed_eyes", "grinning", "kissing", "winky_face", "kissing_smiling_eyes", "stuck_out_tongue", "sleeping", "worried", "frowning", "anguished", "open_mouth", "grimacing", "confused", "hushed", "expressionless", "unamused", "sweat_smile", "sweat", "wow", "disappointed_relieved", "weary", "pensive", "disappointed", "confounded", "fearful", "cold_sweat", "persevere", "cry", "sob", "joy", "astonished", "scream", "neckbeard", "tired_face", "angry", "rage", "triumph", "sleepy", "yum", "mask", "sunglasses", "dizzy_face", "imp", "smiling_imp", "neutral_face", "no_mouth", "innocent", "alien", "yellow_heart", "blue_heart", "purple_heart", "heart", "green_heart", "broken_heart", "heartbeat", "heartpulse", "two_hearts", "revolving_hearts", "cupid", "sparkling_heart", "sparkles", "star", "star2", "dizzy", "boom", "collision", "anger", "exclamation", "question", "grey_exclamation", "grey_question", "zzz", "dash", "sweat_drops", "notes", "musical_note", "fire", "hankey", "poop", "shit", "\\+1", "thumbsup", "-1", "thumbsdown", "ok_hand", "punch", "facepunch", "fist", "v", "wave", "hand", "raised_hand", "open_hands", "point_up", "point_down", "point_left", "point_right", "raised_hands", "pray", "point_up_2", "clap", "muscle", "metal", "fu", "walking", "runner", "running", "couple", "family", "two_men_holding_hands", "two_women_holding_hands", "dancer", "dancers", "ok_woman", "no_good", "information_desk_person", "raising_hand", "bride_with_veil", "person_with_pouting_face", "person_frowning", "bow", "couplekiss", "couple_with_heart", "massage", "haircut", "nail_care", "boy", "girl", "woman", "man", "baby", "older_woman", "older_man", "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban", "construction_worker", "cop", "angel", "princess", "smiley_cat", "smile_cat", "heart_eyes_cat", "kissing_cat", "smirk_cat", "scream_cat", "crying_cat_face", "joy_cat", "pouting_cat", "japanese_ogre", "japanese_goblin", "see_no_evil", "hear_no_evil", "speak_no_evil", "guardsman", "skull", "feet", "lips", "kiss", "droplet", "ear", "eyes", "nose", "tongue", "love_letter", "bust_in_silhouette", "busts_in_silhouette", "speech_balloon", "thought_balloon", "feelsgood", "finnadie", "goberserk", "godmode", "hurtrealbad", "rage1", "rage2", "rage3", "rage4", "suspect", "trollface", "sunny", "umbrella", "cloud", "snowflake", "snowman", "zap", "cyclone", "foggy", "ocean", "cat", "dog", "mouse", "hamster", "rabbit", "wolf", "frog", "tiger", "koala", "bear", "pig", "pig_nose", "cow", "boar", "monkey_face", "monkey", "horse", "racehorse", "camel", "sheep", "elephant", "panda_face", "snake", "bird", "baby_chick", "hatched_chick", "hatching_chick", "chicken", "penguin", "turtle", "bug", "honeybee", "ant", "beetle", "snail", "octopus", "tropical_fish", "fish", "whale", "whale2", "dolphin", "cow2", "ram", "rat", "water_buffalo", "tiger2", "rabbit2", "dragon", "goat", "rooster", "dog2", "pig2", "mouse2", "ox", "dragon_face", "blowfish", "crocodile", "dromedary_camel", "leopard", "cat2", "poodle", "paw_prints", "bouquet", "cherry_blossom", "tulip", "four_leaf_clover", "rose", "sunflower", "hibiscus", "maple_leaf", "leaves", "fallen_leaf", "herb", "mushroom", "cactus", "palm_tree", "evergreen_tree", "deciduous_tree", "chestnut", "seedling", "blossom", "ear_of_rice", "shell", "globe_with_meridians", "sun_with_face", "full_moon_with_face", "new_moon_with_face", "new_moon", "waxing_crescent_moon", "first_quarter_moon", "waxing_gibbous_moon", "full_moon", "waning_gibbous_moon", "last_quarter_moon", "waning_crescent_moon", "last_quarter_moon_with_face", "first_quarter_moon_with_face", "moon", "earth_africa", "earth_americas", "earth_asia", "volcano", "milky_way", "partly_sunny", "octocat", "squirrel", "bamboo", "gift_heart", "dolls", "school_satchel", "mortar_board", "flags", "fireworks", "sparkler", "wind_chime", "rice_scene", "jack_o_lantern", "ghost", "santa", "christmas_tree", "gift", "bell", "no_bell", "tanabata_tree", "tada", "confetti_ball", "balloon", "crystal_ball", "cd", "dvd", "floppy_disk", "camera", "video_camera", "movie_camera", "computer", "tv", "iphone", "phone", "telephone", "telephone_receiver", "pager", "fax", "minidisc", "vhs", "sound", "speaker", "mute", "loudspeaker", "mega", "hourglass", "hourglass_flowing_sand", "alarm_clock", "watch", "radio", "satellite", "loop", "mag", "mag_right", "unlock", "lock", "lock_with_ink_pen", "closed_lock_with_key", "key", "bulb", "flashlight", "high_brightness", "low_brightness", "electric_plug", "battery", "calling", "email", "mailbox", "postbox", "bath", "bathtub", "shower", "toilet", "wrench", "nut_and_bolt", "hammer", "seat", "moneybag", "yen", "dollar", "pound", "euro", "credit_card", "money_with_wings", "e-mail", "inbox_tray", "outbox_tray", "envelope", "incoming_envelope", "postal_horn", "mailbox_closed", "mailbox_with_mail", "mailbox_with_no_mail", "door", "smoking", "bomb", "gun", "hocho", "pill", "syringe", "page_facing_up", "page_with_curl", "bookmark_tabs", "bar_chart", "chart_with_upwards_trend", "chart_with_downwards_trend", "scroll", "clipboard", "calendar", "date", "card_index", "file_folder", "open_file_folder", "scissors", "pushpin", "paperclip", "black_nib", "pencil2", "straight_ruler", "triangular_ruler", "closed_book", "green_book", "blue_book", "orange_book", "notebook", "notebook_with_decorative_cover", "ledger", "books", "bookmark", "name_badge", "microscope", "telescope", "newspaper", "football", "basketball", "soccer", "baseball", "tennis", "8ball", "rugby_football", "bowling", "golf", "mountain_bicyclist", "bicyclist", "horse_racing", "snowboarder", "swimmer", "surfer", "ski", "spades", "hearts", "clubs", "diamonds", "gem", "ring", "trophy", "musical_score", "musical_keyboard", "violin", "space_invader", "video_game", "black_joker", "flower_playing_cards", "game_die", "dart", "mahjong", "clapper", "memo", "pencil", "book", "art", "microphone", "headphones", "trumpet", "saxophone", "guitar", "shoe", "sandal", "high_heel", "lipstick", "boot", "shirt", "tshirt", "necktie", "womans_clothes", "dress", "running_shirt_with_sash", "jeans", "kimono", "bikini", "ribbon", "tophat", "crown", "womans_hat", "mans_shoe", "closed_umbrella", "briefcase", "handbag", "pouch", "purse", "eyeglasses", "fishing_pole_and_fish", "coffee", "tea", "sake", "baby_bottle", "beer", "beers", "cocktail", "tropical_drink", "wine_glass", "fork_and_knife", "pizza", "hamburger", "fries", "poultry_leg", "meat_on_bone", "spaghetti", "curry", "fried_shrimp", "bento", "sushi", "fish_cake", "rice_ball", "rice_cracker", "rice", "ramen", "stew", "oden", "dango", "egg", "bread", "doughnut", "custard", "icecream", "ice_cream", "shaved_ice", "birthday", "cake", "cookie", "chocolate_bar", "candy", "lollipop", "honey_pot", "apple", "green_apple", "tangerine", "lemon", "cherries", "grapes", "watermelon", "strawberry", "peach", "melon", "banana", "pear", "pineapple", "sweet_potato", "eggplant", "tomato", "corn", "house", "house_with_garden", "school", "office", "post_office", "hospital", "bank", "convenience_store", "love_hotel", "hotel", "wedding", "church", "department_store", "european_post_office", "city_sunrise", "city_sunset", "japanese_castle", "european_castle", "tent", "factory", "tokyo_tower", "japan", "mount_fuji", "sunrise_over_mountains", "sunrise", "stars", "themoreyouknow", "tmyk", "statue_of_liberty", "bridge_at_night", "carousel_horse", "rainbow", "ferris_wheel", "fountain", "roller_coaster", "ship", "speedboat", "boat", "sailboat", "rowboat", "anchor", "rocket", "airplane", "helicopter", "steam_locomotive", "tram", "mountain_railway", "bike", "aerial_tramway", "suspension_railway", "mountain_cableway", "tractor", "blue_car", "oncoming_automobile", "car", "red_car", "taxi", "oncoming_taxi", "articulated_lorry", "bus", "oncoming_bus", "rotating_light", "police_car", "oncoming_police_car", "fire_engine", "ambulance", "minibus", "truck", "train", "station", "train2", "bullettrain_front", "bullettrain_side", "light_rail", "monorail", "railway_car", "trolleybus", "ticket", "fuelpump", "vertical_traffic_light", "traffic_light", "warning", "construction", "beginner", "atm", "slot_machine", "busstop", "barber", "hotsprings", "checkered_flag", "crossed_flags", "izakaya_lantern", "moyai", "circus_tent", "performing_arts", "round_pushpin", "triangular_flag_on_post", "jp", "kr", "cn", "us", "fr", "es", "it", "ru", "gb", "uk", "de", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "keycap_ten", "1234", "zero", "hash", "symbols", "arrow_backward", "arrow_down", "arrow_forward", "arrow_left", "capital_abcd", "abcd", "abc", "arrow_lower_left", "arrow_lower_right", "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right", "arrow_double_down", "arrow_double_up", "arrow_down_small", "arrow_heading_down", "arrow_heading_up", "leftwards_arrow_with_hook", "arrow_right_hook", "left_right_arrow", "arrow_up_down", "arrow_up_small", "arrows_clockwise", "arrows_counterclockwise", "rewind", "fast_forward", "information_source", "ok", "twisted_rightwards_arrows", "repeat", "repeat_one", "new", "top", "up", "cool", "free", "ng", "cinema", "koko", "signal_strength", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709", "u6e80", "u7121", "u7533", "u7a7a", "u7981", "sa", "restroom", "mens", "womens", "baby_symbol", "no_smoking", "parking", "wheelchair", "metro", "baggage_claim", "accept", "wc", "potable_water", "put_litter_in_its_place", "secret", "congratulations", "m", "passport_control", "left_luggage", "customs", "ideograph_advantage", "cl", "sos", "id", "no_entry_sign", "underage", "no_mobile_phones", "do_not_litter", "non-potable_water", "no_bicycles", "no_pedestrians", "children_crossing", "no_entry", "eight_spoked_asterisk", "eight_pointed_black_star", "heart_decoration", "vs", "vibration_mode", "mobile_phone_off", "chart", "currency_exchange", "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius", "capricorn", "aquarius", "pisces", "ophiuchus", "six_pointed_star", "negative_squared_cross_mark", "a", "b", "ab", "o2", "diamond_shape_with_a_dot_inside", "recycle", "end", "on", "soon", "clock1", "clock130", "clock10", "clock1030", "clock11", "clock1130", "clock12", "clock1230", "clock2", "clock230", "clock3", "clock330", "clock4", "clock430", "clock5", "clock530", "clock6", "clock630", "clock7", "clock730", "clock8", "clock830", "clock9", "clock930", "heavy_dollar_sign", "copyright", "registered", "tm", "x", "heavy_exclamation_mark", "bangbang", "interrobang", "o", "heavy_multiplication_x", "heavy_plus_sign", "heavy_minus_sign", "heavy_division_sign", "white_flower", "100", "heavy_check_mark", "ballot_box_with_check", "radio_button", "link", "curly_loop", "wavy_dash", "part_alternation_mark", "trident", "black_square", "white_square", "white_check_mark", "black_square_button", "white_square_button", "black_circle", "white_circle", "red_circle", "large_blue_circle", "large_blue_diamond", "large_orange_diamond", "small_blue_diamond", "small_orange_diamond", "small_red_triangle", "small_red_triangle_down", "shipit"];
40441             return function(r, i) {
40442                 function o(e) {
40443                     return angular.forEach(arguments, function(t) {
40444                         t !== e && angular.forEach(t, function(t, n) {
40445                             e[n] && e[n].constructor && e[n].constructor === Object ? o(e[n], t) : e[n] = t
40446                         })
40447                     }), e
40448                 }
40449                 var a = {
40450                     fontSmiley: !0,
40451                     emoji: !0,
40452                     link: !0,
40453                     linkTarget: "_self"
40454                 };
40455                 if (o(a, i), void 0 !== r && null !== r) {
40456                     if ("object" == typeof r) return r;
40457                     var s = {
40458                         "&": "&amp;",
40459                         ">": "&gt;",
40460                         "<": "&lt;"
40461                     };
40462                     return angular.isNumber(r) || (r = r.toString()), r = r.replace(/[&<>]/g, function(e) {
40463                         return s[e]
40464                     }), a.fontSmiley && (r = function(e) {
40465                         var n = e.split(" ");
40466                         return angular.forEach(t, function(e) {
40467                             for (var t = 0; t < n.length; t++) n[t] === e.text && (n[t] = '<i class="ne-emoticon" title="' + e.text + '">&#x' + e.code + "</i>")
40468                         }), n.join(" ")
40469                     }(r)), a.emoji && (r = function(e) {
40470                         var t = new RegExp(":(" + n.join("|") + "):", "g");
40471                         return e.replace(t, function(e, t) {
40472                             return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
40473                         })
40474                     }(r)), a.link && (r = function(e) {
40475                         var t = /\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi,
40476                             n = /^[a-z]+\:\/\//i;
40477                         return e.replace(t, function(e) {
40478                             var t = e;
40479                             return n.test(e) || (t = "http://" + e), "cordova" == a.linkTarget ? '<a href="#" onclick="window.open(\'' + t + "', '_system', 'location=yes')\" >" + e + "</a>" : '<a href="' + t + '" target="' + a.linkTarget + '">' + e + "</a>"
40480                         })
40481                     }(r)), e.trustAsHtml(r)
40482                 }
40483             }
40484         }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(e, t, n, r, i) {
40485             return i.put("", '<div ng-bind-html="neText"></div> <div class="ne-video" ng-if="video.host" class="fade"> <div class="ne-video-preview" ng-hide="nePlayVideo || !options.video.details"> <div class="ne-video-thumb" ng-click="nePlayVideo=!nePlayVideo"> <img ng-src="{{video.thumbnail}}" alt=""/> <i class="fa fa-play-circle-o"></i> </div> <div class="ne-video-detail"> <div class="ne-video-title"> <a ng-href="{{video.url}}">{{video.title}}</a> </div> <div class="ne-video-desc"> {{video.description}} </div> <div class="ne-video-stats"> <span><i class="fa fa-eye"></i> {{video.views}}</span> <span><i class="fa fa-heart"></i> {{video.likes}}</span> </div> </div> </div> <div class="ne-video-player" ng-if="nePlayVideo || !(options.video.details)"> <iframe ng-src="{{video.embedSrc}}" frameBorder="0" width="{{video.width}}" height="{{video.height}}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> </div> <div class="ne-video" ng-if="video.basic"> <div class="ne-video-player"> <div class="player"> <video ng-src="{{video.basic}}" controls></video> </div> </div> </div> <div ng-init="neImageLong=false" ng-class="{false:\'ne-image\', true:\'ne-image ne-image-long\'}[neImageLong]" ng-if="image.url"> <div class="ne-image-wrapper"> <img ng-src="{{image.url}}" ng-click="neImageLong=!neImageLong" alt=""/> </div> </div> <div class="ne-pdf" ng-if="pdf.url"> <div class="ne-pdf-preview" ng-hide="neShowPdf"> <div class="ne-pdf-icon"> <i class="fa fa-file-pdf-o"></i> </div> <div class="ne-pdf-detail" > <div class="ne-pdf-title"> <a href="">{{pdf.url}}</a> </div> <div class="ne-pdf-view"> <button><i class="fa fa-download"></i> <a ng-href="{{pdf.url}}" target="_blank">Download</a></button> <button ng-click="neShowPdf=!neShowPdf"><i class="fa fa-eye"></i> View PDF</button> </div> </div> </div> <div class="ne-pdf-viewer" ng-if="neShowPdf" ng-show="neShowPdf"> <iframe ng-src="{{pdf.url}}" frameBorder="0"></iframe> </div> </div> <div class="ne-audio" ng-if="audio.url"> <audio ng-src="{{audio.url}}" controls></audio> </div> <div ng-if="tweets" ng-repeat="tweet in tweets"> <div ng-bind-html="tweet"></div> </div> <div ng-if="videoServices" class="ne-video" ng-repeat="v in videoServices"> <div class="ne-video-player"> <div class="player"> <div ng-bind-html="v"></div> </div> </div> </div> <div ng-if="audioServices" class="ne-audio" ng-repeat="a in audioServices"> <div ng-bind-html="a"></div> </div> <div ng-if="codeServices" class="ne-embed" ng-repeat="c in codeServices"> <div ng-bind-html="c"></div> </div> <div ng-if="gist" class="ne-gist" ng-repeat="g in gist"> <ne-gist id="{{g}}"></ne-gist> </div>'), {
40486                 restrict: "AE",
40487                 scope: !0,
40488                 templateUrl: function(e, t) {
40489                     return t.embedTemplateUrl || ""
40490                 },
40491                 link: function(i, o, a) {
40492                     function s(e) {
40493                         return angular.forEach(arguments, function(t) {
40494                             t !== e && angular.forEach(t, function(t, n) {
40495                                 e[n] && e[n].constructor && e[n].constructor === Object ? s(e[n], t) : e[n] = t
40496                             })
40497                         }), e
40498                     }
40499                     var c = i.$eval(a.embedData),
40500                         l = i.$eval(a.embedOptions);
40501                     i.video = {}, i.image = {}, i.pdf = {}, i.audio = {}, i.videoServices = [], i.audioServices = [], i.codeServices = [], i.gist = [];
40502                     var u = {
40503                         fontSmiley: !0,
40504                         emoji: !0,
40505                         link: !0,
40506                         linkTarget: "_self",
40507                         pdf: {
40508                             embed: !0
40509                         },
40510                         image: {
40511                             embed: !1
40512                         },
40513                         audio: {
40514                             embed: !0
40515                         },
40516                         code: {
40517                             highlight: !0,
40518                             lineNumbers: !1
40519                         },
40520                         basicVideo: !1,
40521                         gdevAuth: null,
40522                         video: {
40523                             embed: !1,
40524                             width: null,
40525                             height: null,
40526                             ytTheme: "dark",
40527                             details: !1,
40528                             thumbnailQuality: "medium"
40529                         },
40530                         tweetEmbed: !0,
40531                         tweetOptions: {
40532                             maxWidth: 550,
40533                             hideMedia: !1,
40534                             hideThread: !1,
40535                             align: "none",
40536                             lang: "en"
40537                         },
40538                         twitchtvEmbed: !0,
40539                         dailymotionEmbed: !0,
40540                         tedEmbed: !0,
40541                         dotsubEmbed: !0,
40542                         liveleakEmbed: !0,
40543                         soundCloudEmbed: !0,
40544                         soundCloudOptions: {
40545                             height: 160,
40546                             themeColor: "f50000",
40547                             autoPlay: !1,
40548                             hideRelated: !1,
40549                             showComments: !0,
40550                             showUser: !0,
40551                             showReposts: !1,
40552                             visual: !1,
40553                             download: !1
40554                         },
40555                         spotifyEmbed: !0,
40556                         codepenEmbed: !0,
40557                         codepenHeight: 300,
40558                         jsfiddleEmbed: !0,
40559                         jsfiddleHeight: 300,
40560                         jsbinEmbed: !0,
40561                         jsbinHeight: 300,
40562                         plunkerEmbed: !0,
40563                         githubgistEmbed: !0,
40564                         ideoneEmbed: !0,
40565                         ideoneHeight: 300
40566                     };
40567                     s(u, l), String.prototype.trunc = function(e, t) {
40568                         var n = this.length > e,
40569                             r = n ? this.substr(0, e - 1) : this;
40570                         return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
40571                     }, Array.prototype.getUnique = function() {
40572                         for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
40573                         return t
40574                     };
40575                     var d = {
40576                             calcDimensions: function(e) {
40577                                 var t = {
40578                                     width: null,
40579                                     height: null
40580                                 };
40581                                 return t.width = e.video.width, t.height = e.video.height, e.video.height && e.video.width ? t : e.video.height ? (t.width = e.video.height / 390 * 640, t) : e.video.width ? (t.height = t.width / 640 * 390, t) : (t.width = 640, t.height = 390, t)
40582                             },
40583                             embed: function(e, r) {
40584                                 var o = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/gi;
40585                                 if (e.match(o)) {
40586                                     var a = this.calcDimensions(r);
40587                                     return i.video.id = RegExp.$1, r.video.details ? n.get("https://www.googleapis.com/youtube/v3/videos?id=" + RegExp.$1 + "&key=" + r.gdevAuth + "&part=snippet,statistics").success(function(e) {
40588                                         var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
40589                                             o = e.items[0];
40590                                         i.video.host = "youtube", i.video.title = o.snippet.title, i.video.thumbnail = o.snippet.thumbnails.medium.url, i.video.description = o.snippet.description.trunc(250, !0).replace(/\n/g, " ").replace(/&#10;/g, " "), i.video.rawDescription = o.snippet.description, i.video.views = o.statistics.viewCount, i.video.likes = o.statistics.likeCount, i.video.uploader = o.snippet.channelTitle, i.video.uploaderPage = "https://www.youtube.com/channel/" + o.snippet.channelId, i.video.uploadDate = o.snippet.publishedAt, i.video.url = t.trustAsResourceUrl("https://www.youtube.com/watch?v=" + o.id), i.video.embedSrc = t.trustAsResourceUrl("https://www.youtube.com/embed/" + i.video.id + n), i.video.width = a.width, i.video.height = a.height
40591                                     }) : (i.video.width = a.width, i.video.height = a.height, i.video.host = "youtube", i.video.embedSrc = t.trustAsResourceUrl("https://www.youtube.com/embed/" + RegExp.$1 + "?autoplay=0")), e
40592                                 }
40593                                 var s = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi;
40594                                 if (e.match(s)) {
40595                                     var c = this.calcDimensions(r);
40596                                     i.video.id = RegExp.$3, r.video.details ? n.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
40597                                         var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
40598                                         i.video.host = "vimeo", i.video.title = e[0].title, i.video.rawDescription = e[0].description.replace(/\n/g, "<br/>").replace(/&#10;/g, "<br/>"), i.video.description = e[0].description.replace(/((<|&lt;)br\s*\/*(>|&gt;)\r\n)/g, " ").trunc(250, !0), i.video.thumbnail = e[0].thumbnail_medium, i.video.views = e[0].stats_number_of_plays, i.video.likes = e[0].stats_number_of_likes, i.video.uploader = e[0].user_name, i.video.uploaderPage = e[0].user_url, i.video.uploadDate = e[0].uploadDate, i.video.url = e[0].url, i.video.embedSrc = t.trustAsResourceUrl("//player.vimeo.com/video/" + e[0].id + "?title=0&byline=0&portrait=0" + n), i.video.width = c.width, i.video.height = c.height
40599                                     }) : (i.video.width = c.width, i.video.height = c.height, i.video.host = "vimeo", i.video.embedSrc = t.trustAsResourceUrl("//player.vimeo.com/video/" + RegExp.$3 + "?title=0&byline=0&portrait=0&autoplay=0"))
40600                                 }
40601                                 return e
40602                             },
40603                             embedBasic: function(e) {
40604                                 var n = /((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi;
40605                                 return e.match(n) && (i.video.basic = t.trustAsResourceUrl(RegExp.$1)), e
40606                             },
40607                             twitchtvEmbed: function(e, n) {
40608                                 var r = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
40609                                     o = e.match(r) ? e.match(r).getUnique() : null,
40610                                     a = d.calcDimensions(n);
40611                                 if (o)
40612                                     for (var s = 0; s < o.length;) {
40613                                         var c = t.trustAsHtml('<object bgcolor="#000000" data="//www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" height="' + a.height + '" id="clip_embed_player_flash" type="application/x-shockwave-flash" width="' + a.width + '"><param name="movie" value="http://www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="channel=' + o[s].split("/")[1] + '&auto_play=false" /></object>');
40614                                         i.videoServices.push(c), s++
40615                                     }
40616                                 return e
40617                             },
40618                             dailymotionEmbed: function(e, n) {
40619                                 var r = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
40620                                     o = e.match(r) ? e.match(r).getUnique() : null,
40621                                     a = d.calcDimensions(n);
40622                                 if (o)
40623                                     for (var s = 0; s < o.length;) {
40624                                         var c = t.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + o[s].split("/")[2] + '" height="' + a.height + '" width="' + a.width + '"></iframe>');
40625                                         i.videoServices.push(c), s++
40626                                     }
40627                                 return e
40628                             },
40629                             tedEmbed: function(e, n) {
40630                                 var r = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
40631                                     o = e.match(r) ? e.match(r).getUnique() : null,
40632                                     a = d.calcDimensions(n);
40633                                 if (o)
40634                                     for (var s = 0; s < o.length;) {
40635                                         var c = t.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + o[s].split("/")[2] + '.html" height="' + a.height + '" width="' + a.width + '"></iframe>');
40636                                         i.videoServices.push(c), s++
40637                                     }
40638                                 return e
40639                             },
40640                             dotsubEmbed: function(e, n) {
40641                                 var r = /dotsub.com\/view\/[a-zA-Z0-9-]+/gi,
40642                                     o = e.match(r) ? e.match(r).getUnique() : null,
40643                                     a = d.calcDimensions(n);
40644                                 if (o)
40645                                     for (var s = 0; s < o.length;) {
40646                                         var c = t.trustAsHtml('<iframe src="https://dotsub.com/media/' + o[s].split("/")[2] + '/embed/" width="' + a.width + '" height="' + a.height + '"></iframe>');
40647                                         i.videoServices.push(c), s++
40648                                     }
40649                                 return e
40650                             },
40651                             liveleakEmbed: function(e, n) {
40652                                 var r = /liveleak.com\/view\?i=[a-zA-Z0-9_]+/gi,
40653                                     o = e.match(r) ? e.match(r).getUnique() : null,
40654                                     a = d.calcDimensions(n);
40655                                 if (o)
40656                                     for (var s = 0; s < o.length;) {
40657                                         var c = t.trustAsHtml('<iframe src="http://www.liveleak.com/e/' + o[s].split("=")[1] + '" height="' + a.height + '" width="' + a.width + '"></iframe></div>');
40658                                         i.videoServices.push(c), s++
40659                                     }
40660                                 return e
40661                             }
40662                         },
40663                         f = {
40664                             embed: function(e) {
40665                                 var n = /((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi;
40666                                 return e.match(n) && (i.audio.url = t.trustAsResourceUrl(RegExp.$1)), e
40667                             },
40668                             soundcloudEmbed: function(e, n) {
40669                                 var r = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
40670                                     o = e.match(r) ? e.match(r).getUnique() : null;
40671                                 if (o)
40672                                     for (var a = 0; a < o.length;) {
40673                                         var s = t.trustAsHtml('<iframe height="160" scrolling="no" src="https://w.soundcloud.com/player/?url=https://' + o[a] + "&auto_play=" + n.soundCloudOptions.autoPlay + "&hide_related=" + n.soundCloudOptions.hideRelated + "&show_comments=" + n.soundCloudOptions.showComments + "&show_user=" + n.soundCloudOptions.showUser + "&show_reposts=" + n.soundCloudOptions.showReposts + "&visual=" + n.soundCloudOptions.visual + "&download=" + n.soundCloudOptions.download + "&color=" + n.soundCloudOptions.themeColor + "&theme_color=" + n.soundCloudOptions.themeColor + '"></iframe>');
40674                                         i.videoServices.push(s), a++
40675                                     }
40676                                 return e
40677                             },
40678                             spotifyEmbed: function(e) {
40679                                 var n = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
40680                                     r = e.match(n) ? e.match(n).getUnique() : null;
40681                                 if (r)
40682                                     for (var o = 0; o < r.length;) {
40683                                         var a = t.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + r[o].split("/")[2] + '" height="80"></iframe>');
40684                                         i.audioServices.push(a), o++
40685                                     }
40686                                 return e
40687                             }
40688                         },
40689                         h = {
40690                             embed: function(e) {
40691                                 var t = /((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi;
40692                                 return e.match(t) && (i.image.url = RegExp.$1), e
40693                             }
40694                         },
40695                         p = {
40696                             getCode: function(e) {
40697                                 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
40698                                     var i = r;
40699                                     i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
40700                                     var o = [];
40701                                     return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
40702                                 })
40703                             }
40704                         },
40705                         m = {
40706                             embed: function(e) {
40707                                 var n = /((?:https?):\/\/\S*\.(?:pdf|PDF))/gi;
40708                                 return e.match(n) && (i.pdf.url = t.trustAsResourceUrl(RegExp.$1)), e
40709                             }
40710                         },
40711                         g = {
40712                             embed: function(e, t) {
40713                                 function o() {
40714                                     r(function() {
40715                                         twttr.widgets.load()
40716                                     }, 10)
40717                                 }
40718                                 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
40719                                 var a = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
40720                                     s = e.match(a) ? e.match(a).getUnique() : null;
40721                                 if (i.tweets = [], s)
40722                                     for (var c = 0; c < s.length;) {
40723                                         var l = "https://api.twitter.com/1/statuses/oembed.json?omit_script=true&callback=JSON_CALLBACK&url=" + s[c] + "&maxwidth=" + t.tweetOptions.maxWidth + "&hide_media=" + t.tweetOptions.hideMedia + "&hide_thread=" + t.tweetOptions.hideThread + "&align=" + t.tweetOptions.align + "&lang=" + t.tweetOptions.lang;
40724                                         n.jsonp(l).success(function(e) {
40725                                             i.tweets.push(e.html), i.tweets.length == s.length && o()
40726                                         }), c++
40727                                     }
40728                                 return e
40729                             }
40730                         },
40731                         v = {
40732                             codepenEmbed: function(e, n) {
40733                                 var r = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
40734                                     o = e.match(r) ? e.match(r).getUnique() : null;
40735                                 if (o)
40736                                     for (var a = 0; a < o.length;) {
40737                                         var s = t.trustAsHtml('<iframe scrolling="no" height="' + n.codepenHeight + '" src="' + o[a].replace(/\/pen\//, "/embed/") + "/?height=" + n.codepenHeight + '" frameborder="no" allowtransparency="true" allowfullscreen="true"></iframe>');
40738                                         i.codeServices.push(s), a++
40739                                     }
40740                                 return e
40741                             },
40742                             jsfiddleEmbed: function(e, n) {
40743                                 var r = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
40744                                     o = e.match(r) ? e.match(r).getUnique() : null;
40745                                 if (o)
40746                                     for (var a = 0; a < o.length;) {
40747                                         var s = t.trustAsHtml('<iframe height="' + n.jsfiddleHeight + '" src="http://' + o[a] + '/embedded"></iframe>');
40748                                         i.codeServices.push(s), a++
40749                                     }
40750                                 return e
40751                             },
40752                             jsbinEmbed: function(e, n) {
40753                                 var r = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
40754                                     o = e.match(r) ? e.match(r).getUnique() : null;
40755                                 if (o)
40756                                     for (var a = 0; a < o.length;) {
40757                                         var s = t.trustAsHtml('<iframe height="' + n.jsbinHeight + '" class="jsbin-embed foo" src="http://' + o[a] + '/embed?html,js,output">Simple Animation Tests</iframe>');
40758                                         i.codeServices.push(s), a++
40759                                     }
40760                                 return e
40761                             },
40762                             plunkerEmbed: function(e, n) {
40763                                 var r = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
40764                                     o = e.match(r) ? e.match(r).getUnique() : null;
40765                                 if (o)
40766                                     for (var a = 0; a < o.length;) {
40767                                         var s = -1 === o[a].indexOf("?") ? o[a].split("/")[2] : o[a].split("/")[2].split("?")[0],
40768                                             c = t.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + s + '" height="' + n.jsbinHeight + '"></iframe>');
40769                                         i.codeServices.push(c), a++
40770                                     }
40771                                 return e
40772                             },
40773                             githubgistEmbed: function(e) {
40774                                 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
40775                                     n = e.match(t) ? e.match(t).getUnique() : null;
40776                                 if (n)
40777                                     for (var r = 0; r < n.length;) i.gist.push(n[r].split("/")[2]), r++;
40778                                 return e
40779                             },
40780                             ideoneEmbed: function(e, n) {
40781                                 var r = /ideone.com\/[a-zA-Z0-9]{6}/gi,
40782                                     o = e.match(r) ? e.match(r).getUnique() : null;
40783                                 if (o)
40784                                     for (var a = 0; a < o.length;) {
40785                                         var s = t.trustAsHtml('<iframe src="http://ideone.com/embed/' + o[a].split("/")[1] + '" height="' + n.ideoneHeight + '"></iframe>');
40786                                         i.codeServices.push(s), a++
40787                                     }
40788                                 return e
40789                             }
40790                         };
40791                     if (u.code.highlight) {
40792                         if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
40793                         c = p.getCode(c), r(function() {
40794                             u.code.lineNumbers && angular.element(".ne-code").each(function() {
40795                                 var e = 1,
40796                                     t = $(this).text().split("\n").length,
40797                                     n = $("<ul/>").addClass("pre-numbering");
40798                                 for (angular.element(this).addClass("has-numbering").parent().append(n), e; e <= t; e++) n.append(angular.element("<li/>").text(e))
40799                             })
40800                         }, 0)
40801                     }
40802                     var b = e("embed")(c, u).$$unwrapTrustedValue();
40803                     if (u.video.embed) {
40804                         if (!u.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
40805                         b = d.embed(b, u)
40806                     }
40807                     b = u.basicVideo ? d.embedBasic(b) : b, b = u.audio.embed ? f.embed(b) : b, b = u.image.embed ? h.embed(b) : b, b = u.pdf.embed ? m.embed(b) : b, b = u.tweetEmbed ? g.embed(b, u) : b, b = u.twitchtvEmbed ? d.twitchtvEmbed(b, u) : b, b = u.dailymotionEmbed ? d.dailymotionEmbed(b, u) : b, b = u.tedEmbed ? d.tedEmbed(b, u) : b, b = u.dotsubEmbed ? d.dotsubEmbed(b, u) : b, b = u.liveleakEmbed ? d.liveleakEmbed(b, u) : b, b = u.soundCloudEmbed ? f.soundcloudEmbed(b, u) : b, b = u.spotifyEmbed ? f.spotifyEmbed(b) : b, b = u.codepenEmbed ? v.codepenEmbed(b, u) : b, b = u.jsfiddleEmbed ? v.jsfiddleEmbed(b, u) : b, b = u.jsbinEmbed ? v.jsbinEmbed(b, u) : b, b = u.plunkerEmbed ? v.plunkerEmbed(b, u) : b, b = u.githubgistEmbed ? v.githubgistEmbed(b, u) : b, b = u.ideoneEmbed ? v.ideoneEmbed(b, u) : b, i.neText = t.trustAsHtml(b)
40808                 }
40809             }
40810         }]).directive("neGist", function() {
40811             return {
40812                 restrict: "EA",
40813                 replace: !0,
40814                 template: "<div></div>",
40815                 link: function(e, t, n) {
40816                     var r = n.id,
40817                         i = document.createElement("iframe");
40818                     i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
40819                     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>',
40820                         a = i.document;
40821                     i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()
40822                 }
40823             }
40824         })
40825     }();