Вход Регистрация
Файл: style/js/bootstrap.js
Строк: 3225
<?php
/*!
 * Bootstrap v4.0.0-alpha (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */

if (typeof jQuery === 'undefined') {
  throw new 
Error('Bootstrap's JavaScript requires jQuery')
}

+function ($) {
  var version = $.fn.jquery.split(' ')[0].split('
.')
  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
    throw new Error('
Bootstrap's JavaScript requires jQuery version 1.9.1 or higher')
  }
}(
jQuery);


+function ($) {

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): util.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

'use strict';

var 
_get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };

var 
_createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

function 
_inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

function 
_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

var 
Util = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Private TransitionEnd Helpers
   * ------------------------------------------------------------------------
   */

  
var transition = false;

  var 
TransitionEndEvent = {
    
WebkitTransition: 'webkitTransitionEnd',
    
MozTransition: 'transitionend',
    
OTransition: 'oTransitionEnd otransitionend',
    
transition: 'transitionend'
  
};

  
// shoutout AngusCroll (https://goo.gl/pxwQGp)
  
function toType(obj) {
    return ({}).
toString.call(obj).match(/s([a-zA-Z]+)/)[1].toLowerCase();
  }

  function 
isElement(obj) {
    return (
obj[0] || obj).nodeType;
  }

  function 
getSpecialTransitionEndEvent() {
    return {
      
bindType: transition.end,
      
delegateType: transition.end,
      
handle: function handle(event) {
        if ($(
event.target).is(this)) {
          return 
event.handleObj.handler.apply(this, arguments);
        }
      }
    };
  }

  function 
transitionEndTest() {
    if (
window.QUnit) {
      return 
false;
    }

    var 
el = document.createElement('bootstrap');

    for (var 
_name in TransitionEndEvent) {
      if (
el.style[_name] !== undefined) {
        return { 
end: TransitionEndEvent[_name] };
      }
    }

    return 
false;
  }

  function 
transitionEndEmulator(duration) {
    var 
_this = this;

    var 
called = false;

    $(
this).one(Util.TRANSITION_END, function () {
      
called = true;
    });

    
setTimeout(function () {
      if (!
called) {
        
Util.triggerTransitionEnd(_this);
      }
    }, 
duration);

    return 
this;
  }

  function 
setTransitionEndSupport() {
    
transition = transitionEndTest();

    $.
fn.emulateTransitionEnd = transitionEndEmulator;

    if (
Util.supportsTransitionEnd()) {
      $.
event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
    }
  }

  
/**
   * --------------------------------------------------------------------------
   * Public Util Api
   * --------------------------------------------------------------------------
   */

  
var Util = {

    
TRANSITION_END: 'bsTransitionEnd',

    
getUID: function getUID(prefix) {
      do {
        
prefix += ~ ~(Math.random() * 1000000);
      } while (
document.getElementById(prefix));
      return 
prefix;
    },

    
getSelectorFromElement: function getSelectorFromElement(element) {
      var 
selector = element.getAttribute('data-target');

      if (!
selector) {
        
selector = element.getAttribute('href') || '';
        
selector = /^#[a-z]/i.test(selector) ? selector : null;
      
}

      return 
selector;
    },

    
reflow: function reflow(element) {
      new Function(
'bs', 'return bs')(element.offsetHeight);
    },

    
triggerTransitionEnd: function triggerTransitionEnd(element) {
      $(
element).trigger(transition.end);
    },

    
supportsTransitionEnd: function supportsTransitionEnd() {
      return 
Boolean(transition);
    },

    
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
      for (var 
property in configTypes) {
        if (
configTypes.hasOwnProperty(property)) {
          var 
expectedTypes = configTypes[property];
          var 
value = config[property];
          var 
valueType = undefined;

          if (
value && isElement(value)) {
            
valueType = 'element';
          } else {
            
valueType = toType(value);
          }

          if (!new 
RegExp(expectedTypes).test(valueType)) {
            throw new 
Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
          }
        }
      }
    }
  };

  
setTransitionEndSupport();

  return 
Util;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): alert.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Alert = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'alert';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.alert';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION = 150;

  var 
Selector = {
    
DISMISS: '[data-dismiss="alert"]'
  
};

  var 
Event = {
    
CLOSE: 'close' + EVENT_KEY,
    
CLOSED: 'closed' + EVENT_KEY,
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
ALERT: 'alert',
    
FADE: 'fade',
    
IN: 'in'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Alert = (function () {
    function 
Alert(element) {
      
_classCallCheck(this, Alert);

      
this._element = element;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Alert, [{
      
key: 'close',

      
// public

      
value: function close(element) {
        
element = element || this._element;

        var 
rootElement = this._getRootElement(element);
        var 
customEvent = this._triggerCloseEvent(rootElement);

        if (
customEvent.isDefaultPrevented()) {
          return;
        }

        
this._removeElement(rootElement);
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeData(this._element, DATA_KEY);
        
this._element = null;
      }

      
// private

    
}, {
      
key: '_getRootElement',
      
value: function _getRootElement(element) {
        var 
selector = Util.getSelectorFromElement(element);
        var 
parent = false;

        if (
selector) {
          
parent = $(selector)[0];
        }

        if (!
parent) {
          
parent = $(element).closest('.' + ClassName.ALERT)[0];
        }

        return 
parent;
      }
    }, {
      
key: '_triggerCloseEvent',
      
value: function _triggerCloseEvent(element) {
        var 
closeEvent = $.Event(Event.CLOSE);

        $(
element).trigger(closeEvent);
        return 
closeEvent;
      }
    }, {
      
key: '_removeElement',
      
value: function _removeElement(element) {
        $(
element).removeClass(ClassName.IN);

        if (!
Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
          
this._destroyElement(element);
          return;
        }

        $(
element).one(Util.TRANSITION_END, $.proxy(this._destroyElement, this, element)).emulateTransitionEnd(TRANSITION_DURATION);
      }
    }, {
      
key: '_destroyElement',
      
value: function _destroyElement(element) {
        $(
element).detach().trigger(Event.CLOSED).remove();
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
$element = $(this);
          var 
data = $element.data(DATA_KEY);

          if (!
data) {
            
data = new Alert(this);
            
$element.data(DATA_KEY, data);
          }

          if (
config === 'close') {
            
data[config](this);
          }
        });
      }
    }, {
      
key: '_handleDismiss',
      
value: function _handleDismiss(alertInstance) {
        return function (
event) {
          if (
event) {
            
event.preventDefault();
          }

          
alertInstance.close(this);
        };
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Alert;
  })();

  $(
document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Alert._jQueryInterface;
  $.
fn[NAME].Constructor = Alert;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Alert._jQueryInterface;
  };

  return 
Alert;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): button.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Button = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'button';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.button';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var 
ClassName = {
    
ACTIVE: 'active',
    
BUTTON: 'btn',
    
FOCUS: 'focus'
  
};

  var 
Selector = {
    
DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
    
DATA_TOGGLE: '[data-toggle="buttons"]',
    
INPUT: 'input',
    
ACTIVE: '.active',
    
BUTTON: '.btn'
  
};

  var 
Event = {
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
    
FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY)
  };

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Button = (function () {
    function 
Button(element) {
      
_classCallCheck(this, Button);

      
this._element = element;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Button, [{
      
key: 'toggle',

      
// public

      
value: function toggle() {
        var 
triggerChangeEvent = true;
        var 
rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];

        if (
rootElement) {
          var 
input = $(this._element).find(Selector.INPUT)[0];

          if (
input) {
            if (
input.type === 'radio') {
              if (
input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
                
triggerChangeEvent = false;
              } else {
                var 
activeElement = $(rootElement).find(Selector.ACTIVE)[0];

                if (
activeElement) {
                  $(
activeElement).removeClass(ClassName.ACTIVE);
                }
              }
            }

            if (
triggerChangeEvent) {
              
input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
              $(
this._element).trigger('change');
            }
          }
        } else {
          
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
        }

        if (
triggerChangeEvent) {
          $(
this._element).toggleClass(ClassName.ACTIVE);
        }
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeData(this._element, DATA_KEY);
        
this._element = null;
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);

          if (!
data) {
            
data = new Button(this);
            $(
this).data(DATA_KEY, data);
          }

          if (
config === 'toggle') {
            
data[config]();
          }
        });
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Button;
  })();

  $(
document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
    
event.preventDefault();

    var 
button = event.target;

    if (!$(
button).hasClass(ClassName.BUTTON)) {
      
button = $(button).closest(Selector.BUTTON);
    }

    
Button._jQueryInterface.call($(button), 'toggle');
  }).
on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
    var 
