{"version":3,"file":"3989c88723c3758430e6-999.js","mappings":"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","sources":["webpack://letusletu/./node_modules/bootstrap/js/dist/alert.js","webpack://letusletu/./node_modules/bootstrap/js/dist/button.js","webpack://letusletu/./node_modules/bootstrap/js/dist/collapse.js","webpack://letusletu/./node_modules/bootstrap/js/dist/dropdown.js","webpack://letusletu/./node_modules/bootstrap/js/dist/modal.js","webpack://letusletu/./node_modules/bootstrap/js/dist/util.js","webpack://letusletu/./node_modules/jquery/dist/jquery-exposed.js","webpack://letusletu/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://letusletu/./node_modules/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js","webpack://letusletu/./node_modules/jquery-validation-unobtrusive/node_modules/jquery-validation/dist/jquery.validate.js","webpack://letusletu/./node_modules/jquery-validation/dist/jquery.validate.js","webpack://letusletu/./node_modules/jquery/dist/jquery.js","webpack://letusletu/./node_modules/lazysizes/lazysizes.js","webpack://letusletu/./node_modules/popper.js/dist/esm/popper.js"],"sourcesContent":["/*!\n * Bootstrap alert.js v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util__default[\"default\"].getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW);\n\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util__default[\"default\"].TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Alert;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n return Alert;\n\n}));\n//# sourceMappingURL=alert.js.map\n","/*!\n * Bootstrap button.js v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.jQuery));\n})(this, (function ($) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'button';\n var VERSION = '4.6.1';\n var DATA_KEY = 'bs.button';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY + DATA_API_KEY + \" \" + (\"blur\" + EVENT_KEY + DATA_API_KEY);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Button;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Button._jQueryInterface;\n };\n\n return Button;\n\n}));\n//# sourceMappingURL=button.js.map\n","/*!\n * Bootstrap collapse.js v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n /**\n * Constants\n */\n\n var NAME = 'collapse';\n var VERSION = '4.6.1';\n var DATA_KEY = 'bs.collapse';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]';\n var Default = {\n toggle: true,\n parent: ''\n };\n var DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util__default[\"default\"].getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_SHOW);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $__default[\"default\"](actives).data(DATA_KEY, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util__default[\"default\"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW)) {\n return;\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_HIDE);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util__default[\"default\"].reflow(this._element);\n $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util__default[\"default\"].getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util__default[\"default\"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util__default[\"default\"].typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util__default[\"default\"].isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default[\"default\"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW);\n\n if (triggerArray.length) {\n $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util__default[\"default\"].getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n var _config = _extends({}, Default, $element.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $__default[\"default\"](this);\n var selector = Util__default[\"default\"].getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default[\"default\"](selectors).each(function () {\n var $target = $__default[\"default\"](this);\n var data = $target.data(DATA_KEY);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Collapse._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Collapse;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Collapse._jQueryInterface;\n };\n\n return Collapse;\n\n}));\n//# sourceMappingURL=collapse.js.map\n","/*!\n * Bootstrap dropdown.js v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));\n})(this, (function ($, Popper, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n /**\n * Constants\n */\n\n var NAME = 'dropdown';\n var VERSION = '4.6.1';\n var DATA_KEY = 'bs.dropdown';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_CLICK = \"click\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util__default[\"default\"].isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default[\"default\"].Event(EVENT_SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default[\"default\"].Event(EVENT_HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n $__default[\"default\"](this._element).off(EVENT_KEY);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util__default[\"default\"].typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default[\"default\"].Event(EVENT_HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util__default[\"default\"].getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW);\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE) {\n $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');\n }\n\n $__default[\"default\"](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Dropdown;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Dropdown._jQueryInterface;\n };\n\n return Dropdown;\n\n}));\n//# sourceMappingURL=dropdown.js.map\n","/*!\n * Bootstrap modal.js v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n /**\n * Constants\n */\n\n var NAME = 'modal';\n var VERSION = '4.6.1';\n var DATA_KEY = 'bs.modal';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW, {\n relatedTarget: relatedTarget\n });\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true;\n }\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default[\"default\"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n $__default[\"default\"](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW);\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util__default[\"default\"].TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default[\"default\"](htmlElement).off(EVENT_KEY);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util__default[\"default\"].typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._element).off(Util__default[\"default\"].TRANSITION_END);\n $__default[\"default\"](this._element).one(Util__default[\"default\"].TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default[\"default\"](_this3._element).one(Util__default[\"default\"].TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util__default[\"default\"].reflow(this._element);\n }\n\n $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default[\"default\"](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._dialog).one(Util__default[\"default\"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default[\"default\"](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default[\"default\"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default[\"default\"](this._backdrop).appendTo(document.body);\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util__default[\"default\"].reflow(this._backdrop);\n }\n\n $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util__default[\"default\"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE)) {\n var _backdropTransitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(this._backdrop);\n\n $__default[\"default\"](this._backdrop).one(Util__default[\"default\"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default[\"default\"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var padding = $__default[\"default\"](element).data('padding-right');\n $__default[\"default\"](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default[\"default\"](elements).each(function (index, element) {\n var margin = $__default[\"default\"](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default[\"default\"](document.body).data('padding-right');\n $__default[\"default\"](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY);\n\n var _config = _extends({}, Default, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default[\"default\"](this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util__default[\"default\"].getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default[\"default\"](target).data(DATA_KEY) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default[\"default\"](target).one(EVENT_SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN, function () {\n if ($__default[\"default\"](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Modal._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Modal;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Modal._jQueryInterface;\n };\n\n return Modal;\n\n}));\n//# sourceMappingURL=modal.js.map\n","/*!\n * Bootstrap util.js v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Util = factory(global.jQuery));\n})(this, (function ($) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * Private TransitionEnd Helpers\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n return Util;\n\n}));\n//# sourceMappingURL=util.js.map\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./jquery.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] = ___EXPOSE_LOADER_IMPORT___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n\n return g;\n}();","// Unobtrusive validation support library for jQuery and jQuery Validate\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// @version v3.2.12\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global document: false, jQuery: false */\r\n\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(\"jquery.validate.unobtrusive\", ['jquery-validation'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n // CommonJS-like environments that support module.exports \r\n module.exports = factory(require('jquery-validation'));\r\n } else {\r\n // Browser global\r\n jQuery.validator.unobtrusive = factory(jQuery);\r\n }\r\n}(function ($) {\r\n var $jQval = $.validator,\r\n adapters,\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function setValidationValues(options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n }\r\n\r\n function splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n }\r\n\r\n function escapeAttributeValue(value) {\r\n // As mentioned on http://api.jquery.com/category/selectors/\r\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\r\n }\r\n\r\n function getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n }\r\n\r\n function appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n }\r\n\r\n function onError(error, inputElement) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\r\n\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n error.data(\"unobtrusiveContainer\", container);\r\n\r\n if (replace) {\r\n container.empty();\r\n error.removeClass(\"input-validation-error\").appendTo(container);\r\n }\r\n else {\r\n error.hide();\r\n }\r\n }\r\n\r\n function onErrors(event, validator) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\r\n list = container.find(\"ul\");\r\n\r\n if (list && list.length && validator.errorList.length) {\r\n list.empty();\r\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(validator.errorList, function () {\r\n $(\"
  • \").html(this.message).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(error) { // 'this' is the form element\r\n var container = error.data(\"unobtrusiveContainer\");\r\n\r\n if (container) {\r\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\r\n\r\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\r\n error.removeData(\"unobtrusiveContainer\");\r\n\r\n if (replace) {\r\n container.empty();\r\n }\r\n }\r\n }\r\n\r\n function onReset(event) { // 'this' is the form element\r\n var $form = $(this),\r\n key = '__jquery_unobtrusive_validation_form_reset';\r\n if ($form.data(key)) {\r\n return;\r\n }\r\n // Set a flag that indicates we're currently resetting the form.\r\n $form.data(key, true);\r\n try {\r\n $form.data(\"validator\").resetForm();\r\n } finally {\r\n $form.removeData(key);\r\n }\r\n\r\n $form.find(\".validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .removeClass(\"validation-summary-errors\");\r\n $form.find(\".field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .removeClass(\"field-validation-error\")\r\n .removeData(\"unobtrusiveContainer\")\r\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\r\n .removeData(\"unobtrusiveContainer\");\r\n }\r\n\r\n function validationInfo(form) {\r\n var $form = $(form),\r\n result = $form.data(data_validation),\r\n onResetProxy = $.proxy(onReset, form),\r\n defaultOptions = $jQval.unobtrusive.options || {},\r\n execInContext = function (name, args) {\r\n var func = defaultOptions[name];\r\n func && $.isFunction(func) && func.apply(form, args);\r\n };\r\n\r\n if (!result) {\r\n result = {\r\n options: { // options structure passed to jQuery Validate's validate() method\r\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\r\n errorElement: defaultOptions.errorElement || \"span\",\r\n errorPlacement: function () {\r\n onError.apply(form, arguments);\r\n execInContext(\"errorPlacement\", arguments);\r\n },\r\n invalidHandler: function () {\r\n onErrors.apply(form, arguments);\r\n execInContext(\"invalidHandler\", arguments);\r\n },\r\n messages: {},\r\n rules: {},\r\n success: function () {\r\n onSuccess.apply(form, arguments);\r\n execInContext(\"success\", arguments);\r\n }\r\n },\r\n attachValidation: function () {\r\n $form\r\n .off(\"reset.\" + data_validation, onResetProxy)\r\n .on(\"reset.\" + data_validation, onResetProxy)\r\n .validate(this.options);\r\n },\r\n validate: function () { // a validation function that is called by unobtrusive Ajax\r\n $form.validate();\r\n return $form.valid();\r\n }\r\n };\r\n $form.data(data_validation, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n $jQval.unobtrusive = {\r\n adapters: [],\r\n\r\n parseElement: function (element, skipAttach) {\r\n /// \r\n /// Parses a single HTML element for unobtrusive validation attributes.\r\n /// \r\n /// The HTML element to be parsed.\r\n /// [Optional] true to skip attaching the\r\n /// validation to the form. If parsing just this single element, you should specify true.\r\n /// If parsing several elements, you should specify false, and manually attach the validation\r\n /// to the form when you are finished. The default is false.\r\n var $element = $(element),\r\n form = $element.parents(\"form\")[0],\r\n valInfo, rules, messages;\r\n\r\n if (!form) { // Cannot do client-side validation without a form\r\n return;\r\n }\r\n\r\n valInfo = validationInfo(form);\r\n valInfo.options.rules[element.name] = rules = {};\r\n valInfo.options.messages[element.name] = messages = {};\r\n\r\n $.each(this.adapters, function () {\r\n var prefix = \"data-val-\" + this.name,\r\n message = $element.attr(prefix),\r\n paramValues = {};\r\n\r\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\r\n prefix += \"-\";\r\n\r\n $.each(this.params, function () {\r\n paramValues[this] = $element.attr(prefix + this);\r\n });\r\n\r\n this.adapt({\r\n element: element,\r\n form: form,\r\n message: message,\r\n params: paramValues,\r\n rules: rules,\r\n messages: messages\r\n });\r\n }\r\n });\r\n\r\n $.extend(rules, { \"__dummy__\": true });\r\n\r\n if (!skipAttach) {\r\n valInfo.attachValidation();\r\n }\r\n },\r\n\r\n parse: function (selector) {\r\n /// \r\n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\r\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\r\n /// attribute values.\r\n /// \r\n /// Any valid jQuery selector.\r\n\r\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\r\n // element with data-val=true\r\n var $selector = $(selector),\r\n $forms = $selector.parents()\r\n .addBack()\r\n .filter(\"form\")\r\n .add($selector.find(\"form\"))\r\n .has(\"[data-val=true]\");\r\n\r\n $selector.find(\"[data-val=true]\").each(function () {\r\n $jQval.unobtrusive.parseElement(this, true);\r\n });\r\n\r\n $forms.each(function () {\r\n var info = validationInfo(this);\r\n if (info) {\r\n info.attachValidation();\r\n }\r\n });\r\n }\r\n };\r\n\r\n adapters = $jQval.unobtrusive.adapters;\r\n\r\n adapters.add = function (adapterName, params, fn) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] An array of parameter names (strings) that will\r\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\r\n /// mmmm is the parameter name).\r\n /// The function to call, which adapts the values from the HTML\r\n /// attributes into jQuery Validate rules and/or messages.\r\n /// \r\n if (!fn) { // Called with no params, just a function\r\n fn = params;\r\n params = [];\r\n }\r\n this.push({ name: adapterName, params: params, adapt: fn });\r\n return this;\r\n };\r\n\r\n adapters.addBool = function (adapterName, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has no parameter values.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, function (options) {\r\n setValidationValues(options, ruleName || adapterName, true);\r\n });\r\n };\r\n\r\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\r\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a minimum value.\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a maximum value.\r\n /// The name of the jQuery Validate rule to be used when you\r\n /// have both a minimum and maximum value.\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the minimum value. The default is \"min\".\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the maximum value. The default is \"max\".\r\n /// \r\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\r\n var min = options.params.min,\r\n max = options.params.max;\r\n\r\n if (min && max) {\r\n setValidationValues(options, minMaxRuleName, [min, max]);\r\n }\r\n else if (min) {\r\n setValidationValues(options, minRuleName, min);\r\n }\r\n else if (max) {\r\n setValidationValues(options, maxRuleName, max);\r\n }\r\n });\r\n };\r\n\r\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has a single value.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\r\n /// [Optional] The name of the HTML attribute that contains the value.\r\n /// The default is \"val\".\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, [attribute || \"val\"], function (options) {\r\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\r\n });\r\n };\r\n\r\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\r\n return true;\r\n });\r\n\r\n $jQval.addMethod(\"regex\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n });\r\n\r\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\r\n var match;\r\n if (nonalphamin) {\r\n match = value.match(/\\W/g);\r\n match = match && match.length >= nonalphamin;\r\n }\r\n return match;\r\n });\r\n\r\n if ($jQval.methods.extension) {\r\n adapters.addSingleVal(\"accept\", \"mimtype\");\r\n adapters.addSingleVal(\"extension\", \"extension\");\r\n } else {\r\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\r\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\r\n // validating the extension, and ignore mime-type validations as they are not supported.\r\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\r\n }\r\n\r\n adapters.addSingleVal(\"regex\", \"pattern\");\r\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\r\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\r\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\r\n adapters.add(\"equalto\", [\"other\"], function (options) {\r\n var prefix = getModelPrefix(options.element.name),\r\n other = options.params.other,\r\n fullOtherName = appendModelPrefix(other, prefix),\r\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\r\n\r\n setValidationValues(options, \"equalTo\", element);\r\n });\r\n adapters.add(\"required\", function (options) {\r\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\r\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\r\n setValidationValues(options, \"required\", true);\r\n }\r\n });\r\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || \"GET\",\r\n data: {}\r\n },\r\n prefix = getModelPrefix(options.element.name);\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n value.data[paramName] = function () {\r\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\r\n // For checkboxes and radio buttons, only pick up values from checked fields.\r\n if (field.is(\":checkbox\")) {\r\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\r\n }\r\n else if (field.is(\":radio\")) {\r\n return field.filter(\":checked\").val() || '';\r\n }\r\n return field.val();\r\n };\r\n });\r\n\r\n setValidationValues(options, \"remote\", value);\r\n });\r\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\r\n if (options.params.min) {\r\n setValidationValues(options, \"minlength\", options.params.min);\r\n }\r\n if (options.params.nonalphamin) {\r\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\r\n }\r\n if (options.params.regex) {\r\n setValidationValues(options, \"regex\", options.params.regex);\r\n }\r\n });\r\n adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\r\n setValidationValues(options, \"extension\", options.params.extensions);\r\n });\r\n\r\n $(function () {\r\n $jQval.unobtrusive.parse(document);\r\n });\r\n\r\n return $jQval.unobtrusive;\r\n}));\r\n","/*!\r\n * jQuery Validation Plugin v1.19.1\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2019 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));","/*!\r\n * jQuery Validation Plugin v1.19.3\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2021 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"