/**
 * Bootstrap.js by @fat & @mdo
 * plugins: bootstrap-transition.js, bootstrap-tooltip.js, bootstrap-popover.js
 * Copyright 2013 Twitter, Inc.
 * http://www.apache.org/licenses/LICENSE-2.0.txt
 */
!(function (a) {
  a(function () {
    a.support.transition = (function () {
      var a = (function () {
        var a = document.createElement("bootstrap"),
          b = { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend" },
          c;
        for (c in b) if (a.style[c] !== undefined) return b[c];
      })();
      return a && { end: a };
    })();
  });
})(window.jQuery),
  !(function (a) {
    var b = function (a, b) {
      this.init("tooltip", a, b);
    };
    b.prototype = {
      constructor: b,
      init: function (b, c, d) {
        var e, f, g, h, i;
        (this.type = b), (this.$element = a(c)), (this.options = this.getOptions(d)), (this.enabled = !0), (g = this.options.trigger.split(" "));
        for (i = g.length; i--; )
          (h = g[i]),
            h == "click"
              ? this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this))
              : h != "manual" &&
                ((e = h == "hover" ? "mouseenter" : "focus"), (f = h == "hover" ? "mouseleave" : "blur"), this.$element.on(e + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(f + "." + this.type, this.options.selector, a.proxy(this.leave, this)));
        this.options.selector ? (this._options = a.extend({}, this.options, { trigger: "manual", selector: "" })) : this.fixTitle();
      },
      getOptions: function (b) {
        return (b = a.extend({}, a.fn[this.type].defaults, this.$element.data(), b)), b.delay && typeof b.delay == "number" && (b.delay = { show: b.delay, hide: b.delay }), b;
      },
      enter: function (b) {
        var c = a.fn[this.type].defaults,
          d = {},
          e;
        this._options &&
          a.each(
            this._options,
            function (a, b) {
              c[a] != b && (d[a] = b);
            },
            this
          ),
          (e = a(b.currentTarget)[this.type](d).data(this.type));
        if (!e.options.delay || !e.options.delay.show) return e.show();
        clearTimeout(this.timeout),
          (e.hoverState = "in"),
          (this.timeout = setTimeout(function () {
            e.hoverState == "in" && e.show();
          }, e.options.delay.show));
      },
      leave: function (b) {
        var c = a(b.currentTarget)[this.type](this._options).data(this.type);
        this.timeout && clearTimeout(this.timeout);
        if (!c.options.delay || !c.options.delay.hide) return c.hide();
        (c.hoverState = "out"),
          (this.timeout = setTimeout(function () {
            c.hoverState == "out" && c.hide();
          }, c.options.delay.hide));
      },
      show: function () {
        var b,
          c,
          d,
          e,
          f,
          g,
          h = a.Event("show");
        if (this.hasContent() && this.enabled) {
          this.$element.trigger(h);
          if (h.isDefaultPrevented()) return;
          (b = this.tip()),
            this.setContent(),
            this.options.animation && b.addClass("fade"),
            (f = typeof this.options.placement == "function" ? this.options.placement.call(this, b[0], this.$element[0]) : this.options.placement),
            b.detach().css({ top: 0, left: 0, display: "block" }),
            this.options.container ? b.appendTo(this.options.container) : b.insertAfter(this.$element),
            (c = this.getPosition()),
            (d = b[0].offsetWidth),
            (e = b[0].offsetHeight);
          switch (f) {
            case "bottom":
              g = { top: c.top + c.height, left: c.left + c.width / 2 - d / 2 };
              break;
            case "top":
              g = { top: c.top - e, left: c.left + c.width / 2 - d / 2 };
              break;
            case "left":
              g = { top: c.top + c.height / 2 - e / 2, left: c.left - d };
              break;
            case "right":
              g = { top: c.top + c.height / 2 - e / 2, left: c.left + c.width };
          }
          this.applyPlacement(g, f), this.$element.trigger("shown");
        }
      },
      applyPlacement: function (a, b) {
        var c = this.tip(),
          d = c[0].offsetWidth,
          e = c[0].offsetHeight,
          f,
          g,
          h,
          i;
        c.offset(a).addClass(b).addClass("in"),
          (f = c[0].offsetWidth),
          (g = c[0].offsetHeight),
          b == "top" && g != e && ((a.top = a.top + e - g), (i = !0)),
          b == "bottom" || b == "top" ? ((h = 0), a.left < 0 && ((h = a.left * -2), (a.left = 0), c.offset(a), (f = c[0].offsetWidth), (g = c[0].offsetHeight)), this.replaceArrow(h - d + f, f, "left")) : this.replaceArrow(g - e, g, "top"),
          i && c.offset(a);
      },
      replaceArrow: function (a, b, c) {
        this.arrow().css(c, a ? 50 * (1 - a / b) + "%" : "");
      },
      setContent: function () {
        var a = this.tip(),
          b = this.getTitle();
        a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right");
      },
      hide: function () {
        function e() {
          var b = setTimeout(function () {
            c.off(a.support.transition.end).detach();
          }, 500);
          c.one(a.support.transition.end, function () {
            clearTimeout(b), c.detach();
          });
        }
        var b = this,
          c = this.tip(),
          d = a.Event("hide");
        this.$element.trigger(d);
        if (d.isDefaultPrevented()) return;
        return c.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? e() : c.detach(), this.$element.trigger("hidden"), this;
      },
      fixTitle: function () {
        var a = this.$element;
        (a.attr("title") || typeof a.attr("title") != "string") && a.attr("title", a.attr("title") || "").attr("title", "");
      },
      hasContent: function () {
        return this.getTitle();
      },
      getPosition: function () {
        var b = this.$element[0];
        return a.extend({}, typeof b.getBoundingClientRect == "function" ? b.getBoundingClientRect() : { width: b.offsetWidth, height: b.offsetHeight }, this.$element.offset());
      },
      getTitle: function () {
        var a,
          b = this.$element,
          c = this.options;
        return (a = b.attr("title") || (typeof c.title == "function" ? c.title.call(b[0]) : c.title)), a;
      },
      tip: function () {
        return (this.$tip = this.$tip || a(this.options.template));
      },
      arrow: function () {
        return (this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow"));
      },
      validate: function () {
        this.$element[0].parentNode || (this.hide(), (this.$element = null), (this.options = null));
      },
      enable: function () {
        this.enabled = !0;
      },
      disable: function () {
        this.enabled = !1;
      },
      toggleEnabled: function () {
        this.enabled = !this.enabled;
      },
      toggle: function (b) {
        var c = b ? a(b.currentTarget)[this.type](this._options).data(this.type) : this;
        c.tip().hasClass("in") ? c.hide() : c.show();
      },
      destroy: function () {
        this.hide()
          .$element.off("." + this.type)
          .removeData(this.type);
      },
    };
    var c = a.fn.tooltip;
    (a.fn.tooltip = function (c) {
      return this.each(function () {
        var d = a(this),
          e = d.data("tooltip"),
          f = typeof c == "object" && c;
        e || d.data("tooltip", (e = new b(this, f))), typeof c == "string" && e[c]();
      });
    }),
      (a.fn.tooltip.Constructor = b),
      (a.fn.tooltip.defaults = { animation: !0, placement: "top", selector: !1, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, container: !1 }),
      (a.fn.tooltip.noConflict = function () {
        return (a.fn.tooltip = c), this;
      });
  })(window.jQuery),
  !(function (a) {
    var b = function (a, b) {
      this.init("popover", a, b);
    };
    b.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype, {
      constructor: b,
      setContent: function () {
        var a = this.tip(),
          b = this.getTitle(),
          c = this.getContent();
        a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content")[this.options.html ? "html" : "text"](c), a.removeClass("fade top bottom left right in");
      },
      hasContent: function () {
        return this.getTitle() || this.getContent();
      },
      getContent: function () {
        var a,
          b = this.$element,
          c = this.options;
        return (a = (typeof c.content == "function" ? c.content.call(b[0]) : c.content) || b.attr("data-content")), a;
      },
      tip: function () {
        return this.$tip || (this.$tip = a(this.options.template)), this.$tip;
      },
      destroy: function () {
        this.hide()
          .$element.off("." + this.type)
          .removeData(this.type);
      },
    });
    var c = a.fn.popover;
    (a.fn.popover = function (c) {
      return this.each(function () {
        var d = a(this),
          e = d.data("popover"),
          f = typeof c == "object" && c;
        e || d.data("popover", (e = new b(this, f))), typeof c == "string" && e[c]();
      });
    }),
      (a.fn.popover.Constructor = b),
      (a.fn.popover.defaults = a.extend({}, a.fn.tooltip.defaults, { placement: "right", trigger: "click", content: "", template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' })),
      (a.fn.popover.noConflict = function () {
        return (a.fn.popover = c), this;
      });
  })(window.jQuery);