button = $(event.target).closest(Selector.BUTTON)[0];
    $(
button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Button._jQueryInterface;
  $.
fn[NAME].Constructor = Button;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Button._jQueryInterface;
  };

  return 
Button;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): carousel.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Carousel = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'carousel';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.carousel';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION = 600;

  var Default = {
    
interval: 5000,
    
keyboard: true,
    
slide: false,
    
pause: 'hover',
    
wrap: true
  
};

  var 
DefaultType = {
    
interval: '(number|boolean)',
    
keyboard: 'boolean',
    
slide: '(boolean|string)',
    
pause: '(string|boolean)',
    
wrap: 'boolean'
  
};

  var 
Direction = {
    
NEXT: 'next',
    
PREVIOUS: 'prev'
  
};

  var 
Event = {
    
SLIDE: 'slide' + EVENT_KEY,
    
SLID: 'slid' + EVENT_KEY,
    
KEYDOWN: 'keydown' + EVENT_KEY,
    
MOUSEENTER: 'mouseenter' + EVENT_KEY,
    
MOUSELEAVE: 'mouseleave' + EVENT_KEY,
    
LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY,
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
CAROUSEL: 'carousel',
    
ACTIVE: 'active',
    
SLIDE: 'slide',
    
RIGHT: 'right',
    
LEFT: 'left',
    
ITEM: 'carousel-item'
  
};

  var 
Selector = {
    
ACTIVE: '.active',
    
ACTIVE_ITEM: '.active.carousel-item',
    
ITEM: '.carousel-item',
    
NEXT_PREV: '.next, .prev',
    
INDICATORS: '.carousel-indicators',
    
DATA_SLIDE: '[data-slide], [data-slide-to]',
    
DATA_RIDE: '[data-ride="carousel"]'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Carousel = (function () {
    function 
Carousel(element, config) {
      
_classCallCheck(this, Carousel);

      
this._items = null;
      
this._interval = null;
      
this._activeElement = null;

      
this._isPaused = false;
      
this._isSliding = false;

      
this._config = this._getConfig(config);
      
this._element = $(element)[0];
      
this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];

      
this._addEventListeners();
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Carousel, [{
      
key: 'next',

      
// public

      
value: function next() {
        if (!
this._isSliding) {
          
this._slide(Direction.NEXT);
        }
      }
    }, {
      
key: 'prev',
      
value: function prev() {
        if (!
this._isSliding) {
          
this._slide(Direction.PREVIOUS);
        }
      }
    }, {
      
key: 'pause',
      
value: function pause(event) {
        if (!
event) {
          
this._isPaused = true;
        }

        if ($(
this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
          
Util.triggerTransitionEnd(this._element);
          
this.cycle(true);
        }

        
clearInterval(this._interval);
        
this._interval = null;
      }
    }, {
      
key: 'cycle',
      
value: function cycle(event) {
        if (!
event) {
          
this._isPaused = false;
        }

        if (
this._interval) {
          
clearInterval(this._interval);
          
this._interval = null;
        }

        if (
this._config.interval && !this._isPaused) {
          
this._interval = setInterval($.proxy(this.next, this), this._config.interval);
        }
      }
    }, {
      
key: 'to',
      
value: function to(index) {
        var 
_this2 = this;

        
this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];

        var 
activeIndex = this._getItemIndex(this._activeElement);

        if (
index > this._items.length - 1 || index < 0) {
          return;
        }

        if (
this._isSliding) {
          $(
this._element).one(Event.SLID, function () {
            return 
_this2.to(index);
          });
          return;
        }

        if (
activeIndex === index) {
          
this.pause();
          
this.cycle();
          return;
        }

        var 
direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS;

        
this._slide(direction, this._items[index]);
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $(
this._element).off(EVENT_KEY);
        $.
removeData(this._element, DATA_KEY);

        
this._items = null;
        
this._config = null;
        
this._element = null;
        
this._interval = null;
        
this._isPaused = null;
        
this._isSliding = null;
        
this._activeElement = null;
        
this._indicatorsElement = null;
      }

      
// private

    
}, {
      
key: '_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);
        
Util.typeCheckConfig(NAME, config, DefaultType);
        return 
config;
      }
    }, {
      
key: '_addEventListeners',
      
value: function _addEventListeners() {
        if (
this._config.keyboard) {
          $(
this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this));
        }

        if (
this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) {
          $(
this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this));
        }
      }
    }, {
      
key: '_keydown',
      
value: function _keydown(event) {
        
event.preventDefault();

        if (/
input|textarea/i.test(event.target.tagName)) {
          return;
        }

        switch (
event.which) {
          case 
37:
            
this.prev();break;
          case 
39:
            
this.next();break;
          default:
            return;
        }
      }
    }, {
      
key: '_getItemIndex',
      
value: function _getItemIndex(element) {
        
this._items = $.makeArray($(element).parent().find(Selector.ITEM));
        return 
this._items.indexOf(element);
      }
    }, {
      
key: '_getItemByDirection',
      
value: function _getItemByDirection(direction, activeElement) {
        var 
isNextDirection = direction === Direction.NEXT;
        var 
isPrevDirection = direction === Direction.PREVIOUS;
        var 
activeIndex = this._getItemIndex(activeElement);
        var 
lastItemIndex = this._items.length - 1;
        var 
isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;

        if (
isGoingToWrap && !this._config.wrap) {
          return 
activeElement;
        }

        var 
delta = direction === Direction.PREVIOUS ? -1 : 1;
        var 
itemIndex = (activeIndex + delta) % this._items.length;

        return 
itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
      }
    }, {
      
key: '_triggerSlideEvent',
      
value: function _triggerSlideEvent(relatedTarget, directionalClassname) {
        var 
slideEvent = $.Event(Event.SLIDE, {
          
relatedTarget: relatedTarget,
          
direction: directionalClassname
        
});

        $(
this._element).trigger(slideEvent);

        return 
slideEvent;
      }
    }, {
      
key: '_setActiveIndicatorElement',
      
value: function _setActiveIndicatorElement(element) {
        if (
this._indicatorsElement) {
          $(
this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);

          var 
nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];

          if (
nextIndicator) {
            $(
nextIndicator).addClass(ClassName.ACTIVE);
          }
        }
      }
    }, {
      
key: '_slide',
      
value: function _slide(direction, element) {
        var 
_this3 = this;

        var 
activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
        var 
nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);

        var 
isCycling = Boolean(this._interval);

        var 
directionalClassName = direction === Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT;

        if (
nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
          
this._isSliding = false;
          return;
        }

        var 
slideEvent = this._triggerSlideEvent(nextElement, directionalClassName);
        if (
slideEvent.isDefaultPrevented()) {
          return;
        }

        if (!
activeElement || !nextElement) {
          
// some weirdness is happening, so we bail
          
return;
        }

        
this._isSliding = true;

        if (
isCycling) {
          
this.pause();
        }

        
this._setActiveIndicatorElement(nextElement);

        var 
slidEvent = $.Event(Event.SLID, {
          
relatedTarget: nextElement,
          
direction: directionalClassName
        
});

        if (
Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {

          $(
nextElement).addClass(direction);

          
Util.reflow(nextElement);

          $(
activeElement).addClass(directionalClassName);
          $(
nextElement).addClass(directionalClassName);

          $(
activeElement).one(Util.TRANSITION_END, function () {
            $(
nextElement).removeClass(directionalClassName).removeClass(direction);

            $(
nextElement).addClass(ClassName.ACTIVE);

            $(
activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName);

            
_this3._isSliding = false;

            
setTimeout(function () {
              return $(
_this3._element).trigger(slidEvent);
            }, 
0);
          }).
emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          $(
activeElement).removeClass(ClassName.ACTIVE);
          $(
nextElement).addClass(ClassName.ACTIVE);

          
this._isSliding = false;
          $(
this._element).trigger(slidEvent);
        }

        if (
isCycling) {
          
this.cycle();
        }
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = $.extend({}, Default, $(this).data());

          if (
typeof config === 'object') {
            $.
extend(_config, config);
          }

          var 
action = typeof config === 'string' ? config : _config.slide;

          if (!
data) {
            
data = new Carousel(this, _config);
            $(
this).data(DATA_KEY, data);
          }

          if (
typeof config === 'number') {
            
data.to(config);
          } else if (
action) {
            
data[action]();
          } else if (
_config.interval) {
            
data.pause();
            
data.cycle();
          }
        });
      }
    }, {
      
key: '_dataApiClickHandler',
      
value: function _dataApiClickHandler(event) {
        var 
selector = Util.getSelectorFromElement(this);

        if (!
selector) {
          return;
        }

        var 
target = $(selector)[0];

        if (!
target || !$(target).hasClass(ClassName.CAROUSEL)) {
          return;
        }

        var 
config = $.extend({}, $(target).data(), $(this).data());
        var 
slideIndex = this.getAttribute('data-slide-to');

        if (
slideIndex) {
          
config.interval = false;
        }

        
Carousel._jQueryInterface.call($(target), config);

        if (
slideIndex) {
          $(
target).data(DATA_KEY).to(slideIndex);
        }

        
event.preventDefault();
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key: 'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
Carousel;
  })();

  $(
document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);

  $(
window).on(Event.LOAD_DATA_API, function () {
    $(
Selector.DATA_RIDE).each(function () {
      var 
$carousel = $(this);
      
Carousel._jQueryInterface.call($carousel, $carousel.data());
    });
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Carousel._jQueryInterface;
  $.
fn[NAME].Constructor = Carousel;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Carousel._jQueryInterface;
  };

  return 
Carousel;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): collapse.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Collapse = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'collapse';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.collapse';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION = 600;

  var Default = {
    
toggle: true,
    
parent: ''
  
};

  var 
