Template:Tsinghua/js/angular

(function(n, t, i) {

   "use strict";
   function y(n) {
       return function() {
           var r = arguments[0],
           f = "[" + (n ? n + ":": "") + r + "] ",
           e = arguments[1],
           u = arguments,
           o = function(n) {
               return typeof n == "function" ? n.toString().replace(/ \{[\s\S]*$/, "") : typeof n == "undefined" ? "undefined": typeof n != "string" ? JSON.stringify(n) : n
           },
           t,
           i;
           for (t = f + e.replace(/\{\d+\}/g,
           function(n) {
               var i = +n.slice(1, -1),
               t;
               return i + 2 < u.length ? (t = u[i + 2], typeof t == "function") ? t.toString().replace(/ ?\{[\s\S]*$/, "") : typeof t == "undefined" ? "undefined": typeof t != "string" ? ht(t) : t: n
           }), t = t + "\nhttp://errors.angularjs.org/1.2.19/" + (n ? n + "/": "") + r, i = 2; i < arguments.length; i++) t = t + (i == 2 ? "?": "&") + "p" + (i - 2) + "=" + encodeURIComponent(o(arguments[i]));
           return new Error(t)
       }
   }
   function hr(n) {
       if (n == null || ei(n)) return ! 1;
       var t = n.length;
       return n.nodeType === 1 && t ? !0 : e(n) || s(n) || t === 0 || typeof t == "number" && t > 0 && t - 1 in n
   }
   function r(n, t, i) {
       var u;
       if (n) if (h(n)) for (u in n) u != "prototype" && u != "length" && u != "name" && (!n.hasOwnProperty || n.hasOwnProperty(u)) && t.call(i, n[u], u);
       else if (n.forEach && n.forEach !== r) n.forEach(t, i);
       else if (hr(n)) for (u = 0; u < n.length; u++) t.call(i, n[u], u);
       else for (u in n) n.hasOwnProperty(u) && t.call(i, n[u], u);
       return n
   }
   function wf(n) {
       var i = [],
       t;
       for (t in n) n.hasOwnProperty(t) && i.push(t);
       return i.sort()
   }
   function as(n, t, i) {
       for (var u = wf(n), r = 0; r < u.length; r++) t.call(i, n[u[r]], u[r]);
       return u
   }
   function bf(n) {
       return function(t, i) {
           n(i, t)
       }
   }
   function cr() {
       for (var n = ot.length,
       t; n;) {
           if (n--, t = ot[n].charCodeAt(0), t == 57) return ot[n] = "A",
           ot.join("");
           if (t == 90) ot[n] = "0";
           else return ot[n] = String.fromCharCode(t + 1),
           ot.join("")
       }
       return ot.unshift("0"),
       ot.join("")
   }
   function kf(n, t) {
       t ? n.$$hashKey = t: delete n.$$hashKey
   }
   function c(n) {
       var t = n.$$hashKey;
       return r(arguments,
       function(t) {
           t !== n && r(t,
           function(t, i) {
               n[i] = t
           })
       }),
       kf(n, t),
       n
   }
   function k(n) {
       return parseInt(n, 10)
   }
   function df(n, t) {
       return c(new(c(function() {},
       {
           prototype: n
       })), t)
   }
   function o() {}
   function fi(n) {
       return n
   }
   function nt(n) {
       return function() {
           return n
       }
   }
   function l(n) {
       return typeof n == "undefined"
   }
   function f(n) {
       return typeof n != "undefined"
   }
   function a(n) {
       return n != null && typeof n == "object"
   }
   function e(n) {
       return typeof n == "string"
   }
   function hu(n) {
       return typeof n == "number"
   }
   function wi(n) {
       return gt.call(n) === "[object Date]"
   }
   function h(n) {
       return typeof n == "function"
   }
   function lr(n) {
       return gt.call(n) === "[object RegExp]"
   }
   function ei(n) {
       return n && n.document && n.location && n.alert && n.setInterval
   }
   function ar(n) {
       return n && n.$evalAsync && n.$watch
   }
   function vs(n) {
       return gt.call(n) === "[object File]"
   }
   function ys(n) {
       return gt.call(n) === "[object Blob]"
   }
   function ps(n) {
       return !! (n && (n.nodeName || n.prop && n.attr && n.find))
   }
   function ws(n, t, i) {
       var u = [];
       return r(n,
       function(n, r, f) {
           u.push(t.call(i, n, r, f))
       }),
       u
   }
   function bs(n, t) {
       return bi(n, t) != -1
   }
   function bi(n, t) {
       if (n.indexOf) return n.indexOf(t);
       for (var i = 0; i < n.length; i++) if (t === n[i]) return i;
       return - 1
   }
   function ki(n, t) {
       var i = bi(n, t);
       return i >= 0 && n.splice(i, 1),
       t
   }
   function oi(n, t, i, u) {
       var h, f, e, c, o;
       if (ei(n) || ar(n)) throw vi("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
       if (t) {
           if (n === t) throw vi("cpi", "Can't copy! Source and destination are identical.");
           if (i = i || [], u = u || [], a(n)) {
               if (h = bi(i, n), h !== -1) return u[h];
               i.push(n),
               u.push(t)
           }
           if (s(n)) for (t.length = 0, e = 0; e < n.length; e++) f = oi(n[e], null, i, u),
           a(n[e]) && (i.push(n[e]), u.push(f)),
           t.push(f);
           else {
               c = t.$$hashKey,
               r(t,
               function(n, i) {
                   delete t[i]
               });
               for (o in n) f = oi(n[o], null, i, u),
               a(n[o]) && (i.push(n[o]), u.push(f)),
               t[o] = f;
               kf(t, c)
           }
       } else t = n,
       n && (s(n) ? t = oi(n, [], i, u) : wi(n) ? t = new Date(n.getTime()) : lr(n) ? t = new RegExp(n.source) : a(n) && (t = oi(n, {},
       i, u)));
       return t
   }
   function st(n, t) {
       var r, i;
       if (s(n)) for (t = t || [], r = 0; r < n.length; r++) t[r] = n[r];
       else if (a(n)) {
           t = t || {};
           for (i in n) ! ou.call(n, i) || i.charAt(0) === "$" && i.charAt(1) === "$" || (t[i] = n[i])
       }
       return t || n
   }
   function ni(n, t) {
       if (n === t) return ! 0;
       if (n === null || t === null) return ! 1;
       if (n !== n && t !== t) return ! 0;
       var f = typeof n,
       o = typeof t,
       e, r, u;
       if (f == o && f == "object") if (s(n)) {
           if (!s(t)) return ! 1;
           if ((e = n.length) == t.length) {
               for (r = 0; r < e; r++) if (!ni(n[r], t[r])) return ! 1;
               return ! 0
           }
       } else {
           if (wi(n)) return wi(t) && n.getTime() == t.getTime();
           if (lr(n) && lr(t)) return n.toString() == t.toString();
           if (ar(n) || ar(t) || ei(n) || ei(t) || s(t)) return ! 1;
           u = {};
           for (r in n) if (r.charAt(0) !== "$" && !h(n[r])) {
               if (!ni(n[r], t[r])) return ! 1;
               u[r] = !0
           }
           for (r in t) if (!u.hasOwnProperty(r) && r.charAt(0) !== "$" && t[r] !== i && !h(t[r])) return ! 1;
           return ! 0
       }
       return ! 1
   }
   function gf() {
       return t.securityPolicy && t.securityPolicy.isActive || t.querySelector && !!(t.querySelector("[ng-csp]") || t.querySelector("[data-ng-csp]"))
   }
   function cu(n, t, i) {
       return n.concat(su.call(t, i))
   }
   function lu(n, t) {
       return su.call(n, t || 0)
   }
   function au(n, t) {
       var i = arguments.length > 2 ? lu(arguments, 2) : [];
       return ! h(t) || t instanceof RegExp ? t: i.length ?
       function() {
           return arguments.length ? t.apply(n, i.concat(su.call(arguments, 0))) : t.apply(n, i)
       }: function() {
           return arguments.length ? t.apply(n, arguments) : t.call(n)
       }
   }
   function ks(n, r) {
       var u = r;
       return typeof n == "string" && n.charAt(0) === "$" ? u = i: ei(r) ? u = "$WINDOW": r && t === r ? u = "$DOCUMENT": ar(r) && (u = "$SCOPE"),
       u
   }
   function ht(n, t) {
       return typeof n == "undefined" ? i: JSON.stringify(n, ks, t ? "  ": null)
   }
   function ne(n) {
       return e(n) ? JSON.parse(n) : n
   }
   function di(n) {
       if (typeof n == "function") n = !0;
       else if (n && n.length !== 0) {
           var t = v("" + n);
           n = !(t == "f" || t == "0" || t == "false" || t == "no" || t == "n" || t == "[]")
       } else n = !1;
       return n
   }
   function et(n) {
       n = u(n).clone();
       try {
           n.empty()
       } catch(i) {}
var t = u("
").append(n).html();
       try {
           return n[0].nodeType === 3 ? v(t) : t.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,
           function(n, t) {
               return "<" + v(t)
           })
       } catch(i) {
           return v(t)
       }
   }
   function te(n) {
       try {
           return decodeURIComponent(n)
       } catch(t) {}
   }
   function ie(n) {
       var i = {},
       u, t;
       return r((n || "").split("&"),
       function(n) {
           if (n && (u = n.split("="), t = te(u[0]), f(t))) {
               var r = f(u[1]) ? te(u[1]) : !0;
               i[t] ? s(i[t]) ? i[t].push(r) : i[t] = [i[t], r] : i[t] = r
           }
       }),
       i
   }
   function vu(n) {
       var t = [];
       return r(n,
       function(n, i) {
           s(n) ? r(n,
           function(n) {
               t.push(ti(i, !0) + (n === !0 ? "": "=" + ti(n, !0)))
           }) : t.push(ti(i, !0) + (n === !0 ? "": "=" + ti(n, !0)))
       }),
       t.length ? t.join("&") : ""
   }
   function vr(n) {
       return ti(n, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
   }
   function ti(n, t) {
       return encodeURIComponent(n).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, t ? "%20": "+")
   }
   function ds(n, i) {
       function e(n) {
           n && s.push(n)
       }
       var s = [n],
       u,
       f,
       o = ["ng:app", "ng-app", "x-ng-app", "data-ng-app"],
       h = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;
       r(o,
       function(i) {
           o[i] = !0,
           e(t.getElementById(i)),
           i = i.replace(":", "\\:"),
           n.querySelectorAll && (r(n.querySelectorAll("." + i), e), r(n.querySelectorAll("." + i + "\\:"), e), r(n.querySelectorAll("[" + i + "]"), e))
       }),
       r(s,
       function(n) {
           if (!u) {
               var i = " " + n.className + " ",
               t = h.exec(i);
               t ? (u = n, f = (t[2] || "").replace(/\s+/g, ",")) : r(n.attributes,
               function(t) { ! u && o[t.name] && (u = n, f = t.value)
               })
           }
       }),
       u && i(u, f ? [f] : [])
   }
   function re(i, f) {
       var e = function() {
           var r, n;
           if (i = u(i), i.injector()) {
               r = i[0] === t ? "document": et(i);
               throw vi("btstrpd", "App Already Bootstrapped with this Element '{0}'", r);
           }
           return f = f || [],
           f.unshift(["$provide",
           function(n) {
               n.value("$rootElement", i)
           }]),
           f.unshift("ng"),
           n = ye(f),
           n.invoke(["$rootScope", "$rootElement", "$compile", "$injector", "$animate",
           function(n, t, i, r) {
               n.$apply(function() {
                   t.data("$injector", r),
                   i(t)(n)
               })
           }]),
           n
       },
       o = /^NG_DEFER_BOOTSTRAP!/;
       if (n && !o.test(n.name)) return e();
       n.name = n.name.replace(o, ""),
       yi.resumeBootstrap = function(n) {
           r(n,
           function(n) {
               f.push(n)
           }),
           e()
       }
   }
   function yr(n, t) {
       return t = t || "_",
       n.replace(ue,
       function(n, i) {
           return (i ? t: "") + n.toLowerCase()
       })
   }
   function gs() {
       yt = n.jQuery,
       yt && yt.fn.on ? (u = yt, c(yt.fn, {
           scope: ri.scope,
           isolateScope: ri.isolateScope,
           controller: ri.controller,
           injector: ri.injector,
           inheritedData: ri.inheritedData
       }), bu("remove", !0, !0, !1), bu("empty", !1, !1, !1), bu("html", !1, !1, !0)) : u = w,
       yi.element = u
   }
   function yu(n, t, i) {
       if (!n) throw vi("areq", "Argument '{0}' is {1}", t || "?", i || "required");
       return n
   }
   function gi(n, t, i) {
       return i && s(n) && (n = n[n.length - 1]),
       yu(h(n), t, "not a function, got " + (n && typeof n == "object" ? n.constructor.name || "Object": typeof n)),
       n
   }
   function ii(n, t) {
       if (n === "hasOwnProperty") throw vi("badname", "hasOwnProperty is not a valid {0} name", t);
   }
   function fe(n, t, i) {
       var r;
       if (!t) return n;
       var u = t.split("."),
       f,
       e = n,
       o = u.length;
       for (r = 0; r < o; r++) f = u[r],
       n && (n = (e = n)[f]);
       return ! i && h(n) ? au(e, n) : n
   }
   function pu(n) {
       var i = n[0],
       f = n[n.length - 1],
       t,
       r;
       if (i === f) return u(i);
       t = i,
       r = [t];
       do {
           if (t = t.nextSibling, !t) break;
           r.push(t)
       } while ( t !== f );
       return u(r)
   }
   function nh(n) {
       function t(n, t, i) {
           return n[t] || (n[t] = i())
       }
       var r = y("$injector"),
       u = y("ng"),
       i = t(n, "angular", Object);
       return i.$$minErr = i.$$minErr || y,
       t(i, "module",
       function() {
           var n = {};
           return function(i, f, e) {
               var o = function(n, t) {
                   if (n === "hasOwnProperty") throw u("badname", "hasOwnProperty is not a valid {0} name", t);
               };
               return o(i, "module"),
               f && n.hasOwnProperty(i) && (n[i] = null),
               t(n, i,
               function() {
                   function n(n, i, r) {
                       return function() {
                           return t[r || "push"]([n, i, arguments]),
                           s
                       }
                   }
                   if (!f) throw r("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.", i);
                   var t = [],
                   u = [],
                   o = n("$injector", "invoke"),
                   s = {
                       _invokeQueue: t,
                       _runBlocks: u,
                       requires: f,
                       name: i,
                       provider: n("$provide", "provider"),
                       factory: n("$provide", "factory"),
                       service: n("$provide", "service"),
                       value: n("$provide", "value"),
                       constant: n("$provide", "constant", "unshift"),
                       animation: n("$animateProvider", "register"),
                       filter: n("$filterProvider", "register"),
                       controller: n("$controllerProvider", "register"),
                       directive: n("$compileProvider", "directive"),
                       config: o,
                       run: function(n) {
                           return u.push(n),
                           this
                       }
                   };
                   return e && o(e),
                   s
               })
           }
       })
   }
   function th(t) {
       c(t, {
           bootstrap: re,
           copy: oi,
           extend: c,
           equals: ni,
           element: u,
           forEach: r,
           injector: ye,
           noop: o,
           bind: au,
           toJson: ht,
           fromJson: ne,
           identity: fi,
           isUndefined: l,
           isDefined: f,
           isString: e,
           isFunction: h,
           isObject: a,
           isNumber: hu,
           isElement: ps,
           isArray: s,
           version: ee,
           isDate: wi,
           lowercase: v,
           uppercase: dt,
           callbacks: {
               counter: 0
           },
           $$minErr: y,
           $$csp: gf
       }),
       pi = nh(n);
       try {
           pi("ngLocale")
       } catch(i) {
           pi("ngLocale", []).provider("$locale", ac)
       }
       pi("ng", ["ngLocale"], ["$provide",
       function(n) {
           n.provider({
               $$sanitizeUri: sl
           }),
           n.provider("$compile", be).directive({
               a: go,
               input: fs,
               textarea: fs,
               form: ra,
               script: ny,
               select: ry,
               style: fy,
               option: uy,
               ngBind: ga,
               ngBindHtml: tv,
               ngBindTemplate: nv,
               ngClass: iv,
               ngClassEven: uv,
               ngClassOdd: rv,
               ngCloak: fv,
               ngController: ev,
               ngForm: ua,
               ngHide: pv,
               ngIf: ov,
               ngInclude: sv,
               ngInit: cv,
               ngNonBindable: lv,
               ngPluralize: av,
               ngRepeat: vv,
               ngShow: yv,
               ngStyle: wv,
               ngSwitch: bv,
               ngSwitchWhen: kv,
               ngSwitchDefault: dv,
               ngOptions: iy,
               ngTransclude: gv,
               ngModel: pa,
               ngList: ba,
               ngChange: wa,
               required: es,
               ngRequired: es,
               ngValue: da
           }).directive({
               ngInclude: hv
           }).directive(iu).directive(os),
           n.provider({
               $anchorScroll: kh,
               $animate: we,
               $browser: nc,
               $cacheFactory: tc,
               $controller: rc,
               $document: uc,
               $exceptionHandler: fc,
               $filter: lo,
               $interpolate: cc,
               $interval: lc,
               $http: ec,
               $httpBackend: sc,
               $location: wc,
               $log: bc,
               $parse: rl,
               $rootScope: ol,
               $q: ul,
               $sce: al,
               $sceDelegate: ll,
               $sniffer: vl,
               $templateCache: ic,
               $timeout: yl,
               $window: pl,
               $$rAF: el,
               $$asyncCallback: dh
           })
       }])
   }
   function rh() {
       return++ih
   }
   function ir(n) {
       return n.replace(uh,
       function(n, t, i, r) {
           return r ? i.toUpperCase() : i
       }).replace(fh, "Moz$1")
   }
   function bu(n, t, i, r) {
       function e(n) {
           var s = i && n ? [this.filter(n)] : [this],
           h = t,
           c,
           e,
           a,
           l,
           o,
           v,
           y;
           if (!r || n != null) while (s.length) for (c = s.shift(), e = 0, a = c.length; e < a; e++) for (l = u(c[e]), h ? l.triggerHandler("$destroy") : h = !h, o = 0, v = (y = l.children()).length; o < v; o++) s.push(yt(y[o]));
           return f.apply(this, arguments)
       }
       var f = yt.fn[n];
       f = f.$original || f,
       e.$original = f,
       yt.fn[n] = e
   }
   function ku(n) {
       return ! oh.test(n)
   }
   function ch(n, t) {
       var i, o, r, u = t.createDocumentFragment(),
       e = [],
       s,
       f,
       h;
       if (ku(n)) e.push(t.createTextNode(n));
       else {
for (i = u.appendChild(t.createElement("div")), o = (sh.exec(n) || ["", ""])[1].toLowerCase(), r = rt[o] || rt._default, i.innerHTML = "
 <\/div>" + r[1] + n.replace(hh, "<$1><\/$2>") + r[2], i.removeChild(i.firstChild), s = r[0]; s--;) i = i.lastChild;
           for (f = 0, h = i.childNodes.length; f < h; ++f) e.push(i.childNodes[f]);
           i = u.firstChild,
           i.textContent = ""
       }
       return u.textContent = "",
       u.innerHTML = "",
       e
   }
   function lh(n, i) {
       i = i || t;
       var r;
       return (r = eh.exec(n)) ? [i.createElement(r[1])] : ch(n, i)
   }
   function w(n) {
       if (n instanceof w) return n;
       if (e(n) && (n = g(n)), !(this instanceof w)) {
           if (e(n) && n.charAt(0) != "<") throw wu("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
           return new w(n)
       }
       if (e(n)) {
           nf(this, lh(n));
           var i = u(t.createDocumentFragment());
           i.append(this)
       } else nf(this, n)
   }
   function du(n) {
       return n.cloneNode(!0)
   }
   function si(n) {
       se(n);
       for (var t = 0,
       i = n.childNodes || []; t < i.length; t++) si(i[t])
   }
   function oe(n, t, i, u) {
       if (f(u)) throw wu("offargs", "jqLite#off() does not support the `selector` argument");
       var e = ct(n, "events"),
       o = ct(n, "handle");
       o && (l(t) ? r(e,
       function(t, i) {
           tr(n, i, t),
           delete e[i]
       }) : r(t.split(" "),
       function(t) {
           l(i) ? (tr(n, t, e[t]), delete e[t]) : ki(e[t] || [], i)
       }))
   }
   function se(n, t) {
       var u = n.ng339,
       r = nr[u];
       if (r) {
           if (t) {
               delete nr[u].data[t];
               return
           }
           r.handle && (r.events.$destroy && r.handle({},
           "$destroy"), oe(n)),
           delete nr[u],
           n.ng339 = i
       }
   }
   function ct(n, t, i) {
       var u = n.ng339,
       r = nr[u || -1];
       if (f(i)) r || (n.ng339 = u = rh(), r = nr[u] = {}),
       r[t] = i;
       else return r && r[t]
   }
   function he(n, t, i) {
       var r = ct(n, "data"),
       u = f(i),
       e = !u && f(t),
       o = e && !a(t);
       if (r || o || ct(n, "data", r = {}), u) r[t] = i;
       else if (e) {
           if (o) return r && r[t];
           c(r, t)
       } else return r
   }
   function gu(n, t) {
       return n.getAttribute ? (" " + (n.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ") > -1 : !1
   }
   function wr(n, t) {
       t && n.setAttribute && r(t.split(" "),
       function(t) {
           n.setAttribute("class", g((" " + (n.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + g(t) + " ", " ")))
       })
   }
   function br(n, t) {
       if (t && n.setAttribute) {
           var i = (" " + (n.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
           r(t.split(" "),
           function(n) {
               n = g(n),
               i.indexOf(" " + n + " ") === -1 && (i += n + " ")
           }),
           n.setAttribute("class", g(i))
       }
   }
   function nf(n, t) {
       if (t) {
           t = !t.nodeName && f(t.length) && !ei(t) ? t: [t];
           for (var i = 0; i < t.length; i++) n.push(t[i])
       }
   }
   function ce(n, t) {
       return kr(n, "$" + (t || "ngController") + "Controller")
   }
   function kr(n, t, r) {
       var o, f, e, h;
       for (n = u(n), n[0].nodeType == 9 && (n = n.find("html")), o = s(t) ? t: [t]; n.length;) {
           for (f = n[0], e = 0, h = o.length; e < h; e++) if ((r = n.data(o[e])) !== i) return r;
           n = u(f.parentNode || f.nodeType === 11 && f.host)
       }
   }
   function le(n) {
       for (var t = 0,
       i = n.childNodes; t < i.length; t++) si(i[t]);
       while (n.firstChild) n.removeChild(n.firstChild)
   }
   function ae(n, t) {
       var i = rr[t.toLowerCase()];
       return i && tf[n.nodeName] && i
   }
   function ah(n, i) {
       var u = function(u, f) {
           var e, o;
           u.preventDefault || (u.preventDefault = function() {
               u.returnValue = !1
           }),
           u.stopPropagation || (u.stopPropagation = function() {
               u.cancelBubble = !0
           }),
           u.target || (u.target = u.srcElement || t),
           l(u.defaultPrevented) && (e = u.preventDefault, u.preventDefault = function() {
               u.defaultPrevented = !0,
               e.call(u)
           },
           u.defaultPrevented = !1),
           u.isDefaultPrevented = function() {
               return u.defaultPrevented || u.returnValue === !1
           },
           o = st(i[f || u.type] || []),
           r(o,
           function(t) {
               t.call(n, u)
           }),
           p <= 8 ? (u.preventDefault = null, u.stopPropagation = null, u.isDefaultPrevented = null) : (delete u.preventDefault, delete u.stopPropagation, delete u.isDefaultPrevented)
       };
       return u.elem = n,
       u
   }
   function hi(n, t) {
       var u = typeof n,
       r;
       return u == "function" || u == "object" && n !== null ? typeof(r = n.$$hashKey) == "function" ? r = n.$$hashKey() : r === i && (r = n.$$hashKey = (t || cr)()) : r = n,
       u + ":" + r
   }
   function ur(n, t) {
       if (t) {
           var i = 0;
           this.nextUid = function() {
               return++i
           }
       }
       r(n, this.put, this)
   }
   function ve(n) {
       var t, u, f, i;
       return typeof n == "function" ? (t = n.$inject) || (t = [], n.length && (u = n.toString().replace(bh, ""), f = u.match(yh), r(f[1].split(ph),
       function(n) {
           n.replace(wh,
           function(n, i, r) {
               t.push(r)
           })
       })), n.$inject = t) : s(n) ? (i = n.length - 1, gi(n[i], "fn"), t = n.slice(0, i)) : gi(n, "fn", !0),
       t
   }
   function ye(n) {
       function f(n) {
           return function(t, i) {
               if (a(t)) r(t, bf(n));
               else return n(t, i)
           }
       }
       function b(n, r) {
           if (ii(n, "service"), (h(r) || s(r)) && (r = t.instantiate(r)), !r.$get) throw fr("pget", "Provider '{0}' must define $get factory method.", n);
           return i[n + c] = r
       }
       function p(n, t) {
           return b(n, {
               $get: t
           })
       }
       function g(n, t) {
           return p(n, ["$injector",
           function(n) {
               return n.instantiate(t)
           }])
       }
       function tt(n, t) {
           return p(n, nt(t))
       }
       function it(n, t) {
           ii(n, "constant"),
           i[n] = t,
           y[n] = t
       }
       function rt(n, i) {
           var r = t.get(n + c),
           f = r.$get;
           r.$get = function() {
               var n = u.invoke(f, r);
               return u.invoke(i, null, {
                   $delegate: n
               })
           }
       }
       function k(n) {
           var i = [],
           u,
           o,
           f,
           c;
           return r(n,
           function(n) {
               if (!w.get(n)) {
                   w.put(n, !0);
                   try {
                       if (e(n)) for (u = pi(n), i = i.concat(k(u.requires)).concat(u._runBlocks), o = u._invokeQueue, f = 0, c = o.length; f < c; f++) {
                           var l = o[f],
                           a = t.get(l[0]);
                           a[l[1]].apply(a, l[2])
                       } else h(n) ? i.push(t.invoke(n)) : s(n) ? i.push(t.invoke(n)) : gi(n, "module")
                   } catch(r) {
                       s(n) && (n = n[n.length - 1]),
                       r.message && r.stack && r.stack.indexOf(r.message) == -1 && (r = r.message + "\n" + r.stack);
                       throw fr("modulerr", "Failed to instantiate module {0} due to:\n{1}", n, r.stack || r.message || r);
                   }
               }
           }),
           i
       }
       function d(n, t) {
           function r(i) {
               if (n.hasOwnProperty(i)) {
                   if (n[i] === v) throw fr("cdep", "Circular dependency found: {0}", i + " <- " + l.join(" <- "));
                   return n[i]
               }
               try {
                   return l.unshift(i),
                   n[i] = v,
                   n[i] = t(i)
               } catch(r) {
                   n[i] === v && delete n[i];
                   throw r;
               } finally {
                   l.shift()
               }
           }
           function u(n, t, i) {
               for (var o = [], h = ve(n), u, f = 0, e = h.length; f < e; f++) {
                   if (u = h[f], typeof u != "string") throw fr("itkn", "Incorrect injection token! Expected service name as string, got {0}", u);
                   o.push(i && i.hasOwnProperty(u) ? i[u] : r(u))
               }
               return s(n) && (n = n[e]),
               n.apply(t, o)
           }
           function f(n, t) {
               var f = function() {},
               r,
               i;
               return f.prototype = (s(n) ? n[n.length - 1] : n).prototype,
               r = new f,
               i = u(n, r, t),
               a(i) || h(i) ? i: r
           }
           return {
               invoke: u,
               instantiate: f,
               get: r,
               annotate: ve,
               has: function(t) {
                   return i.hasOwnProperty(t + c) || n.hasOwnProperty(t)
               }
           }
       }
       var v = {},
       c = "Provider",
       l = [],
       w = new ur([], !0),
       i = {
           $provide: {
               provider: f(b),
               factory: f(p),
               service: f(g),
               value: f(tt),
               constant: f(it),
               decorator: rt
           }
       },
       t = i.$injector = d(i,
       function() {
           throw fr("unpr", "Unknown provider: {0}", l.join(" <- "));
       }),
       y = {},
       u = y.$injector = d(y,
       function(n) {
           var i = t.get(n + c);
           return u.invoke(i.$get, i)
       });
       return r(k(n),
       function(n) {
           u.invoke(n || o)
       }),
       u
   }
   function kh() {
       var n = !0;
       this.disableAutoScrolling = function() {
           n = !1
       },
       this.$get = ["$window", "$location", "$rootScope",
       function(t, i, u) {
           function o(n) {
               var t = null;
               return r(n,
               function(n) {
                   t || v(n.nodeName) !== "a" || (t = n)
               }),
               t
           }
           function e() {
               var n = i.hash(),
               r;
               n ? (r = f.getElementById(n)) ? r.scrollIntoView() : (r = o(f.getElementsByName(n))) ? r.scrollIntoView() : n === "top" && t.scrollTo(0, 0) : t.scrollTo(0, 0)
           }
           var f = t.document;
           return n && u.$watch(function() {
               return i.hash()
           },
           function() {
               u.$evalAsync(e)
           }),
           e
       }]
   }
   function dh() {
       this.$get = ["$$rAF", "$timeout",
       function(n, t) {
           return n.supported ?
           function(t) {
               return n(t)
           }: function(n) {
               return t(n, 0, !1)
           }
       }]
   }
   function gh(n, t, f, s) {
       function g(n) {
           try {
               n.apply(null, lu(arguments, 1))
           } finally {
               if (a--, a === 0) while (w.length) try {
                   w.pop()()
               } catch(t) {
                   f.error(t)
               }
           }
       }
       function ct(n, t) { (function i() {
               r(b,
               function(n) {
                   n()
               }),
               ot = t(i, n)
           })()
       }
       function ut() { (tt = null, k != h.url()) && (k = h.url(), r(it,
           function(n) {
               n(h.url())
           }))
       }
       var h = this,
       v = t[0],
       c = n.location,
       y = n.history,
       et = n.setTimeout,
       ht = n.clearTimeout,
       p = {},
       a,
       w,
       b,
       ot,
       it,
       rt;
       h.isMock = !1,
       a = 0,
       w = [],
       h.$$completeOutstandingRequest = g,
       h.$$incOutstandingRequestCount = function() {
           a++
       },
       h.notifyWhenNoOutstandingRequests = function(n) {
           r(b,
           function(n) {
               n()
           }),
           a === 0 ? n() : w.push(n)
       },
       b = [],
       h.addPollFn = function(n) {
           return l(ot) && ct(100, et),
           b.push(n),
           n
       };
       var k = c.href,
       nt = t.find("base"),
       tt = null;
       h.url = function(t, i) {
           return c !== n.location && (c = n.location),
           y !== n.history && (y = n.history),
           t ? k == t ? void 0 : (k = t, s.history ? i ? y.replaceState(null, "", t) : (y.pushState(null, "", t), nt.attr("href", nt.attr("href"))) : (tt = t, i ? c.replace(t) : c.href = t), h) : tt || c.href.replace(/%27/g, "'")
       },
       it = [],
       rt = !1,
       h.onUrlChange = function(t) {
           if (!rt) {
               if (s.history) u(n).on("popstate", ut);
               if (s.hashchange) u(n).on("hashchange", ut);
               else h.addPollFn(ut);
               rt = !0
           }
           return it.push(t),
           t
       },
       h.baseHref = function() {
           var n = nt.attr("href");
           return n ? n.replace(/^(https?\:)?\/\/[^\/]*/, "") : ""
       };
       var d = {},
       ft = "",
       st = h.baseHref();
       h.cookies = function(n, t) {
           var s, h, r, u, o;
           if (n) t === i ? v.cookie = escape(n) + "=;path=" + st + ";expires=Thu, 01 Jan 1970 00:00:00 GMT": e(t) && (s = (v.cookie = escape(n) + "=" + escape(t) + ";path=" + st).length + 1, s > 4096 && f.warn("Cookie '" + n + "' possibly not set or overflowed because it was too large (" + s + " > 4096 bytes)!"));
           else {
               if (v.cookie !== ft) for (ft = v.cookie, h = ft.split("; "), d = {},
               u = 0; u < h.length; u++) r = h[u],
               o = r.indexOf("="),
               o > 0 && (n = unescape(r.substring(0, o)), d[n] === i && (d[n] = unescape(r.substring(o + 1))));
               return d
           }
       },
       h.defer = function(n, t) {
           var i;
           return a++,
           i = et(function() {
               delete p[i],
               g(n)
           },
           t || 0),
           p[i] = !0,
           i
       },
       h.defer.cancel = function(n) {
           return p[n] ? (delete p[n], ht(n), g(o), !0) : !1
       }
   }
   function nc() {
       this.$get = ["$window", "$log", "$sniffer", "$document",
       function(n, t, i, r) {
           return new gh(n, r, t, i)
       }]
   }
   function tc() {
       this.$get = function() {
           function t(t, i) {
               function v(n) {
                   n != f && (r ? r == n && (r = n.n) : r = n, h(n.n, n.p), h(n, f), f = n, f.n = null)
               }
               function h(n, t) {
                   n != t && (n && (n.p = t), t && (t.n = n))
               }
               if (t in n) throw y("$cacheFactory")("iid", "CacheId '{0}' is already taken!", t);
               var o = 0,
               a = c({},
               i, {
                   id: t
               }),
               e = {},
               s = i && i.capacity || Number.MAX_VALUE,
               u = {},
               f = null,
               r = null;
               return n[t] = {
                   put: function(n, t) {
                       if (s < Number.MAX_VALUE) {
                           var i = u[n] || (u[n] = {
                               key: n
                           });
                           v(i)
                       }
                       if (!l(t)) return n in e || o++,
                       e[n] = t,
                       o > s && this.remove(r.key),
                       t
                   },
                   get: function(n) {
                       if (s < Number.MAX_VALUE) {
                           var t = u[n];
                           if (!t) return;
                           v(t)
                       }
                       return e[n]
                   },
                   remove: function(n) {
                       if (s < Number.MAX_VALUE) {
                           var t = u[n];
                           if (!t) return;
                           t == f && (f = t.p),
                           t == r && (r = t.n),
                           h(t.n, t.p),
                           delete u[n]
                       }
                       delete e[n],
                       o--
                   },
                   removeAll: function() {
                       e = {},
                       o = 0,
                       u = {},
                       f = r = null
                   },
                   destroy: function() {
                       e = null,
                       a = null,
                       u = null,
                       delete n[t]
                   },
                   info: function() {
                       return c({},
                       a, {
                           size: o
                       })
                   }
               }
           }
           var n = {};
           return t.info = function() {
               var t = {};
               return r(n,
               function(n, i) {
                   t[i] = n.info()
               }),
               t
           },
           t.get = function(t) {
               return n[t]
           },
           t
       }
   }
   function ic() {
       this.$get = ["$cacheFactory",
       function(n) {
           return n("templates")
       }]
   }
   function be(n, o) {
       var l = {},
       v = "Directive",
       y = /^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,
       w = /(([\d\w_\-]+)(?:\:([^;]+))?;?)/,
       b = /^(on[a-z]+|formaction)$/;
       this.directive = function k(t, i) {
           return ii(t, "directive"),
           e(t) ? (yu(i, "directiveFactory"), l.hasOwnProperty(t) || (l[t] = [], n.factory(t + v, ["$injector", "$exceptionHandler",
           function(n, i) {
               var u = [];
               return r(l[t],
               function(r, f) {
                   try {
                       var e = n.invoke(r);
                       h(e) ? e = {
                           compile: nt(e)
                       }: !e.compile && e.link && (e.compile = nt(e.link)),
                       e.priority = e.priority || 0,
                       e.index = f,
                       e.name = e.name || t,
                       e.require = e.require || e.controller && e.name,
                       e.restrict = e.restrict || "A",
                       u.push(e)
                   } catch(o) {
                       i(o)
                   }
               }),
               u
           }])), l[t].push(i)) : r(t, bf(k)),
           this
       },
       this.aHrefSanitizationWhitelist = function(n) {
           return f(n) ? (o.aHrefSanitizationWhitelist(n), this) : o.aHrefSanitizationWhitelist()
       },
       this.imgSrcSanitizationWhitelist = function(n) {
           return f(n) ? (o.imgSrcSanitizationWhitelist(n), this) : o.imgSrcSanitizationWhitelist()
       },
       this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$http", "$templateCache", "$parse", "$controller", "$rootScope", "$document", "$sce", "$animate", "$$sanitizeUri",
       function(n, f, o, k, d, nt, tt, it, rt, ft, ot, ht) {
           function bt(n, t, i, f, e) {
               n instanceof u || (n = u(n)),
               r(n,
               function(t, i) {
                   t.nodeType == 3 && t.nodeValue.match(/\S+/) && (n[i] = t = u(t).wrap("<\/span>").parent()[0])
               });
               var o = kt(n, t, n, i, f, e);
               return ct(n, "ng-scope"),
               function(t, i, u, f) {
                   var e, s, c, l, h;
                   for (yu(t, "scope"), e = i ? ri.clone.call(n) : n, r(u,
                   function(n, t) {
                       e.data("$" + t + "Controller", n)
                   }), s = 0, c = e.length; s < c; s++) l = e[s],
                   h = l.nodeType,
                   (h === 1 || h === 9) && e.eq(s).data("$scope", t);
                   return i && i(e, t),
                   o && o(t, e, e, f),
                   e
               }
           }
           function ct(n, t) {
               try {
                   n.addClass(t)
               } catch(i) {}
           }
           function kt(n, t, r, f, e, o) {
               function w(n, r, f, e) {
                   for (var s, h, l, y, a, p, v, w, b = r.length,
                   k = new Array(b), o = 0; o < b; o++) k[o] = r[o];
                   for (o = 0, v = 0, p = c.length; o < p; v++) l = k[v],
                   s = c[o++],
                   h = c[o++],
                   y = u(l),
                   s ? (s.scope ? (a = n.$new(), y.data("$scope", a)) : a = n, w = s.transcludeOnThisElement ? vt(n, s.transclude, e) : !s.templateOnThisElement && e ? e: !e && t ? vt(n, t) : null, s(h, a, l, f, w)) : h && h(n, l.childNodes, i, e)
               }
               for (var c = [], l, a, s, v, y, p, h = 0; h < n.length; h++) l = new wt,
               a = dt(n[h], [], l, h === 0 ? f: i, e),
               s = a.length ? si(a, n[h], l, t, r, null, [], [], o) : null,
               s && s.scope && ct(u(n[h]), "ng-scope"),
               y = s && s.terminal || !(v = n[h].childNodes) || !v.length ? null: kt(v, s ? (s.transcludeOnThisElement || !s.templateOnThisElement) && s.transclude: t),
               c.push(s, y),
               p = p || s || y,
               o = null;
               return p ? w: null
           }
           function vt(n, t, i) {
               return function(r, u, f) {
                   var o = !1,
                   e;
                   if (r || (r = n.$new(), r.$$transcluded = !0, o = !0), e = t(r, u, f, i), o) e.on("$destroy",
                   function() {
                       r.$destroy()
                   });
                   return e
               }
           }
           function dt(n, t, i, r, u) {
               var it = n.nodeType,
               rt = i.$attr,
               s, h, k, d, tt;
               switch (it) {
               case 1:
                   yt(t, lt(ui(n).toLowerCase()), "E", r, u);
                   for (var l, o, f, c, a, nt, v = n.attributes,
                   b = 0,
                   ut = v && v.length; b < ut; b++) k = !1,
                   d = !1,
                   l = v[b],
                   (!p || p >= 8 || l.specified) && (o = l.name, a = g(l.value), c = lt(o), (nt = ai.test(c)) && (o = yr(c.substr(6), "-")), tt = c.replace(/(Start|End)$/, ""), c === tt + "Start" && (k = o, d = o.substr(0, o.length - 5) + "end", o = o.substr(0, o.length - 6)), f = lt(o.toLowerCase()), rt[f] = o, (nt || !i.hasOwnProperty(f)) && (i[f] = a, ae(n, f) && (i[f] = !0)), bi(n, t, a, f), yt(t, f, "A", r, u, k, d));
                   if (h = n.className, e(h) && h !== "") while (s = w.exec(h)) f = lt(s[2]),
                   yt(t, f, "C", r, u) && (i[f] = g(s[3])),
                   h = h.substr(s.index + s[0].length);
                   break;
               case 3:
                   pi(t, n.nodeValue);
                   break;
               case 8:
                   try {
                       s = y.exec(n.nodeValue),
                       s && (f = lt(s[1]), yt(t, f, "M", r, u) && (i[f] = g(s[2])))
                   } catch(ft) {}
               }
               return t.sort(yi),
               t
           }
           function gt(n, t, i) {
               var r = [],
               f = 0,
               e;
               if (t && n.hasAttribute && n.hasAttribute(t)) {
                   e = n;
                   do {
                       if (!n) throw ut("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, i);
                       n.nodeType == 1 && (n.hasAttribute(t) && f++, n.hasAttribute(i) && f--), r.push(n), n = n.nextSibling
                   } while ( f > 0 )
               } else r.push(n);
               return u(r)
           }
           function oi(n, t, i) {
               return function(r, u, f, e, o) {
                   return u = gt(u[0], t, i),
                   n(r, u, f, e, o)
               }
           }
           function si(n, c, l, v, y, p, w, b, k) {
               function tr(n, t, i, r) {
                   n && (i && (n = oi(n, i, r)), n.require = d.require, n.directiveName = ot, (it === d || d.$$isolateScope) && (n = li(n, {
                       isolateScope: !0
                   })), w.push(n)),
                   t && (i && (t = oi(t, i, r)), t.require = d.require, t.directiveName = ot, (it === d || d.$$isolateScope) && (t = li(t, {
                       isolateScope: !0
                   })), b.push(t))
               }
               function di(n, t, i, u) {
                   var f, o = "data",
                   h = !1;
                   if (e(t)) {
                       while ((f = t.charAt(0)) == "^" || f == "?") t = t.substr(1),
                       f == "^" && (o = "inheritedData"),
                       h = h || f == "?";
                       if (f = null, u && o === "data" && (f = u[t]), f = f || i[o]("$" + t + "Controller"), !f && !h) throw ut("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", t, n);
                       return f
                   }
                   return s(t) && (f = [], r(t,
                   function(t) {
                       f.push(di(n, t, i, u))
                   })),
                   f
               }
               function kt(n, t, e, s, h) {
                   function pt(n, t) {
                       var r;
                       return arguments.length < 2 && (t = n, n = i),
                       yi && (r = g),
                       h(n, t, r)
                   }
                   var v, p, k, ht, y, d, a, g = {},
                   rt, at, ft, ot;
                   for (v = c === e ? l: st(l, new wt(u(e), l.$attr)), p = v.$$element, it && (at = /^\s*([@=&])(\??)\s*(\w*)\s*$/, ft = u(e), a = t.$new(!0), lt && (lt === it || lt === it.$$originalDirective) ? ft.data("$isolateScope", a) : ft.data("$isolateScopeNoTemplate", a), ct(ft, "ng-isolate-scope"), r(it.scope,
                   function(n, i) {
                       var o = n.match(at) || [],
                       r = o[3] || i,
                       l = o[2] == "?",
                       h = o[1],
                       e,
                       u,
                       c,
                       s;
                       a.$$isolateBindings[i] = h + r;
                       switch (h) {
                       case "@":
                           v.$observe(r,
                           function(n) {
                               a[i] = n
                           }),
                           v.$$observers[r].$$scope = t,
                           v[r] && (a[i] = f(v[r])(t));
                           break;
                       case "=":
                           if (l && !v[r]) return;
                           u = nt(v[r]),
                           s = u.literal ? ni: function(n, t) {
                               return n === t
                           },
                           c = u.assign ||
                           function() {
                               e = a[i] = u(t);
                               throw ut("nonassign", "Expression '{0}' used with directive '{1}' is non-assignable!", v[r], it.name);
                           },
                           e = a[i] = u(t),
                           a.$watch(function() {
                               var n = u(t);
                               return s(n, a[i]) || (s(n, e) ? c(t, n = a[i]) : a[i] = n),
                               e = n
                           },
                           null, u.literal);
                           break;
                       case "&":
                           u = nt(v[r]),
                           a[i] = function(n) {
                               return u(t, n)
                           };
                           break;
                       default:
                           throw ut("iscp", "Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}", it.name, i, n);
                       }
                   })), rt = h && pt, yt && r(yt,
                   function(n) {
                       var r = {
                           $scope: n === it || n.$$isolateScope ? a: t,
                           $element: p,
                           $attrs: v,
                           $transclude: rt
                       },
                       i;
                       d = n.controller,
                       d == "@" && (d = v[n.name]),
                       i = tt(d, r),
                       g[n.name] = i,
                       yi || p.data("$" + n.name + "Controller", i),
                       n.controllerAs && (r.$scope[n.controllerAs] = i)
                   }), k = 0, ht = w.length; k < ht; k++) try {
                       y = w[k],
                       y(y.isolateScope ? a: t, p, v, y.require && di(y.directiveName, y.require, p, g), rt)
                   } catch(vt) {
                       o(vt, et(p))
                   }
                   for (ot = t, it && (it.template || it.templateUrl === null) && (ot = a), n && n(ot, e.childNodes, i, h), k = b.length - 1; k >= 0; k--) try {
                       y = b[k],
                       y(y.isolateScope ? a: t, p, v, y.require && di(y.directiveName, y.require, p, g), rt)
                   } catch(vt) {
                       o(vt, et(p))
                   }
               }
               var vt, wi, ii, fi;
               k = k || {};
               var ri = -Number.MAX_VALUE,
               si, yt = k.controllerDirectives,
               it = k.newIsolateScopeDirective,
               lt = k.templateDirective,
               ai = k.nonTlbTranscludeDirective,
               bi = !1,
               ki = !1,
               yi = k.hasElementTranscludeDirective,
               rt = l.$$element = u(c),
               d,
               ot,
               ht,
               pi = p,
               ui = v,
               ti,
               ft;
               for (vt = 0, wi = n.length; vt < wi; vt++) {
                   if (d = n[vt], ii = d.$$start, fi = d.$$end, ii && (rt = gt(c, ii, fi)), ht = i, ri > d.priority) break;
                   if ((ft = d.scope) && (si = si || d, d.templateUrl || (at("new/isolated scope", it, d, rt), a(ft) && (it = d))), ot = d.name, !d.templateUrl && d.controller && (ft = d.controller, yt = yt || {},
                   at("'" + ot + "' controller", yt[ot], d, rt), yt[ot] = d), (ft = d.transclude) && (bi = !0, d.$$tlb || (at("transclusion", ai, d, rt), ai = d), ft == "element" ? (yi = !0, ri = d.priority, ht = gt(c, ii, fi), rt = l.$$element = u(t.createComment(" " + ot + ": " + l[ot] + " ")), c = rt[0], pt(y, u(lu(ht)), c), ui = bt(ht, v, ri, pi && pi.name, {
                       nonTlbTranscludeDirective: ai
                   })) : (ht = u(du(c)).contents(), rt.empty(), ui = bt(ht, v))), d.template) if (ki = !0, at("template", lt, d, rt), lt = d, ft = h(d.template) ? d.template(rt, l) : d.template, ft = ei(ft), d.replace) {
                       if (pi = d, ht = ku(ft) ? [] : u(g(ft)), c = ht[0], ht.length != 1 || c.nodeType !== 1) throw ut("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", ot, "");
                       pt(y, rt, c);
                       var gi = {
                           $attr: {}
                       },
                       nr = dt(c, [], gi),
                       ir = n.splice(vt + 1, n.length - (vt + 1));
                       it && hi(nr),
                       n = n.concat(nr).concat(ir),
                       ci(l, gi),
                       wi = n.length
                   } else rt.html(ft);
                   if (d.templateUrl) ki = !0,
                   at("template", lt, d, rt),
                   lt = d,
                   d.replace && (pi = d),
                   kt = vi(n.splice(vt, n.length - vt), rt, l, y, bi && ui, w, b, {
                       controllerDirectives: yt,
                       newIsolateScopeDirective: it,
                       templateDirective: lt,
                       nonTlbTranscludeDirective: ai
                   }),
                   wi = n.length;
                   else if (d.compile) try {
                       ti = d.compile(rt, l, ui),
                       h(ti) ? tr(null, ti, ii, fi) : ti && tr(ti.pre, ti.post, ii, fi)
                   } catch(rr) {
                       o(rr, et(rt))
                   }
                   d.terminal && (kt.terminal = !0, ri = Math.max(ri, d.priority))
               }
               return kt.scope = si && si.scope === !0,
               kt.transcludeOnThisElement = bi,
               kt.templateOnThisElement = ki,
               kt.transclude = ui,
               k.hasElementTranscludeDirective = yi,
               kt
           }
           function hi(n) {
               for (var t = 0,
               i = n.length; t < i; t++) n[t] = df(n[t], {
                   $$isolateScope: !0
               })
           }
           function yt(t, r, u, f, e, s, h) {
               var a;
               if (r === e) return null;
               if (a = null, l.hasOwnProperty(r)) for (var c, p = n.get(r + v), y = 0, w = p.length; y < w; y++) try {
                   c = p[y],
                   (f === i || f > c.priority) && c.restrict.indexOf(u) != -1 && (s && (c = df(c, {
                       $$start: s,
                       $$end: h
                   })), t.push(c), a = c)
               } catch(b) {
                   o(b)
               }
               return a
           }
           function ci(n, t) {
               var u = t.$attr,
               f = n.$attr,
               i = n.$$element;
               r(n,
               function(i, r) {
                   r.charAt(0) != "$" && (t[r] && t[r] !== i && (i += (r === "style" ? ";": " ") + t[r]), n.$set(r, i, !0, u[r]))
               }),
               r(t,
               function(t, r) {
                   r == "class" ? (ct(i, t), n["class"] = (n["class"] ? n["class"] + " ": "") + t) : r == "style" ? (i.attr("style", i.attr("style") + ";" + t), n.style = (n.style ? n.style + ";": "") + t) : r.charAt(0) == "$" || n.hasOwnProperty(r) || (n[r] = t, f[r] = u[r])
               })
           }
           function vi(n, t, i, f, e, o, s, l) {
               var v = [],
               p,
               w,
               b = t[0],
               y = n.shift(),
               tt = c({},
               y, {
                   templateUrl: null,
                   transclude: null,
                   replace: null,
                   $$originalDirective: y
               }),
               nt = h(y.templateUrl) ? y.templateUrl(t, i) : y.templateUrl;
               return t.empty(),
               k.get(ft.getTrustedResourceUrl(nt), {
                   cache: d
               }).success(function(h) {
                   var c, d, it, et, rt, ht;
                   if (h = ei(h), y.replace) {
                       if (it = ku(h) ? [] : u(g(h)), c = it[0], it.length != 1 || c.nodeType !== 1) throw ut("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", y.name, nt);
                       d = {
                           $attr: {}
                       },
                       pt(f, t, c),
                       rt = dt(c, [], d),
                       a(y.scope) && hi(rt),
                       n = rt.concat(n),
                       ci(i, d)
                   } else c = b,
                   t.html(h);
                   for (n.unshift(tt), p = si(n, c, i, e, t, y, o, s, l), r(f,
                   function(n, i) {
                       n == c && (f[i] = t[0])
                   }), w = kt(t[0].childNodes, e); v.length;) {
                       var ot = v.shift(),
                       ft = v.shift(),
                       lt = v.shift(),
                       st = v.shift(),
                       k = t[0];
                       ft !== b && (ht = ft.className, l.hasElementTranscludeDirective && y.replace || (k = du(c)), pt(lt, u(ft), k), ct(u(k), ht)),
                       et = p.transcludeOnThisElement ? vt(ot, p.transclude, st) : st,
                       p(w, ot, k, f, et)
                   }
                   v = null
               }).error(function(n, t, i, r) {
                   throw ut("tpload", "Failed to load template: {0}", r.url);
               }),
               function(n, t, i, r, u) {
                   var f = u;
                   v ? (v.push(t), v.push(i), v.push(r), v.push(f)) : (p.transcludeOnThisElement && (f = vt(t, p.transclude, u)), p(w, t, i, r, f))
               }
           }
           function yi(n, t) {
               var i = t.priority - n.priority;
               return i !== 0 ? i: n.name !== t.name ? n.name < t.name ? -1 : 1 : n.index - t.index
           }
           function at(n, t, i, r) {
               if (t) throw ut("multidir", "Multiple directives [{0}, {1}] asking for {2} on: {3}", t.name, i.name, n, et(r));
           }
           function pi(n, t) {
               var i = f(t, !0);
               i && n.push({
                   priority: 0,
                   compile: function(n) {
                       var r = n.parent(),
                       t = r.length;
                       return t && ct(n.parent(), "ng-binding"),
                       function(n, r) {
                           var u = r.parent(),
                           f = u.data("$binding") || [];
                           f.push(i),
                           u.data("$binding", f),
                           t || ct(u, "ng-binding"),
                           n.$watch(i,
                           function(n) {
                               r[0].nodeValue = n
                           })
                       }
                   }
               })
           }
           function wi(n, t) {
               if (t == "srcdoc") return ft.HTML;
               var i = ui(n);
               if (t == "xlinkHref" || i == "FORM" && t == "action" || i != "IMG" && (t == "src" || t == "ngSrc")) return ft.RESOURCE_URL
           }
           function bi(n, t, i, r) {
               var u = f(i, !0);
               if (u) {
                   if (r === "multiple" && ui(n) === "SELECT") throw ut("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", et(n));
                   t.push({
                       priority: 100,
                       compile: function() {
                           return {
                               pre: function(t, i, e) {
                                   var o = e.$$observers || (e.$$observers = {});
                                   if (b.test(r)) throw ut("nodomevents", "Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead."); (u = f(e[r], !0, wi(n, r)), u) && (e[r] = u(t), (o[r] || (o[r] = [])).$$inter = !0, (e.$$observers && e.$$observers[r].$$scope || t).$watch(u,
                                   function(n, t) {
                                       r === "class" && n != t ? e.$updateClass(n, t) : e.$set(r, n)
                                   }))
                               }
                           }
                       }
                   })
               }
           }
           function pt(n, i, r) {
               var e = i[0],
               a = i.length,
               v = e.parentNode,
               f,
               y,
               c,
               s,
               w,
               l;
               if (n) for (f = 0, y = n.length; f < y; f++) if (n[f] == e) {
                   n[f++] = r;
                   for (var o = f,
                   h = o + a - 1,
                   p = n.length; o < p; o++, h++) h < p ? n[o] = n[h] : delete n[o];
                   n.length -= a - 1;
                   break
               }
               for (v && v.replaceChild(r, e), c = t.createDocumentFragment(), c.appendChild(e), r[u.expando] = e[u.expando], s = 1, w = i.length; s < w; s++) l = i[s],
               u(l).remove(),
               c.appendChild(l),
               delete i[s];
               i[0] = r,
               i.length = 1
           }
           function li(n, t) {
               return c(function() {
                   return n.apply(null, arguments)
               },
               n, t)
           }
           var wt = function(n, t) {
               this.$$element = n,
               this.$attr = t || {}
           };
           wt.prototype = {
               $normalize: lt,
               $addClass: function(n) {
                   n && n.length > 0 && ot.addClass(this.$$element, n)
               },
               $removeClass: function(n) {
                   n && n.length > 0 && ot.removeClass(this.$$element, n)
               },
               $updateClass: function(n, t) {
                   var i = de(n, t),
                   r = de(t, n);
                   i.length === 0 ? ot.removeClass(this.$$element, r) : r.length === 0 ? ot.addClass(this.$$element, i) : ot.setClass(this.$$element, i, r)
               },
               $set: function(n, t, u, f) {
                   var h = ae(this.$$element[0], n),
                   e,
                   s;
                   h && (this.$$element.prop(n, t), f = h),
                   this[n] = t,
                   f ? this.$attr[n] = f: (f = this.$attr[n], f || (this.$attr[n] = f = yr(n, "-"))),
                   e = ui(this.$$element),
                   (e === "A" && n === "href" || e === "IMG" && n === "src") && (this[n] = t = ht(t, n === "src")),
                   u !== !1 && (t === null || t === i ? this.$$element.removeAttr(f) : this.$$element.attr(f, t)),
                   s = this.$$observers,
                   s && r(s[n],
                   function(n) {
                       try {
                           n(t)
                       } catch(i) {
                           o(i)
                       }
                   })
               },
               $observe: function(n, t) {
                   var i = this,
                   r = i.$$observers || (i.$$observers = {}),
                   u = r[n] || (r[n] = []);
                   return u.push(t),
                   it.$evalAsync(function() {
                       u.$$inter || t(i[n])
                   }),
                   t
               }
           };
           var ti = f.startSymbol(),
           ii = f.endSymbol(),
           ei = ti == "Template:"" ? fi: function(n) {
               return n.replace(/\{\{/g, ti).replace(/}}/g, ii)
           },
           ai = /^ngAttr[A-Z]/;
           return bt
       }]
   }
   function lt(n) {
       return ir(n.replace(ke, ""))
   }
   function de(n, t) {
       var u = "",
       e = n.split(/\s+/),
       o = t.split(/\s+/),
       i,
       f,
       r;
       n: for (i = 0; i < e.length; i++) {
           for (f = e[i], r = 0; r < o.length; r++) if (f == o[r]) continue n;
           u += (u.length > 0 ? " ": "") + f
       }
       return u
   }
   function rc() {
       var n = {},
       t = /^(\S+)(\s+as\s+(\w+))?$/;
       this.register = function(t, i) {
           ii(t, "controller"),
           a(t) ? c(n, t) : n[t] = i
       },
       this.$get = ["$injector", "$window",
       function(i, r) {
           return function(u, f) {
               var h, c, o, s;
               if (e(u) && (c = u.match(t), o = c[1], s = c[3], u = n.hasOwnProperty(o) ? n[o] : fe(f.$scope, o, !0) || fe(r, o, !0), gi(u, o, !0)), h = i.instantiate(u, f), s) {
                   if (! (f && typeof f.$scope == "object")) throw y("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", o || u.name, s);
                   f.$scope[s] = h
               }
               return h
           }
       }]
   }
   function uc() {
       this.$get = ["$window",
       function(n) {
           return u(n.document)
       }]
   }
   function fc() {
       this.$get = ["$log",
       function(n) {
           return function() {
               n.error.apply(n, arguments)
           }
       }]
   }
   function ge(n) {
       var t = {},
       i, u, f;
       return n ? (r(n.split("\n"),
       function(n) {
           f = n.indexOf(":"),
           i = v(g(n.substr(0, f))),
           u = g(n.substr(f + 1)),
           i && (t[i] ? t[i] += ", " + u: t[i] = u)
       }), t) : t
   }
   function no(n) {
       var t = a(n) ? n: i;
       return function(i) {
           return (t || (t = ge(n)), i) ? t[v(i)] || null: t
       }
   }
   function to(n, t, i) {
       return h(i) ? i(n, t) : (r(i,
       function(i) {
           n = i(n, t)
       }), n)
   }
   function rf(n) {
       return 200 <= n && n < 300
   }
   function ec() {
       var u = /^\s*(\[|\{[^\{])/,
       o = /[\}\]]\s*$/,
       y = /^\)\]\}',?\n/,
       t = {
           "Content-Type": "application/json;charset=utf-8"
       },
       n = this.defaults = {
           transformResponse: [function(n) {
               return e(n) && (n = n.replace(y, ""), u.test(n) && o.test(n) && (n = ne(n))),
               n
           }],
           transformRequest: [function(n) {
               return a(n) && !vs(n) && !ys(n) ? ht(n) : n
           }],
           headers: {
               common: {
                   Accept: "application/json, text/plain, */*"
               },
               post: st(t),
               put: st(t),
               patch: st(t)
           },
           xsrfCookieName: "XSRF-TOKEN",
           xsrfHeaderName: "X-XSRF-TOKEN"
       },
       p = this.interceptors = [],
       w = this.responseInterceptors = [];
       this.$get = ["$httpBackend", "$browser", "$cacheFactory", "$rootScope", "$q", "$injector",
       function(t, u, o, y, b, k) {
           function d(t) {
               function y(n) {
                   var t = c({},
                   n, {
                       data: to(n.data, n.headers, f.transformResponse)
                   });
                   return rf(n.status) ? t: b.reject(t)
               }
               function w(t) {
                   function s(n) {
                       var t;
                       r(n,
                       function(i, r) {
                           h(i) && (t = i(), t != null ? n[r] = t: delete n[r])
                       })
                   }
                   var i = n.headers,
                   u = c({},
                   t.headers),
                   f,
                   e,
                   o;
                   i = c({},
                   i.common, i[v(t.method)]),
                   s(i),
                   s(u);
                   n: for (f in i) {
                       e = v(f);
                       for (o in u) if (v(o) === e) continue n;
                       u[f] = i[f]
                   }
                   return u
               }
               var f = {
                   method: "get",
                   transformRequest: n.transformRequest,
                   transformResponse: n.transformResponse
               },
               e = w(t),
               s,
               a;
               c(f, t),
               f.headers = e,
               f.method = dt(f.method);
               var p = function(t) {
                   e = t.headers;
                   var i = to(t.data, no(e), t.transformRequest);
                   return l(t.data) && r(e,
                   function(n, t) {
                       v(t) === "content-type" && delete e[t]
                   }),
                   l(t.withCredentials) && !l(n.withCredentials) && (t.withCredentials = n.withCredentials),
                   rt(t, i, e).then(y, y)
               },
               o = [p, i],
               u = b.when(f);
               for (r(g,
               function(n) { (n.request || n.requestError) && o.unshift(n.request, n.requestError),
                   (n.response || n.responseError) && o.push(n.response, n.responseError)
               }); o.length;) s = o.shift(),
               a = o.shift(),
               u = u.then(s, a);
               return u.success = function(n) {
                   return u.then(function(t) {
                       n(t.data, t.status, t.headers, f)
                   }),
                   u
               },
               u.error = function(n) {
                   return u.then(null,
                   function(t) {
                       n(t.data, t.status, t.headers, f)
                   }),
                   u
               },
               u
           }
           function tt() {
               r(arguments,
               function(n) {
                   d[n] = function(t, i) {
                       return d(c(i || {},
                       {
                           method: n,
                           url: t
                       }))
                   }
               })
           }
           function it() {
               r(arguments,
               function(n) {
                   d[n] = function(t, i, r) {
                       return d(c(r || {},
                       {
                           method: n,
                           url: t,
                           data: i
                       }))
                   }
               })
           }
           function rt(r, e, o) {
               function it(n, t, i, r) {
                   c && (rf(n) ? c.put(v, [n, t, ge(i), r]) : c.remove(v)),
                   tt(t, n, i, r),
                   y.$$phase || y.$apply()
               }
               function tt(n, t, i, u) {
                   t = Math.max(t, 0),
                   (rf(t) ? w.resolve: w.reject)({
                       data: n,
                       status: t,
                       headers: no(i),
                       config: r,
                       statusText: u
                   })
               }
               function p() {
                   var n = bi(d.pendingRequests, r);
                   n !== -1 && d.pendingRequests.splice(n, 1)
               }
               var w = b.defer(),
               k = w.promise,
               c,
               h,
               v = ut(r.url, r.params),
               g;
               if (d.pendingRequests.push(r), k.then(p, p), (r.cache || n.cache) && r.cache !== !1 && r.method == "GET" && (c = a(r.cache) ? r.cache: a(n.cache) ? n.cache: nt), c) if (h = c.get(v), f(h)) {
                   if (h.then) return h.then(p, p),
                   h;
                   s(h) ? tt(h[1], h[0], st(h[2]), h[3]) : tt(h, 200, {},
                   "OK")
               } else c.put(v, k);
               return l(h) && (g = co(r.url) ? u.cookies()[r.xsrfCookieName || n.xsrfCookieName] : i, g && (o[r.xsrfHeaderName || n.xsrfHeaderName] = g), t(r.method, v, e, it, o, r.timeout, r.withCredentials, r.responseType)),
               k
           }
           function ut(n, t) {
               if (!t) return n;
               var i = [];
               return as(t,
               function(n, t) {
                   n === null || l(n) || (s(n) || (n = [n]), r(n,
                   function(n) {
                       a(n) && (n = ht(n)),
                       i.push(ti(t) + "=" + ti(n))
                   }))
               }),
               i.length > 0 && (n += (n.indexOf("?") == -1 ? "?": "&") + i.join("&")),
               n
           }
           var nt = o("$http"),
           g = [];
           return r(p,
           function(n) {
               g.unshift(e(n) ? k.get(n) : k.invoke(n))
           }),
           r(w,
           function(n, t) {
               var i = e(n) ? k.get(n) : k.invoke(n);
               g.splice(t, 0, {
                   response: function(n) {
                       return i(b.when(n))
                   },
                   responseError: function(n) {
                       return i(b.reject(n))
                   }
               })
           }),
           d.pendingRequests = [],
           tt("get", "delete", "head", "jsonp"),
           it("post", "put"),
           d.defaults = n,
           d
       }]
   }
   function oc(t) {
       if (p <= 8 && (!t.match(/^(get|post|head|put|delete|options)$/i) || !n.XMLHttpRequest)) return new n.ActiveXObject("Microsoft.XMLHTTP");
       if (n.XMLHttpRequest) return new n.XMLHttpRequest;
       throw y("$httpBackend")("noxhr", "This browser does not support XMLHttpRequest.");
   }
   function sc() {
       this.$get = ["$browser", "$window", "$document",
       function(n, t, i) {
           return hc(n, oc, n.defer, t.angular.callbacks, i[0])
       }]
   }
   function hc(n, t, i, u, s) {
       function c(n, t, i) {
           var r = s.createElement("script"),
           f = null;
           return r.type = "text/javascript",
           r.src = n,
           r.async = !0,
           f = function(n) {
               tr(r, "load", f),
               tr(r, "error", f),
               s.body.removeChild(r),
               r = null;
               var e = -1,
               o = "unknown";
               n && (n.type !== "load" || u[t].called || (n = {
                   type: "error"
               }), o = n.type, e = n.type === "error" ? 404 : 200),
               i && i(e, o)
           },
           pr(r, "load", f),
           pr(r, "error", f),
           p <= 8 && (r.onreadystatechange = function() {
               e(r.readyState) && /loaded|complete/.test(r.readyState) && (r.onreadystatechange = null, f({
                   type: "load"
               }))
           }),
           s.body.appendChild(r),
           f
       }
       var h = -1;
       return function(e, s, l, a, y, w, b, k) {
           function rt() {
               nt = h,
               tt && tt(),
               d && d.abort()
           }
           function ut(t, r, u, f, e) {
               it && i.cancel(it),
               tt = d = null,
               r === 0 && (r = u ? 200 : wt(s).protocol == "file" ? 404 : 0),
               r = r === 1223 ? 204 : r,
               e = e || "",
               t(r, u, f, e),
               n.$$completeOutstandingRequest(o)
           }
           var nt, g, tt, d, it;
           if (n.$$incOutstandingRequestCount(), s = s || n.url(), v(e) == "jsonp") g = "_" + (u.counter++).toString(36),
           u[g] = function(n) {
               u[g].data = n,
               u[g].called = !0
           },
           tt = c(s.replace("JSON_CALLBACK", "angular.callbacks." + g), g,
           function(n, t) {
               ut(a, n, u[g].data, "", t),
               u[g] = o
           });
           else {
               if (d = t(e), d.open(e, s, !0), r(y,
               function(n, t) {
                   f(n) && d.setRequestHeader(t, n)
               }), d.onreadystatechange = function() {
                   if (d && d.readyState == 4) {
                       var n = null,
                       t = null,
                       i = "";
                       nt !== h && (n = d.getAllResponseHeaders(), t = "response" in d ? d.response: d.responseText),
                       nt === h && p < 10 || (i = d.statusText),
                       ut(a, nt || d.status, t, n, i)
                   }
               },
               b && (d.withCredentials = !0), k) try {
                   d.responseType = k
               } catch(ft) {
                   if (k !== "json") throw ft;
               }
               d.send(l || null)
           }
           w > 0 ? it = i(rt, w) : w && w.then && w.then(rt)
       }
   }
   function cc() {
       var n = "{{",
       t = "}}";
       this.startSymbol = function(t) {
           return t ? (n = t, this) : n
       },
       this.endSymbol = function(n) {
           return n ? (t = n, this) : t
       },
       this.$get = ["$parse", "$exceptionHandler", "$sce",
       function(i, r, u) {
           function f(f, s, h) {
               for (var y, p, c = 0,
               l = [], a = f.length, b = !1, v, k, w = []; c < a;)(y = f.indexOf(n, c)) != -1 && (p = f.indexOf(t, y + e)) != -1 ? (c != y && l.push(f.substring(c, y)), l.push(v = i(k = f.substring(y + e, p))), v.exp = k, c = p + o, b = !0) : (c != a && l.push(f.substring(c)), c = a);
               if ((a = l.length) || (l.push(""), a = 1), h && l.length > 1) throw uf("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", f);
               if (!s || b) return w.length = a,
               v = function(n) {
                   var i, e, t, o;
                   try {
                       for (i = 0, e = a; i < e; i++) {
                           if (typeof(t = l[i]) == "function") if (t = t(n), t = h ? u.getTrusted(h, t) : u.valueOf(t), t == null) t = "";
                           else switch (typeof t) {
                           case "string":
                               break;
                           case "number":
                               t = "" + t;
                               break;
                           default:
                               t = ht(t)
                           }
                           w[i] = t
                       }
                       return w.join("")
                   } catch(s) {
                       o = uf("interr", "Can't interpolate: {0}\n{1}", f, s.toString()),
                       r(o)
                   }
               },
               v.exp = f,
               v.parts = l,
               v
           }
           var e = n.length,
           o = t.length;
           return f.startSymbol = function() {
               return n
           },
           f.endSymbol = function() {
               return t
           },
           f
       }]
   }
   function lc() {
       this.$get = ["$rootScope", "$window", "$q",
       function(n, t, i) {
           function u(u, e, o, s) {
               var a = t.setInterval,
               v = t.clearInterval,
               c = i.defer(),
               h = c.promise,
               l = 0,
               y = f(s) && !s;
               return o = f(o) ? o: 0,
               h.then(null, null, u),
               h.$$intervalId = a(function() {
                   c.notify(l++),
                   o > 0 && l >= o && (c.resolve(l), v(h.$$intervalId), delete r[h.$$intervalId]),
                   y || n.$apply()
               },
               e),
               r[h.$$intervalId] = c,
               h
           }
           var r = {};
           return u.cancel = function(n) {
               return n && n.$$intervalId in r ? (r[n.$$intervalId].reject("canceled"), t.clearInterval(n.$$intervalId), delete r[n.$$intervalId], !0) : !1
           },
           u
       }]
   }
   function ac() {
       this.$get = function() {
           return {
               id: "en-us",
               NUMBER_FORMATS: {
                   DECIMAL_SEP: ".",
                   GROUP_SEP: ",",
                   PATTERNS: [{
                       minInt: 1,
                       minFrac: 0,
                       maxFrac: 3,
                       posPre: "",
                       posSuf: "",
                       negPre: "-",
                       negSuf: "",
                       gSize: 3,
                       lgSize: 3
                   },
                   {
                       minInt: 1,
                       minFrac: 2,
                       maxFrac: 2,
                       posPre: "¤",
                       posSuf: "",
                       negPre: "(¤",
                       negSuf: ")",
                       gSize: 3,
                       lgSize: 3
                   }],
                   CURRENCY_SYM: "$"
               },
               DATETIME_FORMATS: {
                   MONTH: "January,February,March,April,May,June,July,August,September,October,November,December".split(","),
                   SHORTMONTH: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
                   DAY: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
                   SHORTDAY: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),
                   AMPMS: ["AM", "PM"],
                   medium: "MMM d, y h:mm:ss a",
                   short: "M/d/yy h:mm a",
                   fullDate: "EEEE, MMMM d, y",
                   longDate: "MMMM d, y",
                   mediumDate: "MMM d, y",
                   shortDate: "M/d/yy",
                   mediumTime: "h:mm:ss a",
                   shortTime: "h:mm a"
               },
               pluralCat: function(n) {
                   return n === 1 ? "one": "other"
               }
           }
       }
   }
   function ef(n) {
       for (var t = n.split("/"), i = t.length; i--;) t[i] = vr(t[i]);
       return t.join("/")
   }
   function io(n, t, i) {
       var r = wt(n, i);
       t.$$protocol = r.protocol,
       t.$$host = r.hostname,
       t.$$port = k(r.port) || yc[r.protocol] || null
   }
   function ro(n, t, i) {
       var u = n.charAt(0) !== "/",
       r;
       u && (n = "/" + n),
       r = wt(n, i),
       t.$$path = decodeURIComponent(u && r.pathname.charAt(0) === "/" ? r.pathname.substring(1) : r.pathname),
       t.$$search = ie(r.search),
       t.$$hash = decodeURIComponent(r.hash),
       t.$$path && t.$$path.charAt(0) != "/" && (t.$$path = "/" + t.$$path)
   }
   function at(n, t) {
       if (t.indexOf(n) === 0) return t.substr(n.length)
   }
   function er(n) {
       var t = n.indexOf("#");
       return t == -1 ? n: n.substr(0, t)
   }
   function of(n) {
       return n.substr(0, er(n).lastIndexOf("/") + 1)
   }
   function pc(n) {
       return n.substring(0, n.indexOf("/", n.indexOf("//") + 2))
   }
   function uo(n, t) {
       this.$$html5 = !0,
       t = t || "";
       var r = of(n);
       io(n, this, n),
       this.$$parse = function(t) {
           var i = at(r, t);
           if (!e(i)) throw ff("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', t, r);
           ro(i, this, n),
           this.$$path || (this.$$path = "/"),
           this.$$compose()
       },
       this.$$compose = function() {
           var n = vu(this.$$search),
           t = this.$$hash ? "#" + vr(this.$$hash) : "";
           this.$$url = ef(this.$$path) + (n ? "?" + n: "") + t,
           this.$$absUrl = r + this.$$url.substr(1)
       },
       this.$$rewrite = function(u) {
           var f, e;
           return (f = at(n, u)) !== i ? (e = f, (f = at(t, f)) !== i ? r + (at("/", f) || f) : n + e) : (f = at(r, u)) !== i ? r + f: r == u + "/" ? r: void 0
       }
   }
   function sf(n, t) {
       var i = of(n);
       io(n, this, n),
       this.$$parse = function(r) {
           function o(n, t, i) {
               var u = /^\/[A-Z]:(\/.*)/,
               r;
               return (t.indexOf(i) === 0 && (t = t.replace(i, "")), u.exec(t)) ? n: (r = u.exec(n), r ? r[1] : n)
           }
           var u = at(n, r) || at(i, r),
           f = u.charAt(0) == "#" ? at(t, u) : this.$$html5 ? u: "";
           if (!e(f)) throw ff("ihshprfx", 'Invalid url "{0}", missing hash prefix "{1}".', r, t);
           ro(f, this, n),
           this.$$path = o(this.$$path, f, n),
           this.$$compose()
       },
       this.$$compose = function() {
           var i = vu(this.$$search),
           r = this.$$hash ? "#" + vr(this.$$hash) : "";
           this.$$url = ef(this.$$path) + (i ? "?" + i: "") + r,
           this.$$absUrl = n + (this.$$url ? t + this.$$url: "")
       },
       this.$$rewrite = function(t) {
           if (er(n) == er(t)) return t
       }
   }
   function hf(n, t) {
       this.$$html5 = !0,
       sf.apply(this, arguments);
       var i = of(n);
       this.$$rewrite = function(r) {
           var u;
           return n == er(r) ? r: (u = at(i, r)) ? n + t + u: i === r + "/" ? i: void 0
       },
       this.$$compose = function() {
           var i = vu(this.$$search),
           r = this.$$hash ? "#" + vr(this.$$hash) : "";
           this.$$url = ef(this.$$path) + (i ? "?" + i: "") + r,
           this.$$absUrl = n + t + this.$$url
       }
   }
   function dr(n) {
       return function() {
           return this[n]
       }
   }
   function fo(n, t) {
       return function(i) {
           return l(i) ? this[n] : (this[n] = t(i), this.$$compose(), this)
       }
   }
   function wc() {
       var t = "",
       i = !1;
       this.hashPrefix = function(n) {
           return f(n) ? (t = n, this) : t
       },
       this.html5Mode = function(n) {
           return f(n) ? (i = n, this) : i
       },
       this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement",
       function(r, f, e, o) {
           function p(n) {
               r.$broadcast("$locationChangeSuccess", s.absUrl(), n)
           }
           var s, c, w = f.baseHref(),
           l = f.url(),
           h,
           y;
           i ? (h = pc(l) + (w || "/"), c = e.history ? uo: hf) : (h = er(l), c = sf),
           s = new c(h, "#" + t),
           s.$$parse(s.$$rewrite(l));
           o.on("click",
           function(i) {
               var l, e, y, b, k, w, p, d;
               if (!i.ctrlKey && !i.metaKey && i.which != 2) {
                   for (l = u(i.target); v(l[0].nodeName) !== "a";) if (l[0] === o[0] || !(l = l.parent())[0]) return;
                   if (e = l.prop("href"), a(e) && e.toString() === "[object SVGAnimatedString]" && (e = wt(e.animVal).href), c === hf && (y = l.attr("href") || l.attr("xlink:href"), y.indexOf("://") < 0)) if (b = "#" + t, y[0] == "/") e = h + b + y;
                   else if (y[0] == "#") e = h + b + (s.path() || "/") + y;
                   else {
                       for (k = s.path().split("/"), w = y.split("/"), p = 0; p < w.length; p++) if (w[p] == ".") continue;
                       else w[p] == ".." ? k.pop() : w[p].length && k.push(w[p]);
                       e = h + b + k.join("/")
                   }
                   d = s.$$rewrite(e),
                   e && !l.attr("target") && d && !i.isDefaultPrevented() && (i.preventDefault(), d != f.url() && (s.$$parse(d), r.$apply(), n.angular["ff-684208-preventDefault"] = !0))
               }
           });
           s.absUrl() != l && f.url(s.absUrl(), !0);
           f.onUrlChange(function(n) {
               s.absUrl() != n && (r.$evalAsync(function() {
                   var t = s.absUrl();
                   s.$$parse(n),
                   r.$broadcast("$locationChangeStart", n, t).defaultPrevented ? (s.$$parse(t), f.url(t)) : p(t)
               }), r.$$phase || r.$digest())
           });
           return y = 0,
           r.$watch(function() {
               var n = f.url(),
               t = s.$$replace;
               return y && n == s.absUrl() || (y++, r.$evalAsync(function() {
                   r.$broadcast("$locationChangeStart", s.absUrl(), n).defaultPrevented ? s.$$parse(n) : (f.url(s.absUrl(), t), p(n))
               })),
               s.$$replace = !1,
               y
           }),
           s
       }]
   }
   function bc() {
       var n = !0,
       t = this;
       this.debugEnabled = function(t) {
           return f(t) ? (n = t, this) : n
       },
       this.$get = ["$window",
       function(i) {
           function f(n) {
               return n instanceof Error && (n.stack ? n = n.message && n.stack.indexOf(n.message) === -1 ? "Error: " + n.message + "\n" + n.stack: n.stack: n.sourceURL && (n = n.message + "\n" + n.sourceURL + ":" + n.line)),
               n
           }
           function u(n) {
               var t = i.console || {},
               u = t[n] || t.log || o,
               e = !1;
               try {
                   e = !!u.apply
               } catch(s) {}
               return e ?
               function() {
                   var n = [];
                   return r(arguments,
                   function(t) {
                       n.push(f(t))
                   }),
                   u.apply(t, n)
               }: function(n, t) {
                   u(n, t == null ? "": t)
               }
           }
           return {
               log: u("log"),
               info: u("info"),
               warn: u("warn"),
               error: u("error"),
               debug: function() {
                   var i = u("debug");
                   return function() {
                       n && i.apply(t, arguments)
                   }
               } ()
           }
       }]
   }
   function tt(n, t) {
       if (n === "__defineGetter__" || n === "__defineSetter__" || n === "__lookupGetter__" || n === "__lookupSetter__" || n === "__proto__") throw ft("isecfld", "Attempting to access a disallowed field in Angular expressions! Expression: {0}", t);
       return n
   }
   function ci(n, t) {
       if (n) if (n.constructor === n) throw ft("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", t);
       else if (n.document && n.location && n.alert && n.setInterval) throw ft("isecwindow", "Referencing the Window in Angular expressions is disallowed! Expression: {0}", t);
       else if (n.children && (n.nodeName || n.prop && n.attr && n.find)) throw ft("isecdom", "Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}", t);
       else if (n === Object) throw ft("isecobj", "Referencing Object in Angular expressions is disallowed! Expression: {0}", t);
       return n
   }
   function gc(n, t) {
       if (n) if (n.constructor === n) throw ft("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", t);
       else if (n === kc || n === dc || eo && n === eo) throw ft("isecff", "Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}", t);
   }
   function gr(n, t, r, u, f) {
       var s, e, h, o;
       for (f = f || {},
       s = t.split("."), h = 0; s.length > 1; h++) e = tt(s.shift(), u),
       o = n[e],
       o || (o = {},
       n[e] = o),
       n = o,
       n.then && f.unwrapPromises && (pt(u), "$$v" in n ||
       function(n) {
           n.then(function(t) {
               n.$$v = t
           })
       } (n), n.$$v === i && (n.$$v = {}), n = n.$$v);
       return e = tt(s.shift(), u),
       ci(n, u),
       ci(n[e], u),
       n[e] = r,
       r
   }
   function oo(n, t, r, u, f, e, o) {
       return tt(n, e),
       tt(t, e),
       tt(r, e),
       tt(u, e),
       tt(f, e),
       o.unwrapPromises ?
       function(o, s) {
           var h = s && s.hasOwnProperty(n) ? s: o,
           c;
           return h == null ? h: (h = h[n], h && h.then && (pt(e), "$$v" in h || (c = h, c.$$v = i, c.then(function(n) {
               c.$$v = n
           })), h = h.$$v), !t) ? h: h == null ? i: (h = h[t], h && h.then && (pt(e), "$$v" in h || (c = h, c.$$v = i, c.then(function(n) {
               c.$$v = n
           })), h = h.$$v), !r) ? h: h == null ? i: (h = h[r], h && h.then && (pt(e), "$$v" in h || (c = h, c.$$v = i, c.then(function(n) {
               c.$$v = n
           })), h = h.$$v), !u) ? h: h == null ? i: (h = h[u], h && h.then && (pt(e), "$$v" in h || (c = h, c.$$v = i, c.then(function(n) {
               c.$$v = n
           })), h = h.$$v), !f) ? h: h == null ? i: (h = h[f], h && h.then && (pt(e), "$$v" in h || (c = h, c.$$v = i, c.then(function(n) {
               c.$$v = n
           })), h = h.$$v), h)
       }: function(e, o) {
           var s = o && o.hasOwnProperty(n) ? o: e;
           return s == null ? s: (s = s[n], !t) ? s: s == null ? i: (s = s[t], !r) ? s: s == null ? i: (s = s[r], !u) ? s: s == null ? i: (s = s[u], !f) ? s: s == null ? i: s[f]
       }
   }
   function tl(n, t) {
       return tt(n, t),
       function(t, r) {
           return t == null ? i: (r && r.hasOwnProperty(n) ? r: t)[n]
       }
   }
   function il(n, t, r) {
       return tt(n, r),
       tt(t, r),
       function(r, u) {
           return r == null ? i: (r = (u && u.hasOwnProperty(n) ? u: r)[n], r == null ? i: r[t])
       }
   }
   function so(n, t, u) {
       var f, o, e, s, h;
       return nu.hasOwnProperty(n) ? nu[n] : (f = n.split("."), o = f.length, t.unwrapPromises || o !== 1 ? t.unwrapPromises || o !== 2 ? t.csp ? e = o < 6 ? oo(f[0], f[1], f[2], f[3], f[4], u, t) : function(n, r) {
           var e = 0,
           s;
           do s = oo(f[e++], f[e++], f[e++], f[e++], f[e++], u, t)(n, r),
           r = i,
           n = s;
           while (e < o);
           return s
       }: (s = "var p;\n", r(f,
       function(n, i) {
           tt(n, u),
           s += "if(s == null) return undefined;\ns=" + (i ? "s": '((k&&k.hasOwnProperty("' + n + '"))?k:s)') + '["' + n + '"];\n' + (t.unwrapPromises ? 'if (s && s.then) {\n pw("' + u.replace(/(["\r\n])/g, "\\$1") + '");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n': "")
       }), s += "return s;", h = new Function("s", "k", "pw", s), h.toString = nt(s), e = t.unwrapPromises ?
       function(n, t) {
           return h(n, t, pt)
       }: h) : e = il(f[0], f[1], u) : e = tl(f[0], u), n !== "hasOwnProperty" && (nu[n] = e), e)
   }
   function rl() {
       var t = {},
       n = {
           csp: !1,
           unwrapPromises: !1,
           logPromiseWarnings: !0
       };
       this.unwrapPromises = function(t) {
           return f(t) ? (n.unwrapPromises = !!t, this) : n.unwrapPromises
       },
       this.logPromiseWarnings = function(t) {
           return f(t) ? (n.logPromiseWarnings = t, this) : n.logPromiseWarnings
       },
       this.$get = ["$filter", "$sniffer", "$log",
       function(i, r, u) {
           return n.csp = r.csp,
           pt = function(t) {
               n.logPromiseWarnings && !cf.hasOwnProperty(t) && (cf[t] = !0, u.warn("[$parse] Promise found in the expression `" + t + "`. Automatic unwrapping of promises in Angular expressions is deprecated."))
           },
           function(r) {
               var u, f, e;
               switch (typeof r) {
               case "string":
                   return t.hasOwnProperty(r) ? t[r] : (f = new lf(n), e = new li(f, i, n), u = e.parse(r), r !== "hasOwnProperty" && (t[r] = u), u);
               case "function":
                   return r;
               default:
                   return o
               }
           }
       }]
   }
   function ul() {
       this.$get = ["$rootScope", "$exceptionHandler",
       function(n, t) {
           return fl(function(t) {
               n.$evalAsync(t)
           },
           t)
       }]
   }
   function fl(n, t) {
       function f(n) {
           return n
       }
       function c(n) {
           return o(n)
       }
       function v(n) {
           var i = u(),
           f = 0,
           t = s(n) ? [] : {};
           return r(n,
           function(n, r) {
               f++,
               e(n).then(function(n) {
                   t.hasOwnProperty(r) || (t[r] = n, --f || i.resolve(t))
               },
               function(n) {
                   t.hasOwnProperty(r) || i.reject(n)
               })
           }),
           f === 0 && i.resolve(t),
           i.promise
       }
       var u = function() {
           var r = [],
           o,
           s;
           return s = {
               resolve: function(t) {
                   if (r) {
                       var u = r;
                       r = i,
                       o = e(t),
                       u.length && n(function() {
                           for (var n, t = 0,
                           i = u.length; t < i; t++) n = u[t],
                           o.then(n[0], n[1], n[2])
                       })
                   }
               },
               reject: function(n) {
                   s.resolve(l(n))
               },
               notify: function(t) {
                   if (r) {
                       var i = r;
                       r.length && n(function() {
                           for (var r, n = 0,
                           u = i.length; n < u; n++) r = i[n],
                           r[2](t)
                       })
                   }
               },
               promise: {
                   then: function(n, i, e) {
                       var s = u(),
                       l = function(i) {
                           try {
                               s.resolve((h(n) ? n: f)(i))
                           } catch(r) {
                               s.reject(r),
                               t(r)
                           }
                       },
                       a = function(n) {
                           try {
                               s.resolve((h(i) ? i: c)(n))
                           } catch(r) {
                               s.reject(r),
                               t(r)
                           }
                       },
                       v = function(n) {
                           try {
                               s.notify((h(e) ? e: f)(n))
                           } catch(i) {
                               t(i)
                           }
                       };
                       return r ? r.push([l, a, v]) : o.then(l, a, v),
                       s.promise
                   },
                   "catch": function(n) {
                       return this.then(null, n)
                   },
                   "finally": function(n) {
                       function t(n, t) {
                           var i = u();
                           return t ? i.resolve(n) : i.reject(n),
                           i.promise
                       }
                       function i(i, r) {
                           var u = null;
                           try {
                               u = (n || f)()
                           } catch(e) {
                               return t(e, !1)
                           }
                           return u && h(u.then) ? u.then(function() {
                               return t(i, r)
                           },
                           function(n) {
                               return t(n, !1)
                           }) : t(i, r)
                       }
                       return this.then(function(n) {
                           return i(n, !0)
                       },
                       function(n) {
                           return i(n, !1)
                       })
                   }
               }
           }
       },
       e = function(t) {
           return t && h(t.then) ? t: {
               then: function(i) {
                   var r = u();
                   return n(function() {
                       r.resolve(i(t))
                   }),
                   r.promise
               }
           }
       },
       o = function(n) {
           var t = u();
           return t.reject(n),
           t.promise
       },
       l = function(i) {
           return {
               then: function(r, f) {
                   var e = u();
                   return n(function() {
                       try {
                           e.resolve((h(f) ? f: c)(i))
                       } catch(n) {
                           e.reject(n),
                           t(n)
                       }
                   }),
                   e.promise
               }
           }
       },
       a = function(i, r, s, l) {
           var v = u(),
           a,
           w = function(n) {
               try {
                   return (h(r) ? r: f)(n)
               } catch(i) {
                   return t(i),
                   o(i)
               }
           },
           y = function(n) {
               try {
                   return (h(s) ? s: c)(n)
               } catch(i) {
                   return t(i),
                   o(i)
               }
           },
           p = function(n) {
               try {
                   return (h(l) ? l: f)(n)
               } catch(i) {
                   t(i)
               }
           };
           return n(function() {
               e(i).then(function(n) {
                   a || (a = !0, v.resolve(e(n).then(w, y, p)))
               },
               function(n) {
                   a || (a = !0, v.resolve(y(n)))
               },
               function(n) {
                   a || v.notify(p(n))
               })
           }),
           v.promise
       };
       return {
           defer: u,
           reject: o,
           when: a,
           all: v
       }
   }
   function el() {
       this.$get = ["$window", "$timeout",
       function(n, t) {
           var i = n.requestAnimationFrame || n.webkitRequestAnimationFrame || n.mozRequestAnimationFrame,
           f = n.cancelAnimationFrame || n.webkitCancelAnimationFrame || n.mozCancelAnimationFrame || n.webkitCancelRequestAnimationFrame,
           r = !!i,
           u = r ?
           function(n) {
               var t = i(n);
               return function() {
                   f(t)
               }
           }: function(n) {
               var i = t(n, 16.66, !1);
               return function() {
                   t.cancel(i)
               }
           };
           return u.supported = r,
           u
       }]
   }
   function ol() {
       var t = 10,
       i = y("$rootScope"),
       n = null;
       this.digestTtl = function(n) {
           return arguments.length && (t = n),
           t
       },
       this.$get = ["$injector", "$exceptionHandler", "$parse", "$browser",
       function(u, f, e, s) {
           function v() {
               this.$id = cr(),
               this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null,
               this["this"] = this.$root = this,
               this.$$destroyed = !1,
               this.$$asyncQueue = [],
               this.$$postDigestQueue = [],
               this.$$listeners = {},
               this.$$listenerCount = {},
               this.$$isolateBindings = {}
           }
           function y(n) {
               if (c.$$phase) throw i("inprog", "{0} already in progress", c.$$phase);
               c.$$phase = n
           }
           function l() {
               c.$$phase = null
           }
           function p(n, t) {
               var i = e(n);
               return gi(i, t),
               i
           }
           function w(n, t, i) {
               do n.$$listenerCount[i] -= t,
               n.$$listenerCount[i] === 0 && delete n.$$listenerCount[i];
               while (n = n.$parent)
           }
           function b() {}
           v.prototype = {
               constructor: v,
               $new: function(n) {
                   var t;
                   return n ? (t = new v, t.$root = this.$root, t.$$asyncQueue = this.$$asyncQueue, t.$$postDigestQueue = this.$$postDigestQueue) : (this.$$childScopeClass || (this.$$childScopeClass = function() {
                       this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null,
                       this.$$listeners = {},
                       this.$$listenerCount = {},
                       this.$id = cr(),
                       this.$$childScopeClass = null
                   },
                   this.$$childScopeClass.prototype = this), t = new this.$$childScopeClass),
                   t["this"] = t,
                   t.$parent = this,
                   t.$$prevSibling = this.$$childTail,
                   this.$$childHead ? (this.$$childTail.$$nextSibling = t, this.$$childTail = t) : this.$$childHead = this.$$childTail = t,
                   t
               },
               $watch: function(t, i, r) {
                   var e = this,
                   s = p(t, "watch"),
                   f = e.$$watchers,
                   u = {
                       fn: i,
                       last: b,
                       get: s,
                       exp: t,
                       eq: !!r
                   },
                   c,
                   l;
                   return n = null,
                   h(i) || (c = p(i || o, "listener"), u.fn = function(n, t, i) {
                       c(i)
                   }),
                   typeof t == "string" && s.constant && (l = u.fn, u.fn = function(n, t, i) {
                       l.call(this, n, t, i),
                       ki(f, u)
                   }),
                   f || (f = e.$$watchers = []),
                   f.unshift(u),
                   function() {
                       ki(f, u),
                       n = null
                   }
               },
               $watchCollection: function(n, t) {
                   function p() {
                       var e, n, t, o;
                       if (i = y(s), a(i)) if (hr(i)) for (r !== h && (r = h, f = r.length = 0, u++), e = i.length, f !== e && (u++, r.length = f = e), t = 0; t < e; t++) o = r[t] !== r[t] && i[t] !== i[t],
                       o || r[t] === i[t] || (u++, r[t] = i[t]);
                       else {
                           r !== c && (r = c = {},
                           f = 0, u++),
                           e = 0;
                           for (n in i) i.hasOwnProperty(n) && (e++, r.hasOwnProperty(n) ? r[n] !== i[n] && (u++, r[n] = i[n]) : (f++, r[n] = i[n], u++));
                           if (f > e) {
                               u++;
                               for (n in r) r.hasOwnProperty(n) && !i.hasOwnProperty(n) && (f--, delete r[n])
                           }
                       } else r !== i && (r = i, u++);
                       return u
                   }
                   function w() {
                       var n, r;
                       if (l ? (l = !1, t(i, i, s)) : t(i, o, s), v) if (a(i)) if (hr(i)) for (o = new Array(i.length), n = 0; n < i.length; n++) o[n] = i[n];
                       else {
                           o = {};
                           for (r in i) ou.call(i, r) && (o[r] = i[r])
                       } else o = i
                   }
                   var s = this,
                   i, r, o, v = t.length > 1,
                   u = 0,
                   y = e(n),
                   h = [],
                   c = {},
                   l = !0,
                   f = 0;
                   return this.$watch(p, w)
               },
               $digest: function() {
                   var r, e, o, p, c = this.$$asyncQueue,
                   rt = this.$$postDigestQueue,
                   w, s, k = t,
                   d, u, g = this,
                   a = [],
                   v,
                   nt,
                   tt;
                   y("$digest"),
                   n = null;
                   do {
                       for (s = !1, u = g; c.length;) {
                           try {
                               tt = c.shift(),
                               tt.scope.$eval(tt.expression)
                           } catch(it) {
                               l(),
                               f(it)
                           }
                           n = null
                       }
                       n: do {
                           if (p = u.$$watchers) for (w = p.length; w--;) try {
                               if (r = p[w], r) if ((e = r.get(u)) === (o = r.last) || (r.eq ? ni(e, o) : typeof e == "number" && typeof o == "number" && isNaN(e) && isNaN(o))) {
                                   if (r === n) {
                                       s = !1;
                                       break n
                                   }
                               } else s = !0,
                               n = r,
                               r.last = r.eq ? oi(e, null) : e,
                               r.fn(e, o === b ? e: o, u),
                               k < 5 && (v = 4 - k, a[v] || (a[v] = []), nt = h(r.exp) ? "fn: " + (r.exp.name || r.exp.toString()) : r.exp, nt += "; newVal: " + ht(e) + "; oldVal: " + ht(o), a[v].push(nt))
                           } catch(it) {
                               l(),
                               f(it)
                           }
                           if (! (d = u.$$childHead || u !== g && u.$$nextSibling)) while (u !== g && !(d = u.$$nextSibling)) u = u.$parent
                       } while ( u = d );
                       if ((s || c.length) && !k--) {
                           l();
                           throw i("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, ht(a));
                       }
                   } while ( s || c . length );
                   for (l(); rt.length;) try {
                       rt.shift()()
                   } catch(it) {
                       f(it)
                   }
               },
               $destroy: function() {
                   if (!this.$$destroyed) {
                       var n = this.$parent; (this.$broadcast("$destroy"), this.$$destroyed = !0, this !== c) && (r(this.$$listenerCount, au(null, w, this)), n.$$childHead == this && (n.$$childHead = this.$$nextSibling), n.$$childTail == this && (n.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = this.$root = null, this.$$listeners = {},
                       this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = [], this.$destroy = this.$digest = this.$apply = o, this.$on = this.$watch = function() {
                           return o
                       })
                   }
               },
               $eval: function(n, t) {
                   return e(n)(this, t)
               },
               $evalAsync: function(n) {
                   c.$$phase || c.$$asyncQueue.length || s.defer(function() {
                       c.$$asyncQueue.length && c.$digest()
                   }),
                   this.$$asyncQueue.push({
                       scope: this,
                       expression: n
                   })
               },
               $$postDigest: function(n) {
                   this.$$postDigestQueue.push(n)
               },
               $apply: function(n) {
                   try {
                       return y("$apply"),
                       this.$eval(n)
                   } catch(t) {
                       f(t)
                   } finally {
                       l();
                       try {
                           c.$digest()
                       } catch(t) {
                           f(t);
                           throw t;
                       }
                   }
               },
               $on: function(n, t) {
                   var r = this.$$listeners[n],
                   i,
                   u;
                   r || (this.$$listeners[n] = r = []),
                   r.push(t),
                   i = this;
                   do i.$$listenerCount[n] || (i.$$listenerCount[n] = 0),
                   i.$$listenerCount[n]++;
                   while (i = i.$parent);
                   return u = this,
                   function() {
                       r[bi(r, t)] = null,
                       w(u, 1, n)
                   }
               },
               $emit: function(n) {
                   var r, i = this,
                   o = !1,
                   u = {
                       name: n,
                       targetScope: i,
                       stopPropagation: function() {
                           o = !0
                       },
                       preventDefault: function() {
                           u.defaultPrevented = !0
                       },
                       defaultPrevented: !1
                   },
                   s = cu([u], arguments, 1),
                   t,
                   e;
                   do {
                       for (r = i.$$listeners[n] || [], u.currentScope = i, t = 0, e = r.length; t < e; t++) {
                           if (!r[t]) {
                               r.splice(t, 1),
                               t--,
                               e--;
                               continue
                           }
                           try {
                               r[t].apply(null, s)
                           } catch(h) {
                               f(h)
                           }
                       }
                       if (o) return u;
                       i = i.$parent
                   } while ( i );
                   return u
               },
               $broadcast: function(n) {
                   for (var r = this,
                   t = r,
                   o = r,
                   e = {
                       name: n,
                       targetScope: r,
                       preventDefault: function() {
                           e.defaultPrevented = !0
                       },
                       defaultPrevented: !1
                   },
                   h = cu([e], arguments, 1), u, i, s; t = o;) {
                       for (e.currentScope = t, u = t.$$listeners[n] || [], i = 0, s = u.length; i < s; i++) {
                           if (!u[i]) {
                               u.splice(i, 1),
                               i--,
                               s--;
                               continue
                           }
                           try {
                               u[i].apply(null, h)
                           } catch(c) {
                               f(c)
                           }
                       }
                       if (! (o = t.$$listenerCount[n] && t.$$childHead || t !== r && t.$$nextSibling)) while (t !== r && !(o = t.$$nextSibling)) t = t.$parent
                   }
                   return e
               }
           };
           var c = new v;
           return c
       }]
   }
   function sl() {
       var n = /^\s*(https?|ftp|mailto|tel|file):/,
       t = /^\s*(https?|ftp|file):|data:image\//;
       this.aHrefSanitizationWhitelist = function(t) {
           return f(t) ? (n = t, this) : n
       },
       this.imgSrcSanitizationWhitelist = function(n) {
           return f(n) ? (t = n, this) : t
       },
       this.$get = function() {
           return function(i, r) {
               var f = r ? t: n,
               u;
               return (!p || p >= 8) && (u = wt(i).href, u !== "" && !u.match(f)) ? "unsafe:" + u: i
           }
       }
   }
   function hl(n) {
       return n.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
   }
   function cl(n) {
       if (n === "self") return n;
       if (e(n)) {
           if (n.indexOf("***") > -1) throw vt("iwcard", "Illegal sequence *** in string matcher.  String: {0}", n);
           return n = hl(n).replace("\\*\\*", ".*").replace("\\*", "[^:/.?&;]*"),
           new RegExp("^" + n + "$")
       }
       if (lr(n)) return new RegExp("^" + n.source + "$");
       throw vt("imatcher", 'Matchers may only be "self", string patterns or RegExp objects');
   }
   function ho(n) {
       var t = [];
       return f(n) && r(n,
       function(n) {
           t.push(cl(n))
       }),
       t
   }
   function ll() {
       this.SCE_CONTEXTS = it;
       var n = ["self"],
       t = [];
       this.resourceUrlWhitelist = function(t) {
           return arguments.length && (n = ho(t)),
           n
       },
       this.resourceUrlBlacklist = function(n) {
           return arguments.length && (t = ho(n)),
           t
       },
       this.$get = ["$injector",
       function(r) {
           function s(n, t) {
               return n === "self" ? co(t) : !!n.exec(t.href)
           }
           function h(i) {
               for (var e = wt(i.toString()), f = !1, r = 0, u = n.length; r < u; r++) if (s(n[r], e)) {
                   f = !0;
                   break
               }
               if (f) for (r = 0, u = t.length; r < u; r++) if (s(t[r], e)) {
                   f = !1;
                   break
               }
               return f
           }
           function f(n) {
               var t = function(n) {
                   this.$$unwrapTrustedValue = function() {
                       return n
                   }
               };
               return n && (t.prototype = new n),
               t.prototype.valueOf = function() {
                   return this.$$unwrapTrustedValue()
               },
               t.prototype.toString = function() {
                   return this.$$unwrapTrustedValue().toString()
               },
               t
           }
           function c(n, t) {
               var r = u.hasOwnProperty(n) ? u[n] : null;
               if (!r) throw vt("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", n, t);
               if (t === null || t === i || t === "") return t;
               if (typeof t != "string") throw vt("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", n);
               return new r(t)
           }
           function l(n) {
               return n instanceof e ? n.$$unwrapTrustedValue() : n
           }
           function a(n, t) {
               if (t === null || t === i || t === "") return t;
               var r = u.hasOwnProperty(n) ? u[n] : null;
               if (r && t instanceof r) return t.$$unwrapTrustedValue();
               if (n === it.RESOURCE_URL) {
                   if (h(t)) return t;
                   throw vt("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}", t.toString());
               } else if (n === it.HTML) return o(t);
               throw vt("unsafe", "Attempting to use an unsafe value in a safe context.");
           }
           var o = function() {
               throw vt("unsafe", "Attempting to use an unsafe value in a safe context.");
           },
           e,
           u;
           return r.has("$sanitize") && (o = r.get("$sanitize")),
           e = f(),
           u = {},
           u[it.HTML] = f(e),
           u[it.CSS] = f(e),
           u[it.URL] = f(e),
           u[it.JS] = f(e),
           u[it.RESOURCE_URL] = f(u[it.URL]),
           {
               trustAs: c,
               getTrusted: a,
               valueOf: l
           }
       }]
   }
   function al() {
       var n = !0;
       this.enabled = function(t) {
           return arguments.length && (n = !!t),
           n
       },
       this.$get = ["$parse", "$sniffer", "$sceDelegate",
       function(t, i, u) {
           var f;
           if (n && i.msie && i.msieDocumentMode < 8) throw vt("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 9 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.");
           f = st(it),
           f.isEnabled = function() {
               return n
           },
           f.trustAs = u.trustAs,
           f.getTrusted = u.getTrusted,
           f.valueOf = u.valueOf,
           n || (f.trustAs = f.getTrusted = function(n, t) {
               return t
           },
           f.valueOf = fi),
           f.parseAs = function(n, i) {
               var r = t(i);
               return r.literal && r.constant ? r: function(t, i) {
                   return f.getTrusted(n, r(t, i))
               }
           };
           var e = f.parseAs,
           o = f.getTrusted,
           s = f.trustAs;
           return r(it,
           function(n, t) {
               var i = v(t);
               f[ir("parse_as_" + i)] = function(t) {
                   return e(n, t)
               },
               f[ir("get_trusted_" + i)] = function(t) {
                   return o(n, t)
               },
               f[ir("trust_as_" + i)] = function(t) {
                   return s(n, t)
               }
           }),
           f
       }]
   }
   function vl() {
       this.$get = ["$window", "$document",
       function(n, t) {
           var s = {},
           h = k((/android (\d+)/.exec(v((n.navigator || {}).userAgent)) || [])[1]),
           w = /Boxee/i.test((n.navigator || {}).userAgent),
           u = t[0] || {},
           c = u.documentMode,
           i,
           r = u.body && u.body.style,
           f = !1,
           o = !1,
           a,
           y;
           if (r) {
               for (y in r) if (a = /^(Moz|webkit|O|ms)(?=[A-Z])/.exec(y)) {
                   i = a[0],
                   i = i.substr(0, 1).toUpperCase() + i.substr(1);
                   break
               }
               i || (i = "WebkitOpacity" in r && "webkit"),
               f = !!("transition" in r || i + "Transition" in r),
               o = !!("animation" in r || i + "Animation" in r),
               !h || f && o || (f = e(u.body.style.webkitTransition), o = e(u.body.style.webkitAnimation))
           }
           return {
               history: !!(n.history && n.history.pushState && !(h < 4) && !w),
               hashchange: "onhashchange" in n && (!c || c > 7),
               hasEvent: function(n) {
                   if (n == "input" && p == 9) return ! 1;
                   if (l(s[n])) {
                       var t = u.createElement("div");
                       s[n] = "on" + n in t
                   }
                   return s[n]
               },
               csp: gf(),
               vendorPrefix: i,
               transitions: f,
               animations: o,
               android: h,
               msie: p,
               msieDocumentMode: c
           }
       }]
   }
   function yl() {
       this.$get = ["$rootScope", "$browser", "$q", "$exceptionHandler",
       function(n, t, i, r) {
           function e(e, o, s) {
               var h = i.defer(),
               c = h.promise,
               a = f(s) && !s,
               l;
               return l = t.defer(function() {
                   try {
                       h.resolve(e())
                   } catch(t) {
                       h.reject(t),
                       r(t)
                   } finally {
                       delete u[c.$$timeoutId]
                   }
                   a || n.$apply()
               },
               o),
               c.$$timeoutId = l,
               u[l] = h,
               c
           }
           var u = {};
           return e.cancel = function(n) {
               return n && n.$$timeoutId in u ? (u[n.$$timeoutId].reject("canceled"), delete u[n.$$timeoutId], t.defer.cancel(n.$$timeoutId)) : !1
           },
           e
       }]
   }
   function wt(n) {
       var t = n;
       return p && (b.setAttribute("href", t), t = b.href),
       b.setAttribute("href", t),
       {
           href: b.href,
           protocol: b.protocol ? b.protocol.replace(/:$/, "") : "",
           host: b.host,
           search: b.search ? b.search.replace(/^\?/, "") : "",
           hash: b.hash ? b.hash.replace(/^#/, "") : "",
           hostname: b.hostname,
           port: b.port,
           pathname: b.pathname.charAt(0) === "/" ? b.pathname: "/" + b.pathname
       }
   }
   function co(n) {
       var t = e(n) ? wt(n) : n;
       return t.protocol === af.protocol && t.host === af.host
   }
   function pl() {
       this.$get = nt(n)
   }
   function lo(n) {
       function t(u, f) {
           if (a(u)) {
               var e = {};
               return r(u,
               function(n, i) {
                   e[i] = t(i, n)
               }),
               e
           }
           return n.factory(u + i, f)
       }
       var i = "Filter";
       this.register = t,
       this.$get = ["$injector",
       function(n) {
           return function(t) {
               return n.get(t + i)
           }
       }],
       t("currency", ao),
       t("date", po),
       t("filter", wl),
       t("json", ta),
       t("limitTo", ia),
       t("lowercase", wo),
       t("number", vo),
       t("orderBy", ko),
       t("uppercase", bo)
   }
   function wl() {
       return function(n, t, i) {
           var e, r, u, c, o, f, h;
           if (!s(n)) return n;
           e = typeof i,
           r = [],
           r.check = function(n) {
               for (var t = 0; t < r.length; t++) if (!r[t](n)) return ! 1;
               return ! 0
           },
           e !== "function" && (i = e === "boolean" && i ?
           function(n, t) {
               return yi.equals(n, t)
           }: function(n, t) {
               if (n && t && typeof n == "object" && typeof t == "object") {
                   for (var r in n) if (r.charAt(0) !== "$" && ou.call(n, r) && i(n[r], t[r])) return ! 0;
                   return ! 1
               }
               return t = ("" + t).toLowerCase(),
               ("" + n).toLowerCase().indexOf(t) > -1
           }),
           u = function(n, t) {
               var f, r;
               if (typeof t == "string" && t.charAt(0) === "!") return ! u(n, t.substr(1));
               switch (typeof n) {
               case "boolean":
               case "number":
               case "string":
                   return i(n, t);
               case "object":
                   switch (typeof t) {
                   case "object":
                       return i(n, t);
                   default:
                       for (f in n) if (f.charAt(0) !== "$" && u(n[f], t)) return ! 0
                   }
                   return ! 1;
               case "array":
                   for (r = 0; r < n.length; r++) if (u(n[r], t)) return ! 0;
                   return ! 1;
               default:
                   return ! 1
               }
           };
           switch (typeof t) {
           case "boolean":
           case "number":
           case "string":
               t = {
                   $: t
               };
           case "object":
               for (c in t)(function(n) {
                   typeof t[n] != "undefined" && r.push(function(i) {
                       return u(n == "$" ? i: i && i[n], t[n])
                   })
               })(c);
               break;
           case "function":
               r.push(t);
               break;
           default:
               return n
           }
           for (o = [], f = 0; f < n.length; f++) h = n[f],
           r.check(h) && o.push(h);
           return o
       }
   }
   function ao(n) {
       var t = n.NUMBER_FORMATS;
       return function(n, i) {
           return l(i) && (i = t.CURRENCY_SYM),
           yo(n, t.PATTERNS[1], t.GROUP_SEP, t.DECIMAL_SEP, 2).replace(/\u00A4/g, i)
       }
   }
   function vo(n) {
       var t = n.NUMBER_FORMATS;
       return function(n, i) {
           return yo(n, t.PATTERNS[0], t.GROUP_SEP, t.DECIMAL_SEP, i)
       }
   }
   function yo(n, t, i, r, u) {
       var p, v, k, o, s;
       if (n == null || !isFinite(n) || a(n)) return "";
       p = n < 0,
       n = Math.abs(n);
       var h = n + "",
       e = "",
       c = [],
       b = !1;
       if (h.indexOf("e") !== -1 && (v = h.match(/([\d\.]+)e(-?)(\d+)/), v && v[2] == "-" && v[3] > u + 1 ? (h = "0", n = 0) : (e = h, b = !0)), b) u > 0 && n > -1 && n < 1 && (e = n.toFixed(u));
       else {
           k = (h.split(vf)[1] || "").length,
           l(u) && (u = Math.min(Math.max(t.minFrac, k), t.maxFrac)),
           n = +(Math.round( + (n.toString() + "e" + u)).toString() + "e" + -u),
           o = ("" + n).split(vf),
           s = o[0],
           o = o[1] || "";
           var f, y = 0,
           w = t.lgSize,
           d = t.gSize;
           if (s.length >= w + d) for (y = s.length - w, f = 0; f < y; f++)(y - f) % d == 0 && f !== 0 && (e += i),
           e += s.charAt(f);
           for (f = y; f < s.length; f++)(s.length - f) % w == 0 && f !== 0 && (e += i),
           e += s.charAt(f);
           while (o.length < u) o += "0";
           u && u !== "0" && (e += r + o.substr(0, u))
       }
       return c.push(p ? t.negPre: t.posPre),
       c.push(e),
       c.push(p ? t.negSuf: t.posSuf),
       c.join("")
   }
   function yf(n, t, i) {
       var r = "";
       for (n < 0 && (r = "-", n = -n), n = "" + n; n.length < t;) n = "0" + n;
       return i && (n = n.substr(n.length - t)),
       r + n
   }
   function d(n, t, i, r) {
       return i = i || 0,
       function(u) {
           var f = u["get" + n]();
           return (i > 0 || f > -i) && (f += i),
           f === 0 && i == -12 && (f = 12),
           yf(f, t, r)
       }
   }
   function tu(n, t) {
       return function(i, r) {
           var u = i["get" + n](),
           f = dt(t ? "SHORT" + n: n);
           return r[f][u]
       }
   }
   function bl(n) {
       var t = -1 * n.getTimezoneOffset(),
       i = t >= 0 ? "+": "";
       return i + (yf(Math[t > 0 ? "floor": "ceil"](t / 60), 2) + yf(Math.abs(t % 60), 2))
   }
   function kl(n, t) {
       return n.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
   }
   function po(n) {
       function i(n) {
           var i;
           if (i = n.match(t)) {
               var r = new Date(0),
               u = 0,
               f = 0,
               e = i[8] ? r.setUTCFullYear: r.setFullYear,
               o = i[8] ? r.setUTCHours: r.setHours;
               i[9] && (u = k(i[9] + i[10]), f = k(i[9] + i[11])),
               e.call(r, k(i[1]), k(i[2]) - 1, k(i[3]));
               var s = k(i[4] || 0) - u,
               h = k(i[5] || 0) - f,
               c = k(i[6] || 0),
               l = Math.round(parseFloat("0." + (i[7] || 0)) * 1e3);
               return o.call(r, s, h, c, l),
               r
           }
           return n
       }
       var t = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
       return function(t, u) {
           var h = "",
           f = [],
           o,
           s;
           if (u = u || "mediumDate", u = n.DATETIME_FORMATS[u] || u, e(t) && (t = na.test(t) ? k(t) : i(t)), hu(t) && (t = new Date(t)), !wi(t)) return t;
           while (u) s = gl.exec(u),
           s ? (f = cu(f, s, 1), u = f.pop()) : (f.push(u), u = null);
           return r(f,
           function(i) {
               o = dl[i],
               h += o ? o(t, n.DATETIME_FORMATS) : i.replace(/(^'|'$)/g, "").replace(//g, "'")
           }),
           h
       }
   }
   function ta() {
       return function(n) {
           return ht(n, !0)
       }
   }
   function ia() {
       return function(n, t) {
           if (!s(n) && !e(n)) return n;
           if (t = Math.abs(Number(t)) === Infinity ? Number(t) : k(t), e(n)) return t ? t >= 0 ? n.slice(0, t) : n.slice(t, n.length) : "";
           var u = [],
           i,
           r;
           for (t > n.length ? t = n.length: t < -n.length && (t = -n.length), t > 0 ? (i = 0, r = t) : (i = n.length + t, r = n.length); i < r; i++) u.push(n[i]);
           return u
       }
   }
   function ko(n) {
       return function(t, i, r) {
           function c(n, t) {
               for (var u, r = 0; r < i.length; r++) if (u = i[r](n, t), u !== 0) return u;
               return 0
           }
           function o(n, t) {
               return di(t) ?
               function(t, i) {
                   return n(i, t)
               }: n
           }
           function h(n, t) {
               var i = typeof n,
               r = typeof t;
               return i == r ? (i == "string" && (n = n.toLowerCase(), t = t.toLowerCase()), n === t) ? 0 : n < t ? -1 : 1 : i < r ? -1 : 1
           }
           var f, u;
           if (!s(t) || !i) return t;
           for (i = s(i) ? i: [i], i = ws(i,
           function(t) {
               var r = !1,
               i = t || fi,
               u;
               return e(t) && ((t.charAt(0) == "+" || t.charAt(0) == "-") && (r = t.charAt(0) == "-", t = t.substring(1)), i = n(t), i.constant) ? (u = i(), o(function(n, t) {
                   return h(n[u], t[u])
               },
               r)) : o(function(n, t) {
                   return h(i(n), i(t))
               },
               r)
           }), f = [], u = 0; u < t.length; u++) f.push(t[u]);
           return f.sort(o(c, r))
       }
   }
   function bt(n) {
       return h(n) && (n = {
           link: n
       }),
       n.restrict = n.restrict || "AC",
       nt(n)
   }
   function ns(n, t, i, u) {
       function e(t, i) {
           i = i ? "-" + yr(i, "-") : "",
           u.removeClass(n, (t ? fu: uu) + i),
           u.addClass(n, (t ? uu: fu) + i)
       }
       var f = this,
       o = n.parent().controller("form") || sr,
       s = 0,
       h = f.$error = {},
       c = [];
       f.$name = t.name || t.ngForm,
       f.$dirty = !1,
       f.$pristine = !0,
       f.$valid = !0,
       f.$invalid = !1,
       o.$addControl(f),
       n.addClass(ai),
       e(!0),
       f.$addControl = function(n) {
           ii(n.$name, "input"),
           c.push(n),
           n.$name && (f[n.$name] = n)
       },
       f.$removeControl = function(n) {
           n.$name && f[n.$name] === n && delete f[n.$name],
           r(h,
           function(t, i) {
               f.$setValidity(i, !0, n)
           }),
           ki(c, n)
       },
       f.$setValidity = function(n, t, i) {
           var r = h[n];
           if (t) r && (ki(r, i), r.length || (s--, s || (e(t), f.$valid = !0, f.$invalid = !1), h[n] = !1, e(!0, n), o.$setValidity(n, !0, f)));
           else {
               if (s || e(t), r) {
                   if (bs(r, i)) return
               } else h[n] = r = [],
               s++,
               e(!1, n),
               o.$setValidity(n, !1, f);
               r.push(i),
               f.$valid = !1,
               f.$invalid = !0
           }
       },
       f.$setDirty = function() {
           u.removeClass(n, ai),
           u.addClass(n, eu),
           f.$dirty = !0,
           f.$pristine = !1,
           o.$setDirty()
       },
       f.$setPristine = function() {
           u.removeClass(n, eu),
           u.addClass(n, ai),
           f.$dirty = !1,
           f.$pristine = !0,
           r(c,
           function(n) {
               n.$setPristine()
           })
       }
   }
   function kt(n, t, r, u) {
       return n.$setValidity(t, r),
       r ? u: i
   }
   function rs(n, t) {
       var i, r;
       if (t) for (i = 0; i < t.length; ++i) if (r = t[i], n[r]) return ! 0;
       return ! 1
   }
   function sa(n, t, i, r, u) {
       if (a(u)) {
           n.$$hasNativeValidators = !0;
           var f = function(f) {
               if (!n.$error[t] && !rs(u, r) && rs(u, i)) {
                   n.$setValidity(t, !1);
                   return
               }
               return f
           };
           n.$parsers.push(f)
       }
   }
   function ru(n, t, i, r, u, f) {
       var d = t.prop(ss),
       nt = t[0].placeholder,
       rt = {},
       s,
       o,
       l,
       a,
       e,
       h,
       c,
       v,
       tt,
       w,
       it,
       b;
       if (r.$$validityState = d, !u.android) {
           s = !1;
           t.on("compositionstart",
           function() {
               s = !0
           });
           t.on("compositionend",
           function() {
               s = !1,
               o()
           })
       }
       if (o = function(u) {
           var f, e;
           if (!s) {
               if (f = t.val(), p && (u || rt).type === "input" && t[0].placeholder !== nt) {
                   nt = t[0].placeholder;
                   return
               }
               di(i.ngTrim || "T") && (f = g(f)),
               e = d && r.$$hasNativeValidators,
               (r.$viewValue !== f || f === "" && e) && (n.$$phase ? r.$setViewValue(f) : n.$apply(function() {
                   r.$setViewValue(f)
               }))
           }
       },
       u.hasEvent("input")) t.on("input", o);
       else {
           a = function() {
               l || (l = f.defer(function() {
                   o(),
                   l = null
               }))
           };
           t.on("keydown",
           function(n) {
               var t = n.keyCode;
               t === 91 || 15 < t && t < 19 || 37 <= t && t <= 40 || a()
           });
           if (u.hasEvent("paste")) t.on("paste cut", a)
       }
       t.on("change", o);
       r.$render = function() {
           t.val(r.$isEmpty(r.$viewValue) ? "": r.$viewValue)
       },
       e = i.ngPattern,
       e && (v = function(n, t) {
           return kt(r, "pattern", r.$isEmpty(t) || n.test(t), t)
       },
       c = e.match(/^\/(.*)\/([gim]*)$/), c ? (e = new RegExp(c[1], c[2]), h = function(n) {
           return v(e, n)
       }) : h = function(i) {
           var r = n.$eval(e);
           if (!r || !r.test) throw y("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", e, r, et(t));
           return v(r, i)
       },
       r.$formatters.push(h), r.$parsers.push(h)),
       i.ngMinlength && (tt = k(i.ngMinlength), w = function(n) {
           return kt(r, "minlength", r.$isEmpty(n) || n.length >= tt, n)
       },
       r.$parsers.push(w), r.$formatters.push(w)),
       i.ngMaxlength && (it = k(i.ngMaxlength), b = function(n) {
           return kt(r, "maxlength", r.$isEmpty(n) || n.length <= it, n)
       },
       r.$parsers.push(b), r.$formatters.push(b))
   }
   function ha(n, t, r, u, f, e) {
       var o, s;
       ru(n, t, r, u, f, e),
       u.$parsers.push(function(n) {
           var t = u.$isEmpty(n);
           return t || oa.test(n) ? (u.$setValidity("number", !0), n === "" ? null: t ? n: parseFloat(n)) : (u.$setValidity("number", !1), i)
       }),
       sa(u, "number", us, null, u.$$validityState),
       u.$formatters.push(function(n) {
           return u.$isEmpty(n) ? "": "" + n
       }),
       r.min && (o = function(n) {
           var t = parseFloat(r.min);
           return kt(u, "min", u.$isEmpty(n) || n >= t, n)
       },
       u.$parsers.push(o), u.$formatters.push(o)),
       r.max && (s = function(n) {
           var t = parseFloat(r.max);
           return kt(u, "max", u.$isEmpty(n) || n <= t, n)
       },
       u.$parsers.push(s), u.$formatters.push(s)),
       u.$formatters.push(function(n) {
           return kt(u, "number", u.$isEmpty(n) || hu(n), n)
       })
   }
   function ca(n, t, i, r, u, f) {
       ru(n, t, i, r, u, f);
       var e = function(n) {
           return kt(r, "url", r.$isEmpty(n) || fa.test(n), n)
       };
       r.$formatters.push(e),
       r.$parsers.push(e)
   }
   function la(n, t, i, r, u, f) {
       ru(n, t, i, r, u, f);
       var e = function(n) {
           return kt(r, "email", r.$isEmpty(n) || ea.test(n), n)
       };
       r.$formatters.push(e),
       r.$parsers.push(e)
   }
   function aa(n, t, i, r) {
       l(i.name) && t.attr("name", cr());
       t.on("click",
       function() {
           t[0].checked && n.$apply(function() {
               r.$setViewValue(i.value)
           })
       });
       r.$render = function() {
           var n = i.value;
           t[0].checked = n == r.$viewValue
       },
       i.$observe("value", r.$render)
   }
   function va(n, t, i, r) {
       var u = i.ngTrueValue,
       f = i.ngFalseValue;
       e(u) || (u = !0),
       e(f) || (f = !1);
       t.on("click",
       function() {
           n.$apply(function() {
               r.$setViewValue(t[0].checked)
           })
       });
       r.$render = function() {
           t[0].checked = r.$viewValue
       },
       r.$isEmpty = function(n) {
           return n !== u
       },
       r.$formatters.push(function(n) {
           return n === u
       }),
       r.$parsers.push(function(n) {
           return n ? u: f
       })
   }
   function pf(n, t) {
       return n = "ngClass" + n,
       ["$animate",
       function(i) {
           function f(n, t) {
               var f = [],
               i,
               u,
               r;
               n: for (i = 0; i < n.length; i++) {
                   for (u = n[i], r = 0; r < t.length; r++) if (u == t[r]) continue n;
                   f.push(u)
               }
               return f
           }
           function u(n) {
               if (s(n)) return n;
               if (e(n)) return n.split(" ");
               if (a(n)) {
                   var t = [];
                   return r(n,
                   function(n, i) {
                       n && (t = t.concat(i.split(" ")))
                   }),
                   t
               }
               return n
           }
           return {
               restrict: "AC",
               link: function(e, o, s) {
                   function l(n) {
                       var t = c(n, 1);
                       s.$addClass(t)
                   }
                   function v(n) {
                       var t = c(n, -1);
                       s.$removeClass(t)
                   }
                   function c(n, t) {
                       var i = o.data("$classCounts") || {},
                       u = [];
                       return r(n,
                       function(n) { (t > 0 || i[n]) && (i[n] = (i[n] || 0) + t, i[n] === +(t > 0) && u.push(n))
                       }),
                       o.data("$classCounts", i),
                       u.join(" ")
                   }
                   function y(n, t) {
                       var r = f(t, n),
                       u = f(n, t);
                       u = c(u, -1),
                       r = c(r, 1),
                       r.length === 0 ? i.removeClass(o, u) : u.length === 0 ? i.addClass(o, r) : i.setClass(o, r, u)
                   }
                   function a(n) {
                       var i, r; (t === !0 || e.$index % 2 === t) && (i = u(n || []), h ? ni(n, h) || (r = u(h), y(r, i)) : l(i)),
                       h = st(n)
                   }
                   var h;
                   e.$watch(s[n], a, !0),
                   s.$observe("class",
                   function() {
                       a(e.$eval(s[n]))
                   }),
                   n !== "ngClass" && e.$watch("$index",
                   function(i, r) {
                       var o = i & 1,
                       f;
                       o !== (r & 1) && (f = u(e.$eval(s[n])), o === t ? l(f) : v(f))
                   })
               }
           }
       }]
   }
   var ss = "validity",
   v = function(n) {
       return e(n) ? n.toLowerCase() : n
   },
   ou = Object.prototype.hasOwnProperty,
   dt = function(n) {
       return e(n) ? n.toUpperCase() : n
   },
   hs = function(n) {
       return e(n) ? n.replace(/[A-Z]/g,
       function(n) {
           return String.fromCharCode(n.charCodeAt(0) | 32)
       }) : n
   },
   cs = function(n) {
       return e(n) ? n.replace(/[a-z]/g,
       function(n) {
           return String.fromCharCode(n.charCodeAt(0) & -33)
       }) : n
   },
   s,
   g,
   ue,
   ee,
   ri,
   rr,
   tf,
   pe,
   we,
   ut,
   ke,
   uf,
   ft,
   cf,
   pt,
   li,
   nu,
   vt,
   it,
   b,
   af,
   vf,
   wo,
   bo,
   go,
   iu,
   sr,
   us;
   "i" !== "I".toLowerCase() && (v = hs, dt = cs);
   var p, u, yt, su = [].slice,
   ls = [].push,
   gt = Object.prototype.toString,
   vi = y("ng"),
   yi = n.angular || (n.angular = {}),
   pi,
   ui,
   ot = ["0", "0", "0"];
   p = k((/msie (\d+)/.exec(v(navigator.userAgent)) || [])[1]),
   isNaN(p) && (p = k((/trident\/.*; rv:(\d+)/.exec(v(navigator.userAgent)) || [])[1])),
   o.$inject = [],
   fi.$inject = [],
   s = function() {
       return h(Array.isArray) ? Array.isArray: function(n) {
           return gt.call(n) === "[object Array]"
       }
   } (),
   g = function() {
       return String.prototype.trim ?
       function(n) {
           return e(n) ? n.trim() : n
       }: function(n) {
           return e(n) ? n.replace(/^\s\s*/, "").replace(/\s\s*$/, "") : n
       }
   } (),
   ui = p < 9 ?
   function(n) {
       return n = n.nodeName ? n: n[0],
       n.scopeName && n.scopeName != "HTML" ? dt(n.scopeName + ":" + n.nodeName) : n.nodeName
   }: function(n) {
       return n.nodeName ? n.nodeName: n[0].nodeName
   },
   ue = /[A-Z]/g,
   ee = {
       full: "1.2.19",
       major: 1,
       minor: 2,
       dot: 19,
       codeName: "precognitive-flashbacks"
   },
   w.expando = "ng339";
   var nr = w.cache = {},
   ih = 1,
   pr = n.document.addEventListener ?
   function(n, t, i) {
       n.addEventListener(t, i, !1)
   }: function(n, t, i) {
       n.attachEvent("on" + t, i)
   },
   tr = n.document.removeEventListener ?
   function(n, t, i) {
       n.removeEventListener(t, i, !1)
   }: function(n, t, i) {
       n.detachEvent("on" + t, i)
   },
   ey = w._data = function(n) {
       return this.cache[n[this.expando]] || {}
   };
   var uh = /([\:\-\_]+(.))/g,
   fh = /^moz([A-Z])/,
   wu = y("jqLite");
   var eh = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
   oh = /<|&#?\w+;/,
   sh = /<([\w:]+)/,
   hh = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
   rt = {
       option: [1, '<select multiple="multiple">', "<\/select>"],
thead: [1, "", "<\/table>"], col: [2, "
<colgroup>", "<\/colgroup><\/table>"], tr: [2, "
<tbody>", "<\/tbody><\/table>"], td: [3, "
<tbody>", "<\/tr><\/tbody><\/table>"], _default: [0, "", ""] }; rt.optgroup = rt.option, rt.tbody = rt.tfoot = rt.colgroup = rt.caption = rt.thead, rt.th = rt.td, ri = w.prototype = { ready: function(i) { function r() { u || (u = !0, i()) } var u = !1; if (t.readyState === "complete") setTimeout(r); else { this.on("DOMContentLoaded", r); w(n).on("load", r) } }, toString: function() { var n = []; return r(this, function(t) { n.push("" + t) }), "[" + n.join(", ") + "]" }, eq: function(n) { return n >= 0 ? u(this[n]) : u(this[this.length + n]) }, length: 0, push: ls, sort: [].sort, splice: [].splice }, rr = {}, r("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(n) { rr[v(n)] = n }), tf = {}, r("input,select,option,textarea,button,form,details".split(","), function(n) { tf[dt(n)] = !0 }), r({ data: he, inheritedData: kr, scope: function(n) { return u(n).data("$scope") || kr(n.parentNode || n, ["$isolateScope", "$scope"]) }, isolateScope: function(n) { return u(n).data("$isolateScope") || u(n).data("$isolateScopeNoTemplate") }, controller: ce, injector: function(n) { return kr(n, "$injector") }, removeAttr: function(n, t) { n.removeAttribute(t) }, hasClass: gu, css: function(n, t, r) { if (t = ir(t), f(r)) n.style[t] = r; else { var u; return p <= 8 && (u = n.currentStyle && n.currentStyle[t], u === "" && (u = "auto")), u = u || n.style[t], p <= 8 && (u = u === "" ? i: u), u } }, attr: function(n, t, r) { var u = v(t), e; if (rr[u]) if (f(r)) r ? (n[t] = !0, n.setAttribute(t, u)) : (n[t] = !1, n.removeAttribute(u)); else return n[t] || (n.attributes.getNamedItem(t) || o).specified ? u: i; else if (f(r)) n.setAttribute(t, r); else if (n.getAttribute) return e = n.getAttribute(t, 2), e === null ? i: e }, prop: function(n, t, i) { if (f(i)) n[t] = i; else return n[t] }, text: function() { function t(t, i) { var r = n[t.nodeType]; if (l(i)) return r ? t[r] : ""; t[r] = i } var n = []; return p < 9 ? (n[1] = "innerText", n[3] = "nodeValue") : n[1] = n[3] = "textContent", t.$dv = "", t } (), val: function(n, t) { if (l(t)) { if (ui(n) === "SELECT" && n.multiple) { var i = []; return r(n.options, function(n) { n.selected && i.push(n.value || n.text) }), i.length === 0 ? null: i } return n.value } n.value = t }, html: function(n, t) { if (l(t)) return n.innerHTML; for (var i = 0, r = n.childNodes; i < r.length; i++) si(r[i]); n.innerHTML = t }, empty: le }, function(n, t) { w.prototype[t] = function(t, r) { var u, s, e = this.length, f, c, o, h; if (n !== le && (n.length == 2 && n !== gu && n !== ce ? t: r) === i) { if (a(t)) { for (u = 0; u < e; u++) if (n === he) n(this[u], t); else for (s in t) n(this[u], s, t[s]); return this } for (f = n.$dv, c = f === i ? Math.min(e, 1) : e, o = 0; o < c; o++) h = n(this[o], t, r), f = f ? f + h: h; return f } for (u = 0; u < e; u++) n(this[u], t, r); return this } }), r({ removeData: se, dealoc: si, on: function vh(n, i, u, e) { if (f(e)) throw wu("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters"); var o = ct(n, "events"), s = ct(n, "handle"); o || ct(n, "events", o = {}), s || ct(n, "handle", s = ah(n, o)), r(i.split(" "), function(i) { var r = o[i], f, e; r || (i == "mouseenter" || i == "mouseleave" ? (f = t.body.contains || t.body.compareDocumentPosition ? function(n, t) { var r = n.nodeType === 9 ? n.documentElement: n, i = t && t.parentNode; return n === i || !!(i && i.nodeType === 1 && (r.contains ? r.contains(i) : n.compareDocumentPosition && n.compareDocumentPosition(i) & 16)) }: function(n, t) { if (t) while (t = t.parentNode) if (t === n) return ! 0; return ! 1 }, o[i] = [], e = { mouseleave: "mouseout", mouseenter: "mouseover" }, vh(n, e[i], function(n) { var r = this, t = n.relatedTarget; t && (t === r || f(r, t)) || s(n, i) })) : (pr(n, i, s), o[i] = []), r = o[i]), r.push(u) }) }, off: oe, one: function(n, t, i) { n = u(n); n.on(t, function r() { n.off(t, i), n.off(t, r) }); n.on(t, i) }, replaceWith: function(n, t) { var i, u = n.parentNode; si(n), r(new w(t), function(t) { i ? u.insertBefore(t, i.nextSibling) : u.replaceChild(t, n), i = t }) }, children: function(n) { var t = []; return r(n.childNodes, function(n) { n.nodeType === 1 && t.push(n) }), t }, contents: function(n) { return n.contentDocument || n.childNodes || [] }, append: function(n, t) { r(new w(t), function(t) { (n.nodeType === 1 || n.nodeType === 11) && n.appendChild(t) }) }, prepend: function(n, t) { if (n.nodeType === 1) { var i = n.firstChild; r(new w(t), function(t) { n.insertBefore(t, i) }) } }, wrap: function(n, t) { t = u(t)[0]; var i = n.parentNode; i && i.replaceChild(t, n), t.appendChild(n) }, remove: function(n) { si(n); var t = n.parentNode; t && t.removeChild(n) }, after: function(n, t) { var i = n, u = n.parentNode; r(new w(t), function(n) { u.insertBefore(n, i.nextSibling), i = n }) }, addClass: br, removeClass: wr, toggleClass: function(n, t, i) { t && r(t.split(" "), function(t) { var r = i; l(r) && (r = !gu(n, t)), (r ? br: wr)(n, t) }) }, parent: function(n) { var t = n.parentNode; return t && t.nodeType !== 11 ? t: null }, next: function(n) { if (n.nextElementSibling) return n.nextElementSibling; for (var t = n.nextSibling; t != null && t.nodeType !== 1;) t = t.nextSibling; return t }, find: function(n, t) { return n.getElementsByTagName ? n.getElementsByTagName(t) : [] }, clone: du, triggerHandler: function(n, t, i) { var f = (ct(n, "events") || {})[t], u; i = i || [], u = [{ preventDefault: o, stopPropagation: o }], r(f, function(t) { t.apply(n, u.concat(i)) }) } }, function(n, t) { w.prototype[t] = function(t, i, r) { for (var e, o = 0; o < this.length; o++) l(e) ? (e = n(this[o], t, i, r), f(e) && (e = u(e))) : nf(e, n(this[o], t, i, r)); return f(e) ? e: this }, w.prototype.bind = w.prototype.on, w.prototype.unbind = w.prototype.off }), ur.prototype = { put: function(n, t) { this[hi(n, this.nextUid)] = t }, get: function(n) { return this[hi(n, this.nextUid)] }, remove: function(n) { var t = this[n = hi(n, this.nextUid)]; return delete this[n], t } }; var yh = /^function\s*[^\(]*\(\s*([^\)]*)\)/m, ph = /,/, wh = /^\s*(_?)(\S+?)\1\s*$/, bh = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg, fr = y("$injector"); pe = y("$animate"), we = ["$provide", function(n) { this.$$selectors = {}, this.register = function(t, i) { var r = t + "-animation"; if (t && t.charAt(0) != ".") throw pe("notcsel", "Expecting class selector starting with '.' got '{0}'.", t); this.$$selectors[t.substr(1)] = r, n.factory(r, i) }, this.classNameFilter = function(n) { return arguments.length === 1 && (this.$$classNameFilter = n instanceof RegExp ? n: null), this.$$classNameFilter }, this.$get = ["$timeout", "$$asyncCallback", function(n, t) { function i(n) { n && t(n) } return { enter: function(n, t, r, u) { r ? r.after(n) : (t && t[0] || (t = r.parent()), t.append(n)), i(u) }, leave: function(n, t) { n.remove(), i(t) }, move: function(n, t, i, r) { this.enter(n, t, i, r) }, addClass: function(n, t, u) { t = e(t) ? t: s(t) ? t.join(" ") : "", r(n, function(n) { br(n, t) }), i(u) }, removeClass: function(n, t, u) { t = e(t) ? t: s(t) ? t.join(" ") : "", r(n, function(n) { wr(n, t) }), i(u) }, setClass: function(n, t, u, f) { r(n, function(n) { br(n, t), wr(n, u) }), i(f) }, enabled: o } }] }], ut = y("$compile"), be.$inject = ["$provide", "$$sanitizeUriProvider"], ke = /^(x[\:\-_]|data[\:\-_])/i, uf = y("$interpolate"); var vc = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/, yc = { http: 80, https: 443, ftp: 21 }, ff = y("$location"); hf.prototype = sf.prototype = uo.prototype = { $$html5: !1, $$replace: !1, absUrl: dr("$$absUrl"), url: function(n, t) { if (l(n)) return this.$$url; var i = vc.exec(n); return i[1] && this.path(decodeURIComponent(i[1])), (i[2] || i[1]) && this.search(i[3] || ""), this.hash(i[5] || "", t), this }, protocol: dr("$$protocol"), host: dr("$$host"), port: dr("$$port"), path: fo("$$path", function(n) { return n.charAt(0) == "/" ? n: "/" + n }), search: function(n, t) { switch (arguments.length) { case 0: return this.$$search; case 1: if (e(n)) this.$$search = ie(n); else if (a(n)) this.$$search = n; else throw ff("isrcharg", "The first argument of the `$location#search()` call must be a string or an object."); break; default: l(t) || t === null ? delete this.$$search[n] : this.$$search[n] = t } return this.$$compose(), this }, hash: fo("$$hash", fi), replace: function() { return this.$$replace = !0, this } }, ft = y("$parse"), cf = {}; var kc = Function.prototype.call, dc = Function.prototype.apply, eo = Function.prototype.bind; var or = { "null": function() { return null }, "true": function() { return ! 0 }, "false": function() { return ! 1 }, undefined: o, "+": function(n, t, r, u) { return (r = r(n, t), u = u(n, t), f(r)) ? f(u) ? r + u: r: f(u) ? u: i }, "-": function(n, t, i, r) { return i = i(n, t), r = r(n, t), (f(i) ? i: 0) - (f(r) ? r: 0) }, "*": function(n, t, i, r) { return i(n, t) * r(n, t) }, "/": function(n, t, i, r) { return i(n, t) / r(n, t) }, "%": function(n, t, i, r) { return i(n, t) % r(n, t) }, "^": function(n, t, i, r) { return i(n, t) ^ r(n, t) }, "=": o, "===": function(n, t, i, r) { return i(n, t) === r(n, t) }, "!==": function(n, t, i, r) { return i(n, t) !== r(n, t) }, "==": function(n, t, i, r) { return i(n, t) == r(n, t) }, "!=": function(n, t, i, r) { return i(n, t) != r(n, t) }, "<": function(n, t, i, r) { return i(n, t) < r(n, t) }, ">": function(n, t, i, r) { return i(n, t) > r(n, t) }, "<=": function(n, t, i, r) { return i(n, t) <= r(n, t) }, ">=": function(n, t, i, r) { return i(n, t) >= r(n, t) }, "&&": function(n, t, i, r) { return i(n, t) && r(n, t) }, "||": function(n, t, i, r) { return i(n, t) || r(n, t) }, "&": function(n, t, i, r) { return i(n, t) & r(n, t) }, "|": function(n, t, i, r) { return r(n, t)(n, t, i(n, t)) }, "!": function(n, t, i) { return ! i(n, t) } }, nl = { n: "\n", f: "\f", r: "\r", t: "\t", v: "\v", "'": "'", '"': '"' }, lf = function(n) { this.options = n }; lf.prototype = { constructor: lf, lex: function(n) { for (this.text = n, this.index = 0, this.ch = i, this.lastCh = ":", this.tokens = []; this.index < this.text.length;) { if (this.ch = this.text.charAt(this.index), this.is("\"'")) this.readString(this.ch); else if (this.isNumber(this.ch) || this.is(".") && this.isNumber(this.peek())) this.readNumber(); else if (this.isIdent(this.ch)) this.readIdent(); else if (this.is("(){}[].,;:?")) this.tokens.push({ index: this.index, text: this.ch }), this.index++; else if (this.isWhitespace(this.ch)) { this.index++; continue } else { var t = this.ch + this.peek(), r = t + this.peek(2), u = or[this.ch], f = or[t], e = or[r]; e ? (this.tokens.push({ index: this.index, text: r, fn: e }), this.index += 3) : f ? (this.tokens.push({ index: this.index, text: t, fn: f }), this.index += 2) : u ? (this.tokens.push({ index: this.index, text: this.ch, fn: u }), this.index += 1) : this.throwError("Unexpected next character ", this.index, this.index + 1) } this.lastCh = this.ch } return this.tokens }, is: function(n) { return n.indexOf(this.ch) !== -1 }, was: function(n) { return n.indexOf(this.lastCh) !== -1 }, peek: function(n) { var t = n || 1; return this.index + t < this.text.length ? this.text.charAt(this.index + t) : !1 }, isNumber: function(n) { return "0" <= n && n <= "9" }, isWhitespace: function(n) { return n === " " || n === "\r" || n === "\t" || n === "\n" || n === '\v' || n === " " }, isIdent: function(n) { return "a" <= n && n <= "z" || "A" <= n && n <= "Z" || "_" === n || n === "$" }, isExpOperator: function(n) { return n === "-" || n === "+" || this.isNumber(n) }, throwError: function(n, t, i) { i = i || this.index; var r = f(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, i) + "]": " " + i; throw ft("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", n, r, this.text); }, readNumber: function() { for (var n = "", r = this.index, t, i; this.index < this.text.length;) { if (t = v(this.text.charAt(this.index)), t == "." || this.isNumber(t)) n += t; else if (i = this.peek(), t == "e" && this.isExpOperator(i)) n += t; else if (this.isExpOperator(t) && i && this.isNumber(i) && n.charAt(n.length - 1) == "e") n += t; else if (!this.isExpOperator(t) || i && this.isNumber(i) || n.charAt(n.length - 1) != "e") break; else this.throwError("Invalid exponent"); this.index++ } n = 1 * n, this.tokens.push({ index: r, text: n, literal: !0, constant: !0, fn: function() { return n } }) }, readIdent: function() { for (var o = this, n = "", f = this.index, i, u, e, t, r, s; this.index < this.text.length;) { if (t = this.text.charAt(this.index), t === "." || this.isIdent(t) || this.isNumber(t)) t === "." && (i = this.index), n += t; else break; this.index++ } if (i) for (u = this.index; u < this.text.length;) { if (t = this.text.charAt(u), t === "(") { e = n.substr(i - f + 1), n = n.substr(0, i - f), this.index = u; break } if (this.isWhitespace(t)) u++; else break } r = { index: f, text: n }, or.hasOwnProperty(n) ? (r.fn = or[n], r.literal = !0, r.constant = !0) : (s = so(n, this.options, this.text), r.fn = c(function(n, t) { return s(n, t) }, { assign: function(t, i) { return gr(t, n, i, o.text, o.options) } })), this.tokens.push(r), e && (this.tokens.push({ index: i, text: "." }), this.tokens.push({ index: i + 1, text: e })) }, readString: function(n) { var e = this.index, t, r, f; this.index++; for (var i = "", o = n, u = !1; this.index < this.text.length;) { if (t = this.text.charAt(this.index), o += t, u) t === "u" ? (r = this.text.substring(this.index + 1, this.index + 5), r.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + r + "]"), this.index += 4, i += String.fromCharCode(parseInt(r, 16))) : (f = nl[t], i += f ? f: t), u = !1; else if (t === "\\") u = !0; else { if (t === n) { this.index++, this.tokens.push({ index: e, text: o, string: i, literal: !0, constant: !0, fn: function() { return i } }); return } i += t } this.index++ } this.throwError("Unterminated quote", e) } }, li = function(n, t, i) { this.lexer = n, this.$filter = t, this.options = i }, li.ZERO = c(function() { return 0 }, { constant: !0 }), li.prototype = { constructor: li, parse: function(n) { this.text = n, this.tokens = this.lexer.lex(n); var t = this.statements(); return this.tokens.length !== 0 && this.throwError("is an unexpected token", this.tokens[0]), t.literal = !!t.literal, t.constant = !!t.constant, t }, primary: function() { var n, t, i, r; for (this.expect("(") ? (n = this.filterChain(), this.consume(")")) : this.expect("[") ? n = this.arrayDeclaration() : this.expect("{") ? n = this.object() : (t = this.expect(), n = t.fn, n || this.throwError("not a primary expression", t), n.literal = !!t.literal, n.constant = !!t.constant); i = this.expect("(", "[", ".");) i.text === "(" ? (n = this.functionCall(n, r), r = null) : i.text === "[" ? (r = n, n = this.objectIndex(n)) : i.text === "." ? (r = n, n = this.fieldAccess(n)) : this.throwError("IMPOSSIBLE"); return n }, throwError: function(n, t) { throw ft("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", t.text, n, t.index + 1, this.text, this.text.substring(t.index)); }, peekToken: function() { if (this.tokens.length === 0) throw ft("ueoe", "Unexpected end of expression: {0}", this.text); return this.tokens[0] }, peek: function(n, t, i, r) { if (this.tokens.length > 0) { var f = this.tokens[0], u = f.text; if (u === n || u === t || u === i || u === r || !n && !t && !i && !r) return f } return ! 1 }, expect: function(n, t, i, r) { var u = this.peek(n, t, i, r); return u ? (this.tokens.shift(), u) : !1 }, consume: function(n) { this.expect(n) || this.throwError("is unexpected, expecting [" + n + "]", this.peek()) }, unaryFn: function(n, t) { return c(function(i, r) { return n(i, r, t) }, { constant: t.constant }) }, ternaryFn: function(n, t, i) { return c(function(r, u) { return n(r, u) ? t(r, u) : i(r, u) }, { constant: n.constant && t.constant && i.constant }) }, binaryFn: function(n, t, i) { return c(function(r, u) { return t(r, u, n, i) }, { constant: n.constant && i.constant }) }, statements: function() { for (var n = [];;) if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && n.push(this.filterChain()), !this.expect(";")) return n.length === 1 ? n[0] : function(t, i) { for (var f, u, r = 0; r < n.length; r++) u = n[r], u && (f = u(t, i)); return f } }, filterChain: function() { for (var n = this.expression(), t;;) if (t = this.expect("|")) n = this.binaryFn(n, t.fn, this.filter()); else return n }, filter: function() { for (var t = this.expect(), r = this.$filter(t.text), n = [], i;;) if (t = this.expect(":")) n.push(this.expression()); else return i = function(t, i, u) { for (var e = [u], f = 0; f < n.length; f++) e.push(n[f](t, i)); return r.apply(t, e) }, function() { return i } }, expression: function() { return this.assignment() }, assignment: function() { var n = this.ternary(), i, t; return (t = this.expect("=")) ? (n.assign || this.throwError("implies assignment but [" + this.text.substring(0, t.index) + "] can not be assigned to", t), i = this.ternary(), function(t, r) { return n.assign(t, i(t, r), r) }) : n }, ternary: function() { var t = this.logicalOR(), i, n; if (n = this.expect("?")) { if (i = this.ternary(), n = this.expect(":")) return this.ternaryFn(t, i, this.ternary()); this.throwError("expected :", n) } else return t }, logicalOR: function() { for (var n = this.logicalAND(), t;;) if (t = this.expect("||")) n = this.binaryFn(n, t.fn, this.logicalAND()); else return n }, logicalAND: function() { var n = this.equality(), t; return (t = this.expect("&&")) && (n = this.binaryFn(n, t.fn, this.logicalAND())), n }, equality: function() { var n = this.relational(), t; return (t = this.expect("==", "!=", "===", "!==")) && (n = this.binaryFn(n, t.fn, this.equality())), n }, relational: function() { var n = this.additive(), t; return (t = this.expect("<", ">", "<=", ">=")) && (n = this.binaryFn(n, t.fn, this.relational())), n }, additive: function() { for (var n = this.multiplicative(), t; t = this.expect("+", "-");) n = this.binaryFn(n, t.fn, this.multiplicative()); return n }, multiplicative: function() { for (var n = this.unary(), t; t = this.expect("*", "/", "%");) n = this.binaryFn(n, t.fn, this.unary()); return n }, unary: function() { var n; return this.expect("+") ? this.primary() : (n = this.expect("-")) ? this.binaryFn(li.ZERO, n.fn, this.unary()) : (n = this.expect("!")) ? this.unaryFn(n.fn, this.unary()) : this.primary() }, fieldAccess: function(n) { var t = this, i = this.expect().text, r = so(i, this.options, this.text); return c(function(t, i, u) { return r(u || n(t, i)) }, { assign: function(r, u, f) { return gr(n(r, f), i, u, t.text, t.options) } }) }, objectIndex: function(n) { var t = this, r = this.expression(); return this.consume("]"), c(function(u, f) { var s = n(u, f), h = r(u, f), e, o; return (tt(h, t.text), !s) ? i: (e = ci(s[h], t.text), e && e.then && t.options.unwrapPromises && (o = e, "$$v" in e || (o.$$v = i, o.then(function(n) { o.$$v = n })), e = e.$$v), e) }, { assign: function(i, u, f) { var e = r(i, f), o = ci(n(i, f), t.text); return o[e] = u } }) }, functionCall: function(n, t) { var r = [], i; if (this.peekToken().text !== ")") do r.push(this.expression()); while (this.expect(",")); return this.consume(")"), i = this, function(u, f) { for (var e = [], c = t ? t(u, f) : u, s, l, h = 0; h < r.length; h++) e.push(r[h](u, f)); return s = n(u, f, c) || o, ci(c, i.text), gc(s, i.text), l = s.apply ? s.apply(c, e) : s(e[0], e[1], e[2], e[3], e[4]), ci(l, i.text) } }, arrayDeclaration: function() { var n = [], i = !0, t; if (this.peekToken().text !== "]") do { if (this.peek("]")) break; t = this.expression(), n.push(t), t.constant || (i = !1) } while ( this . expect (",")); return this.consume("]"), c(function(t, i) { for (var u = [], r = 0; r < n.length; r++) u.push(n[r](t, i)); return u }, { literal: !0, constant: i }) }, object: function() { var n = [], r = !0, t, u, i; if (this.peekToken().text !== "}") do { if (this.peek("}")) break; t = this.expect(), u = t.string || t.text, this.consume(":"), i = this.expression(), n.push({ key: u, value: i }), i.constant || (r = !1) } while ( this . expect (",")); return this.consume("}"), c(function(t, i) { for (var f = {}, u, r = 0; r < n.length; r++) u = n[r], f[u.key] = u.value(t, i); return f }, { literal: !0, constant: r }) } }, nu = {}, vt = y("$sce"), it = { HTML: "html", CSS: "css", URL: "url", RESOURCE_URL: "resourceUrl", JS: "js" }, b = t.createElement("a"), af = wt(n.location.href, !0), lo.$inject = ["$provide"], ao.$inject = ["$locale"], vo.$inject = ["$locale"], vf = "."; var dl = { yyyy: d("FullYear", 4), yy: d("FullYear", 2, 0, !0), y: d("FullYear", 1), MMMM: tu("Month"), MMM: tu("Month", !0), MM: d("Month", 2, 1), M: d("Month", 1, 1), dd: d("Date", 2), d: d("Date", 1), HH: d("Hours", 2), H: d("Hours", 1), hh: d("Hours", 2, -12), h: d("Hours", 1, -12), mm: d("Minutes", 2), m: d("Minutes", 1), ss: d("Seconds", 2), s: d("Seconds", 1), sss: d("Milliseconds", 3), EEEE: tu("Day"), EEE: tu("Day", !0), a: kl, Z: bl }, gl = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|)*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/, na = /^\-?\d+$/; po.$inject = ["$locale"], wo = nt(v), bo = nt(dt), ko.$inject = ["$parse"], go = nt({ restrict: "E", compile: function(n, i) { return p <= 8 && (i.href || i.name || i.$set("href", ""), n.append(t.createComment("IE fix"))),  !i.href && !i.xlinkHref && !i.name ? function(n, t) { var i = gt.call(t.prop("href")) === "[object SVGAnimatedString]" ? "xlink:href": "href"; t.on("click", function(n) { t.attr(i) || n.preventDefault() }) }: void 0 } }), iu = {}, r(rr, function(n, t) { if (n != "multiple") { var i = lt("ng-" + t); iu[i] = function() { return { priority: 100, link: function(n, r, u) { n.$watch(u[i], function(n) { u.$set(t, !!n) }) } } } } }), r(["src", "srcset", "href"], function(n) { var t = lt("ng-" + n); iu[t] = function() { return { priority: 99, link: function(i, r, u) { var e = n, f = n; n === "href" && gt.call(r.prop("href")) === "[object SVGAnimatedString]" && (f = "xlinkHref", u.$attr[f] = "xlink:href", e = null), u.$observe(t, function(n) { n && (u.$set(f, n), p && e && r.prop(e, u[f])) }) } } } }), sr = { $addControl: o, $removeControl: o, $setValidity: o, $setDirty: o, $setPristine: o }, ns.$inject = ["$element", "$attrs", "$scope", "$animate"]; var ts = function(n) { return ["$timeout", function(t) { return { name: "form", restrict: n ? "EAC": "E", controller: ns, compile: function() { return { pre: function(n, r, u, f) { var o, s, e; if (!u.action) { o = function(n) { n.preventDefault ? n.preventDefault() : n.returnValue = !1 }, pr(r[0], "submit", o); r.on("$destroy", function() { t(function() { tr(r[0], "submit", o) }, 0, !1) }) } if (s = r.parent().controller("form"), e = u.name || u.ngForm, e && gr(n, e, f, e), s) r.on("$destroy", function() { s.$removeControl(f), e && gr(n, e, i, e), c(f, sr) }) } } } } }] }, ra = ts(), ua = ts(!0), fa = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/, ea = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i, oa = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/, is = { text: ru, number: ha, url: ca, email: la, radio: aa, checkbox: va, hidden: o, button: o, submit: o, reset: o, file: o }; us = ["badInput"]; var fs = ["$browser", "$sniffer", function(n, t) { return { restrict: "E", require: "?ngModel", link: function(i, r, u, f) { f && (is[v(u.type)] || is.text)(i, r, u, f, t, n) } } }], uu = "ng-valid", fu = "ng-invalid", ai = "ng-pristine", eu = "ng-dirty", ya = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", function(n, t, i, u, f, e) { function h(n, t) { t = t ? "-" + yr(t, "-") : "", e.removeClass(u, (n ? fu: uu) + t), e.addClass(u, (n ? uu: fu) + t) } var c, a, s; if (this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$name = i.name, c = f(i.ngModel), a = c.assign, !a) throw y("ngModel")("nonassign", "Expression '{0}' is non-assignable. Element: {1}", i.ngModel, et(u)); this.$render = o, this.$isEmpty = function(n) { return l(n) || n === "" || n === null || n !== n }; var w = u.inheritedData("$formController") || sr, v = 0, p = this.$error = {}; u.addClass(ai), h(!0), this.$setValidity = function(n, t) { p[n] !== !t && (t ? (p[n] && v--, v || (h(!0), this.$valid = !0, this.$invalid = !1)) : (h(!1), this.$invalid = !0, this.$valid = !1, v++), p[n] = !t, h(t, n), w.$setValidity(n, t, this)) }, this.$setPristine = function() { this.$dirty = !1, this.$pristine = !0, e.removeClass(u, eu), e.addClass(u, ai) }, this.$setViewValue = function(i) { this.$viewValue = i, this.$pristine && (this.$dirty = !0, this.$pristine = !1, e.removeClass(u, ai), e.addClass(u, eu), w.$setDirty()), r(this.$parsers, function(n) { i = n(i) }), this.$modelValue !== i && (this.$modelValue = i, a(n, i), r(this.$viewChangeListeners, function(n) { try { n() } catch(i) { t(i) } })) }, s = this, n.$watch(function() { var t = c(n), i, r; if (s.$modelValue !== t) { for (i = s.$formatters, r = i.length, s.$modelValue = t; r--;) t = i[r](t); s.$viewValue !== t && (s.$viewValue = t, s.$render()) } return t }) }], pa = function() { return { require: ["ngModel", "^?form"], controller: ya, link: function(n, t, i, r) { var u = r[0], f = r[1] || sr; f.$addControl(u), n.$on("$destroy", function() { f.$removeControl(u) }) } } }, wa = nt({ require: "ngModel", link: function(n, t, i, r) { r.$viewChangeListeners.push(function() { n.$eval(i.ngChange) }) } }), es = function() { return { require: "?ngModel", link: function(n, t, i, r) { if (r) { i.required = !0; var u = function(n) { if (i.required && r.$isEmpty(n)) { r.$setValidity("required", !1); return } return r.$setValidity("required", !0), n }; r.$formatters.push(u), r.$parsers.unshift(u), i.$observe("required", function() { u(r.$viewValue) }) } } } }, ba = function() { return { require: "ngModel", link: function(n, t, u, f) { var e = /\/(.*)\//.exec(u.ngList), o = e && new RegExp(e[1]) || u.ngList || ",", h = function(n) { if (!l(n)) { var t = []; return n && r(n.split(o), function(n) { n && t.push(g(n)) }), t } }; f.$parsers.push(h), f.$formatters.push(function(n) { return s(n) ? n.join(", ") : i }), f.$isEmpty = function(n) { return ! n || !n.length } } } }, ka = /^(true|false|\d+)$/, da = function() { return { priority: 100, compile: function(n, t) { return ka.test(t.ngValue) ? function(n, t, i) { i.$set("value", n.$eval(i.ngValue)) }: function(n, t, i) { n.$watch(i.ngValue, function(n) { i.$set("value", n) }) } } } }, ga = bt({ compile: function(n) { return n.addClass("ng-binding"), function(n, t, r) { t.data("$binding", r.ngBind), n.$watch(r.ngBind, function(n) { t.text(n == i ? "": n) }) } } }), nv = ["$interpolate", function(n) { return function(t, i, r) { var u = n(i.attr(r.$attr.ngBindTemplate)); i.addClass("ng-binding").data("$binding", u), r.$observe("ngBindTemplate", function(n) { i.text(n) }) } }], tv = ["$sce", "$parse", function(n, t) { return function(i, r, u) { function e() { return (f(i) || "").toString() } r.addClass("ng-binding").data("$binding", u.ngBindHtml); var f = t(u.ngBindHtml); i.$watch(e, function() { r.html(n.getTrustedHtml(f(i)) || "") }) } }]; var iv = pf("", !0), rv = pf("Odd", 0), uv = pf("Even", 1), fv = bt({ compile: function(n, t) { t.$set("ngCloak", i), n.removeClass("ng-cloak") } }), ev = [function() { return { scope: !0, controller: "@", priority: 500 } }], os = {}; r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(n) { var t = lt("ng-" + n); os[t] = ["$parse", function(i) { return { compile: function(r, u) { var f = i(u[t]); return function(t, i) { i.on(v(n), function(n) { t.$apply(function() { f(t, { $event: n }) }) }) } } } }] }); var ov = ["$animate", function(n) { return { transclude: "element", priority: 600, terminal: !0, restrict: "A", $$tlb: !0, link: function(i, r, u, f, e) { var h, o, s; i.$watch(u.ngIf, function(f) { di(f) ? o || (o = i.$new(), e(o, function(i) { i[i.length++] = t.createComment(" end ngIf: " + u.ngIf + " "), h = { clone: i }, n.enter(i, r.parent(), r) })) : (s && (s.remove(), s = null), o && (o.$destroy(), o = null), h && (s = pu(h.clone), n.leave(s, function() { s = null }), h = null)) }) } } }], sv = ["$http", "$templateCache", "$anchorScroll", "$animate", "$sce", function(n, t, i, r, u) { return { restrict: "ECA", priority: 400, terminal: !0, transclude: "element", controller: yi.noop, compile: function(e, o) { var h = o.ngInclude || o.src, c = o.onload || "", s = o.autoscroll; return function(e, o, l, a, v) { var b = 0, y, p, w, k = function() { p && (p.remove(), p = null), y && (y.$destroy(), y = null), w && (r.leave(w, function() { p = null }), p = w, w = null) }; e.$watch(u.parseAsResourceUrl(h), function(u) { var l = function() { f(s) && (!s || e.$eval(s)) && i() }, h = ++b; u ? (n.get(u, { cache: t }).success(function(n) { var t, i; h === b && (t = e.$new(), a.template = n, i = v(t, function(n) { k(), r.enter(n, null, o, l) }), y = t, w = i, y.$emit("$includeContentLoaded"), e.$eval(c)) }).error(function() { h === b && k() }), e.$emit("$includeContentRequested")) : (k(), a.template = null) }) } } } }], hv = ["$compile", function(n) { return { restrict: "ECA", priority: -400, require: "ngInclude", link: function(t, i, r, u) { i.html(u.template), n(i.contents())(t) } } }], cv = bt({ priority: 450, compile: function() { return { pre: function(n, t, i) { n.$eval(i.ngInit) } } } }), lv = bt({ terminal: !0, priority: 1e3 }), av = ["$locale", "$interpolate", function(n, t) { var i = /{}/g; return { restrict: "EA", link: function(u, f, e) { var s = e.count, l = e.$attr.when && f.attr(e.$attr.when), h = e.offset || 0, o = u.$eval(l) || {}, c = {}, a = t.startSymbol(), y = t.endSymbol(), p = /^when(Minus)?(.+)$/; r(e, function(n, t) { p.test(t) && (o[v(t.replace("when", "").replace("Minus", "-"))] = f.attr(e.$attr[t])) }), r(o, function(n, r) { c[r] = t(n.replace(i, a + s + "-" + h + y)) }), u.$watch(function() { var t = parseFloat(u.$eval(s)); return isNaN(t) ? "": (t in o || (t = n.pluralCat(t - h)), c[t](u, f, !0)) }, function(n) { f.text(n) }) } } }], vv = ["$parse", "$animate", function(n, i) { function s(n) { return n.clone[0] } function o(n) { return n.clone[n.clone.length - 1] } var e = "$$NG_REMOVED", f = y("ngRepeat"); return { transclude: "element", priority: 1e3, terminal: !0, $$tlb: !0, link: function(h, c, l, a, v) { var b = l.ngRepeat, y = b.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/), d, it, g, rt, ut, nt, ft, tt, w, k = { $id: hi }, p; if (!y) throw f("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", b); if (nt = y[1], ft = y[2], d = y[3], d ? (it = n(d), g = function(n, t, i) { return w && (k[w] = n), k[tt] = t, k.$index = i, it(h, k) }) : (rt = function(n, t) { return hi(t) }, ut = function(n) { return n }), y = nt.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/), !y) throw f("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", nt); tt = y[3] || y[1], w = y[2], p = {}, h.$watchCollection(ft, function(n) { var l, st, ft = c[0], et, ot = {}, at, y, k, ht, nt, ct, d, a, it = [], lt; if (hr(n)) d = n, ct = g || rt; else { ct = g || ut, d = []; for (k in n) n.hasOwnProperty(k) && k.charAt(0) != "$" && d.push(k); d.sort() } for (at = d.length, st = it.length = d.length, l = 0; l < st; l++) if (k = n === d ? l: d[l], ht = n[k], nt = ct(k, ht, l), ii(nt, "`track by` id"), p.hasOwnProperty(nt)) a = p[nt], delete p[nt], ot[nt] = a, it[l] = a; else if (ot.hasOwnProperty(nt)) { r(it, function(n) { n && n.scope && (p[n.id] = n) }); throw f("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}", b, nt); } else it[l] = { id: nt }, ot[nt] = !1; for (k in p) p.hasOwnProperty(k) && (a = p[k], lt = pu(a.clone), i.leave(lt), r(lt, function(n) { n[e] = !0 }), a.scope.$destroy()); for (l = 0, st = d.length; l < st; l++) { if (k = n === d ? l: d[l], ht = n[k], a = it[l], it[l - 1] && (ft = o(it[l - 1])), a.scope) { y = a.scope, et = ft; do et = et.nextSibling; while (et && et[e]); s(a) != et && i.move(pu(a.clone), null, u(ft)), ft = o(a) } else y = h.$new(); y[tt] = ht, w && (y[w] = k), y.$index = l, y.$first = l === 0, y.$last = l === at - 1, y.$middle = !(y.$first || y.$last), y.$odd = !(y.$even = (l & 1) == 0), a.scope || v(y, function(n) { n[n.length++] = t.createComment(" end ngRepeat: " + b + " "), i.enter(n, null, u(ft)), ft = n, a.scope = y, a.clone = n, ot[a.id] = a }) } p = ot }) } } }], yv = ["$animate", function(n) { return function(t, i, r) { t.$watch(r.ngShow, function(t) { n[di(t) ? "removeClass": "addClass"](i, "ng-hide") }) } }], pv = ["$animate", function(n) { return function(t, i, r) { t.$watch(r.ngHide, function(t) { n[di(t) ? "addClass": "removeClass"](i, "ng-hide") }) } }], wv = bt(function(n, t, i) { n.$watch(i.ngStyle, function(n, i) { i && n !== i && r(i, function(n, i) { t.css(i, "") }), n && t.css(n) },  !0) }), bv = ["$animate", function(n) { return { restrict: "EA", require: "ngSwitch", controller: ["$scope", function() { this.cases = {} }], link: function(t, i, u, f) { var c = u.ngSwitch || u.on, h = [], s = [], e = [], o = []; t.$watch(c, function(i) { for (var a, c = 0, l = e.length; c < l; ++c) e[c].remove(); for (e.length = 0, c = 0, l = o.length; c < l; ++c) a = s[c], o[c].$destroy(), e[c] = a, n.leave(a, function() { e.splice(c, 1) }); s.length = 0, o.length = 0, (h = f.cases["!" + i] || f.cases["?"]) && (t.$eval(u.change), r(h, function(i) { var r = t.$new(); o.push(r), i.transclude(r, function(t) { var r = i.element; s.push(t), n.enter(t, r.parent(), r) }) })) }) } } }], kv = bt({ transclude: "element", priority: 800, require: "^ngSwitch", link: function(n, t, i, r, u) { r.cases["!" + i.ngSwitchWhen] = r.cases["!" + i.ngSwitchWhen] || [], r.cases["!" + i.ngSwitchWhen].push({ transclude: u, element: t }) } }), dv = bt({ transclude: "element", priority: 800, require: "^ngSwitch", link: function(n, t, i, r, u) { r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({ transclude: u, element: t }) } }), gv = bt({ link: function(n, t, i, r, u) { if (!u) throw y("ngTransclude")("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", et(t)); u(function(n) { t.empty(), t.append(n) }) } }), ny = ["$templateCache", function(n) { return { restrict: "E", terminal: !0, compile: function(t, i) { if (i.type == "text/ng-template") { var r = i.id, u = t[0].text; n.put(r, u) } } } }], ty = y("ngOptions"), iy = nt({ terminal: !0 }), ry = ["$compile", "$parse", function(n, e) { var h = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\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]+?))?$/, c = { $setViewValue: o }; return { restrict: "E", require: ["select", "?ngModel"], controller: ["$element", "$scope", "$attrs", function(n, t, i) { var r = this, f = {}, e = c, s, u; r.databound = i.ngModel, r.init = function(n, t, i) { e = n, s = t, u = i }, r.addOption = function(t) { ii(t, '"option value"'), f[t] = !0, e.$viewValue == t && (n.val(t), u.parent() && u.remove()) }, r.removeOption = function(n) { this.hasOption(n) && (delete f[n], e.$viewValue == n && this.renderUnknownOption(n)) }, r.renderUnknownOption = function(t) { var i = "? " + hi(t) + " ?"; u.val(i), n.prepend(u), n.val(i), u.prop("selected", !0) }, r.hasOption = function(n) { return f.hasOwnProperty(n) }, t.$on("$destroy", function() { r.renderUnknownOption = o }) }], link: function(o, c, a, v) { function ft(n, t, i, r) { i.$render = function() { var n = i.$viewValue; r.hasOption(n) ? (b.parent() && b.remove(), t.val(n), n === "" && g.prop("selected", !0)) : l(n) && g ? t.val("") : r.renderUnknownOption(n) }; t.on("change", function() { n.$apply(function() { b.parent() && b.remove(), i.$setViewValue(t.val()) }) }) } function ot(n, t, i) { var u; i.$render = function() { var n = new ur(i.$viewValue); r(t.find("option"), function(t) { t.selected = f(n.get(t.value)) }) }, n.$watch(function() { ni(u, i.$viewValue) || (u = st(i.$viewValue), i.$render()) }); t.on("change", function() { n.$apply(function() { var n = []; r(t.find("option"), function(t) { t.selected && n.push(t.value) }), i.$setViewValue(n) }) }) } function ht(t, r, u) { function k() { var ht = { "": [] }, pt = [""], h, et, n, k, d, c, tt = u.$modelValue, wt = b(t) || [], bt = v ? wf(wt) : wt, ct, dt, yt, ot, i, e = {}, lt, ut = !1, ft, st, at, vt, kt; if (p) if (o && s(tt)) for (ut = new ur([]), vt = 0; vt < tt.length; vt++) e[a] = tt[vt], ut.put(o(t, e), tt[vt]); else ut = new ur(tt); for (i = 0; yt = bt.length, i < yt; i++) { if (ct = i, v) { if (ct = bt[i], ct.charAt(0) === "$") continue; e[v] = ct } e[a] = wt[ct], h = nt(t, e) || "", (et = ht[h]) || (et = ht[h] = [], pt.push(h)), p ? lt = f(ut.remove(o ? o(t, e) : w(t, e))) : (o ? (kt = {}, kt[a] = tt, lt = o(t, kt) === o(t, e)) : lt = tt === w(t, e), ut = ut || lt), at = g(t, e), at = f(at) ? at: "", et.push({ id: o ? o(t, e) : v ? bt[i] : i, label: at, selected: lt }) } for (p || (y || tt === null ? ht[""].unshift({ id: "", label: "", selected: !ut }) : ut || ht[""].unshift({ id: "?", label: "", selected: !0 })), ot = 0, dt = pt.length; ot < dt; ot++) { for (h = pt[ot], et = ht[h], l.length <= ot ? (k = { element: rt.clone().attr("label", h), label: et.label }, d = [k], l.push(d), r.append(k.element)) : (d = l[ot], k = d[0], k.label != h && k.element.attr("label", k.label = h)), ft = null, i = 0, yt = et.length; i < yt; i++) n = et[i], (c = d[i + 1]) ? (ft = c.element, c.label !== n.label && ft.text(c.label = n.label), c.id !== n.id && ft.val(c.id = n.id), c.selected !== n.selected && ft.prop("selected", c.selected = n.selected)) : (n.id === "" && y ? st = y: (st = it.clone()).val(n.id).prop("selected", n.selected).text(n.label), d.push(c = { element: st, label: n.label, id: n.id, selected: n.selected }), ft ? ft.after(st) : k.element.append(st), ft = st); for (i++; d.length > i;) d.pop().element.remove() } while (l.length > ot) l.pop()[0].element.remove() } var c; if (! (c = d.match(h))) throw ty("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", d, et(r)); var g = e(c[2] || c[1]), a = c[4] || c[6], v = c[5], nt = e(c[3] || ""), w = e(c[2] ? c[1] : a), b = e(c[7]), tt = c[8], o = tt ? e(c[8]) : null, l = [[{ element: r, label: "" }]]; y && (n(y)(t), y.removeClass("ng-scope"), y.remove()), r.empty(); r.on("change", function() { t.$apply(function() { var k, h = b(t) || [], n = {}, f, s, d, c, y, g, nt, e; if (p) { for (s = [], y = 0, nt = l.length; y < nt; y++) for (k = l[y], c = 1, g = k.length; c < g; c++) if ((d = k[c].element)[0].selected) { if (f = d.val(), v && (n[v] = f), o) { for (e = 0; e < h.length; e++) if (n[a] = h[e], o(t, n) == f) break } else n[a] = h[f]; s.push(w(t, n)) } } else { if (f = r.val(), f == "?") s = i; else if (f === "") s = null; else if (o) { for (e = 0; e < h.length; e++) if (n[a] = h[e], o(t, n) == f) { s = w(t, n); break } } else n[a] = h[f], v && (n[v] = f), s = w(t, n); l[0].length > 1 && l[0][1].id !== f && (l[0][1].selected = !1) } u.$setViewValue(s) }) }); u.$render = k, t.$watch(k) } if (v[1]) { for (var tt = v[0], w = v[1], p = a.multiple, d = a.ngOptions, y = !1, g, it = u(t.createElement("option")), rt = u(t.createElement("optgroup")), b = it.clone(), k = 0, nt = c.children(), ut = nt.length; k < ut; k++) if (nt[k].value === "") { g = y = nt.eq(k); break } tt.init(w, y, b), p && (w.$isEmpty = function(n) { return ! n || n.length === 0 }), d ? ht(o, c, w) : p ? ot(o, c, w) : ft(o, c, w, tt) } } } }], uy = ["$interpolate", function(n) { var t = { addOption: o, removeOption: o }; return { restrict: "E", priority: 100, compile: function(i, r) { if (l(r.value)) { var u = n(i.text(), !0); u || r.$set("value", i.text()) } return function(n, i, r) { var e = "$selectController", o = i.parent(), f = o.data(e) || o.parent().data(e); f && f.databound ? i.prop("selected", !1) : f = t, u ? n.$watch(u, function(n, t) { r.$set("value", n), n !== t && f.removeOption(t), f.addOption(n) }) : f.addOption(r.value); i.on("$destroy", function() { f.removeOption(r.value) }) } } } }], fy = nt({ restrict: "E", terminal: !0 }); if (n.angular.bootstrap) { console.log("WARNING: Tried to load angular more than once."); return } gs(), th(yi), u(t).ready(function() { ds(t, re) }) })(window, document), window.angular.$$csp() || window.angular.element(document).find("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{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}<\/style>'); (function(n, t) { "use strict"; function g() { this.$get = ["$$sanitizeUri", function(n) { return function(t) { var i = []; return ht(t, k(i, function(t, i) { return ! /^unsafe/.test(n(t, i)) })), i.join("") } }] } function nt(n) { var i = [], r = k(i, t.noop); return r.chars(n), i.join("") } function i(n) { for (var i = {}, r = n.split(","), t = 0; t < r.length; t++) i[r[t]] = !0; return i } function ht(n, i) { function g(n, f, e, o) { if (f = t.lowercase(f), a[f]) while (r.last() && v[r.last()]) w("", r.last()); l[f] && r.last() == f && w("", f), o = s[f] || !!o, o || r.push(f); var h = {}; e.replace(tt, function(n, t, i, r, f) { var e = i || r || f || ""; h[t] = u(e) }), i.start && i.start(f, h, o) } function w(n, u) { var f = 0, e; if (u = t.lowercase(u), u) for (f = r.length - 1; f >= 0; f--) if (r[f] == u) break; if (f >= 0) { for (e = r.length - 1; e >= f; e--) i.end && i.end(r[e]); r.length = f } } var h, p, c, r = [], b = n, k; for (r.last = function() { return r[r.length - 1] }; n;) { if (p = !0, r.last() && y[r.last()] ? (n = n.replace(new RegExp("(.*)<\\s*\\/\\s*" + r.last() + "[^>]*>", "i"), function(n, t) { return t = t.replace(ut, "$1").replace(ft, "$1"), i.chars && i.chars(u(t)), "" }), w("", r.last())) : (n.indexOf("", h) === h && (i.comment && i.comment(n.substring(4, h)), n = n.substring(h + 3), p = !1)) : o.test(n) ? (c = n.match(o), c && (n = n.replace(c[0], ""), p = !1)) : rt.test(n) ? (c = n.match(e), c && (n = n.substring(c[0].length), c[0].replace(e, w), p = !1)) : it.test(n) && (c = n.match(f), c && (n = n.substring(c[0].length), c[0].replace(f, g), p = !1)), p && (h = n.indexOf("<"), k = h < 0 ? n: n.substring(0, h), n = h < 0 ? "": n.substring(h), i.chars && i.chars(u(k)))), n == b) throw d("badparse", "The sanitizer was unable to parse the following block of html: {0}", n); b = n } w() } function u(n) { if (!n) return ""; var i = ct.exec(n), u = i[1], f = i[3], t = i[2]; return t && (r.innerHTML = t.replace(/</g, "<"), t = "textContent" in r ? r.textContent: r.innerText), u + t + f } function b(n) { return n.replace(/&/g, "&").replace(et, function(n) { var t = n.charCodeAt(0), i = n.charCodeAt(1); return "&#" + ((t - 55296) * 1024 + (i - 56320) + 65536) + ";" }).replace(ot, function(n) { return "&#" + n.charCodeAt(0) + ";" }).replace(/</g, "<").replace(/>/g, ">") } function k(n, i) { var u = !1, r = t.bind(n, n.push); return { start: function(n, f, e) { n = t.lowercase(n),  !u && y[n] && (u = n), u || p[n] !== !0 || (r("<"), r(n), t.forEach(f, function(u, f) { var e = t.lowercase(f), o = n === "img" && e === "src" || e === "background"; st[e] === !0 && (w[e] !== !0 || i(u, o)) && (r(" "), r(f), r('="'), r(b(u)), r('"')) }), r(e ? "/>": ">")) }, end: function(n) { n = t.lowercase(n), u || p[n] !== !0 || (r("<\/"), r(n), r(">")), n == u && (u = !1) }, chars: function(n) { u || r(b(n)) } } } var d = t.$$minErr("$sanitize"), f = /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/, e = /^<\s*\/\s*([\w:-]+)[^>]*>/, tt = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g, it = /^</, rt = /^<\s*\//, ut = //g, o = /<!DOCTYPE([^>]*?)>/i, ft = /<!\[CDATA\[(.*?)]]>/g, et = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, ot = /([^\#-~| |!])/g, s = i("area,br,col,hr,img,wbr"), h = i("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), c = i("rp,rt"), l = t.extend({}, c, h), a = t.extend({}, h, i("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,script,section,table,ul")), v = t.extend({}, c, i("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")), y = i("script,style"), p = t.extend({}, s, a, v, l), w = i("background,cite,href,longdesc,src,usemap"), st = t.extend({}, w, i("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,target,title,type,valign,value,vspace,width")), r = document.createElement("pre"), ct = /^(\s*)([\s\S]*?)(\s*)$/; t.module("ngSanitize", []).provider("$sanitize", g), t.module("ngSanitize").filter("linky", ["$sanitize", function(n) { var i = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/, r = /^mailto:/; return function(u, f) { function l(n) { n && e.push(nt(n)) } function a(n, i) { e.push("<a "), t.isDefined(f) && (e.push('target="'), e.push(f), e.push('" ')), e.push('href="'), e.push(n), e.push('">'), l(i), e.push("<\/a>") } if (!u) return u; for (var o, s = u, e = [], h, c; o = s.match(i);) h = o[0], o[2] == o[3] && (h = "mailto:" + h), c = o.index, l(s.substr(0, c)), a(h, o[0].replace(r, "")), s = s.substring(c + o[0].length); return l(s), n(e.join("")) } }]) })(window, window.angular), angular.module("fivb.directives", ["ngSanitize"]), angular.module("fivb.directives").directive("newsbox", ["apiService", function(n) { return { restrict: "C", scope: !0, link: function(t, i, r) { t.loading = !0, n.getNews(function(n) { function u(n) { return n !== undefined && n != "" ? (n = n.replace("_w_", i[0].offsetWidth), n.replace("_h_", i[0].offsetHeight)) : r.bgfallback } t.loading = !1, t.newsitem = n[0], t.newsitem === undefined && angular.element(i).addClass("hidden"), t.backgroundImage = { "background-image": "url(" + u(t.newsitem.PictureUrl) + ")" }, t.$watch(function() { t.newsitem && angular.element(window).triggerHandler("resize") }) }, r.servicenews) } } }]), angular.module("fivb.directives").directive("newsListBox", function() { return { restrict: "C", controller: ["$scope", "$attrs", "apiService", function(n, t, i) { n.loading = !0, i.getNews(function(t) { n.loading = !1, n.news = t }, t.servicenews) }] } }), angular.module("fivb.directives").directive("twitterBlock", ["apiService", function(n) { return { restrict: "C", scope: !0, controller: ["$scope", "$attrs", "$sce", function(n, t, i) { n.parseHtml = function(n) { return i.trustAsHtml(n) } }], link: function(t, i, r) { t.loading = !0, n.getTwitter(function(n) { t.loading = !1, t.tweets = n }, r.servicetwitter) } } }]), angular.module("fivb.services", []), angular.module("fivb.services").factory("apiService", ["$http", function(n) { return { getNews: function(t, i) { var r = n.get(i); t && r.success(t), r.error(function() { console.log("Oops! Something went wrong. Please reload the page") }) }, getTwitter: function(t, i) { var r = n.get(i); t && r.success(t), r.error(function() { console.log("Oops! Something went wrong. Please reload the page") }) } } }]); var fivb_app = angular.module("fivb", ["fivb.services", "fivb.directives"])