DefaultType = {
    
toggle: 'boolean',
    
parent: 'string'
  
};

  var 
Event = {
    
SHOW: 'show' + EVENT_KEY,
    
SHOWN: 'shown' + EVENT_KEY,
    
HIDE: 'hide' + EVENT_KEY,
    
HIDDEN: 'hidden' + EVENT_KEY,
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
IN: 'in',
    
COLLAPSE: 'collapse',
    
COLLAPSING: 'collapsing',
    
COLLAPSED: 'collapsed'
  
};

  var 
Dimension = {
    
WIDTH: 'width',
    
HEIGHT: 'height'
  
};

  var 
Selector = {
    
ACTIVES: '.panel > .in, .panel > .collapsing',
    
DATA_TOGGLE: '[data-toggle="collapse"]'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Collapse = (function () {
    function 
Collapse(element, config) {
      
_classCallCheck(this, Collapse);

      
this._isTransitioning = false;
      
this._element = element;
      
this._config = this._getConfig(config);
      
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));

      
this._parent = this._config.parent ? this._getParent() : null;

      if (!
this._config.parent) {
        
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
      }

      if (
this._config.toggle) {
        
this.toggle();
      }
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Collapse, [{
      
key: 'toggle',

      
// public

      
value: function toggle() {
        if ($(
this._element).hasClass(ClassName.IN)) {
          
this.hide();
        } else {
          
this.show();
        }
      }
    }, {
      
key: 'show',
      
value: function show() {
        var 
_this4 = this;

        if (
this._isTransitioning || $(this._element).hasClass(ClassName.IN)) {
          return;
        }

        var 
actives = undefined;
        var 
activesData = undefined;

        if (
this._parent) {
          
actives = $.makeArray($(Selector.ACTIVES));
          if (!
actives.length) {
            
actives = null;
          }
        }

        if (
actives) {
          
activesData = $(actives).data(DATA_KEY);
          if (
activesData && activesData._isTransitioning) {
            return;
          }
        }

        var 
startEvent = $.Event(Event.SHOW);
        $(
this._element).trigger(startEvent);
        if (
startEvent.isDefaultPrevented()) {
          return;
        }

        if (
actives) {
          
Collapse._jQueryInterface.call($(actives), 'hide');
          if (!
activesData) {
            $(
actives).data(DATA_KEY, null);
          }
        }

        var 
dimension = this._getDimension();

        $(
this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);

        
this._element.style[dimension] = 0;
        
this._element.setAttribute('aria-expanded', true);

        if (
this._triggerArray.length) {
          $(
this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
        }

        
this.setTransitioning(true);

        var 
complete = function complete() {
          $(
_this4._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN);

          
_this4._element.style[dimension] = '';

          
_this4.setTransitioning(false);

          $(
_this4._element).trigger(Event.SHOWN);
        };

        if (!
Util.supportsTransitionEnd()) {
          
complete();
          return;
        }

        var 
capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
        var 
scrollSize = 'scroll' + capitalizedDimension;

        $(
this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);

        
this._element.style[dimension] = this._element[scrollSize] + 'px';
      }
    }, {
      
key: 'hide',
      
value: function hide() {
        var 
_this5 = this;

        if (
this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) {
          return;
        }

        var 
startEvent = $.Event(Event.HIDE);
        $(
this._element).trigger(startEvent);
        if (
startEvent.isDefaultPrevented()) {
          return;
        }

        var 
dimension = this._getDimension();
        var 
offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight';

        
this._element.style[dimension] = this._element[offsetDimension] + 'px';

        
Util.reflow(this._element);

        $(
this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN);

        
this._element.setAttribute('aria-expanded', false);

        if (
this._triggerArray.length) {
          $(
this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
        }

        
this.setTransitioning(true);

        var 
complete = function complete() {
          
_this5.setTransitioning(false);
          $(
_this5._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
        };

        
this._element.style[dimension] = 0;

        if (!
Util.supportsTransitionEnd()) {
          
complete();
          return;
        }

        $(
this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
      }
    }, {
      
key: 'setTransitioning',
      
value: function setTransitioning(isTransitioning) {
        
this._isTransitioning = isTransitioning;
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeData(this._element, DATA_KEY);

        
this._config = null;
        
this._parent = null;
        
this._element = null;
        
this._triggerArray = null;
        
this._isTransitioning = null;
      }

      
// private

    
}, {
      
key: '_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);
        
config.toggle = Boolean(config.toggle); // coerce string values
        
Util.typeCheckConfig(NAME, config, DefaultType);
        return 
config;
      }
    }, {
      
key: '_getDimension',
      
value: function _getDimension() {
        var 
hasWidth = $(this._element).hasClass(Dimension.WIDTH);
        return 
hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
      }
    }, {
      
key: '_getParent',
      
value: function _getParent() {
        var 
_this6 = this;

        var 
parent = $(this._config.parent)[0];
        var 
selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';

        $(
parent).find(selector).each(function (i, element) {
          
_this6._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
        });

        return 
parent;
      }
    }, {
      
key: '_addAriaAndCollapsedClass',
      
value: function _addAriaAndCollapsedClass(element, triggerArray) {
        if (
element) {
          var 
isOpen = $(element).hasClass(ClassName.IN);
          
element.setAttribute('aria-expanded', isOpen);

          if (
triggerArray.length) {
            $(
triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
          }
        }
      }

      
// static

    
}], [{
      
key: '_getTargetFromElement',
      
value: function _getTargetFromElement(element) {
        var 
selector = Util.getSelectorFromElement(element);
        return 
selector ? $(selector)[0] : null;
      }
    }, {
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
$this = $(this);
          var 
data = $this.data(DATA_KEY);
          var 
_config = $.extend({}, Default, $this.data(), typeof config === 'object' && config);

          if (!
data && _config.toggle && /show|hide/.test(config)) {
            
_config.toggle = false;
          }

          if (!
data) {
            
data = new Collapse(this, _config);
            
$this.data(DATA_KEY, data);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key: 'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
Collapse;
  })();

  $(
document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
    
event.preventDefault();

    var 
target = Collapse._getTargetFromElement(this);
    var 
data = $(target).data(DATA_KEY);
    var 
config = data ? 'toggle' : $(this).data();

    
Collapse._jQueryInterface.call($(target), config);
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Collapse._jQueryInterface;
  $.
fn[NAME].Constructor = Collapse;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Collapse._jQueryInterface;
  };

  return 
Collapse;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): dropdown.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Dropdown = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'dropdown';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.dropdown';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var 
Event = {
    
HIDE: 'hide' + EVENT_KEY,
    
HIDDEN: 'hidden' + EVENT_KEY,
    
SHOW: 'show' + EVENT_KEY,
    
SHOWN: 'shown' + EVENT_KEY,
    
CLICK: 'click' + EVENT_KEY,
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
    
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
BACKDROP: 'dropdown-backdrop',
    
DISABLED: 'disabled',
    
OPEN: 'open'
  
};

  var 
Selector = {
    
BACKDROP: '.dropdown-backdrop',
    
DATA_TOGGLE: '[data-toggle="dropdown"]',
    
FORM_CHILD: '.dropdown form',
    
ROLE_MENU: '[role="menu"]',
    
ROLE_LISTBOX: '[role="listbox"]',
    
NAVBAR_NAV: '.navbar-nav',
    
VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Dropdown = (function () {
    function 
Dropdown(element) {
      
_classCallCheck(this, Dropdown);

      
this._element = element;

      
this._addEventListeners();
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Dropdown, [{
      
key: 'toggle',

      
// public

      
value: function toggle() {
        if (
this.disabled || $(this).hasClass(ClassName.DISABLED)) {
          return 
false;
        }

        var 
parent = Dropdown._getParentFromElement(this);
        var 
isActive = $(parent).hasClass(ClassName.OPEN);

        
Dropdown._clearMenus();

        if (
isActive) {
          return 
false;
        }

        if (
'ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {

          
// if mobile we use a backdrop because click events don't delegate
          
var dropdown = document.createElement('div');
          
dropdown.className = ClassName.BACKDROP;
          $(
dropdown).insertBefore(this);
          $(
dropdown).on('click', Dropdown._clearMenus);
        }

        var 
relatedTarget = { relatedTarget: this };
        var 
showEvent = $.Event(Event.SHOW, relatedTarget);

        $(
parent).trigger(showEvent);

        if (
showEvent.isDefaultPrevented()) {
          return 
false;
        }

        
this.focus();
        
this.setAttribute('aria-expanded', 'true');

        $(
parent).toggleClass(ClassName.OPEN);
        $(
parent).trigger($.Event(Event.SHOWN, relatedTarget));

        return 
false;
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeData(this._element, DATA_KEY);
        $(
this._element).off(EVENT_KEY);
        
this._element = null;
      }

      
// private

    
}, {
      
key: '_addEventListeners',
      
value: function _addEventListeners() {
        $(
this._element).on(Event.CLICK, this.toggle);
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);

          if (!
data) {
            $(
this).data(DATA_KEY, data = new Dropdown(this));
          }

          if (
typeof config === 'string') {
            
data[config].call(this);
          }
        });
      }
    }, {
      
key: '_clearMenus',
      
value: function _clearMenus(event) {
        if (
event && event.which === 3) {
          return;
        }

        var 
backdrop = $(Selector.BACKDROP)[0];
        if (
backdrop) {
          
backdrop.parentNode.removeChild(backdrop);
        }

        var 
toggles = $.makeArray($(Selector.DATA_TOGGLE));

        for (var 
i = 0; i < toggles.length; i++) {
          var 
_parent = Dropdown._getParentFromElement(toggles[i]);
          var 
relatedTarget = { relatedTarget: toggles[i] };

          if (!$(
_parent).hasClass(ClassName.OPEN)) {
            continue;
          }

          if (
event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) {
            continue;
          }

          var 
hideEvent = $.Event(Event.HIDE, relatedTarget);
          $(
_parent).trigger(hideEvent);
          if (
hideEvent.isDefaultPrevented()) {
            continue;
          }

          
toggles[i].setAttribute('aria-expanded', 'false');

          $(
_parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDEN, relatedTarget));
        }
      }
    }, {
      
key: '_getParentFromElement',
      
value: function _getParentFromElement(element) {
        var 
parent = undefined;
        var 
selector = Util.getSelectorFromElement(element);

        if (
selector) {
          
parent = $(selector)[0];
        }

        return 
parent || element.parentNode;
      }
    }, {
      
key: '_dataApiKeydownHandler',
      
value: function _dataApiKeydownHandler(event) {
        if (!/(
38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
          return;
        }

        
event.preventDefault();
        
event.stopPropagation();

        if (
this.disabled || $(this).hasClass(ClassName.DISABLED)) {
          return;
        }

        var 
parent = Dropdown._getParentFromElement(this);
        var 
isActive = $(parent).hasClass(ClassName.OPEN);

        if (!
isActive && event.which !== 27 || isActive && event.which === 27) {

          if (
event.which === 27) {
            var 
toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
            $(
toggle).trigger('focus');
          }

          $(
this).trigger('click');
          return;
        }

        var 
items = $.makeArray($(Selector.VISIBLE_ITEMS));

        
items = items.filter(function (item) {
          return 
item.offsetWidth || item.offsetHeight;
        });

        if (!
items.length) {
          return;
        }

        var 
index = items.indexOf(event.target);

        if (
event.which === 38 && index > 0) {
          
// up
          
index--;
        }

        if (
event.which === 40 && index < items.length - 1) {
          
// down
          
index++;
        }

        if (! ~
index) {
          
index = 0;
        }

        
items[index].focus();
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Dropdown;
  })();

  $(
document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
    
e.stopPropagation();
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Dropdown._jQueryInterface;
  $.
fn[NAME].Constructor = Dropdown;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Dropdown._jQueryInterface;
  };

  return 
Dropdown;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): modal.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Modal = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'modal';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.modal';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION = 300;
  var 
BACKDROP_TRANSITION_DURATION = 150;

  var Default = {
    
backdrop: true,
    
keyboard: true,
    
focus: true,
    
show: true
  
};

  var 
DefaultType = {
    
backdrop: '(boolean|string)',
    
keyboard: 'boolean',
    
focus: 'boolean',
    
show: 'boolean'
  
};

  var 
Event = {
    
HIDE: 'hide' + EVENT_KEY,
    
HIDDEN: 'hidden' + EVENT_KEY,
    
SHOW: 'show' + EVENT_KEY,
    
SHOWN: 'shown' + EVENT_KEY,
    
FOCUSIN: 'focusin' + EVENT_KEY,
    
RESIZE: 'resize' + EVENT_KEY,
    
CLICK_DISMISS: 'click.dismiss' + EVENT_KEY,
    
KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY,
    
MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY,
    
MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY,
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
    
BACKDROP: 'modal-backdrop',
    
OPEN: 'modal-open',
    
FADE: 'fade',
    
IN: 'in'
  
};

  var 
Selector = {
    
DIALOG: '.modal-dialog',
    
DATA_TOGGLE: '[data-toggle="modal"]',
    
DATA_DISMISS: '[data-dismiss="modal"]',
    
FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Modal = (function () {
    function 
Modal(element, config) {
      
_classCallCheck(this, Modal);

      
this._config = this._getConfig(config);
      
this._element = element;
      
this._dialog = $(element).find(Selector.DIALOG)[0];
      
this._backdrop = null;
      
this._isShown = false;
      
this._isBodyOverflowing = false;
      
this._ignoreBackdropClick = false;
      
this._originalBodyPadding = 0;
      
this._scrollbarWidth = 0;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Modal, [{
      
key: 'toggle',

      
// public

      
value: function toggle(relatedTarget) {
        return 
this._isShown ? this.hide() : this.show(relatedTarget);
      }
    }, {
      
key: 'show',
      
value: function show(relatedTarget) {
        var 
_this7 = this;

        var 
showEvent = $.Event(Event.SHOW, {
          
relatedTarget: relatedTarget
        
});

        $(
this._element).trigger(showEvent);

        if (
this._isShown || showEvent.isDefaultPrevented()) {
          return;
        }

        
this._isShown = true;

        
this._checkScrollbar();
        
this._setScrollbar();

        $(
document.body).addClass(ClassName.OPEN);

        
this._setEscapeEvent();
        
this._setResizeEvent();

        $(
this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this));

        $(
this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
          $(
_this7._element).one(Event.MOUSEUP_DISMISS, function (event) {
            if ($(
event.target).is(_this7._element)) {
              
that._ignoreBackdropClick = true;
            }
          });
        });

        
this._showBackdrop($.proxy(this._showElement, this, relatedTarget));
      }
    }, {
      
key: 'hide',
      
value: function hide(event) {
        if (
event) {
          
event.preventDefault();
        }

        var 
hideEvent = $.Event(Event.HIDE);

        $(
this._element).trigger(hideEvent);

        if (!
this._isShown || hideEvent.isDefaultPrevented()) {
          return;
        }

        
this._isShown = false;

        
this._setEscapeEvent();
        
this._setResizeEvent();

        $(
document).off(Event.FOCUSIN);

        $(
this._element).removeClass(ClassName.IN);

        $(
this._element).off(Event.CLICK_DISMISS);
        $(
this._dialog).off(Event.MOUSEDOWN_DISMISS);

        if (
Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {

          $(
this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
this._hideModal();
        }
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeData(this._element, DATA_KEY);

        $(
window).off(EVENT_KEY);
        $(
document).off(EVENT_KEY);
        $(
this._element).off(EVENT_KEY);
        $(
this._backdrop).off(EVENT_KEY);

        
this._config = null;
        
this._element = null;
        
this._dialog = null;
        
this._backdrop = null;
        
this._isShown = null;
        
this._isBodyOverflowing = null;
        
this._ignoreBackdropClick = null;
        
this._originalBodyPadding = null;
        
this._scrollbarWidth = null;
      }

      
// private

    
}, {
      
key: '_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);
        
Util.typeCheckConfig(NAME, config, DefaultType);
        return 
config;
      }
    }, {
      
key: '_showElement',
      
value: function _showElement(relatedTarget) {
        var 
_this8 = this;

        var 
transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);

        if (!
this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
          
// don't move modals dom position
          
document.body.appendChild(this._element);
        }

        
this._element.style.display = 'block';
        
this._element.scrollTop = 0;

        if (
transition) {
          
Util.reflow(this._element);
        }

        $(
this._element).addClass(ClassName.IN);

        if (
this._config.focus) {
          
this._enforceFocus();
        }

        var 
shownEvent = $.Event(Event.SHOWN, {
          
relatedTarget: relatedTarget
        
});

        var 
transitionComplete = function transitionComplete() {
          if (
_this8._config.focus) {
            
_this8._element.focus();
          }
          $(
_this8._element).trigger(shownEvent);
        };

        if (
transition) {
          $(
this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
transitionComplete();
        }
      }
    }, {
      
key: '_enforceFocus',
      
value: function _enforceFocus() {
        var 
_this9 = this;

        $(
document).off(Event.FOCUSIN) // guard against infinite focus loop
        
.on(Event.FOCUSIN, function (event) {
          if (
_this9._element !== event.target && !$(_this9._element).has(event.target).length) {
            
_this9._element.focus();
          }
        });
      }
    }, {
      
key: '_setEscapeEvent',
      
value: function _setEscapeEvent() {
        var 
_this10 = this;

        if (
this._isShown && this._config.keyboard) {
          $(
this._element).on(Event.KEYDOWN_DISMISS, function (event) {
            if (
event.which === 27) {
              
_this10.hide();
            }
          });
        } else if (!
this._isShown) {
          $(
this._element).off(Event.KEYDOWN_DISMISS);
        }
      }
    }, {
      
key: '_setResizeEvent',
      
value: function _setResizeEvent() {
        if (
this._isShown) {
          $(
window).on(Event.RESIZE, $.proxy(this._handleUpdate, this));
        } else {
          $(
window).off(Event.RESIZE);
        }
      }
    }, {
      
key: '_hideModal',
      
value: function _hideModal() {
        var 
_this11 = this;

        
this._element.style.display = 'none';
        
this._showBackdrop(function () {
          $(
document.body).removeClass(ClassName.OPEN);
          
_this11._resetAdjustments();
          
_this11._resetScrollbar();
          $(
_this11._element).trigger(Event.HIDDEN);
        });
      }
    }, {
      
key: '_removeBackdrop',
      
value: function _removeBackdrop() {
        if (
this._backdrop) {
          $(
this._backdrop).remove();
          
this._backdrop = null;
        }
      }
    }, {
      
key: '_showBackdrop',
      
value: function _showBackdrop(callback) {
        var 
_this12 = this;

        var 
animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';

        if (
this._isShown && this._config.backdrop) {
          var 
doAnimate = Util.supportsTransitionEnd() && animate;

          
this._backdrop = document.createElement('div');
          
this._backdrop.className = ClassName.BACKDROP;

          if (
animate) {
            $(
this._backdrop).addClass(animate);
          }

          $(
this._backdrop).appendTo(document.body);

          $(
this._element).on(Event.CLICK_DISMISS, function (event) {
            if (
_this12._ignoreBackdropClick) {
              
_this12._ignoreBackdropClick = false;
              return;
            }
            if (
event.target !== event.currentTarget) {
              return;
            }
            if (
_this12._config.backdrop === 'static') {
              
_this12._element.focus();
            } else {
              
_this12.hide();
            }
          });

          if (
doAnimate) {
            
Util.reflow(this._backdrop);
          }

          $(
this._backdrop).addClass(ClassName.IN);

          if (!
callback) {
            return;
          }

          if (!
doAnimate) {
            
callback();
            return;
          }

          $(
this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
        } else if (!
this._isShown && this._backdrop) {
          $(
this._backdrop).removeClass(ClassName.IN);

          var 
callbackRemove = function callbackRemove() {
            
_this12._removeBackdrop();
            if (
callback) {
              
callback();
            }
          };

          if (
Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
            $(
this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
          } else {
            
callbackRemove();
          }
        } else if (
callback) {
          
callback();
        }
      }

      
// ----------------------------------------------------------------------
      // the following methods are used to handle overflowing modals
      // todo (fat): these should probably be refactored out of modal.js
      // ----------------------------------------------------------------------

    
}, {
      
key: '_handleUpdate',
      
value: function _handleUpdate() {
        
this._adjustDialog();
      }
    }, {
      
key: '_adjustDialog',
      
value: function _adjustDialog() {
        var 
isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;

        if (!
this._isBodyOverflowing && isModalOverflowing) {
          
this._element.style.paddingLeft = this._scrollbarWidth + 'px';
        }

        if (
this._isBodyOverflowing && !isModalOverflowing) {
          
this._element.style.paddingRight = this._scrollbarWidth + 'px~';
        }
      }
    }, {
      
key: '_resetAdjustments',
      
value: function _resetAdjustments() {
        
this._element.style.paddingLeft = '';
        
this._element.style.paddingRight = '';
      }
    }, {
      
key: '_checkScrollbar',
      
value: function _checkScrollbar() {
        var 
fullWindowWidth = window.innerWidth;
        if (!
fullWindowWidth) {
          
// workaround for missing window.innerWidth in IE8
          
var documentElementRect = document.documentElement.getBoundingClientRect();
          
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
        }
        
this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth;
        
this._scrollbarWidth = this._getScrollbarWidth();
      }
    }, {
      
key: '_setScrollbar',
      
value: function _setScrollbar() {
        var 
bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10);

        
this._originalBodyPadding = document.body.style.paddingRight || '';

        if (
this._isBodyOverflowing) {
          
document.body.style.paddingRight = bodyPadding + (this._scrollbarWidth + 'px');
        }
      }
    }, {
      
key: '_resetScrollbar',
      
value: function _resetScrollbar() {
        
document.body.style.paddingRight = this._originalBodyPadding;
      }
    }, {
      
key: '_getScrollbarWidth',
      
value: function _getScrollbarWidth() {
        
// thx d.walsh
        
var scrollDiv = document.createElement('div');
        
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
        
document.body.appendChild(scrollDiv);
        var 
scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
        
document.body.removeChild(scrollDiv);
        return 
scrollbarWidth;
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config, relatedTarget) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config);

          if (!
data) {
            
data = new Modal(this, _config);
            $(
this).data(DATA_KEY, data);
          }

          if (
typeof config === 'string') {
            
data[config](relatedTarget);
          } else if (
_config.show) {
            
data.show(relatedTarget);
          }
        });
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key: 'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
Modal;
  })();

  $(
document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
    var 
_this13 = this;

    var 
target = undefined;
    var 
selector = Util.getSelectorFromElement(this);

    if (
selector) {
      
target = $(selector)[0];
    }

    var 
config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data());

    if (
this.tagName === 'A') {
      
event.preventDefault();
    }

    var 
$target = $(target).one(Event.SHOW, function (showEvent) {
      if (
showEvent.isDefaultPrevented()) {
        
// only register focus restorer if modal will actually get shown
        
return;
      }

      
$target.one(Event.HIDDEN, function () {
        if ($(
_this13).is(':visible')) {
          
_this13.focus();
        }
      });
    });

    
Modal._jQueryInterface.call($(target), config, this);
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Modal._jQueryInterface;
  $.
fn[NAME].Constructor = Modal;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Modal._jQueryInterface;
  };

  return 
Modal;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): scrollspy.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var ScrollSpy = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'scrollspy';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.scrollspy';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var Default = {
    
offset: 10,
    
method: 'auto',
    
target: ''
  
};

  var 
DefaultType = {
    
offset: 'number',
    
method: 'string',
    
target: '(string|element)'
  
};

  var 
Event = {
    
ACTIVATE: 'activate' + EVENT_KEY,
    
SCROLL: 'scroll' + EVENT_KEY,
    
LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
DROPDOWN_ITEM: 'dropdown-item',
    
DROPDOWN_MENU: 'dropdown-menu',
    
NAV_LINK: 'nav-link',
    
NAV: 'nav',
    
ACTIVE: 'active'
  
};

  var 
Selector = {
    
DATA_SPY: '[data-spy="scroll"]',
    
ACTIVE: '.active',
    
LIST_ITEM: '.list-item',
    
LI: 'li',
    
LI_DROPDOWN: 'li.dropdown',
    
NAV_LINKS: '.nav-link',
    
DROPDOWN: '.dropdown',
    
DROPDOWN_ITEMS: '.dropdown-item',
    
DROPDOWN_TOGGLE: '.dropdown-toggle'
  
};

  var 
OffsetMethod = {
    
OFFSET: 'offset',
    
POSITION: 'position'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var ScrollSpy = (function () {
    function 
ScrollSpy(element, config) {
      
_classCallCheck(this, ScrollSpy);

      
this._element = element;
      
this._scrollElement = element.tagName === 'BODY' ? window : element;
      
this._config = this._getConfig(config);
      
this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS);
      
this._offsets = [];
      
this._targets = [];
      
this._activeTarget = null;
      
this._scrollHeight = 0;

      $(
this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this));

      
this.refresh();
      
this._process();
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(ScrollSpy, [{
      
key: 'refresh',

      
// public

      
value: function refresh() {
        var 
_this14 = this;

        var 
autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;

        var 
offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;

        var 
offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;

        
this._offsets = [];
        
this._targets = [];

        
this._scrollHeight = this._getScrollHeight();

        var 
targets = $.makeArray($(this._selector));

        
targets.map(function (element) {
          var 
target = undefined;
          var 
targetSelector = Util.getSelectorFromElement(element);

          if (
targetSelector) {
            
target = $(targetSelector)[0];
          }

          if (
target && (target.offsetWidth || target.offsetHeight)) {
            
// todo (fat): remove sketch reliance on jQuery position/offset
            
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
          }
        }).
filter(function (item) {
          return 
item;
        }).
sort(function (a, b) {
          return 
a[0] - b[0];
        }).forEach(function (
item) {
          
_this14._offsets.push(item[0]);
          
_this14._targets.push(item[1]);
        });
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeData(this._element, DATA_KEY);
        $(
this._scrollElement).off(EVENT_KEY);

        
this._element = null;
        
this._scrollElement = null;
        
this._config = null;
        
this._selector = null;
        
this._offsets = null;
        
this._targets = null;
        
this._activeTarget = null;
        
this._scrollHeight = null;
      }

      
// private

    
}, {
      
key: '_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);

        if (
typeof config.target !== 'string') {
          var 
id = $(config.target).attr('id');
          if (!
id) {
            
id = Util.getUID(NAME);
            $(
config.target).attr('id', id);
          }
          
config.target = '#' + id;
        }

        
Util.typeCheckConfig(NAME, config, DefaultType);

        return 
config;
      }
    }, {
      
key: '_getScrollTop',
      
value: function _getScrollTop() {
        return 
this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop;
      }
    }, {
      
key: '_getScrollHeight',
      
value: function _getScrollHeight() {
        return 
this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
      }
    }, {
      
key: '_process',
      
value: function _process() {
        var 
scrollTop = this._getScrollTop() + this._config.offset;
        var 
scrollHeight = this._getScrollHeight();
        var 
maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight;

        if (
this._scrollHeight !== scrollHeight) {
          
this.refresh();
        }

        if (
scrollTop >= maxScroll) {
          var 
target = this._targets[this._targets.length - 1];

          if (
this._activeTarget !== target) {
            
this._activate(target);
          }
        }

        if (
this._activeTarget && scrollTop < this._offsets[0]) {
          
this._activeTarget = null;
          
this._clear();
          return;
        }

        for (var 
i = this._offsets.length; i--;) {
          var 
isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]);

          if (
isActiveTarget) {
            
this._activate(this._targets[i]);
          }
        }
      }
    }, {
      
key: '_activate',
      
value: function _activate(target) {
        
this._activeTarget = target;

        
this._clear();

        var 
queries = this._selector.split(',');
        
queries = queries.map(function (selector) {
          return 
selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]');
        });

        var 
$link = $(queries.join(','));

        if (
$link.hasClass(ClassName.DROPDOWN_ITEM)) {
          
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
          
$link.addClass(ClassName.ACTIVE);
        } else {
          
// todo (fat) this is kinda sus…
          // recursively add actives to tested nav-links
          
$link.parents(Selector.LI).find(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
        }

        $(
this._scrollElement).trigger(Event.ACTIVATE, {
          
relatedTarget: target
        
});
      }
    }, {
      
key: '_clear',
      
value: function _clear() {
        $(
this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = typeof config === 'object' && config || null;

          if (!
data) {
            
data = new ScrollSpy(this, _config);
            $(
this).data(DATA_KEY, data);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key: 'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
ScrollSpy;
  })();

  $(
window).on(Event.LOAD_DATA_API, function () {
    var 
scrollSpys = $.makeArray($(Selector.DATA_SPY));

    for (var 
i = scrollSpys.length; i--;) {
      var 
$spy = $(scrollSpys[i]);
      
ScrollSpy._jQueryInterface.call($spy, $spy.data());
    }
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = ScrollSpy._jQueryInterface;
  $.
fn[NAME].Constructor = ScrollSpy;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
ScrollSpy._jQueryInterface;
  };

  return 
ScrollSpy;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): tab.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Tab = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'tab';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.tab';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
DATA_API_KEY = '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION = 150;

  var 
Event = {
    
HIDE: 'hide' + EVENT_KEY,
    
HIDDEN: 'hidden' + EVENT_KEY,
    
SHOW: 'show' + EVENT_KEY,
    
SHOWN: 'shown' + EVENT_KEY,
    
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
  
};

  var 
ClassName = {
    
DROPDOWN_MENU: 'dropdown-menu',
    
ACTIVE: 'active',
    
FADE: 'fade',
    
IN: 'in'
  
};

  var 
Selector = {
    
A: 'a',
    
LI: 'li',
    
DROPDOWN: '.dropdown',
    
UL: 'ul:not(.dropdown-menu)',
    
FADE_CHILD: '> .nav-item .fade, > .fade',
    
ACTIVE: '.active',
    
ACTIVE_CHILD: '> .nav-item > .active, > .active',
    
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
    
DROPDOWN_TOGGLE: '.dropdown-toggle',
    
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Tab = (function () {
    function 
Tab(element) {
      
_classCallCheck(this, Tab);

      
this._element = element;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Tab, [{
      
key: 'show',

      
// public

      
value: function show() {
        var 
_this15 = this;

        if (
this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) {
          return;
        }

        var 
target = undefined;
        var 
previous = undefined;
        var 
ulElement = $(this._element).closest(Selector.UL)[0];
        var 
selector = Util.getSelectorFromElement(this._element);

        if (
ulElement) {
          
previous = $.makeArray($(ulElement).find(Selector.ACTIVE));
          
previous = previous[previous.length - 1];
        }

        var 
hideEvent = $.Event(Event.HIDE, {
          
relatedTarget: this._element
        
});

        var 
showEvent = $.Event(Event.SHOW, {
          
relatedTarget: previous
        
});

        if (
previous) {
          $(
previous).trigger(hideEvent);
        }

        $(
this._element).trigger(showEvent);

        if (
showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
          return;
        }

        if (
selector) {
          
target = $(selector)[0];
        }

        
this._activate(this._element, ulElement);

        var 
complete = function complete() {
          var 
hiddenEvent = $.Event(Event.HIDDEN, {
            
relatedTarget: _this15._element
          
});

          var 
shownEvent = $.Event(Event.SHOWN, {
            
relatedTarget: previous
          
});

          $(
previous).trigger(hiddenEvent);
          $(
_this15._element).trigger(shownEvent);
        };

        if (
target) {
          
this._activate(target, target.parentNode, complete);
        } else {
          
complete();
        }
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        $.
removeClass(this._element, DATA_KEY);
        
this._element = null;
      }

      
// private

    
}, {
      
key: '_activate',
      
value: function _activate(element, container, callback) {
        var 
active = $(container).find(Selector.ACTIVE_CHILD)[0];
        var 
isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0]));

        var 
complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback);

        if (
active && isTransitioning) {
          $(
active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
complete();
        }

        if (
active) {
          $(
active).removeClass(ClassName.IN);
        }
      }
    }, {
      
key: '_transitionComplete',
      
value: function _transitionComplete(element, active, isTransitioning, callback) {
        if (
active) {
          $(
active).removeClass(ClassName.ACTIVE);

          var 
dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];

          if (
dropdownChild) {
            $(
dropdownChild).removeClass(ClassName.ACTIVE);
          }

          
active.setAttribute('aria-expanded', false);
        }

        $(
element).addClass(ClassName.ACTIVE);
        
element.setAttribute('aria-expanded', true);

        if (
isTransitioning) {
          
Util.reflow(element);
          $(
element).addClass(ClassName.IN);
        } else {
          $(
element).removeClass(ClassName.FADE);
        }

        if (
element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {

          var 
dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
          if (
dropdownElement) {
            $(
dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
          }

          
element.setAttribute('aria-expanded', true);
        }

        if (
callback) {
          
callback();
        }
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
$this = $(this);
          var 
data = $this.data(DATA_KEY);

          if (!
data) {
            
data = data = new Tab(this);
            
$this.data(DATA_KEY, data);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Tab;
  })();

  $(
document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
    
event.preventDefault();
    
Tab._jQueryInterface.call($(this), 'show');
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Tab._jQueryInterface;
  $.
fn[NAME].Constructor = Tab;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Tab._jQueryInterface;
  };

  return 
Tab;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): tooltip.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Tooltip = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'tooltip';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.tooltip';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION = 150;
  var 
CLASS_PREFIX = 'bs-tether';

  var Default = {
    
animation: true,
    
template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>',
    
trigger: 'hover focus',
    
title: '',
    
delay: 0,
    
html: false,
    
selector: false,
    
placement: 'top',
    
offset: '0 0',
    
constraints: []
  };

  var 
DefaultType = {
    
animation: 'boolean',
    
template: 'string',
    
title: '(string|function)',
    
trigger: 'string',
    
delay: '(number|object)',
    
html: 'boolean',
    
selector: '(string|boolean)',
    
placement: '(string|function)',
    
offset: 'string',
    
constraints: 'array'
  
};

  var 
AttachmentMap = {
    
TOP: 'bottom center',
    
RIGHT: 'middle left',
    
BOTTOM: 'top center',
    
LEFT: 'middle right'
  
};

  var 
HoverState = {
    
IN: 'in',
    
OUT: 'out'
  
};

  var 
Event = {
    
HIDE: 'hide' + EVENT_KEY,
    
HIDDEN: 'hidden' + EVENT_KEY,
    
SHOW: 'show' + EVENT_KEY,
    
SHOWN: 'shown' + EVENT_KEY,
    
INSERTED: 'inserted' + EVENT_KEY,
    
CLICK: 'click' + EVENT_KEY,
    
FOCUSIN: 'focusin' + EVENT_KEY,
    
FOCUSOUT: 'focusout' + EVENT_KEY,
    
MOUSEENTER: 'mouseenter' + EVENT_KEY,
    
MOUSELEAVE: 'mouseleave' + EVENT_KEY
  
};

  var 
ClassName = {
    
FADE: 'fade',
    
IN: 'in'
  
};

  var 
Selector = {
    
TOOLTIP: '.tooltip',
    
TOOLTIP_INNER: '.tooltip-inner'
  
};

  var 
TetherClass = {
    
element: false,
    
enabled: false
  
};

  var 
Trigger = {
    
HOVER: 'hover',
    
FOCUS: 'focus',
    
CLICK: 'click',
    
MANUAL: 'manual'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Tooltip = (function () {
    function 
Tooltip(element, config) {
      
_classCallCheck(this, Tooltip);

      
// private
      
this._isEnabled = true;
      
this._timeout = 0;
      
this._hoverState = '';
      
this._activeTrigger = {};
      
this._tether = null;

      
// protected
      
this.element = element;
      
this.config = this._getConfig(config);
      
this.tip = null;

      
this._setListeners();
    }

    
/**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Tooltip, [{
      
key: 'enable',

      
// public

      
value: function enable() {
        
this._isEnabled = true;
      }
    }, {
      
key: 'disable',
      
value: function disable() {
        
this._isEnabled = false;
      }
    }, {
      
key: 'toggleEnabled',
      
value: function toggleEnabled() {
        
this._isEnabled = !this._isEnabled;
      }
    }, {
      
key: 'toggle',
      
value: function toggle(event) {
        if (
event) {
          var 
dataKey = this.constructor.DATA_KEY;
          var 
context = $(event.currentTarget).data(dataKey);

          if (!
context) {
            
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
            $(
event.currentTarget).data(dataKey, context);
          }

          
context._activeTrigger.click = !context._activeTrigger.click;

          if (
context._isWithActiveTrigger()) {
            
context._enter(null, context);
          } else {
            
context._leave(null, context);
          }
        } else {

          if ($(
this.getTipElement()).hasClass(ClassName.IN)) {
            
this._leave(null, this);
            return;
          }

          
this._enter(null, this);
        }
      }
    }, {
      
key: 'dispose',
      
value: function dispose() {
        
clearTimeout(this._timeout);

        
this.cleanupTether();

        $.
removeData(this.element, this.constructor.DATA_KEY);

        $(
this.element).off(this.constructor.EVENT_KEY);

        if (
this.tip) {
          $(
this.tip).remove();
        }

        
this._isEnabled = null;
        
this._timeout = null;
        
this._hoverState = null;
        
this._activeTrigger = null;
        
this._tether = null;

        
this.element = null;
        
this.config = null;
        
this.tip = null;
      }
    }, {
      
key: 'show',
      
value: function show() {
        var 
_this16 = this;

        var 
showEvent = $.Event(this.constructor.Event.SHOW);

        if (
this.isWithContent() && this._isEnabled) {
          $(
this.element).trigger(showEvent);

          var 
isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element);

          if (
showEvent.isDefaultPrevented() || !isInTheDom) {
            return;
          }

          var 
tip = this.getTipElement();
          var 
tipId = Util.getUID(this.constructor.NAME);

          
tip.setAttribute('id', tipId);
          
this.element.setAttribute('aria-describedby', tipId);

          
this.setContent();

          if (
this.config.animation) {
            $(
tip).addClass(ClassName.FADE);
          }

          var 
placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;

          var 
attachment = this._getAttachment(placement);

          $(
tip).data(this.constructor.DATA_KEY, this).appendTo(document.body);

          $(
this.element).trigger(this.constructor.Event.INSERTED);

          
this._tether = new Tether({
            
attachment: attachment,
            
element: tip,
            
target: this.element,
            
classes: TetherClass,
            
classPrefix: CLASS_PREFIX,
            
offset: this.config.offset,
            
constraints: this.config.constraints
          
});

          
Util.reflow(tip);
          
this._tether.position();

          $(
tip).addClass(ClassName.IN);

          var 
complete = function complete() {
            var 
prevHoverState = _this16._hoverState;
            
_this16._hoverState = null;

            $(
_this16.element).trigger(_this16.constructor.Event.SHOWN);

            if (
prevHoverState === HoverState.OUT) {
              
_this16._leave(null, _this16);
            }
          };

          if (
Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
            $(
this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
            return;
          }

          
complete();
        }
      }
    }, {
      
key: 'hide',
      
value: function hide(callback) {
        var 
_this17 = this;

        var 
tip = this.getTipElement();
        var 
hideEvent = $.Event(this.constructor.Event.HIDE);
        var 
complete = function complete() {
          if (
_this17._hoverState !== HoverState.IN && tip.parentNode) {
            
tip.parentNode.removeChild(tip);
          }

          
_this17.element.removeAttribute('aria-describedby');
          $(
_this17.element).trigger(_this17.constructor.Event.HIDDEN);
          
_this17.cleanupTether();

          if (
callback) {
            
callback();
          }
        };

        $(
this.element).trigger(hideEvent);

        if (
hideEvent.isDefaultPrevented()) {
          return;
        }

        $(
tip).removeClass(ClassName.IN);

        if (
Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {

          $(
tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
complete();
        }

        
this._hoverState = '';
      }

      
// protected

    
}, {
      
key: 'isWithContent',
      
value: function isWithContent() {
        return 
Boolean(this.getTitle());
      }
    }, {
      
key: 'getTipElement',
      
value: function getTipElement() {
        return 
this.tip = this.tip || $(this.config.template)[0];
      }
    }, {
      
key: 'setContent',
      
value: function setContent() {
        var 
tip = this.getTipElement();
        var 
title = this.getTitle();
        var 
method = this.config.html ? 'innerHTML' : 'innerText';

        $(
tip).find(Selector.TOOLTIP_INNER)[0][method] = title;

        $(
tip).removeClass(ClassName.FADE).removeClass(ClassName.IN);

        
this.cleanupTether();
      }
    }, {
      
key: 'getTitle',
      
value: function getTitle() {
        var 
title = this.element.getAttribute('data-original-title');

        if (!
title) {
          
title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
        }

        return 
title;
      }
    }, {
      
key: 'cleanupTether',
      
value: function cleanupTether() {
        if (
this._tether) {
          
this._tether.destroy();

          
// clean up after tether's junk classes
          // remove after they fix issue
          // (https://github.com/HubSpot/tether/issues/36)
          
$(this.element).removeClass(this._removeTetherClasses);
          $(
this.tip).removeClass(this._removeTetherClasses);
        }
      }

      
// private

    
}, {
      
key: '_getAttachment',
      
value: function _getAttachment(placement) {
        return 
AttachmentMap[placement.toUpperCase()];
      }
    }, {
      
key: '_setListeners',
      
value: function _setListeners() {
        var 
_this18 = this;

        var 
triggers = this.config.trigger.split(' ');

        
triggers.forEach(function (trigger) {
          if (
trigger === 'click') {
            $(
_this18.element).on(_this18.constructor.Event.CLICK, _this18.config.selector, $.proxy(_this18.toggle, _this18));
          } else if (
trigger !== Trigger.MANUAL) {
            var 
eventIn = trigger === Trigger.HOVER ? _this18.constructor.Event.MOUSEENTER : _this18.constructor.Event.FOCUSIN;
            var 
eventOut = trigger === Trigger.HOVER ? _this18.constructor.Event.MOUSELEAVE : _this18.constructor.Event.FOCUSOUT;

            $(
_this18.element).on(eventIn, _this18.config.selector, $.proxy(_this18._enter, _this18)).on(eventOut, _this18.config.selector, $.proxy(_this18._leave, _this18));
          }
        });

        if (
this.config.selector) {
          
this.config = $.extend({}, this.config, {
            
trigger: 'manual',
            
selector: ''
          
});
        } else {
          
this._fixTitle();
        }
      }
    }, {
      
key: '_removeTetherClasses',
      
value: function _removeTetherClasses(i, css) {
        return ((
css.baseVal || css).match(new RegExp('(^|\s)' + CLASS_PREFIX + '-\S+', 'g')) || []).join(' ');
      }
    }, {
      
key: '_fixTitle',
      
value: function _fixTitle() {
        var 
titleType = typeof this.element.getAttribute('data-original-title');
        if (
this.element.getAttribute('title') || titleType !== 'string') {
          
this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
          
this.element.setAttribute('title', '');
        }
      }
    }, {
      
key: '_enter',
      
value: function _enter(event, context) {
        var 
dataKey = this.constructor.DATA_KEY;

        
context = context || $(event.currentTarget).data(dataKey);

        if (!
context) {
          
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
          $(
event.currentTarget).data(dataKey, context);
        }

        if (
event) {
          
context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
        }

        if ($(
context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) {
          
context._hoverState = HoverState.IN;
          return;
        }

        
clearTimeout(context._timeout);

        
context._hoverState = HoverState.IN;

        if (!
context.config.delay || !context.config.delay.show) {
          
context.show();
          return;
        }

        
context._timeout = setTimeout(function () {
          if (
context._hoverState === HoverState.IN) {
            
context.show();
          }
        }, 
context.config.delay.show);
      }
    }, {
      
key: '_leave',
      
value: function _leave(event, context) {
        var 
dataKey = this.constructor.DATA_KEY;

        
context = context || $(event.currentTarget).data(dataKey);

        if (!
context) {
          
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
          $(
event.currentTarget).data(dataKey, context);
        }

        if (
event) {
          
context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
        }

        if (
context._isWithActiveTrigger()) {
          return;
        }

        
clearTimeout(context._timeout);

        
context._hoverState = HoverState.OUT;

        if (!
context.config.delay || !context.config.delay.hide) {
          
context.hide();
          return;
        }

        
context._timeout = setTimeout(function () {
          if (
context._hoverState === HoverState.OUT) {
            
context.hide();
          }
        }, 
context.config.delay.hide);
      }
    }, {
      
key: '_isWithActiveTrigger',
      
value: function _isWithActiveTrigger() {
        for (var 
trigger in this._activeTrigger) {
          if (
this._activeTrigger[trigger]) {
            return 
true;
          }
        }

        return 
false;
      }
    }, {
      
key: '_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, this.constructor.Default, $(this.element).data(), config);

        if (
config.delay && typeof config.delay === 'number') {
          
config.delay = {
            
show: config.delay,
            
hide: config.delay
          
};
        }

        
Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);

        return 
config;
      }
    }, {
      
key: '_getDelegateConfig',
      
value: function _getDelegateConfig() {
        var 
config = {};

        if (
this.config) {
          for (var 
key in this.config) {
            if (
this.constructor.Default[key] !== this.config[key]) {
              
config[key] = this.config[key];
            }
          }
        }

        return 
config;
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = typeof config === 'object' ? config : null;

          if (!
data && /destroy|hide/.test(config)) {
            return;
          }

          if (!
data) {
            
data = new Tooltip(this, _config);
            $(
this).data(DATA_KEY, data);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key: 'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key: 'Default',
      
get: function get() {
        return Default;
      }
    }, {
      
key: 'NAME',
      
get: function get() {
        return 
NAME;
      }
    }, {
      
key: 'DATA_KEY',
      
get: function get() {
        return 
DATA_KEY;
      }
    }, {
      
key: 'Event',
      
get: function get() {
        return 
Event;
      }
    }, {
      
key: 'EVENT_KEY',
      
get: function get() {
        return 
EVENT_KEY;
      }
    }, {
      
key: 'DefaultType',
      
get: function get() {
        return 
DefaultType;
      }
    }]);

    return 
Tooltip;
  })();

  $.
fn[NAME] = Tooltip._jQueryInterface;
  $.
fn[NAME].Constructor = Tooltip;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Tooltip._jQueryInterface;
  };

  return 
Tooltip;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): popover.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Popover = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME = 'popover';
  var 
VERSION = '4.0.0';
  var 
DATA_KEY = 'bs.popover';
  var 
EVENT_KEY = '.' + DATA_KEY;
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var Default = $.
extend({}, Tooltip.Default, {
    
placement: 'right',
    
trigger: 'click',
    
content: '',
    
template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>'
  
});

  var 
DefaultType = $.extend({}, Tooltip.DefaultType, {
    
content: '(string|function)'
  
});

  var 
ClassName = {
    
FADE: 'fade',
    
IN: 'in'
  
};

  var 
Selector = {
    
TITLE: '.popover-title',
    
CONTENT: '.popover-content',
    
ARROW: '.popover-arrow'
  
};

  var 
Event = {
    
HIDE: 'hide' + EVENT_KEY,
    
HIDDEN: 'hidden' + EVENT_KEY,
    
SHOW: 'show' + EVENT_KEY,
    
SHOWN: 'shown' + EVENT_KEY,
    
INSERTED: 'inserted' + EVENT_KEY,
    
CLICK: 'click' + EVENT_KEY,
    
FOCUSIN: 'focusin' + EVENT_KEY,
    
FOCUSOUT: 'focusout' + EVENT_KEY,
    
MOUSEENTER: 'mouseenter' + EVENT_KEY,
    
MOUSELEAVE: 'mouseleave' + EVENT_KEY
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Popover = (function (_Tooltip) {
    
_inherits(Popover, _Tooltip);

    function 
Popover() {
      
_classCallCheck(this, Popover);

      
_get(Object.getPrototypeOf(Popover.prototype), 'constructor', this).apply(this, arguments);
    }

    
/**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */

    
_createClass(Popover, [{
      
key: 'isWithContent',

      
// overrides

      
value: function isWithContent() {
        return 
this.getTitle() || this._getContent();
      }
    }, {
      
key: 'getTipElement',
      
value: function getTipElement() {
        return 
this.tip = this.tip || $(this.config.template)[0];
      }
    }, {
      
key: 'setContent',
      
value: function setContent() {
        var 
tip = this.getTipElement();
        var 
title = this.getTitle();
        var 
content = this._getContent();
        var 
titleElement = $(tip).find(Selector.TITLE)[0];

        if (
titleElement) {
          
titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title;
        }

        
// we use append for html objects to maintain js events
        
$(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content);

        $(
tip).removeClass(ClassName.FADE).removeClass(ClassName.IN);

        
this.cleanupTether();
      }

      
// private

    
}, {
      
key: '_getContent',
      
value: function _getContent() {
        return 
this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
      }

      
// static

    
}], [{
      
key: '_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = typeof config === 'object' ? config : null;

          if (!
data && /destroy|hide/.test(config)) {
            return;
          }

          if (!
data) {
            
data = new Popover(this, _config);
            $(
this).data(DATA_KEY, data);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key: 'VERSION',

      
// getters

      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key: 'Default',
      
get: function get() {
        return Default;
      }
    }, {
      
key: 'NAME',
      
get: function get() {
        return 
NAME;
      }
    }, {
      
key: 'DATA_KEY',
      
get: function get() {
        return 
DATA_KEY;
      }
    }, {
      
key: 'Event',
      
get: function get() {
        return 
Event;
      }
    }, {
      
key: 'EVENT_KEY',
      
get: function get() {
        return 
EVENT_KEY;
      }
    }, {
      
key: 'DefaultType',
      
get: function get() {
        return 
DefaultType;
      }
    }]);

    return 
Popover;
  })(
Tooltip);

  $.
fn[NAME] = Popover._jQueryInterface;
  $.
fn[NAME].Constructor = Popover;
  $.
fn[NAME].noConflict = function () {
    $.
fn[NAME] = JQUERY_NO_CONFLICT;
    return 
Popover._jQueryInterface;
  };

  return 
Popover;
})(
jQuery);

}(
jQuery);
?>
Онлайн: 2
Реклама