{"version":3,"file":"chunk.78a63af1f93a79ce6d9f.js","mappings":"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","sources":["webpack://www.bowling.com/./node_modules/algoliasearch/node_modules/debug/src/browser.js","webpack://www.bowling.com/./node_modules/algoliasearch/node_modules/debug/src/debug.js","webpack://www.bowling.com/./node_modules/algoliasearch/node_modules/ms/index.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/AlgoliaSearchCore.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/IndexCore.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/browser/builds/algoliasearchLite.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/browser/createAlgoliasearch.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/browser/inline-headers.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/browser/jsonp-request.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/buildSearchMethod.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/clone.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/deprecate.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/deprecatedMessage.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/errors.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/exitPromise.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/map.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/merge.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/omit.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/places.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/store.js","webpack://www.bowling.com/./node_modules/algoliasearch/src/version.js","webpack://www.bowling.com/./node_modules/autocomplete.js/index.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/css.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/dataset.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/dropdown.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/event_bus.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/event_emitter.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/html.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/input.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/autocomplete/typeahead.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/common/dom.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/common/parseAlgoliaClientVersion.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/common/utils.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/sources/hits.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/sources/index.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/sources/popularIn.js","webpack://www.bowling.com/./node_modules/autocomplete.js/src/standalone/index.js","webpack://www.bowling.com/./node_modules/autocomplete.js/version.js","webpack://www.bowling.com/./node_modules/autocomplete.js/zepto.js","webpack://www.bowling.com/./node_modules/axios/index.js","webpack://www.bowling.com/./node_modules/axios/lib/adapters/xhr.js","webpack://www.bowling.com/./node_modules/axios/lib/axios.js","webpack://www.bowling.com/./node_modules/axios/lib/cancel/CancelToken.js","webpack://www.bowling.com/./node_modules/axios/lib/cancel/CanceledError.js","webpack://www.bowling.com/./node_modules/axios/lib/cancel/isCancel.js","webpack://www.bowling.com/./node_modules/axios/lib/core/Axios.js","webpack://www.bowling.com/./node_modules/axios/lib/core/AxiosError.js","webpack://www.bowling.com/./node_modules/axios/lib/core/InterceptorManager.js","webpack://www.bowling.com/./node_modules/axios/lib/core/buildFullPath.js","webpack://www.bowling.com/./node_modules/axios/lib/core/dispatchRequest.js","webpack://www.bowling.com/./node_modules/axios/lib/core/mergeConfig.js","webpack://www.bowling.com/./node_modules/axios/lib/core/settle.js","webpack://www.bowling.com/./node_modules/axios/lib/core/transformData.js","webpack://www.bowling.com/./node_modules/axios/lib/defaults/index.js","webpack://www.bowling.com/./node_modules/axios/lib/defaults/transitional.js","webpack://www.bowling.com/./node_modules/axios/lib/env/data.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/bind.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/buildURL.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/combineURLs.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/cookies.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/null.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/spread.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/toFormData.js","webpack://www.bowling.com/./node_modules/axios/lib/helpers/validator.js","webpack://www.bowling.com/./node_modules/axios/lib/utils.js","webpack://www.bowling.com/./node_modules/bootstrap/dist/js/bootstrap.js","webpack://www.bowling.com/./node_modules/dayjs/dayjs.min.js","webpack://www.bowling.com/./node_modules/dom-confetti/lib/main.js","webpack://www.bowling.com/./node_modules/ekko-lightbox/dist/ekko-lightbox.min.js","webpack://www.bowling.com/./node_modules/email-validator/index.js","webpack://www.bowling.com/./node_modules/es6-promise/dist/es6-promise.js","webpack://www.bowling.com/./node_modules/foreach/index.js","webpack://www.bowling.com/./node_modules/gasparesganga-jquery-loading-overlay/dist/loadingoverlay.min.js","webpack://www.bowling.com/./node_modules/global/window.js","webpack://www.bowling.com/./node_modules/immediate/lib/index.js","webpack://www.bowling.com/./node_modules/immediate/lib/messageChannel.js","webpack://www.bowling.com/./node_modules/immediate/lib/mutation.js","webpack://www.bowling.com/./node_modules/immediate/lib/queueMicrotask.js","webpack://www.bowling.com/./node_modules/immediate/lib/stateChange.js","webpack://www.bowling.com/./node_modules/immediate/lib/timeout.js","webpack://www.bowling.com/./node_modules/inherits/inherits_browser.js","webpack://www.bowling.com/./node_modules/isarray/index.js","webpack://www.bowling.com/./node_modules/jquery/dist/jquery.js","webpack://www.bowling.com/./node_modules/lazysizes/lazysizes.js","webpack://www.bowling.com/./node_modules/object-keys/implementation.js","webpack://www.bowling.com/./node_modules/object-keys/index.js","webpack://www.bowling.com/./node_modules/object-keys/isArguments.js","webpack://www.bowling.com/./node_modules/popper.js/dist/esm/popper.js","webpack://www.bowling.com/./node_modules/querystring-es3/decode.js","webpack://www.bowling.com/./node_modules/querystring-es3/encode.js","webpack://www.bowling.com/./node_modules/querystring-es3/index.js","webpack://www.bowling.com/./node_modules/@awesome.me/kit-5dd71facaf/icons/modules/classic/brands.mjs","webpack://www.bowling.com/./node_modules/@awesome.me/kit-5dd71facaf/icons/modules/classic/light.mjs","webpack://www.bowling.com/./node_modules/@awesome.me/kit-5dd71facaf/icons/modules/classic/regular.mjs","webpack://www.bowling.com/./node_modules/@awesome.me/kit-5dd71facaf/icons/modules/classic/solid.mjs","webpack://www.bowling.com/./node_modules/@awesome.me/kit-5dd71facaf/icons/modules/kit/custom.mjs","webpack://www.bowling.com/./node_modules/@awesome.me/kit-5dd71facaf/icons/modules/index.mjs","webpack://www.bowling.com/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs"],"sourcesContent":["/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","module.exports = AlgoliaSearchCore;\n\nvar errors = require('./errors');\nvar exitPromise = require('./exitPromise.js');\nvar IndexCore = require('./IndexCore.js');\nvar store = require('./store.js');\n\n// We will always put the API KEY in the JSON body in case of too long API KEY,\n// to avoid query string being too long and failing in various conditions (our server limit, browser limit,\n// proxies limit)\nvar MAX_API_KEY_LENGTH = 500;\nvar RESET_APP_DATA_TIMER =\n process.env.RESET_APP_DATA_TIMER && parseInt(process.env.RESET_APP_DATA_TIMER, 10) ||\n 60 * 2 * 1000; // after 2 minutes reset to first host\n\n/*\n * Algolia Search library initialization\n * https://www.algolia.com/\n *\n * @param {string} applicationID - Your applicationID, found in your dashboard\n * @param {string} apiKey - Your API key, found in your dashboard\n * @param {Object} [opts]\n * @param {number} [opts.timeout=2000] - The request timeout set in milliseconds,\n * another request will be issued after this timeout\n * @param {string} [opts.protocol='https:'] - The protocol used to query Algolia Search API.\n * Set to 'http:' to force using http.\n * @param {Object|Array} [opts.hosts={\n * read: [this.applicationID + '-dsn.algolia.net'].concat([\n * this.applicationID + '-1.algolianet.com',\n * this.applicationID + '-2.algolianet.com',\n * this.applicationID + '-3.algolianet.com']\n * ]),\n * write: [this.applicationID + '.algolia.net'].concat([\n * this.applicationID + '-1.algolianet.com',\n * this.applicationID + '-2.algolianet.com',\n * this.applicationID + '-3.algolianet.com']\n * ]) - The hosts to use for Algolia Search API.\n * If you provide them, you will less benefit from our HA implementation\n */\nfunction AlgoliaSearchCore(applicationID, apiKey, opts) {\n var debug = require('debug')('algoliasearch');\n\n var clone = require('./clone.js');\n var isArray = require('isarray');\n var map = require('./map.js');\n\n var usage = 'Usage: algoliasearch(applicationID, apiKey, opts)';\n\n if (opts._allowEmptyCredentials !== true && !applicationID) {\n throw new errors.AlgoliaSearchError('Please provide an application ID. ' + usage);\n }\n\n if (opts._allowEmptyCredentials !== true && !apiKey) {\n throw new errors.AlgoliaSearchError('Please provide an API key. ' + usage);\n }\n\n this.applicationID = applicationID;\n this.apiKey = apiKey;\n\n this.hosts = {\n read: [],\n write: []\n };\n\n opts = opts || {};\n\n this._timeouts = opts.timeouts || {\n connect: 1 * 1000, // 500ms connect is GPRS latency\n read: 2 * 1000,\n write: 30 * 1000\n };\n\n // backward compat, if opts.timeout is passed, we use it to configure all timeouts like before\n if (opts.timeout) {\n this._timeouts.connect = this._timeouts.read = this._timeouts.write = opts.timeout;\n }\n\n var protocol = opts.protocol || 'https:';\n // while we advocate for colon-at-the-end values: 'http:' for `opts.protocol`\n // we also accept `http` and `https`. It's a common error.\n if (!/:$/.test(protocol)) {\n protocol = protocol + ':';\n }\n\n if (protocol !== 'http:' && protocol !== 'https:') {\n throw new errors.AlgoliaSearchError('protocol must be `http:` or `https:` (was `' + opts.protocol + '`)');\n }\n\n this._checkAppIdData();\n\n if (!opts.hosts) {\n var defaultHosts = map(this._shuffleResult, function(hostNumber) {\n return applicationID + '-' + hostNumber + '.algolianet.com';\n });\n\n // no hosts given, compute defaults\n var mainSuffix = (opts.dsn === false ? '' : '-dsn') + '.algolia.net';\n this.hosts.read = [this.applicationID + mainSuffix].concat(defaultHosts);\n this.hosts.write = [this.applicationID + '.algolia.net'].concat(defaultHosts);\n } else if (isArray(opts.hosts)) {\n // when passing custom hosts, we need to have a different host index if the number\n // of write/read hosts are different.\n this.hosts.read = clone(opts.hosts);\n this.hosts.write = clone(opts.hosts);\n } else {\n this.hosts.read = clone(opts.hosts.read);\n this.hosts.write = clone(opts.hosts.write);\n }\n\n // add protocol and lowercase hosts\n this.hosts.read = map(this.hosts.read, prepareHost(protocol));\n this.hosts.write = map(this.hosts.write, prepareHost(protocol));\n\n this.extraHeaders = {};\n\n // In some situations you might want to warm the cache\n this.cache = opts._cache || {};\n\n this._ua = opts._ua;\n this._useCache = opts._useCache === undefined || opts._cache ? true : opts._useCache;\n this._useRequestCache = this._useCache && opts._useRequestCache;\n this._useFallback = opts.useFallback === undefined ? true : opts.useFallback;\n\n this._setTimeout = opts._setTimeout;\n\n debug('init done, %j', this);\n}\n\n/*\n * Get the index object initialized\n *\n * @param indexName the name of index\n * @param callback the result callback with one argument (the Index instance)\n */\nAlgoliaSearchCore.prototype.initIndex = function(indexName) {\n return new IndexCore(this, indexName);\n};\n\n/**\n* Add an extra field to the HTTP request\n*\n* @param name the header field name\n* @param value the header field value\n*/\nAlgoliaSearchCore.prototype.setExtraHeader = function(name, value) {\n this.extraHeaders[name.toLowerCase()] = value;\n};\n\n/**\n* Get the value of an extra HTTP header\n*\n* @param name the header field name\n*/\nAlgoliaSearchCore.prototype.getExtraHeader = function(name) {\n return this.extraHeaders[name.toLowerCase()];\n};\n\n/**\n* Remove an extra field from the HTTP request\n*\n* @param name the header field name\n*/\nAlgoliaSearchCore.prototype.unsetExtraHeader = function(name) {\n delete this.extraHeaders[name.toLowerCase()];\n};\n\n/**\n* Augment sent x-algolia-agent with more data, each agent part\n* is automatically separated from the others by a semicolon;\n*\n* @param algoliaAgent the agent to add\n*/\nAlgoliaSearchCore.prototype.addAlgoliaAgent = function(algoliaAgent) {\n if (this._ua.indexOf(';' + algoliaAgent) === -1) {\n this._ua += ';' + algoliaAgent;\n }\n};\n\n/*\n * Wrapper that try all hosts to maximize the quality of service\n */\nAlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {\n this._checkAppIdData();\n\n var requestDebug = require('debug')('algoliasearch:' + initialOpts.url);\n\n\n var body;\n var cacheID;\n var additionalUA = initialOpts.additionalUA || '';\n var cache = initialOpts.cache;\n var client = this;\n var tries = 0;\n var usingFallback = false;\n var hasFallback = client._useFallback && client._request.fallback && initialOpts.fallback;\n var headers;\n\n if (\n this.apiKey.length > MAX_API_KEY_LENGTH &&\n initialOpts.body !== undefined &&\n (initialOpts.body.params !== undefined || // index.search()\n initialOpts.body.requests !== undefined) // client.search()\n ) {\n initialOpts.body.apiKey = this.apiKey;\n headers = this._computeRequestHeaders({\n additionalUA: additionalUA,\n withApiKey: false,\n headers: initialOpts.headers\n });\n } else {\n headers = this._computeRequestHeaders({\n additionalUA: additionalUA,\n headers: initialOpts.headers\n });\n }\n\n if (initialOpts.body !== undefined) {\n body = safeJSONStringify(initialOpts.body);\n }\n\n requestDebug('request start');\n var debugData = [];\n\n\n function doRequest(requester, reqOpts) {\n client._checkAppIdData();\n\n var startTime = new Date();\n\n if (client._useCache && !client._useRequestCache) {\n cacheID = initialOpts.url;\n }\n\n // as we sometime use POST requests to pass parameters (like query='aa'),\n // the cacheID must also include the body to be different between calls\n if (client._useCache && !client._useRequestCache && body) {\n cacheID += '_body_' + reqOpts.body;\n }\n\n // handle cache existence\n if (isCacheValidWithCurrentID(!client._useRequestCache, cache, cacheID)) {\n requestDebug('serving response from cache');\n\n var responseText = cache[cacheID];\n\n // Cache response must match the type of the original one\n return client._promise.resolve({\n body: JSON.parse(responseText),\n responseText: responseText\n });\n }\n\n // if we reached max tries\n if (tries >= client.hosts[initialOpts.hostType].length) {\n if (!hasFallback || usingFallback) {\n requestDebug('could not get any response');\n // then stop\n return client._promise.reject(new errors.AlgoliaSearchError(\n 'Cannot connect to the AlgoliaSearch API.' +\n ' Send an email to support@algolia.com to report and resolve the issue.' +\n ' Application id was: ' + client.applicationID, {debugData: debugData}\n ));\n }\n\n requestDebug('switching to fallback');\n\n // let's try the fallback starting from here\n tries = 0;\n\n // method, url and body are fallback dependent\n reqOpts.method = initialOpts.fallback.method;\n reqOpts.url = initialOpts.fallback.url;\n reqOpts.jsonBody = initialOpts.fallback.body;\n if (reqOpts.jsonBody) {\n reqOpts.body = safeJSONStringify(reqOpts.jsonBody);\n }\n // re-compute headers, they could be omitting the API KEY\n headers = client._computeRequestHeaders({\n additionalUA: additionalUA,\n headers: initialOpts.headers\n });\n\n reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);\n client._setHostIndexByType(0, initialOpts.hostType);\n usingFallback = true; // the current request is now using fallback\n return doRequest(client._request.fallback, reqOpts);\n }\n\n var currentHost = client._getHostByType(initialOpts.hostType);\n\n var url = currentHost + reqOpts.url;\n var options = {\n body: reqOpts.body,\n jsonBody: reqOpts.jsonBody,\n method: reqOpts.method,\n headers: headers,\n timeouts: reqOpts.timeouts,\n debug: requestDebug,\n forceAuthHeaders: reqOpts.forceAuthHeaders\n };\n\n requestDebug('method: %s, url: %s, headers: %j, timeouts: %d',\n options.method, url, options.headers, options.timeouts);\n\n if (requester === client._request.fallback) {\n requestDebug('using fallback');\n }\n\n // `requester` is any of this._request or this._request.fallback\n // thus it needs to be called using the client as context\n return requester.call(client, url, options).then(success, tryFallback);\n\n function success(httpResponse) {\n // compute the status of the response,\n //\n // When in browser mode, using XDR or JSONP, we have no statusCode available\n // So we rely on our API response `status` property.\n // But `waitTask` can set a `status` property which is not the statusCode (it's the task status)\n // So we check if there's a `message` along `status` and it means it's an error\n //\n // That's the only case where we have a response.status that's not the http statusCode\n var status = httpResponse && httpResponse.body && httpResponse.body.message && httpResponse.body.status ||\n\n // this is important to check the request statusCode AFTER the body eventual\n // statusCode because some implementations (jQuery XDomainRequest transport) may\n // send statusCode 200 while we had an error\n httpResponse.statusCode ||\n\n // When in browser mode, using XDR or JSONP\n // we default to success when no error (no response.status && response.message)\n // If there was a JSON.parse() error then body is null and it fails\n httpResponse && httpResponse.body && 200;\n\n requestDebug('received response: statusCode: %s, computed statusCode: %d, headers: %j',\n httpResponse.statusCode, status, httpResponse.headers);\n\n var httpResponseOk = Math.floor(status / 100) === 2;\n\n var endTime = new Date();\n debugData.push({\n currentHost: currentHost,\n headers: removeCredentials(headers),\n content: body || null,\n contentLength: body !== undefined ? body.length : null,\n method: reqOpts.method,\n timeouts: reqOpts.timeouts,\n url: reqOpts.url,\n startTime: startTime,\n endTime: endTime,\n duration: endTime - startTime,\n statusCode: status\n });\n\n if (httpResponseOk) {\n if (client._useCache && !client._useRequestCache && cache) {\n cache[cacheID] = httpResponse.responseText;\n }\n\n return {\n responseText: httpResponse.responseText,\n body: httpResponse.body\n };\n }\n\n var shouldRetry = Math.floor(status / 100) !== 4;\n\n if (shouldRetry) {\n tries += 1;\n return retryRequest();\n }\n\n requestDebug('unrecoverable error');\n\n // no success and no retry => fail\n var unrecoverableError = new errors.AlgoliaSearchError(\n httpResponse.body && httpResponse.body.message, {debugData: debugData, statusCode: status}\n );\n\n return client._promise.reject(unrecoverableError);\n }\n\n function tryFallback(err) {\n // error cases:\n // While not in fallback mode:\n // - CORS not supported\n // - network error\n // While in fallback mode:\n // - timeout\n // - network error\n // - badly formatted JSONP (script loaded, did not call our callback)\n // In both cases:\n // - uncaught exception occurs (TypeError)\n requestDebug('error: %s, stack: %s', err.message, err.stack);\n\n var endTime = new Date();\n debugData.push({\n currentHost: currentHost,\n headers: removeCredentials(headers),\n content: body || null,\n contentLength: body !== undefined ? body.length : null,\n method: reqOpts.method,\n timeouts: reqOpts.timeouts,\n url: reqOpts.url,\n startTime: startTime,\n endTime: endTime,\n duration: endTime - startTime\n });\n\n if (!(err instanceof errors.AlgoliaSearchError)) {\n err = new errors.Unknown(err && err.message, err);\n }\n\n tries += 1;\n\n // stop the request implementation when:\n if (\n // we did not generate this error,\n // it comes from a throw in some other piece of code\n err instanceof errors.Unknown ||\n\n // server sent unparsable JSON\n err instanceof errors.UnparsableJSON ||\n\n // max tries and already using fallback or no fallback\n tries >= client.hosts[initialOpts.hostType].length &&\n (usingFallback || !hasFallback)) {\n // stop request implementation for this command\n err.debugData = debugData;\n return client._promise.reject(err);\n }\n\n // When a timeout occured, retry by raising timeout\n if (err instanceof errors.RequestTimeout) {\n return retryRequestWithHigherTimeout();\n }\n\n return retryRequest();\n }\n\n function retryRequest() {\n requestDebug('retrying request');\n client._incrementHostIndex(initialOpts.hostType);\n return doRequest(requester, reqOpts);\n }\n\n function retryRequestWithHigherTimeout() {\n requestDebug('retrying request with higher timeout');\n client._incrementHostIndex(initialOpts.hostType);\n client._incrementTimeoutMultipler();\n reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);\n return doRequest(requester, reqOpts);\n }\n }\n\n function isCacheValidWithCurrentID(\n useRequestCache,\n currentCache,\n currentCacheID\n ) {\n return (\n client._useCache &&\n useRequestCache &&\n currentCache &&\n currentCache[currentCacheID] !== undefined\n );\n }\n\n\n function interopCallbackReturn(request, callback) {\n if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) {\n request.catch(function() {\n // Release the cache on error\n delete cache[cacheID];\n });\n }\n\n if (typeof initialOpts.callback === 'function') {\n // either we have a callback\n request.then(function okCb(content) {\n exitPromise(function() {\n initialOpts.callback(null, callback(content));\n }, client._setTimeout || setTimeout);\n }, function nookCb(err) {\n exitPromise(function() {\n initialOpts.callback(err);\n }, client._setTimeout || setTimeout);\n });\n } else {\n // either we are using promises\n return request.then(callback);\n }\n }\n\n if (client._useCache && client._useRequestCache) {\n cacheID = initialOpts.url;\n }\n\n // as we sometime use POST requests to pass parameters (like query='aa'),\n // the cacheID must also include the body to be different between calls\n if (client._useCache && client._useRequestCache && body) {\n cacheID += '_body_' + body;\n }\n\n if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) {\n requestDebug('serving request from cache');\n\n var maybePromiseForCache = cache[cacheID];\n\n // In case the cache is warmup with value that is not a promise\n var promiseForCache = typeof maybePromiseForCache.then !== 'function'\n ? client._promise.resolve({responseText: maybePromiseForCache})\n : maybePromiseForCache;\n\n return interopCallbackReturn(promiseForCache, function(content) {\n // In case of the cache request, return the original value\n return JSON.parse(content.responseText);\n });\n }\n\n var request = doRequest(\n client._request, {\n url: initialOpts.url,\n method: initialOpts.method,\n body: body,\n jsonBody: initialOpts.body,\n timeouts: client._getTimeoutsForRequest(initialOpts.hostType),\n forceAuthHeaders: initialOpts.forceAuthHeaders\n }\n );\n\n if (client._useCache && client._useRequestCache && cache) {\n cache[cacheID] = request;\n }\n\n return interopCallbackReturn(request, function(content) {\n // In case of the first request, return the JSON value\n return content.body;\n });\n};\n\n/*\n* Transform search param object in query string\n* @param {object} args arguments to add to the current query string\n* @param {string} params current query string\n* @return {string} the final query string\n*/\nAlgoliaSearchCore.prototype._getSearchParams = function(args, params) {\n if (args === undefined || args === null) {\n return params;\n }\n for (var key in args) {\n if (key !== null && args[key] !== undefined && args.hasOwnProperty(key)) {\n params += params === '' ? '' : '&';\n params += key + '=' + encodeURIComponent(Object.prototype.toString.call(args[key]) === '[object Array]' ? safeJSONStringify(args[key]) : args[key]);\n }\n }\n return params;\n};\n\n/**\n * Compute the headers for a request\n *\n * @param [string] options.additionalUA semi-colon separated string with other user agents to add\n * @param [boolean=true] options.withApiKey Send the api key as a header\n * @param [Object] options.headers Extra headers to send\n */\nAlgoliaSearchCore.prototype._computeRequestHeaders = function(options) {\n var forEach = require('foreach');\n\n var ua = options.additionalUA ?\n this._ua + ';' + options.additionalUA :\n this._ua;\n\n var requestHeaders = {\n 'x-algolia-agent': ua,\n 'x-algolia-application-id': this.applicationID\n };\n\n // browser will inline headers in the url, node.js will use http headers\n // but in some situations, the API KEY will be too long (big secured API keys)\n // so if the request is a POST and the KEY is very long, we will be asked to not put\n // it into headers but in the JSON body\n if (options.withApiKey !== false) {\n requestHeaders['x-algolia-api-key'] = this.apiKey;\n }\n\n if (this.userToken) {\n requestHeaders['x-algolia-usertoken'] = this.userToken;\n }\n\n if (this.securityTags) {\n requestHeaders['x-algolia-tagfilters'] = this.securityTags;\n }\n\n forEach(this.extraHeaders, function addToRequestHeaders(value, key) {\n requestHeaders[key] = value;\n });\n\n if (options.headers) {\n forEach(options.headers, function addToRequestHeaders(value, key) {\n requestHeaders[key] = value;\n });\n }\n\n return requestHeaders;\n};\n\n/**\n * Search through multiple indices at the same time\n * @param {Object[]} queries An array of queries you want to run.\n * @param {string} queries[].indexName The index name you want to target\n * @param {string} [queries[].query] The query to issue on this index. Can also be passed into `params`\n * @param {Object} queries[].params Any search param like hitsPerPage, ..\n * @param {Function} callback Callback to be called\n * @return {Promise|undefined} Returns a promise if no callback given\n */\nAlgoliaSearchCore.prototype.search = function(queries, opts, callback) {\n var isArray = require('isarray');\n var map = require('./map.js');\n\n var usage = 'Usage: client.search(arrayOfQueries[, callback])';\n\n if (!isArray(queries)) {\n throw new Error(usage);\n }\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var client = this;\n\n var postObj = {\n requests: map(queries, function prepareRequest(query) {\n var params = '';\n\n // allow query.query\n // so we are mimicing the index.search(query, params) method\n // {indexName:, query:, params:}\n if (query.query !== undefined) {\n params += 'query=' + encodeURIComponent(query.query);\n }\n\n return {\n indexName: query.indexName,\n params: client._getSearchParams(query.params, params)\n };\n })\n };\n\n var JSONPParams = map(postObj.requests, function prepareJSONPParams(request, requestId) {\n return requestId + '=' +\n encodeURIComponent(\n '/1/indexes/' + encodeURIComponent(request.indexName) + '?' +\n request.params\n );\n }).join('&');\n\n var url = '/1/indexes/*/queries';\n\n if (opts.strategy !== undefined) {\n postObj.strategy = opts.strategy;\n }\n\n return this._jsonRequest({\n cache: this.cache,\n method: 'POST',\n url: url,\n body: postObj,\n hostType: 'read',\n fallback: {\n method: 'GET',\n url: '/1/indexes/*',\n body: {\n params: JSONPParams\n }\n },\n callback: callback\n });\n};\n\n/**\n* Search for facet values\n* https://www.algolia.com/doc/rest-api/search#search-for-facet-values\n* This is the top-level API for SFFV.\n*\n* @param {object[]} queries An array of queries to run.\n* @param {string} queries[].indexName Index name, name of the index to search.\n* @param {object} queries[].params Query parameters.\n* @param {string} queries[].params.facetName Facet name, name of the attribute to search for values in.\n* Must be declared as a facet\n* @param {string} queries[].params.facetQuery Query for the facet search\n* @param {string} [queries[].params.*] Any search parameter of Algolia,\n* see https://www.algolia.com/doc/api-client/javascript/search#search-parameters\n* Pagination is not supported. The page and hitsPerPage parameters will be ignored.\n*/\nAlgoliaSearchCore.prototype.searchForFacetValues = function(queries) {\n var isArray = require('isarray');\n var map = require('./map.js');\n\n var usage = 'Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])'; // eslint-disable-line max-len\n\n if (!isArray(queries)) {\n throw new Error(usage);\n }\n\n var client = this;\n\n return client._promise.all(map(queries, function performQuery(query) {\n if (\n !query ||\n query.indexName === undefined ||\n query.params.facetName === undefined ||\n query.params.facetQuery === undefined\n ) {\n throw new Error(usage);\n }\n\n var clone = require('./clone.js');\n var omit = require('./omit.js');\n\n var indexName = query.indexName;\n var params = query.params;\n\n var facetName = params.facetName;\n var filteredParams = omit(clone(params), function(keyName) {\n return keyName === 'facetName';\n });\n var searchParameters = client._getSearchParams(filteredParams, '');\n\n return client._jsonRequest({\n cache: client.cache,\n method: 'POST',\n url:\n '/1/indexes/' +\n encodeURIComponent(indexName) +\n '/facets/' +\n encodeURIComponent(facetName) +\n '/query',\n hostType: 'read',\n body: {params: searchParameters}\n });\n }));\n};\n\n/**\n * Set the extra security tagFilters header\n * @param {string|array} tags The list of tags defining the current security filters\n */\nAlgoliaSearchCore.prototype.setSecurityTags = function(tags) {\n if (Object.prototype.toString.call(tags) === '[object Array]') {\n var strTags = [];\n for (var i = 0; i < tags.length; ++i) {\n if (Object.prototype.toString.call(tags[i]) === '[object Array]') {\n var oredTags = [];\n for (var j = 0; j < tags[i].length; ++j) {\n oredTags.push(tags[i][j]);\n }\n strTags.push('(' + oredTags.join(',') + ')');\n } else {\n strTags.push(tags[i]);\n }\n }\n tags = strTags.join(',');\n }\n\n this.securityTags = tags;\n};\n\n/**\n * Set the extra user token header\n * @param {string} userToken The token identifying a uniq user (used to apply rate limits)\n */\nAlgoliaSearchCore.prototype.setUserToken = function(userToken) {\n this.userToken = userToken;\n};\n\n/**\n * Clear all queries in client's cache\n * @return undefined\n */\nAlgoliaSearchCore.prototype.clearCache = function() {\n this.cache = {};\n};\n\n/**\n* Set the number of milliseconds a request can take before automatically being terminated.\n* @deprecated\n* @param {Number} milliseconds\n*/\nAlgoliaSearchCore.prototype.setRequestTimeout = function(milliseconds) {\n if (milliseconds) {\n this._timeouts.connect = this._timeouts.read = this._timeouts.write = milliseconds;\n }\n};\n\n/**\n* Set the three different (connect, read, write) timeouts to be used when requesting\n* @param {Object} timeouts\n*/\nAlgoliaSearchCore.prototype.setTimeouts = function(timeouts) {\n this._timeouts = timeouts;\n};\n\n/**\n* Get the three different (connect, read, write) timeouts to be used when requesting\n* @param {Object} timeouts\n*/\nAlgoliaSearchCore.prototype.getTimeouts = function() {\n return this._timeouts;\n};\n\nAlgoliaSearchCore.prototype._getAppIdData = function() {\n var data = store.get(this.applicationID);\n if (data !== null) this._cacheAppIdData(data);\n return data;\n};\n\nAlgoliaSearchCore.prototype._setAppIdData = function(data) {\n data.lastChange = (new Date()).getTime();\n this._cacheAppIdData(data);\n return store.set(this.applicationID, data);\n};\n\nAlgoliaSearchCore.prototype._checkAppIdData = function() {\n var data = this._getAppIdData();\n var now = (new Date()).getTime();\n if (data === null || now - data.lastChange > RESET_APP_DATA_TIMER) {\n return this._resetInitialAppIdData(data);\n }\n\n return data;\n};\n\nAlgoliaSearchCore.prototype._resetInitialAppIdData = function(data) {\n var newData = data || {};\n newData.hostIndexes = {read: 0, write: 0};\n newData.timeoutMultiplier = 1;\n newData.shuffleResult = newData.shuffleResult || shuffle([1, 2, 3]);\n return this._setAppIdData(newData);\n};\n\nAlgoliaSearchCore.prototype._cacheAppIdData = function(data) {\n this._hostIndexes = data.hostIndexes;\n this._timeoutMultiplier = data.timeoutMultiplier;\n this._shuffleResult = data.shuffleResult;\n};\n\nAlgoliaSearchCore.prototype._partialAppIdDataUpdate = function(newData) {\n var foreach = require('foreach');\n var currentData = this._getAppIdData();\n foreach(newData, function(value, key) {\n currentData[key] = value;\n });\n\n return this._setAppIdData(currentData);\n};\n\nAlgoliaSearchCore.prototype._getHostByType = function(hostType) {\n return this.hosts[hostType][this._getHostIndexByType(hostType)];\n};\n\nAlgoliaSearchCore.prototype._getTimeoutMultiplier = function() {\n return this._timeoutMultiplier;\n};\n\nAlgoliaSearchCore.prototype._getHostIndexByType = function(hostType) {\n return this._hostIndexes[hostType];\n};\n\nAlgoliaSearchCore.prototype._setHostIndexByType = function(hostIndex, hostType) {\n var clone = require('./clone');\n var newHostIndexes = clone(this._hostIndexes);\n newHostIndexes[hostType] = hostIndex;\n this._partialAppIdDataUpdate({hostIndexes: newHostIndexes});\n return hostIndex;\n};\n\nAlgoliaSearchCore.prototype._incrementHostIndex = function(hostType) {\n return this._setHostIndexByType(\n (this._getHostIndexByType(hostType) + 1) % this.hosts[hostType].length, hostType\n );\n};\n\nAlgoliaSearchCore.prototype._incrementTimeoutMultipler = function() {\n var timeoutMultiplier = Math.max(this._timeoutMultiplier + 1, 4);\n return this._partialAppIdDataUpdate({timeoutMultiplier: timeoutMultiplier});\n};\n\nAlgoliaSearchCore.prototype._getTimeoutsForRequest = function(hostType) {\n return {\n connect: this._timeouts.connect * this._timeoutMultiplier,\n complete: this._timeouts[hostType] * this._timeoutMultiplier\n };\n};\n\nfunction prepareHost(protocol) {\n return function prepare(host) {\n return protocol + '//' + host.toLowerCase();\n };\n}\n\n// Prototype.js < 1.7, a widely used library, defines a weird\n// Array.prototype.toJSON function that will fail to stringify our content\n// appropriately\n// refs:\n// - https://groups.google.com/forum/#!topic/prototype-core/E-SAVvV_V9Q\n// - https://github.com/sstephenson/prototype/commit/038a2985a70593c1a86c230fadbdfe2e4898a48c\n// - http://stackoverflow.com/a/3148441/147079\nfunction safeJSONStringify(obj) {\n /* eslint no-extend-native:0 */\n\n if (Array.prototype.toJSON === undefined) {\n return JSON.stringify(obj);\n }\n\n var toJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n var out = JSON.stringify(obj);\n Array.prototype.toJSON = toJSON;\n\n return out;\n}\n\nfunction shuffle(array) {\n var currentIndex = array.length;\n var temporaryValue;\n var randomIndex;\n\n // While there remain elements to shuffle...\n while (currentIndex !== 0) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n\n return array;\n}\n\nfunction removeCredentials(headers) {\n var newHeaders = {};\n\n for (var headerName in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, headerName)) {\n var value;\n\n if (headerName === 'x-algolia-api-key' || headerName === 'x-algolia-application-id') {\n value = '**hidden for security purposes**';\n } else {\n value = headers[headerName];\n }\n\n newHeaders[headerName] = value;\n }\n }\n\n return newHeaders;\n}\n","var buildSearchMethod = require('./buildSearchMethod.js');\nvar deprecate = require('./deprecate.js');\nvar deprecatedMessage = require('./deprecatedMessage.js');\n\nmodule.exports = IndexCore;\n\n/*\n* Index class constructor.\n* You should not use this method directly but use initIndex() function\n*/\nfunction IndexCore(algoliasearch, indexName) {\n this.indexName = indexName;\n this.as = algoliasearch;\n this.typeAheadArgs = null;\n this.typeAheadValueOption = null;\n\n // make sure every index instance has it's own cache\n this.cache = {};\n}\n\n/*\n* Clear all queries in cache\n*/\nIndexCore.prototype.clearCache = function() {\n this.cache = {};\n};\n\n/*\n* Search inside the index using XMLHttpRequest request (Using a POST query to\n* minimize number of OPTIONS queries: Cross-Origin Resource Sharing).\n*\n* @param {string} [query] the full text query\n* @param {object} [args] (optional) if set, contains an object with query parameters:\n* - page: (integer) Pagination parameter used to select the page to retrieve.\n* Page is zero-based and defaults to 0. Thus,\n* to retrieve the 10th page you need to set page=9\n* - hitsPerPage: (integer) Pagination parameter used to select the number of hits per page. Defaults to 20.\n* - attributesToRetrieve: a string that contains the list of object attributes\n* you want to retrieve (let you minimize the answer size).\n* Attributes are separated with a comma (for example \"name,address\").\n* You can also use an array (for example [\"name\",\"address\"]).\n* By default, all attributes are retrieved. You can also use '*' to retrieve all\n* values when an attributesToRetrieve setting is specified for your index.\n* - attributesToHighlight: a string that contains the list of attributes you\n* want to highlight according to the query.\n* Attributes are separated by a comma. You can also use an array (for example [\"name\",\"address\"]).\n* If an attribute has no match for the query, the raw value is returned.\n* By default all indexed text attributes are highlighted.\n* You can use `*` if you want to highlight all textual attributes.\n* Numerical attributes are not highlighted.\n* A matchLevel is returned for each highlighted attribute and can contain:\n* - full: if all the query terms were found in the attribute,\n* - partial: if only some of the query terms were found,\n* - none: if none of the query terms were found.\n* - attributesToSnippet: a string that contains the list of attributes to snippet alongside\n* the number of words to return (syntax is `attributeName:nbWords`).\n* Attributes are separated by a comma (Example: attributesToSnippet=name:10,content:10).\n* You can also use an array (Example: attributesToSnippet: ['name:10','content:10']).\n* By default no snippet is computed.\n* - minWordSizefor1Typo: the minimum number of characters in a query word to accept one typo in this word.\n* Defaults to 3.\n* - minWordSizefor2Typos: the minimum number of characters in a query word\n* to accept two typos in this word. Defaults to 7.\n* - getRankingInfo: if set to 1, the result hits will contain ranking\n* information in _rankingInfo attribute.\n* - aroundLatLng: search for entries around a given\n* latitude/longitude (specified as two floats separated by a comma).\n* For example aroundLatLng=47.316669,5.016670).\n* You can specify the maximum distance in meters with the aroundRadius parameter (in meters)\n* and the precision for ranking with aroundPrecision\n* (for example if you set aroundPrecision=100, two objects that are distant of\n* less than 100m will be considered as identical for \"geo\" ranking parameter).\n* At indexing, you should specify geoloc of an object with the _geoloc attribute\n* (in the form {\"_geoloc\":{\"lat\":48.853409, \"lng\":2.348800}})\n* - insideBoundingBox: search entries inside a given area defined by the two extreme points\n* of a rectangle (defined by 4 floats: p1Lat,p1Lng,p2Lat,p2Lng).\n* For example insideBoundingBox=47.3165,4.9665,47.3424,5.0201).\n* At indexing, you should specify geoloc of an object with the _geoloc attribute\n* (in the form {\"_geoloc\":{\"lat\":48.853409, \"lng\":2.348800}})\n* - numericFilters: a string that contains the list of numeric filters you want to\n* apply separated by a comma.\n* The syntax of one filter is `attributeName` followed by `operand` followed by `value`.\n* Supported operands are `<`, `<=`, `=`, `>` and `>=`.\n* You can have multiple conditions on one attribute like for example numericFilters=price>100,price<1000.\n* You can also use an array (for example numericFilters: [\"price>100\",\"price<1000\"]).\n* - tagFilters: filter the query by a set of tags. You can AND tags by separating them by commas.\n* To OR tags, you must add parentheses. For example, tags=tag1,(tag2,tag3) means tag1 AND (tag2 OR tag3).\n* You can also use an array, for example tagFilters: [\"tag1\",[\"tag2\",\"tag3\"]]\n* means tag1 AND (tag2 OR tag3).\n* At indexing, tags should be added in the _tags** attribute\n* of objects (for example {\"_tags\":[\"tag1\",\"tag2\"]}).\n* - facetFilters: filter the query by a list of facets.\n* Facets are separated by commas and each facet is encoded as `attributeName:value`.\n* For example: `facetFilters=category:Book,author:John%20Doe`.\n* You can also use an array (for example `[\"category:Book\",\"author:John%20Doe\"]`).\n* - facets: List of object attributes that you want to use for faceting.\n* Comma separated list: `\"category,author\"` or array `['category','author']`\n* Only attributes that have been added in **attributesForFaceting** index setting\n* can be used in this parameter.\n* You can also use `*` to perform faceting on all attributes specified in **attributesForFaceting**.\n* - queryType: select how the query words are interpreted, it can be one of the following value:\n* - prefixAll: all query words are interpreted as prefixes,\n* - prefixLast: only the last word is interpreted as a prefix (default behavior),\n* - prefixNone: no query word is interpreted as a prefix. This option is not recommended.\n* - optionalWords: a string that contains the list of words that should\n* be considered as optional when found in the query.\n* Comma separated and array are accepted.\n* - distinct: If set to 1, enable the distinct feature (disabled by default)\n* if the attributeForDistinct index setting is set.\n* This feature is similar to the SQL \"distinct\" keyword: when enabled\n* in a query with the distinct=1 parameter,\n* all hits containing a duplicate value for the attributeForDistinct attribute are removed from results.\n* For example, if the chosen attribute is show_name and several hits have\n* the same value for show_name, then only the best\n* one is kept and others are removed.\n* - restrictSearchableAttributes: List of attributes you want to use for\n* textual search (must be a subset of the attributesToIndex index setting)\n* either comma separated or as an array\n* @param {function} [callback] the result callback called with two arguments:\n* error: null or Error('message'). If false, the content contains the error.\n* content: the server answer that contains the list of results.\n*/\nIndexCore.prototype.search = buildSearchMethod('query');\n\n/*\n* -- BETA --\n* Search a record similar to the query inside the index using XMLHttpRequest request (Using a POST query to\n* minimize number of OPTIONS queries: Cross-Origin Resource Sharing).\n*\n* @param {string} [query] the similar query\n* @param {object} [args] (optional) if set, contains an object with query parameters.\n* All search parameters are supported (see search function), restrictSearchableAttributes and facetFilters\n* are the two most useful to restrict the similar results and get more relevant content\n*/\nIndexCore.prototype.similarSearch = deprecate(\n buildSearchMethod('similarQuery'),\n deprecatedMessage(\n 'index.similarSearch(query[, callback])',\n 'index.search({ similarQuery: query }[, callback])'\n )\n);\n\n/*\n* Browse index content. The response content will have a `cursor` property that you can use\n* to browse subsequent pages for this query. Use `index.browseFrom(cursor)` when you want.\n*\n* @param {string} query - The full text query\n* @param {Object} [queryParameters] - Any search query parameter\n* @param {Function} [callback] - The result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the browse result\n* @return {Promise|undefined} Returns a promise if no callback given\n* @example\n* index.browse('cool songs', {\n* tagFilters: 'public,comments',\n* hitsPerPage: 500\n* }, callback);\n* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}\n*/\nIndexCore.prototype.browse = function(query, queryParameters, callback) {\n var merge = require('./merge.js');\n\n var indexObj = this;\n\n var page;\n var hitsPerPage;\n\n // we check variadic calls that are not the one defined\n // .browse()/.browse(fn)\n // => page = 0\n if (arguments.length === 0 || arguments.length === 1 && typeof arguments[0] === 'function') {\n page = 0;\n callback = arguments[0];\n query = undefined;\n } else if (typeof arguments[0] === 'number') {\n // .browse(2)/.browse(2, 10)/.browse(2, fn)/.browse(2, 10, fn)\n page = arguments[0];\n if (typeof arguments[1] === 'number') {\n hitsPerPage = arguments[1];\n } else if (typeof arguments[1] === 'function') {\n callback = arguments[1];\n hitsPerPage = undefined;\n }\n query = undefined;\n queryParameters = undefined;\n } else if (typeof arguments[0] === 'object') {\n // .browse(queryParameters)/.browse(queryParameters, cb)\n if (typeof arguments[1] === 'function') {\n callback = arguments[1];\n }\n queryParameters = arguments[0];\n query = undefined;\n } else if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') {\n // .browse(query, cb)\n callback = arguments[1];\n queryParameters = undefined;\n }\n\n // otherwise it's a .browse(query)/.browse(query, queryParameters)/.browse(query, queryParameters, cb)\n\n // get search query parameters combining various possible calls\n // to .browse();\n queryParameters = merge({}, queryParameters || {}, {\n page: page,\n hitsPerPage: hitsPerPage,\n query: query\n });\n\n var params = this.as._getSearchParams(queryParameters, '');\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/browse',\n body: {params: params},\n hostType: 'read',\n callback: callback\n });\n};\n\n/*\n* Continue browsing from a previous position (cursor), obtained via a call to `.browse()`.\n*\n* @param {string} query - The full text query\n* @param {Object} [queryParameters] - Any search query parameter\n* @param {Function} [callback] - The result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the browse result\n* @return {Promise|undefined} Returns a promise if no callback given\n* @example\n* index.browseFrom('14lkfsakl32', callback);\n* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}\n*/\nIndexCore.prototype.browseFrom = function(cursor, callback) {\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/browse',\n body: {cursor: cursor},\n hostType: 'read',\n callback: callback\n });\n};\n\n/*\n* Search for facet values\n* https://www.algolia.com/doc/rest-api/search#search-for-facet-values\n*\n* @param {string} params.facetName Facet name, name of the attribute to search for values in.\n* Must be declared as a facet\n* @param {string} params.facetQuery Query for the facet search\n* @param {string} [params.*] Any search parameter of Algolia,\n* see https://www.algolia.com/doc/api-client/javascript/search#search-parameters\n* Pagination is not supported. The page and hitsPerPage parameters will be ignored.\n* @param callback (optional)\n*/\nIndexCore.prototype.searchForFacetValues = function(params, callback) {\n var clone = require('./clone.js');\n var omit = require('./omit.js');\n var usage = 'Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])';\n\n if (params.facetName === undefined || params.facetQuery === undefined) {\n throw new Error(usage);\n }\n\n var facetName = params.facetName;\n var filteredParams = omit(clone(params), function(keyName) {\n return keyName === 'facetName';\n });\n var searchParameters = this.as._getSearchParams(filteredParams, '');\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' +\n encodeURIComponent(this.indexName) + '/facets/' + encodeURIComponent(facetName) + '/query',\n hostType: 'read',\n body: {params: searchParameters},\n callback: callback\n });\n};\n\nIndexCore.prototype.searchFacet = deprecate(function(params, callback) {\n return this.searchForFacetValues(params, callback);\n}, deprecatedMessage(\n 'index.searchFacet(params[, callback])',\n 'index.searchForFacetValues(params[, callback])'\n));\n\nIndexCore.prototype._search = function(params, url, callback, additionalUA) {\n return this.as._jsonRequest({\n cache: this.cache,\n method: 'POST',\n url: url || '/1/indexes/' + encodeURIComponent(this.indexName) + '/query',\n body: {params: params},\n hostType: 'read',\n fallback: {\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(this.indexName),\n body: {params: params}\n },\n callback: callback,\n additionalUA: additionalUA\n });\n};\n\n/*\n* Get an object from this index\n*\n* @param objectID the unique identifier of the object to retrieve\n* @param attrs (optional) if set, contains the array of attribute names to retrieve\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the object to retrieve or the error message if a failure occured\n*/\nIndexCore.prototype.getObject = function(objectID, attrs, callback) {\n var indexObj = this;\n\n if (arguments.length === 1 || typeof attrs === 'function') {\n callback = attrs;\n attrs = undefined;\n }\n\n var params = '';\n if (attrs !== undefined) {\n params = '?attributes=';\n for (var i = 0; i < attrs.length; ++i) {\n if (i !== 0) {\n params += ',';\n }\n params += attrs[i];\n }\n }\n\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(objectID) + params,\n hostType: 'read',\n callback: callback\n });\n};\n\n/*\n* Get several objects from this index\n*\n* @param objectIDs the array of unique identifier of objects to retrieve\n*/\nIndexCore.prototype.getObjects = function(objectIDs, attributesToRetrieve, callback) {\n var isArray = require('isarray');\n var map = require('./map.js');\n\n var usage = 'Usage: index.getObjects(arrayOfObjectIDs[, callback])';\n\n if (!isArray(objectIDs)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n\n if (arguments.length === 1 || typeof attributesToRetrieve === 'function') {\n callback = attributesToRetrieve;\n attributesToRetrieve = undefined;\n }\n\n var body = {\n requests: map(objectIDs, function prepareRequest(objectID) {\n var request = {\n indexName: indexObj.indexName,\n objectID: objectID\n };\n\n if (attributesToRetrieve) {\n request.attributesToRetrieve = attributesToRetrieve.join(',');\n }\n\n return request;\n })\n };\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/*/objects',\n hostType: 'read',\n body: body,\n callback: callback\n });\n};\n\nIndexCore.prototype.as = null;\nIndexCore.prototype.indexName = null;\nIndexCore.prototype.typeAheadArgs = null;\nIndexCore.prototype.typeAheadValueOption = null;\n","'use strict';\n\nvar AlgoliaSearchCore = require('../../AlgoliaSearchCore.js');\nvar createAlgoliasearch = require('../createAlgoliasearch.js');\n\nmodule.exports = createAlgoliasearch(AlgoliaSearchCore, '(lite) ');\n","'use strict';\n\nvar global = require('global');\nvar Promise = global.Promise || require('es6-promise').Promise;\n\n// This is the standalone browser build entry point\n// Browser implementation of the Algolia Search JavaScript client,\n// using XMLHttpRequest, XDomainRequest and JSONP as fallback\nmodule.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {\n var inherits = require('inherits');\n var errors = require('../errors');\n var inlineHeaders = require('./inline-headers');\n var jsonpRequest = require('./jsonp-request');\n var places = require('../places.js');\n uaSuffix = uaSuffix || '';\n\n if (process.env.NODE_ENV === 'debug') {\n require('debug').enable('algoliasearch*');\n }\n\n function algoliasearch(applicationID, apiKey, opts) {\n var cloneDeep = require('../clone.js');\n\n opts = cloneDeep(opts || {});\n\n opts._ua = opts._ua || algoliasearch.ua;\n\n return new AlgoliaSearchBrowser(applicationID, apiKey, opts);\n }\n\n algoliasearch.version = require('../version.js');\n algoliasearch.ua = 'Algolia for vanilla JavaScript ' + uaSuffix + algoliasearch.version;\n algoliasearch.initPlaces = places(algoliasearch);\n\n // we expose into window no matter how we are used, this will allow\n // us to easily debug any website running algolia\n global.__algolia = {\n debug: require('debug'),\n algoliasearch: algoliasearch\n };\n\n var support = {\n hasXMLHttpRequest: 'XMLHttpRequest' in global,\n hasXDomainRequest: 'XDomainRequest' in global\n };\n\n if (support.hasXMLHttpRequest) {\n support.cors = 'withCredentials' in new XMLHttpRequest();\n }\n\n function AlgoliaSearchBrowser() {\n // call AlgoliaSearch constructor\n AlgoliaSearch.apply(this, arguments);\n }\n\n inherits(AlgoliaSearchBrowser, AlgoliaSearch);\n\n AlgoliaSearchBrowser.prototype._request = function request(url, opts) {\n return new Promise(function wrapRequest(resolve, reject) {\n // no cors or XDomainRequest, no request\n if (!support.cors && !support.hasXDomainRequest) {\n // very old browser, not supported\n reject(new errors.Network('CORS not supported'));\n return;\n }\n\n url = inlineHeaders(url, opts.headers);\n\n var body = opts.body;\n var req = support.cors ? new XMLHttpRequest() : new XDomainRequest();\n var reqTimeout;\n var timedOut;\n var connected = false;\n\n reqTimeout = setTimeout(onTimeout, opts.timeouts.connect);\n // we set an empty onprogress listener\n // so that XDomainRequest on IE9 is not aborted\n // refs:\n // - https://github.com/algolia/algoliasearch-client-js/issues/76\n // - https://social.msdn.microsoft.com/Forums/ie/en-US/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-handlers-not-specified?forum=iewebdevelopment\n req.onprogress = onProgress;\n if ('onreadystatechange' in req) req.onreadystatechange = onReadyStateChange;\n req.onload = onLoad;\n req.onerror = onError;\n\n // do not rely on default XHR async flag, as some analytics code like hotjar\n // breaks it and set it to false by default\n if (req instanceof XMLHttpRequest) {\n req.open(opts.method, url, true);\n\n // The Analytics API never accepts Auth headers as query string\n // this option exists specifically for them.\n if (opts.forceAuthHeaders) {\n req.setRequestHeader(\n 'x-algolia-application-id',\n opts.headers['x-algolia-application-id']\n );\n req.setRequestHeader(\n 'x-algolia-api-key',\n opts.headers['x-algolia-api-key']\n );\n }\n } else {\n req.open(opts.method, url);\n }\n\n // headers are meant to be sent after open\n if (support.cors) {\n if (body) {\n if (opts.method === 'POST') {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Simple_requests\n req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');\n } else {\n req.setRequestHeader('content-type', 'application/json');\n }\n }\n req.setRequestHeader('accept', 'application/json');\n }\n\n if (body) {\n req.send(body);\n } else {\n req.send();\n }\n\n // event object not received in IE8, at least\n // but we do not use it, still important to note\n function onLoad(/* event */) {\n // When browser does not supports req.timeout, we can\n // have both a load and timeout event, since handled by a dumb setTimeout\n if (timedOut) {\n return;\n }\n\n clearTimeout(reqTimeout);\n\n var out;\n\n try {\n out = {\n body: JSON.parse(req.responseText),\n responseText: req.responseText,\n statusCode: req.status,\n // XDomainRequest does not have any response headers\n headers: req.getAllResponseHeaders && req.getAllResponseHeaders() || {}\n };\n } catch (e) {\n out = new errors.UnparsableJSON({\n more: req.responseText\n });\n }\n\n if (out instanceof errors.UnparsableJSON) {\n reject(out);\n } else {\n resolve(out);\n }\n }\n\n function onError(event) {\n if (timedOut) {\n return;\n }\n\n clearTimeout(reqTimeout);\n\n // error event is trigerred both with XDR/XHR on:\n // - DNS error\n // - unallowed cross domain request\n reject(\n new errors.Network({\n more: event\n })\n );\n }\n\n function onTimeout() {\n timedOut = true;\n req.abort();\n\n reject(new errors.RequestTimeout());\n }\n\n function onConnect() {\n connected = true;\n clearTimeout(reqTimeout);\n reqTimeout = setTimeout(onTimeout, opts.timeouts.complete);\n }\n\n function onProgress() {\n if (!connected) onConnect();\n }\n\n function onReadyStateChange() {\n if (!connected && req.readyState > 1) onConnect();\n }\n });\n };\n\n AlgoliaSearchBrowser.prototype._request.fallback = function requestFallback(url, opts) {\n url = inlineHeaders(url, opts.headers);\n\n return new Promise(function wrapJsonpRequest(resolve, reject) {\n jsonpRequest(url, opts, function jsonpRequestDone(err, content) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(content);\n });\n });\n };\n\n AlgoliaSearchBrowser.prototype._promise = {\n reject: function rejectPromise(val) {\n return Promise.reject(val);\n },\n resolve: function resolvePromise(val) {\n return Promise.resolve(val);\n },\n delay: function delayPromise(ms) {\n return new Promise(function resolveOnTimeout(resolve/* , reject*/) {\n setTimeout(resolve, ms);\n });\n },\n all: function all(promises) {\n return Promise.all(promises);\n }\n };\n\n return algoliasearch;\n};\n","'use strict';\n\nmodule.exports = inlineHeaders;\n\nvar encode = require('querystring-es3/encode');\n\nfunction inlineHeaders(url, headers) {\n if (/\\?/.test(url)) {\n url += '&';\n } else {\n url += '?';\n }\n\n return url + encode(headers);\n}\n","'use strict';\n\nmodule.exports = jsonpRequest;\n\nvar errors = require('../errors');\n\nvar JSONPCounter = 0;\n\nfunction jsonpRequest(url, opts, cb) {\n if (opts.method !== 'GET') {\n cb(new Error('Method ' + opts.method + ' ' + url + ' is not supported by JSONP.'));\n return;\n }\n\n opts.debug('JSONP: start');\n\n var cbCalled = false;\n var timedOut = false;\n\n JSONPCounter += 1;\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n var cbName = 'algoliaJSONP_' + JSONPCounter;\n var done = false;\n\n window[cbName] = function(data) {\n removeGlobals();\n\n if (timedOut) {\n opts.debug('JSONP: Late answer, ignoring');\n return;\n }\n\n cbCalled = true;\n\n clean();\n\n cb(null, {\n body: data,\n responseText: JSON.stringify(data)/* ,\n // We do not send the statusCode, there's no statusCode in JSONP, it will be\n // computed using data.status && data.message like with XDR\n statusCode*/\n });\n };\n\n // add callback by hand\n url += '&callback=' + cbName;\n\n // add body params manually\n if (opts.jsonBody && opts.jsonBody.params) {\n url += '&' + opts.jsonBody.params;\n }\n\n var ontimeout = setTimeout(timeout, opts.timeouts.complete);\n\n // script onreadystatechange needed only for\n // <= IE8\n // https://github.com/angular/angular.js/issues/4523\n script.onreadystatechange = readystatechange;\n script.onload = success;\n script.onerror = error;\n\n script.async = true;\n script.defer = true;\n script.src = url;\n head.appendChild(script);\n\n function success() {\n opts.debug('JSONP: success');\n\n if (done || timedOut) {\n return;\n }\n\n done = true;\n\n // script loaded but did not call the fn => script loading error\n if (!cbCalled) {\n opts.debug('JSONP: Fail. Script loaded but did not call the callback');\n clean();\n cb(new errors.JSONPScriptFail());\n }\n }\n\n function readystatechange() {\n if (this.readyState === 'loaded' || this.readyState === 'complete') {\n success();\n }\n }\n\n function clean() {\n clearTimeout(ontimeout);\n script.onload = null;\n script.onreadystatechange = null;\n script.onerror = null;\n head.removeChild(script);\n }\n\n function removeGlobals() {\n try {\n delete window[cbName];\n delete window[cbName + '_loaded'];\n } catch (e) {\n window[cbName] = window[cbName + '_loaded'] = undefined;\n }\n }\n\n function timeout() {\n opts.debug('JSONP: Script timeout');\n timedOut = true;\n clean();\n cb(new errors.RequestTimeout());\n }\n\n function error() {\n opts.debug('JSONP: Script error');\n\n if (done || timedOut) {\n return;\n }\n\n clean();\n cb(new errors.JSONPScriptError());\n }\n}\n","module.exports = buildSearchMethod;\n\nvar errors = require('./errors.js');\n\n/**\n * Creates a search method to be used in clients\n * @param {string} queryParam the name of the attribute used for the query\n * @param {string} url the url\n * @return {function} the search method\n */\nfunction buildSearchMethod(queryParam, url) {\n /**\n * The search method. Prepares the data and send the query to Algolia.\n * @param {string} query the string used for query search\n * @param {object} args additional parameters to send with the search\n * @param {function} [callback] the callback to be called with the client gets the answer\n * @return {undefined|Promise} If the callback is not provided then this methods returns a Promise\n */\n return function search(query, args, callback) {\n // warn V2 users on how to search\n if (typeof query === 'function' && typeof args === 'object' ||\n typeof callback === 'object') {\n // .search(query, params, cb)\n // .search(cb, params)\n throw new errors.AlgoliaSearchError('index.search usage is index.search(query, params, cb)');\n }\n\n // Normalizing the function signature\n if (arguments.length === 0 || typeof query === 'function') {\n // Usage : .search(), .search(cb)\n callback = query;\n query = '';\n } else if (arguments.length === 1 || typeof args === 'function') {\n // Usage : .search(query/args), .search(query, cb)\n callback = args;\n args = undefined;\n }\n // At this point we have 3 arguments with values\n\n // Usage : .search(args) // careful: typeof null === 'object'\n if (typeof query === 'object' && query !== null) {\n args = query;\n query = undefined;\n } else if (query === undefined || query === null) { // .search(undefined/null)\n query = '';\n }\n\n var params = '';\n\n if (query !== undefined) {\n params += queryParam + '=' + encodeURIComponent(query);\n }\n\n var additionalUA;\n if (args !== undefined) {\n if (args.additionalUA) {\n additionalUA = args.additionalUA;\n delete args.additionalUA;\n }\n // `_getSearchParams` will augment params, do not be fooled by the = versus += from previous if\n params = this.as._getSearchParams(args, params);\n }\n\n\n return this._search(params, url, callback, additionalUA);\n };\n}\n","module.exports = function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n","module.exports = function deprecate(fn, message) {\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n /* eslint no-console:0 */\n console.warn(message);\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n","module.exports = function deprecatedMessage(previousUsage, newUsage) {\n var githubAnchorLink = previousUsage.toLowerCase()\n .replace(/[\\.\\(\\)]/g, '');\n\n return 'algoliasearch: `' + previousUsage + '` was replaced by `' + newUsage +\n '`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#' + githubAnchorLink;\n};\n","'use strict';\n\n// This file hosts our error definitions\n// We use custom error \"types\" so that we can act on them when we need it\n// e.g.: if error instanceof errors.UnparsableJSON then..\n\nvar inherits = require('inherits');\n\nfunction AlgoliaSearchError(message, extraProperties) {\n var forEach = require('foreach');\n\n var error = this;\n\n // try to get a stacktrace\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor);\n } else {\n error.stack = (new Error()).stack || 'Cannot get a stacktrace, browser is too old';\n }\n\n this.name = 'AlgoliaSearchError';\n this.message = message || 'Unknown error';\n\n if (extraProperties) {\n forEach(extraProperties, function addToErrorObject(value, key) {\n error[key] = value;\n });\n }\n}\n\ninherits(AlgoliaSearchError, Error);\n\nfunction createCustomError(name, message) {\n function AlgoliaSearchCustomError() {\n var args = Array.prototype.slice.call(arguments, 0);\n\n // custom message not set, use default\n if (typeof args[0] !== 'string') {\n args.unshift(message);\n }\n\n AlgoliaSearchError.apply(this, args);\n this.name = 'AlgoliaSearch' + name + 'Error';\n }\n\n inherits(AlgoliaSearchCustomError, AlgoliaSearchError);\n\n return AlgoliaSearchCustomError;\n}\n\n// late exports to let various fn defs and inherits take place\nmodule.exports = {\n AlgoliaSearchError: AlgoliaSearchError,\n UnparsableJSON: createCustomError(\n 'UnparsableJSON',\n 'Could not parse the incoming response as JSON, see err.more for details'\n ),\n RequestTimeout: createCustomError(\n 'RequestTimeout',\n 'Request timedout before getting a response'\n ),\n Network: createCustomError(\n 'Network',\n 'Network issue, see err.more for details'\n ),\n JSONPScriptFail: createCustomError(\n 'JSONPScriptFail',\n '<script> was loaded but did not call our provided callback'\n ),\n JSONPScriptError: createCustomError(\n 'JSONPScriptError',\n '<script> unable to load due to an `error` event on it'\n ),\n Unknown: createCustomError(\n 'Unknown',\n 'Unknown error occured'\n )\n};\n","// Parse cloud does not supports setTimeout\n// We do not store a setTimeout reference in the client everytime\n// We only fallback to a fake setTimeout when not available\n// setTimeout cannot be override globally sadly\nmodule.exports = function exitPromise(fn, _setTimeout) {\n _setTimeout(fn, 0);\n};\n","var foreach = require('foreach');\n\nmodule.exports = function map(arr, fn) {\n var newArr = [];\n foreach(arr, function(item, itemIndex) {\n newArr.push(fn(item, itemIndex, arr));\n });\n return newArr;\n};\n","var foreach = require('foreach');\n\nmodule.exports = function merge(destination/* , sources */) {\n var sources = Array.prototype.slice.call(arguments);\n\n foreach(sources, function(source) {\n for (var keyName in source) {\n if (source.hasOwnProperty(keyName)) {\n if (typeof destination[keyName] === 'object' && typeof source[keyName] === 'object') {\n destination[keyName] = merge({}, destination[keyName], source[keyName]);\n } else if (source[keyName] !== undefined) {\n destination[keyName] = source[keyName];\n }\n }\n }\n });\n\n return destination;\n};\n","module.exports = function omit(obj, test) {\n var keys = require('object-keys');\n var foreach = require('foreach');\n\n var filtered = {};\n\n foreach(keys(obj), function doFilter(keyName) {\n if (test(keyName) !== true) {\n filtered[keyName] = obj[keyName];\n }\n });\n\n return filtered;\n};\n","module.exports = createPlacesClient;\n\nvar qs3 = require('querystring-es3');\nvar buildSearchMethod = require('./buildSearchMethod.js');\n\nfunction createPlacesClient(algoliasearch) {\n return function places(appID, apiKey, opts) {\n var cloneDeep = require('./clone.js');\n\n opts = opts && cloneDeep(opts) || {};\n opts.hosts = opts.hosts || [\n 'places-dsn.algolia.net',\n 'places-1.algolianet.com',\n 'places-2.algolianet.com',\n 'places-3.algolianet.com'\n ];\n\n // allow initPlaces() no arguments => community rate limited\n if (arguments.length === 0 || typeof appID === 'object' || appID === undefined) {\n appID = '';\n apiKey = '';\n opts._allowEmptyCredentials = true;\n }\n\n var client = algoliasearch(appID, apiKey, opts);\n var index = client.initIndex('places');\n index.search = buildSearchMethod('query', '/1/places/query');\n index.reverse = function(options, callback) {\n var encoded = qs3.encode(options);\n\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/places/reverse?' + encoded,\n hostType: 'read',\n callback: callback\n });\n };\n\n index.getObject = function(objectID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/places/' + encodeURIComponent(objectID),\n hostType: 'read',\n callback: callback\n });\n };\n return index;\n };\n}\n","var debug = require('debug')('algoliasearch:src/hostIndexState.js');\nvar localStorageNamespace = 'algoliasearch-client-js';\n\nvar store;\nvar moduleStore = {\n state: {},\n set: function(key, data) {\n this.state[key] = data;\n return this.state[key];\n },\n get: function(key) {\n return this.state[key] || null;\n }\n};\n\nvar localStorageStore = {\n set: function(key, data) {\n moduleStore.set(key, data); // always replicate localStorageStore to moduleStore in case of failure\n\n try {\n var namespace = JSON.parse(global.localStorage[localStorageNamespace]);\n namespace[key] = data;\n global.localStorage[localStorageNamespace] = JSON.stringify(namespace);\n return namespace[key];\n } catch (e) {\n return localStorageFailure(key, e);\n }\n },\n get: function(key) {\n try {\n return JSON.parse(global.localStorage[localStorageNamespace])[key] || null;\n } catch (e) {\n return localStorageFailure(key, e);\n }\n }\n};\n\nfunction localStorageFailure(key, e) {\n debug('localStorage failed with', e);\n cleanup();\n store = moduleStore;\n return store.get(key);\n}\n\nstore = supportsLocalStorage() ? localStorageStore : moduleStore;\n\nmodule.exports = {\n get: getOrSet,\n set: getOrSet,\n supportsLocalStorage: supportsLocalStorage\n};\n\nfunction getOrSet(key, data) {\n if (arguments.length === 1) {\n return store.get(key);\n }\n\n return store.set(key, data);\n}\n\nfunction supportsLocalStorage() {\n try {\n if ('localStorage' in global &&\n global.localStorage !== null) {\n if (!global.localStorage[localStorageNamespace]) {\n // actual creation of the namespace\n global.localStorage.setItem(localStorageNamespace, JSON.stringify({}));\n }\n return true;\n }\n\n return false;\n } catch (_) {\n return false;\n }\n}\n\n// In case of any error on localStorage, we clean our own namespace, this should handle\n// quota errors when a lot of keys + data are used\nfunction cleanup() {\n try {\n global.localStorage.removeItem(localStorageNamespace);\n } catch (_) {\n // nothing to do\n }\n}\n","'use strict';\n\nmodule.exports = '3.32.0';\n","'use strict';\n\nmodule.exports = require('./src/standalone/');\n","'use strict';\n\nvar _ = require('../common/utils.js');\n\nvar css = {\n wrapper: {\n position: 'relative',\n display: 'inline-block'\n },\n hint: {\n position: 'absolute',\n top: '0',\n left: '0',\n borderColor: 'transparent',\n boxShadow: 'none',\n // #741: fix hint opacity issue on iOS\n opacity: '1'\n },\n input: {\n position: 'relative',\n verticalAlign: 'top',\n backgroundColor: 'transparent'\n },\n inputWithNoHint: {\n position: 'relative',\n verticalAlign: 'top'\n },\n dropdown: {\n position: 'absolute',\n top: '100%',\n left: '0',\n zIndex: '100',\n display: 'none'\n },\n suggestions: {\n display: 'block'\n },\n suggestion: {\n whiteSpace: 'nowrap',\n cursor: 'pointer'\n },\n suggestionChild: {\n whiteSpace: 'normal'\n },\n ltr: {\n left: '0',\n right: 'auto'\n },\n rtl: {\n left: 'auto',\n right: '0'\n },\n defaultClasses: {\n root: 'algolia-autocomplete',\n prefix: 'aa',\n noPrefix: false,\n dropdownMenu: 'dropdown-menu',\n input: 'input',\n hint: 'hint',\n suggestions: 'suggestions',\n suggestion: 'suggestion',\n cursor: 'cursor',\n dataset: 'dataset',\n empty: 'empty'\n },\n // will be merged with the default ones if appendTo is used\n appendTo: {\n wrapper: {\n position: 'absolute',\n zIndex: '100',\n display: 'none'\n },\n input: {},\n inputWithNoHint: {},\n dropdown: {\n display: 'block'\n }\n }\n};\n\n// ie specific styling\nif (_.isMsie()) {\n // ie6-8 (and 9?) doesn't fire hover and click events for elements with\n // transparent backgrounds, for a workaround, use 1x1 transparent gif\n _.mixin(css.input, {\n backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)'\n });\n}\n\n// ie7 and under specific styling\nif (_.isMsie() && _.isMsie() <= 7) {\n // if someone can tell me why this is necessary to align\n // the hint with the query in ie7, i'll send you $5 - @JakeHarding\n _.mixin(css.input, {marginTop: '-1px'});\n}\n\nmodule.exports = css;\n","'use strict';\n\nvar datasetKey = 'aaDataset';\nvar valueKey = 'aaValue';\nvar datumKey = 'aaDatum';\n\nvar _ = require('../common/utils.js');\nvar DOM = require('../common/dom.js');\nvar html = require('./html.js');\nvar css = require('./css.js');\nvar EventEmitter = require('./event_emitter.js');\n\n// constructor\n// -----------\n\nfunction Dataset(o) {\n o = o || {};\n o.templates = o.templates || {};\n\n if (!o.source) {\n _.error('missing source');\n }\n\n if (o.name && !isValidName(o.name)) {\n _.error('invalid dataset name: ' + o.name);\n }\n\n // tracks the last query the dataset was updated for\n this.query = null;\n this._isEmpty = true;\n\n this.highlight = !!o.highlight;\n this.name = typeof o.name === 'undefined' || o.name === null ? _.getUniqueId() : o.name;\n\n this.source = o.source;\n this.displayFn = getDisplayFn(o.display || o.displayKey);\n\n this.debounce = o.debounce;\n\n this.cache = o.cache !== false;\n\n this.templates = getTemplates(o.templates, this.displayFn);\n\n this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});\n this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});\n this.cssClasses.prefix =\n o.cssClasses.formattedPrefix || _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);\n\n var clazz = _.className(this.cssClasses.prefix, this.cssClasses.dataset);\n this.$el = o.$menu && o.$menu.find(clazz + '-' + this.name).length > 0 ?\n DOM.element(o.$menu.find(clazz + '-' + this.name)[0]) :\n DOM.element(\n html.dataset.replace('%CLASS%', this.name)\n .replace('%PREFIX%', this.cssClasses.prefix)\n .replace('%DATASET%', this.cssClasses.dataset)\n );\n\n this.$menu = o.$menu;\n this.clearCachedSuggestions();\n}\n\n// static methods\n// --------------\n\nDataset.extractDatasetName = function extractDatasetName(el) {\n return DOM.element(el).data(datasetKey);\n};\n\nDataset.extractValue = function extractValue(el) {\n return DOM.element(el).data(valueKey);\n};\n\nDataset.extractDatum = function extractDatum(el) {\n var datum = DOM.element(el).data(datumKey);\n if (typeof datum === 'string') {\n // Zepto has an automatic deserialization of the\n // JSON encoded data attribute\n datum = JSON.parse(datum);\n }\n return datum;\n};\n\n// instance methods\n// ----------------\n\n_.mixin(Dataset.prototype, EventEmitter, {\n\n // ### private\n\n _render: function render(query, suggestions) {\n if (!this.$el) {\n return;\n }\n var that = this;\n\n var hasSuggestions;\n var renderArgs = [].slice.call(arguments, 2);\n this.$el.empty();\n\n hasSuggestions = suggestions && suggestions.length;\n this._isEmpty = !hasSuggestions;\n\n if (!hasSuggestions && this.templates.empty) {\n this.$el\n .html(getEmptyHtml.apply(this, renderArgs))\n .prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)\n .append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);\n } else if (hasSuggestions) {\n this.$el\n .html(getSuggestionsHtml.apply(this, renderArgs))\n .prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)\n .append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);\n } else if (suggestions && !Array.isArray(suggestions)) {\n throw new TypeError('suggestions must be an array');\n }\n\n if (this.$menu) {\n this.$menu.addClass(\n this.cssClasses.prefix + (hasSuggestions ? 'with' : 'without') + '-' + this.name\n ).removeClass(\n this.cssClasses.prefix + (hasSuggestions ? 'without' : 'with') + '-' + this.name\n );\n }\n\n this.trigger('rendered', query);\n\n function getEmptyHtml() {\n var args = [].slice.call(arguments, 0);\n args = [{query: query, isEmpty: true}].concat(args);\n return that.templates.empty.apply(this, args);\n }\n\n function getSuggestionsHtml() {\n var args = [].slice.call(arguments, 0);\n var $suggestions;\n var nodes;\n var self = this;\n\n var suggestionsHtml = html.suggestions.\n replace('%PREFIX%', this.cssClasses.prefix).\n replace('%SUGGESTIONS%', this.cssClasses.suggestions);\n $suggestions = DOM\n .element(suggestionsHtml)\n .css(this.css.suggestions);\n\n // jQuery#append doesn't support arrays as the first argument\n // until version 1.8, see http://bugs.jquery.com/ticket/11231\n nodes = _.map(suggestions, getSuggestionNode);\n $suggestions.append.apply($suggestions, nodes);\n\n return $suggestions;\n\n function getSuggestionNode(suggestion) {\n var $el;\n\n var suggestionHtml = html.suggestion.\n replace('%PREFIX%', self.cssClasses.prefix).\n replace('%SUGGESTION%', self.cssClasses.suggestion);\n $el = DOM.element(suggestionHtml)\n .attr({\n role: 'option',\n id: ['option', Math.floor(Math.random() * 100000000)].join('-')\n })\n .append(that.templates.suggestion.apply(this, [suggestion].concat(args)));\n\n $el.data(datasetKey, that.name);\n $el.data(valueKey, that.displayFn(suggestion) || undefined); // this led to undefined return value\n $el.data(datumKey, JSON.stringify(suggestion));\n $el.children().each(function() { DOM.element(this).css(self.css.suggestionChild); });\n\n return $el;\n }\n }\n\n function getHeaderHtml() {\n var args = [].slice.call(arguments, 0);\n args = [{query: query, isEmpty: !hasSuggestions}].concat(args);\n return that.templates.header.apply(this, args);\n }\n\n function getFooterHtml() {\n var args = [].slice.call(arguments, 0);\n args = [{query: query, isEmpty: !hasSuggestions}].concat(args);\n return that.templates.footer.apply(this, args);\n }\n },\n\n // ### public\n\n getRoot: function getRoot() {\n return this.$el;\n },\n\n update: function update(query) {\n function handleSuggestions(suggestions) {\n // if the update has been canceled or if the query has changed\n // do not render the suggestions as they've become outdated\n if (!this.canceled && query === this.query) {\n // concat all the other arguments that could have been passed\n // to the render function, and forward them to _render\n var extraArgs = [].slice.call(arguments, 1);\n this.cacheSuggestions(query, suggestions, extraArgs);\n this._render.apply(this, [query, suggestions].concat(extraArgs));\n }\n }\n\n this.query = query;\n this.canceled = false;\n\n if (this.shouldFetchFromCache(query)) {\n handleSuggestions.apply(this, [this.cachedSuggestions].concat(this.cachedRenderExtraArgs));\n } else {\n var that = this;\n var execSource = function() {\n // When the call is debounced the condition avoid to do a useless\n // request with the last character when the input has been cleared\n if (!that.canceled) {\n that.source(query, handleSuggestions.bind(that));\n }\n };\n\n if (this.debounce) {\n var later = function() {\n that.debounceTimeout = null;\n execSource();\n };\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = setTimeout(later, this.debounce);\n } else {\n execSource();\n }\n }\n },\n\n cacheSuggestions: function cacheSuggestions(query, suggestions, extraArgs) {\n this.cachedQuery = query;\n this.cachedSuggestions = suggestions;\n this.cachedRenderExtraArgs = extraArgs;\n },\n\n shouldFetchFromCache: function shouldFetchFromCache(query) {\n return this.cache &&\n this.cachedQuery === query &&\n this.cachedSuggestions &&\n this.cachedSuggestions.length;\n },\n\n clearCachedSuggestions: function clearCachedSuggestions() {\n delete this.cachedQuery;\n delete this.cachedSuggestions;\n delete this.cachedRenderExtraArgs;\n },\n\n cancel: function cancel() {\n this.canceled = true;\n },\n\n clear: function clear() {\n this.cancel();\n this.$el.empty();\n this.trigger('rendered', '');\n },\n\n isEmpty: function isEmpty() {\n return this._isEmpty;\n },\n\n destroy: function destroy() {\n this.clearCachedSuggestions();\n this.$el = null;\n }\n});\n\n// helper functions\n// ----------------\n\nfunction getDisplayFn(display) {\n display = display || 'value';\n\n return _.isFunction(display) ? display : displayFn;\n\n function displayFn(obj) {\n return obj[display];\n }\n}\n\nfunction getTemplates(templates, displayFn) {\n return {\n empty: templates.empty && _.templatify(templates.empty),\n header: templates.header && _.templatify(templates.header),\n footer: templates.footer && _.templatify(templates.footer),\n suggestion: templates.suggestion || suggestionTemplate\n };\n\n function suggestionTemplate(context) {\n return '<p>' + displayFn(context) + '</p>';\n }\n}\n\nfunction isValidName(str) {\n // dashes, underscores, letters, and numbers\n return (/^[_a-zA-Z0-9-]+$/).test(str);\n}\n\nmodule.exports = Dataset;\n","'use strict';\n\nvar _ = require('../common/utils.js');\nvar DOM = require('../common/dom.js');\nvar EventEmitter = require('./event_emitter.js');\nvar Dataset = require('./dataset.js');\nvar css = require('./css.js');\n\n// constructor\n// -----------\n\nfunction Dropdown(o) {\n var that = this;\n var onSuggestionClick;\n var onSuggestionMouseEnter;\n var onSuggestionMouseLeave;\n\n o = o || {};\n\n if (!o.menu) {\n _.error('menu is required');\n }\n\n if (!_.isArray(o.datasets) && !_.isObject(o.datasets)) {\n _.error('1 or more datasets required');\n }\n if (!o.datasets) {\n _.error('datasets is required');\n }\n\n this.isOpen = false;\n this.isEmpty = true;\n this.minLength = o.minLength || 0;\n this.templates = {};\n this.appendTo = o.appendTo || false;\n this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});\n this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});\n this.cssClasses.prefix =\n o.cssClasses.formattedPrefix || _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);\n\n // bound functions\n onSuggestionClick = _.bind(this._onSuggestionClick, this);\n onSuggestionMouseEnter = _.bind(this._onSuggestionMouseEnter, this);\n onSuggestionMouseLeave = _.bind(this._onSuggestionMouseLeave, this);\n\n var cssClass = _.className(this.cssClasses.prefix, this.cssClasses.suggestion);\n this.$menu = DOM.element(o.menu)\n .on('mouseenter.aa', cssClass, onSuggestionMouseEnter)\n .on('mouseleave.aa', cssClass, onSuggestionMouseLeave)\n .on('click.aa', cssClass, onSuggestionClick);\n\n this.$container = o.appendTo ? o.wrapper : this.$menu;\n\n if (o.templates && o.templates.header) {\n this.templates.header = _.templatify(o.templates.header);\n this.$menu.prepend(this.templates.header());\n }\n\n if (o.templates && o.templates.empty) {\n this.templates.empty = _.templatify(o.templates.empty);\n this.$empty = DOM.element('<div class=\"' +\n _.className(this.cssClasses.prefix, this.cssClasses.empty, true) + '\">' +\n '</div>');\n this.$menu.append(this.$empty);\n this.$empty.hide();\n }\n\n this.datasets = _.map(o.datasets, function(oDataset) {\n return initializeDataset(that.$menu, oDataset, o.cssClasses);\n });\n _.each(this.datasets, function(dataset) {\n var root = dataset.getRoot();\n if (root && root.parent().length === 0) {\n that.$menu.append(root);\n }\n dataset.onSync('rendered', that._onRendered, that);\n });\n\n if (o.templates && o.templates.footer) {\n this.templates.footer = _.templatify(o.templates.footer);\n this.$menu.append(this.templates.footer());\n }\n\n var self = this;\n DOM.element(window).resize(function() {\n self._redraw();\n });\n}\n\n// instance methods\n// ----------------\n\n_.mixin(Dropdown.prototype, EventEmitter, {\n\n // ### private\n\n _onSuggestionClick: function onSuggestionClick($e) {\n this.trigger('suggestionClicked', DOM.element($e.currentTarget));\n },\n\n _onSuggestionMouseEnter: function onSuggestionMouseEnter($e) {\n var elt = DOM.element($e.currentTarget);\n if (elt.hasClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))) {\n // we're already on the cursor\n // => we're probably entering it again after leaving it for a nested div\n return;\n }\n this._removeCursor();\n\n // Fixes iOS double tap behaviour, by modifying the DOM right before the\n // native href clicks happens, iOS will requires another tap to follow\n // a suggestion that has an <a href> element inside\n // https://www.google.com/search?q=ios+double+tap+bug+href\n var suggestion = this;\n setTimeout(function() {\n // this exact line, when inside the main loop, will trigger a double tap bug\n // on iOS devices\n suggestion._setCursor(elt, false);\n }, 0);\n },\n\n _onSuggestionMouseLeave: function onSuggestionMouseLeave($e) {\n // $e.relatedTarget is the `EventTarget` the pointing device entered to\n if ($e.relatedTarget) {\n var elt = DOM.element($e.relatedTarget);\n if (elt.closest('.' + _.className(this.cssClasses.prefix, this.cssClasses.cursor, true)).length > 0) {\n // our father is a cursor\n // => it means we're just leaving the suggestion for a nested div\n return;\n }\n }\n this._removeCursor();\n this.trigger('cursorRemoved');\n },\n\n _onRendered: function onRendered(e, query) {\n this.isEmpty = _.every(this.datasets, isDatasetEmpty);\n\n if (this.isEmpty) {\n if (query.length >= this.minLength) {\n this.trigger('empty');\n }\n\n if (this.$empty) {\n if (query.length < this.minLength) {\n this._hide();\n } else {\n var html = this.templates.empty({\n query: this.datasets[0] && this.datasets[0].query\n });\n this.$empty.html(html);\n this.$empty.show();\n this._show();\n }\n } else if (_.any(this.datasets, hasEmptyTemplate)) {\n if (query.length < this.minLength) {\n this._hide();\n } else {\n this._show();\n }\n } else {\n this._hide();\n }\n } else if (this.isOpen) {\n if (this.$empty) {\n this.$empty.empty();\n this.$empty.hide();\n }\n\n if (query.length >= this.minLength) {\n this._show();\n } else {\n this._hide();\n }\n }\n\n this.trigger('datasetRendered');\n\n function isDatasetEmpty(dataset) {\n return dataset.isEmpty();\n }\n\n function hasEmptyTemplate(dataset) {\n return dataset.templates && dataset.templates.empty;\n }\n },\n\n _hide: function() {\n this.$container.hide();\n },\n\n _show: function() {\n // can't use jQuery#show because $menu is a span element we want\n // display: block; not dislay: inline;\n this.$container.css('display', 'block');\n\n this._redraw();\n\n this.trigger('shown');\n },\n\n _redraw: function redraw() {\n if (!this.isOpen || !this.appendTo) return;\n\n this.trigger('redrawn');\n },\n\n _getSuggestions: function getSuggestions() {\n return this.$menu.find(_.className(this.cssClasses.prefix, this.cssClasses.suggestion));\n },\n\n _getCursor: function getCursor() {\n return this.$menu.find(_.className(this.cssClasses.prefix, this.cssClasses.cursor)).first();\n },\n\n _setCursor: function setCursor($el, updateInput) {\n $el.first()\n .addClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))\n .attr('aria-selected', 'true');\n this.trigger('cursorMoved', updateInput);\n },\n\n _removeCursor: function removeCursor() {\n this._getCursor()\n .removeClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))\n .removeAttr('aria-selected');\n },\n\n _moveCursor: function moveCursor(increment) {\n var $suggestions;\n var $oldCursor;\n var newCursorIndex;\n var $newCursor;\n\n if (!this.isOpen) {\n return;\n }\n\n $oldCursor = this._getCursor();\n $suggestions = this._getSuggestions();\n\n this._removeCursor();\n\n // shifting before and after modulo to deal with -1 index\n newCursorIndex = $suggestions.index($oldCursor) + increment;\n newCursorIndex = (newCursorIndex + 1) % ($suggestions.length + 1) - 1;\n\n if (newCursorIndex === -1) {\n this.trigger('cursorRemoved');\n\n return;\n } else if (newCursorIndex < -1) {\n newCursorIndex = $suggestions.length - 1;\n }\n\n this._setCursor($newCursor = $suggestions.eq(newCursorIndex), true);\n\n // in the case of scrollable overflow\n // make sure the cursor is visible in the menu\n this._ensureVisible($newCursor);\n },\n\n _ensureVisible: function ensureVisible($el) {\n var elTop;\n var elBottom;\n var menuScrollTop;\n var menuHeight;\n\n elTop = $el.position().top;\n elBottom = elTop + $el.height() +\n parseInt($el.css('margin-top'), 10) +\n parseInt($el.css('margin-bottom'), 10);\n menuScrollTop = this.$menu.scrollTop();\n menuHeight = this.$menu.height() +\n parseInt(this.$menu.css('padding-top'), 10) +\n parseInt(this.$menu.css('padding-bottom'), 10);\n\n if (elTop < 0) {\n this.$menu.scrollTop(menuScrollTop + elTop);\n } else if (menuHeight < elBottom) {\n this.$menu.scrollTop(menuScrollTop + (elBottom - menuHeight));\n }\n },\n\n // ### public\n\n close: function close() {\n if (this.isOpen) {\n this.isOpen = false;\n\n this._removeCursor();\n this._hide();\n\n this.trigger('closed');\n }\n },\n\n open: function open() {\n if (!this.isOpen) {\n this.isOpen = true;\n\n if (!this.isEmpty) {\n this._show();\n }\n\n this.trigger('opened');\n }\n },\n\n setLanguageDirection: function setLanguageDirection(dir) {\n this.$menu.css(dir === 'ltr' ? this.css.ltr : this.css.rtl);\n },\n\n moveCursorUp: function moveCursorUp() {\n this._moveCursor(-1);\n },\n\n moveCursorDown: function moveCursorDown() {\n this._moveCursor(+1);\n },\n\n getDatumForSuggestion: function getDatumForSuggestion($el) {\n var datum = null;\n\n if ($el.length) {\n datum = {\n raw: Dataset.extractDatum($el),\n value: Dataset.extractValue($el),\n datasetName: Dataset.extractDatasetName($el)\n };\n }\n\n return datum;\n },\n\n getCurrentCursor: function getCurrentCursor() {\n return this._getCursor().first();\n },\n\n getDatumForCursor: function getDatumForCursor() {\n return this.getDatumForSuggestion(this._getCursor().first());\n },\n\n getDatumForTopSuggestion: function getDatumForTopSuggestion() {\n return this.getDatumForSuggestion(this._getSuggestions().first());\n },\n\n cursorTopSuggestion: function cursorTopSuggestion() {\n this._setCursor(this._getSuggestions().first(), false);\n },\n\n update: function update(query) {\n _.each(this.datasets, updateDataset);\n\n function updateDataset(dataset) {\n dataset.update(query);\n }\n },\n\n empty: function empty() {\n _.each(this.datasets, clearDataset);\n this.isEmpty = true;\n\n function clearDataset(dataset) {\n dataset.clear();\n }\n },\n\n isVisible: function isVisible() {\n return this.isOpen && !this.isEmpty;\n },\n\n destroy: function destroy() {\n this.$menu.off('.aa');\n\n this.$menu = null;\n\n _.each(this.datasets, destroyDataset);\n\n function destroyDataset(dataset) {\n dataset.destroy();\n }\n }\n});\n\n// helper functions\n// ----------------\nDropdown.Dataset = Dataset;\n\nfunction initializeDataset($menu, oDataset, cssClasses) {\n return new Dropdown.Dataset(_.mixin({$menu: $menu, cssClasses: cssClasses}, oDataset));\n}\n\nmodule.exports = Dropdown;\n","'use strict';\n\nvar namespace = 'autocomplete:';\n\nvar _ = require('../common/utils.js');\nvar DOM = require('../common/dom.js');\n\n// constructor\n// -----------\n\nfunction EventBus(o) {\n if (!o || !o.el) {\n _.error('EventBus initialized without el');\n }\n\n this.$el = DOM.element(o.el);\n}\n\n// instance methods\n// ----------------\n\n_.mixin(EventBus.prototype, {\n\n // ### public\n\n trigger: function(type, suggestion, dataset, context) {\n var event = _.Event(namespace + type);\n this.$el.trigger(event, [suggestion, dataset, context]);\n return event;\n }\n});\n\nmodule.exports = EventBus;\n","'use strict';\n\nvar immediate = require('immediate');\nvar splitter = /\\s+/;\n\nmodule.exports = {\n onSync: onSync,\n onAsync: onAsync,\n off: off,\n trigger: trigger\n};\n\nfunction on(method, types, cb, context) {\n var type;\n\n if (!cb) {\n return this;\n }\n\n types = types.split(splitter);\n cb = context ? bindContext(cb, context) : cb;\n\n this._callbacks = this._callbacks || {};\n\n while (type = types.shift()) {\n this._callbacks[type] = this._callbacks[type] || {sync: [], async: []};\n this._callbacks[type][method].push(cb);\n }\n\n return this;\n}\n\nfunction onAsync(types, cb, context) {\n return on.call(this, 'async', types, cb, context);\n}\n\nfunction onSync(types, cb, context) {\n return on.call(this, 'sync', types, cb, context);\n}\n\nfunction off(types) {\n var type;\n\n if (!this._callbacks) {\n return this;\n }\n\n types = types.split(splitter);\n\n while (type = types.shift()) {\n delete this._callbacks[type];\n }\n\n return this;\n}\n\nfunction trigger(types) {\n var type;\n var callbacks;\n var args;\n var syncFlush;\n var asyncFlush;\n\n if (!this._callbacks) {\n return this;\n }\n\n types = types.split(splitter);\n args = [].slice.call(arguments, 1);\n\n while ((type = types.shift()) && (callbacks = this._callbacks[type])) { // eslint-disable-line\n syncFlush = getFlush(callbacks.sync, this, [type].concat(args));\n asyncFlush = getFlush(callbacks.async, this, [type].concat(args));\n\n if (syncFlush()) {\n immediate(asyncFlush);\n }\n }\n\n return this;\n}\n\nfunction getFlush(callbacks, context, args) {\n return flush;\n\n function flush() {\n var cancelled;\n\n for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n // only cancel if the callback explicitly returns false\n cancelled = callbacks[i].apply(context, args) === false;\n }\n\n return !cancelled;\n }\n}\n\nfunction bindContext(fn, context) {\n return fn.bind ?\n fn.bind(context) :\n function() { fn.apply(context, [].slice.call(arguments, 0)); };\n}\n","'use strict';\n\nmodule.exports = {\n wrapper: '<span class=\"%ROOT%\"></span>',\n dropdown: '<span class=\"%PREFIX%%DROPDOWN_MENU%\"></span>',\n dataset: '<div class=\"%PREFIX%%DATASET%-%CLASS%\"></div>',\n suggestions: '<span class=\"%PREFIX%%SUGGESTIONS%\"></span>',\n suggestion: '<div class=\"%PREFIX%%SUGGESTION%\"></div>'\n};\n","'use strict';\n\nvar specialKeyCodeMap;\n\nspecialKeyCodeMap = {\n 9: 'tab',\n 27: 'esc',\n 37: 'left',\n 39: 'right',\n 13: 'enter',\n 38: 'up',\n 40: 'down'\n};\n\nvar _ = require('../common/utils.js');\nvar DOM = require('../common/dom.js');\nvar EventEmitter = require('./event_emitter.js');\n\n// constructor\n// -----------\n\nfunction Input(o) {\n var that = this;\n var onBlur;\n var onFocus;\n var onKeydown;\n var onInput;\n\n o = o || {};\n\n if (!o.input) {\n _.error('input is missing');\n }\n\n // bound functions\n onBlur = _.bind(this._onBlur, this);\n onFocus = _.bind(this._onFocus, this);\n onKeydown = _.bind(this._onKeydown, this);\n onInput = _.bind(this._onInput, this);\n\n this.$hint = DOM.element(o.hint);\n this.$input = DOM.element(o.input)\n .on('blur.aa', onBlur)\n .on('focus.aa', onFocus)\n .on('keydown.aa', onKeydown);\n\n // if no hint, noop all the hint related functions\n if (this.$hint.length === 0) {\n this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n }\n\n // ie7 and ie8 don't support the input event\n // ie9 doesn't fire the input event when characters are removed\n // not sure if ie10 is compatible\n if (!_.isMsie()) {\n this.$input.on('input.aa', onInput);\n } else {\n this.$input.on('keydown.aa keypress.aa cut.aa paste.aa', function($e) {\n // if a special key triggered this, ignore it\n if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n return;\n }\n\n // give the browser a chance to update the value of the input\n // before checking to see if the query changed\n _.defer(_.bind(that._onInput, that, $e));\n });\n }\n\n // the query defaults to whatever the value of the input is\n // on initialization, it'll most likely be an empty string\n this.query = this.$input.val();\n\n // helps with calculating the width of the input's value\n this.$overflowHelper = buildOverflowHelper(this.$input);\n}\n\n// static methods\n// --------------\n\nInput.normalizeQuery = function(str) {\n // strips leading whitespace and condenses all whitespace\n return (str || '').replace(/^\\s*/g, '').replace(/\\s{2,}/g, ' ');\n};\n\n// instance methods\n// ----------------\n\n_.mixin(Input.prototype, EventEmitter, {\n\n // ### private\n\n _onBlur: function onBlur() {\n this.resetInputValue();\n this.$input.removeAttr('aria-activedescendant');\n this.trigger('blurred');\n },\n\n _onFocus: function onFocus() {\n this.trigger('focused');\n },\n\n _onKeydown: function onKeydown($e) {\n // which is normalized and consistent (but not for ie)\n var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n\n this._managePreventDefault(keyName, $e);\n if (keyName && this._shouldTrigger(keyName, $e)) {\n this.trigger(keyName + 'Keyed', $e);\n }\n },\n\n _onInput: function onInput() {\n this._checkInputValue();\n },\n\n _managePreventDefault: function managePreventDefault(keyName, $e) {\n var preventDefault;\n var hintValue;\n var inputValue;\n\n switch (keyName) {\n case 'tab':\n hintValue = this.getHint();\n inputValue = this.getInputValue();\n\n preventDefault = hintValue &&\n hintValue !== inputValue &&\n !withModifier($e);\n break;\n\n case 'up':\n case 'down':\n preventDefault = !withModifier($e);\n break;\n\n default:\n preventDefault = false;\n }\n\n if (preventDefault) {\n $e.preventDefault();\n }\n },\n\n _shouldTrigger: function shouldTrigger(keyName, $e) {\n var trigger;\n\n switch (keyName) {\n case 'tab':\n trigger = !withModifier($e);\n break;\n\n default:\n trigger = true;\n }\n\n return trigger;\n },\n\n _checkInputValue: function checkInputValue() {\n var inputValue;\n var areEquivalent;\n var hasDifferentWhitespace;\n\n inputValue = this.getInputValue();\n areEquivalent = areQueriesEquivalent(inputValue, this.query);\n hasDifferentWhitespace = areEquivalent && this.query ?\n this.query.length !== inputValue.length : false;\n\n this.query = inputValue;\n\n if (!areEquivalent) {\n this.trigger('queryChanged', this.query);\n } else if (hasDifferentWhitespace) {\n this.trigger('whitespaceChanged', this.query);\n }\n },\n\n // ### public\n\n focus: function focus() {\n this.$input.focus();\n },\n\n blur: function blur() {\n this.$input.blur();\n },\n\n getQuery: function getQuery() {\n return this.query;\n },\n\n setQuery: function setQuery(query) {\n this.query = query;\n },\n\n getInputValue: function getInputValue() {\n return this.$input.val();\n },\n\n setInputValue: function setInputValue(value, silent) {\n if (typeof value === 'undefined') {\n value = this.query;\n }\n this.$input.val(value);\n\n // silent prevents any additional events from being triggered\n if (silent) {\n this.clearHint();\n } else {\n this._checkInputValue();\n }\n },\n\n expand: function expand() {\n this.$input.attr('aria-expanded', 'true');\n },\n\n collapse: function collapse() {\n this.$input.attr('aria-expanded', 'false');\n },\n\n setActiveDescendant: function setActiveDescendant(activedescendantId) {\n this.$input.attr('aria-activedescendant', activedescendantId);\n },\n\n removeActiveDescendant: function removeActiveDescendant() {\n this.$input.removeAttr('aria-activedescendant');\n },\n\n resetInputValue: function resetInputValue() {\n this.setInputValue(this.query, true);\n },\n\n getHint: function getHint() {\n return this.$hint.val();\n },\n\n setHint: function setHint(value) {\n this.$hint.val(value);\n },\n\n clearHint: function clearHint() {\n this.setHint('');\n },\n\n clearHintIfInvalid: function clearHintIfInvalid() {\n var val;\n var hint;\n var valIsPrefixOfHint;\n var isValid;\n\n val = this.getInputValue();\n hint = this.getHint();\n valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n isValid = val !== '' && valIsPrefixOfHint && !this.hasOverflow();\n\n if (!isValid) {\n this.clearHint();\n }\n },\n\n getLanguageDirection: function getLanguageDirection() {\n return (this.$input.css('direction') || 'ltr').toLowerCase();\n },\n\n hasOverflow: function hasOverflow() {\n // 2 is arbitrary, just picking a small number to handle edge cases\n var constraint = this.$input.width() - 2;\n\n this.$overflowHelper.text(this.getInputValue());\n\n return this.$overflowHelper.width() >= constraint;\n },\n\n isCursorAtEnd: function() {\n var valueLength;\n var selectionStart;\n var range;\n\n valueLength = this.$input.val().length;\n selectionStart = this.$input[0].selectionStart;\n\n if (_.isNumber(selectionStart)) {\n return selectionStart === valueLength;\n } else if (document.selection) {\n // NOTE: this won't work unless the input has focus, the good news\n // is this code should only get called when the input has focus\n range = document.selection.createRange();\n range.moveStart('character', -valueLength);\n\n return valueLength === range.text.length;\n }\n\n return true;\n },\n\n destroy: function destroy() {\n this.$hint.off('.aa');\n this.$input.off('.aa');\n\n this.$hint = this.$input = this.$overflowHelper = null;\n }\n});\n\n// helper functions\n// ----------------\n\nfunction buildOverflowHelper($input) {\n return DOM.element('<pre aria-hidden=\"true\"></pre>')\n .css({\n // position helper off-screen\n position: 'absolute',\n visibility: 'hidden',\n // avoid line breaks and whitespace collapsing\n whiteSpace: 'pre',\n // use same font css as input to calculate accurate width\n fontFamily: $input.css('font-family'),\n fontSize: $input.css('font-size'),\n fontStyle: $input.css('font-style'),\n fontVariant: $input.css('font-variant'),\n fontWeight: $input.css('font-weight'),\n wordSpacing: $input.css('word-spacing'),\n letterSpacing: $input.css('letter-spacing'),\n textIndent: $input.css('text-indent'),\n textRendering: $input.css('text-rendering'),\n textTransform: $input.css('text-transform')\n })\n .insertAfter($input);\n}\n\nfunction areQueriesEquivalent(a, b) {\n return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n}\n\nfunction withModifier($e) {\n return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n}\n\nmodule.exports = Input;\n","'use strict';\n\nvar attrsKey = 'aaAttrs';\n\nvar _ = require('../common/utils.js');\nvar DOM = require('../common/dom.js');\nvar EventBus = require('./event_bus.js');\nvar Input = require('./input.js');\nvar Dropdown = require('./dropdown.js');\nvar html = require('./html.js');\nvar css = require('./css.js');\n\n// constructor\n// -----------\n\n// THOUGHT: what if datasets could dynamically be added/removed?\nfunction Typeahead(o) {\n var $menu;\n var $hint;\n\n o = o || {};\n\n if (!o.input) {\n _.error('missing input');\n }\n\n this.isActivated = false;\n this.debug = !!o.debug;\n this.autoselect = !!o.autoselect;\n this.autoselectOnBlur = !!o.autoselectOnBlur;\n this.openOnFocus = !!o.openOnFocus;\n this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n this.autoWidth = (o.autoWidth === undefined) ? true : !!o.autoWidth;\n this.clearOnSelected = !!o.clearOnSelected;\n this.tabAutocomplete = (o.tabAutocomplete === undefined) ? true : !!o.tabAutocomplete;\n\n o.hint = !!o.hint;\n\n if (o.hint && o.appendTo) {\n throw new Error('[autocomplete.js] hint and appendTo options can\\'t be used at the same time');\n }\n\n this.css = o.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});\n this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});\n this.cssClasses.prefix =\n o.cssClasses.formattedPrefix = _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);\n this.listboxId = o.listboxId = [this.cssClasses.root, 'listbox', _.getUniqueId()].join('-');\n\n var domElts = buildDom(o);\n\n this.$node = domElts.wrapper;\n var $input = this.$input = domElts.input;\n $menu = domElts.menu;\n $hint = domElts.hint;\n\n if (o.dropdownMenuContainer) {\n DOM.element(o.dropdownMenuContainer)\n .css('position', 'relative') // ensure the container has a relative position\n .append($menu.css('top', '0')); // override the top: 100%\n }\n\n // #705: if there's scrollable overflow, ie doesn't support\n // blur cancellations when the scrollbar is clicked\n //\n // #351: preventDefault won't cancel blurs in ie <= 8\n $input.on('blur.aa', function($e) {\n var active = document.activeElement;\n if (_.isMsie() && ($menu[0] === active || $menu[0].contains(active))) {\n $e.preventDefault();\n // stop immediate in order to prevent Input#_onBlur from\n // getting exectued\n $e.stopImmediatePropagation();\n _.defer(function() { $input.focus(); });\n }\n });\n\n // #351: prevents input blur due to clicks within dropdown menu\n $menu.on('mousedown.aa', function($e) { $e.preventDefault(); });\n\n this.eventBus = o.eventBus || new EventBus({el: $input});\n\n this.dropdown = new Typeahead.Dropdown({\n appendTo: o.appendTo,\n wrapper: this.$node,\n menu: $menu,\n datasets: o.datasets,\n templates: o.templates,\n cssClasses: o.cssClasses,\n minLength: this.minLength\n })\n .onSync('suggestionClicked', this._onSuggestionClicked, this)\n .onSync('cursorMoved', this._onCursorMoved, this)\n .onSync('cursorRemoved', this._onCursorRemoved, this)\n .onSync('opened', this._onOpened, this)\n .onSync('closed', this._onClosed, this)\n .onSync('shown', this._onShown, this)\n .onSync('empty', this._onEmpty, this)\n .onSync('redrawn', this._onRedrawn, this)\n .onAsync('datasetRendered', this._onDatasetRendered, this);\n\n this.input = new Typeahead.Input({input: $input, hint: $hint})\n .onSync('focused', this._onFocused, this)\n .onSync('blurred', this._onBlurred, this)\n .onSync('enterKeyed', this._onEnterKeyed, this)\n .onSync('tabKeyed', this._onTabKeyed, this)\n .onSync('escKeyed', this._onEscKeyed, this)\n .onSync('upKeyed', this._onUpKeyed, this)\n .onSync('downKeyed', this._onDownKeyed, this)\n .onSync('leftKeyed', this._onLeftKeyed, this)\n .onSync('rightKeyed', this._onRightKeyed, this)\n .onSync('queryChanged', this._onQueryChanged, this)\n .onSync('whitespaceChanged', this._onWhitespaceChanged, this);\n\n this._bindKeyboardShortcuts(o);\n\n this._setLanguageDirection();\n}\n\n// instance methods\n// ----------------\n\n_.mixin(Typeahead.prototype, {\n // ### private\n\n _bindKeyboardShortcuts: function(options) {\n if (!options.keyboardShortcuts) {\n return;\n }\n var $input = this.$input;\n var keyboardShortcuts = [];\n _.each(options.keyboardShortcuts, function(key) {\n if (typeof key === 'string') {\n key = key.toUpperCase().charCodeAt(0);\n }\n keyboardShortcuts.push(key);\n });\n DOM.element(document).keydown(function(event) {\n var elt = (event.target || event.srcElement);\n var tagName = elt.tagName;\n if (elt.isContentEditable || tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA') {\n // already in an input\n return;\n }\n\n var which = event.which || event.keyCode;\n if (keyboardShortcuts.indexOf(which) === -1) {\n // not the right shortcut\n return;\n }\n\n $input.focus();\n event.stopPropagation();\n event.preventDefault();\n });\n },\n\n _onSuggestionClicked: function onSuggestionClicked(type, $el) {\n var datum;\n var context = {selectionMethod: 'click'};\n\n if (datum = this.dropdown.getDatumForSuggestion($el)) {\n this._select(datum, context);\n }\n },\n\n _onCursorMoved: function onCursorMoved(event, updateInput) {\n var datum = this.dropdown.getDatumForCursor();\n var currentCursorId = this.dropdown.getCurrentCursor().attr('id');\n this.input.setActiveDescendant(currentCursorId);\n\n if (datum) {\n if (updateInput) {\n this.input.setInputValue(datum.value, true);\n }\n\n this.eventBus.trigger('cursorchanged', datum.raw, datum.datasetName);\n }\n },\n\n _onCursorRemoved: function onCursorRemoved() {\n this.input.resetInputValue();\n this._updateHint();\n this.eventBus.trigger('cursorremoved');\n },\n\n _onDatasetRendered: function onDatasetRendered() {\n this._updateHint();\n\n this.eventBus.trigger('updated');\n },\n\n _onOpened: function onOpened() {\n this._updateHint();\n this.input.expand();\n\n this.eventBus.trigger('opened');\n },\n\n _onEmpty: function onEmpty() {\n this.eventBus.trigger('empty');\n },\n\n _onRedrawn: function onRedrawn() {\n this.$node.css('top', 0 + 'px');\n this.$node.css('left', 0 + 'px');\n\n var inputRect = this.$input[0].getBoundingClientRect();\n\n if (this.autoWidth) {\n this.$node.css('width', inputRect.width + 'px');\n }\n\n var wrapperRect = this.$node[0].getBoundingClientRect();\n\n var top = inputRect.bottom - wrapperRect.top;\n this.$node.css('top', top + 'px');\n var left = inputRect.left - wrapperRect.left;\n this.$node.css('left', left + 'px');\n\n this.eventBus.trigger('redrawn');\n },\n\n _onShown: function onShown() {\n this.eventBus.trigger('shown');\n if (this.autoselect) {\n this.dropdown.cursorTopSuggestion();\n }\n },\n\n _onClosed: function onClosed() {\n this.input.clearHint();\n this.input.removeActiveDescendant();\n this.input.collapse();\n\n this.eventBus.trigger('closed');\n },\n\n _onFocused: function onFocused() {\n this.isActivated = true;\n\n if (this.openOnFocus) {\n var query = this.input.getQuery();\n if (query.length >= this.minLength) {\n this.dropdown.update(query);\n } else {\n this.dropdown.empty();\n }\n\n this.dropdown.open();\n }\n },\n\n _onBlurred: function onBlurred() {\n var cursorDatum;\n var topSuggestionDatum;\n\n cursorDatum = this.dropdown.getDatumForCursor();\n topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();\n var context = {selectionMethod: 'blur'};\n\n if (!this.debug) {\n if (this.autoselectOnBlur && cursorDatum) {\n this._select(cursorDatum, context);\n } else if (this.autoselectOnBlur && topSuggestionDatum) {\n this._select(topSuggestionDatum, context);\n } else {\n this.isActivated = false;\n this.dropdown.empty();\n this.dropdown.close();\n }\n }\n },\n\n _onEnterKeyed: function onEnterKeyed(type, $e) {\n var cursorDatum;\n var topSuggestionDatum;\n\n cursorDatum = this.dropdown.getDatumForCursor();\n topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();\n var context = {selectionMethod: 'enterKey'};\n\n if (cursorDatum) {\n this._select(cursorDatum, context);\n $e.preventDefault();\n } else if (this.autoselect && topSuggestionDatum) {\n this._select(topSuggestionDatum, context);\n $e.preventDefault();\n }\n },\n\n _onTabKeyed: function onTabKeyed(type, $e) {\n if (!this.tabAutocomplete) {\n // Closing the dropdown enables further tabbing\n this.dropdown.close();\n return;\n }\n\n var datum;\n var context = {selectionMethod: 'tabKey'};\n\n if (datum = this.dropdown.getDatumForCursor()) {\n this._select(datum, context);\n $e.preventDefault();\n } else {\n this._autocomplete(true);\n }\n },\n\n _onEscKeyed: function onEscKeyed() {\n this.dropdown.close();\n this.input.resetInputValue();\n },\n\n _onUpKeyed: function onUpKeyed() {\n var query = this.input.getQuery();\n\n if (this.dropdown.isEmpty && query.length >= this.minLength) {\n this.dropdown.update(query);\n } else {\n this.dropdown.moveCursorUp();\n }\n\n this.dropdown.open();\n },\n\n _onDownKeyed: function onDownKeyed() {\n var query = this.input.getQuery();\n\n if (this.dropdown.isEmpty && query.length >= this.minLength) {\n this.dropdown.update(query);\n } else {\n this.dropdown.moveCursorDown();\n }\n\n this.dropdown.open();\n },\n\n _onLeftKeyed: function onLeftKeyed() {\n if (this.dir === 'rtl') {\n this._autocomplete();\n }\n },\n\n _onRightKeyed: function onRightKeyed() {\n if (this.dir === 'ltr') {\n this._autocomplete();\n }\n },\n\n _onQueryChanged: function onQueryChanged(e, query) {\n this.input.clearHintIfInvalid();\n\n if (query.length >= this.minLength) {\n this.dropdown.update(query);\n } else {\n this.dropdown.empty();\n }\n\n this.dropdown.open();\n this._setLanguageDirection();\n },\n\n _onWhitespaceChanged: function onWhitespaceChanged() {\n this._updateHint();\n this.dropdown.open();\n },\n\n _setLanguageDirection: function setLanguageDirection() {\n var dir = this.input.getLanguageDirection();\n\n if (this.dir !== dir) {\n this.dir = dir;\n this.$node.css('direction', dir);\n this.dropdown.setLanguageDirection(dir);\n }\n },\n\n _updateHint: function updateHint() {\n var datum;\n var val;\n var query;\n var escapedQuery;\n var frontMatchRegEx;\n var match;\n\n datum = this.dropdown.getDatumForTopSuggestion();\n\n if (datum && this.dropdown.isVisible() && !this.input.hasOverflow()) {\n val = this.input.getInputValue();\n query = Input.normalizeQuery(val);\n escapedQuery = _.escapeRegExChars(query);\n\n // match input value, then capture trailing text\n frontMatchRegEx = new RegExp('^(?:' + escapedQuery + ')(.+$)', 'i');\n match = frontMatchRegEx.exec(datum.value);\n\n // clear hint if there's no trailing text\n if (match) {\n this.input.setHint(val + match[1]);\n } else {\n this.input.clearHint();\n }\n } else {\n this.input.clearHint();\n }\n },\n\n _autocomplete: function autocomplete(laxCursor) {\n var hint;\n var query;\n var isCursorAtEnd;\n var datum;\n\n hint = this.input.getHint();\n query = this.input.getQuery();\n isCursorAtEnd = laxCursor || this.input.isCursorAtEnd();\n\n if (hint && query !== hint && isCursorAtEnd) {\n datum = this.dropdown.getDatumForTopSuggestion();\n if (datum) {\n this.input.setInputValue(datum.value);\n }\n\n this.eventBus.trigger('autocompleted', datum.raw, datum.datasetName);\n }\n },\n\n _select: function select(datum, context) {\n if (typeof datum.value !== 'undefined') {\n this.input.setQuery(datum.value);\n }\n if (this.clearOnSelected) {\n this.setVal('');\n } else {\n this.input.setInputValue(datum.value, true);\n }\n\n this._setLanguageDirection();\n\n var event = this.eventBus.trigger('selected', datum.raw, datum.datasetName, context);\n if (event.isDefaultPrevented() === false) {\n this.dropdown.close();\n\n // #118: allow click event to bubble up to the body before removing\n // the suggestions otherwise we break event delegation\n _.defer(_.bind(this.dropdown.empty, this.dropdown));\n }\n },\n\n // ### public\n\n open: function open() {\n // if the menu is not activated yet, we need to update\n // the underlying dropdown menu to trigger the search\n // otherwise we're not gonna see anything\n if (!this.isActivated) {\n var query = this.input.getInputValue();\n if (query.length >= this.minLength) {\n this.dropdown.update(query);\n } else {\n this.dropdown.empty();\n }\n }\n this.dropdown.open();\n },\n\n close: function close() {\n this.dropdown.close();\n },\n\n setVal: function setVal(val) {\n // expect val to be a string, so be safe, and coerce\n val = _.toStr(val);\n\n if (this.isActivated) {\n this.input.setInputValue(val);\n } else {\n this.input.setQuery(val);\n this.input.setInputValue(val, true);\n }\n\n this._setLanguageDirection();\n },\n\n getVal: function getVal() {\n return this.input.getQuery();\n },\n\n destroy: function destroy() {\n this.input.destroy();\n this.dropdown.destroy();\n\n destroyDomStructure(this.$node, this.cssClasses);\n\n this.$node = null;\n },\n\n getWrapper: function getWrapper() {\n return this.dropdown.$container[0];\n }\n});\n\nfunction buildDom(options) {\n var $input;\n var $wrapper;\n var $dropdown;\n var $hint;\n\n $input = DOM.element(options.input);\n $wrapper = DOM\n .element(html.wrapper.replace('%ROOT%', options.cssClasses.root))\n .css(options.css.wrapper);\n\n // override the display property with the table-cell value\n // if the parent element is a table and the original input was a block\n // -> https://github.com/algolia/autocomplete.js/issues/16\n if (!options.appendTo && $input.css('display') === 'block' && $input.parent().css('display') === 'table') {\n $wrapper.css('display', 'table-cell');\n }\n var dropdownHtml = html.dropdown.\n replace('%PREFIX%', options.cssClasses.prefix).\n replace('%DROPDOWN_MENU%', options.cssClasses.dropdownMenu);\n $dropdown = DOM.element(dropdownHtml)\n .css(options.css.dropdown)\n .attr({\n role: 'listbox',\n id: options.listboxId\n });\n if (options.templates && options.templates.dropdownMenu) {\n $dropdown.html(_.templatify(options.templates.dropdownMenu)());\n }\n $hint = $input.clone().css(options.css.hint).css(getBackgroundStyles($input));\n\n $hint\n .val('')\n .addClass(_.className(options.cssClasses.prefix, options.cssClasses.hint, true))\n .removeAttr('id name placeholder required')\n .prop('readonly', true)\n .attr({\n 'aria-hidden': 'true',\n autocomplete: 'off',\n spellcheck: 'false',\n tabindex: -1\n });\n if ($hint.removeData) {\n $hint.removeData();\n }\n\n // store the original values of the attrs that get modified\n // so modifications can be reverted on destroy\n $input.data(attrsKey, {\n 'aria-autocomplete': $input.attr('aria-autocomplete'),\n 'aria-expanded': $input.attr('aria-expanded'),\n 'aria-owns': $input.attr('aria-owns'),\n autocomplete: $input.attr('autocomplete'),\n dir: $input.attr('dir'),\n role: $input.attr('role'),\n spellcheck: $input.attr('spellcheck'),\n style: $input.attr('style'),\n type: $input.attr('type')\n });\n\n $input\n .addClass(_.className(options.cssClasses.prefix, options.cssClasses.input, true))\n .attr({\n autocomplete: 'off',\n spellcheck: false,\n\n // Accessibility features\n // Give the field a presentation of a \"select\".\n // Combobox is the combined presentation of a single line textfield\n // with a listbox popup.\n // https://www.w3.org/WAI/PF/aria/roles#combobox\n role: 'combobox',\n // Let the screen reader know the field has an autocomplete\n // feature to it.\n 'aria-autocomplete': (options.datasets &&\n options.datasets[0] && options.datasets[0].displayKey ? 'both' : 'list'),\n // Indicates whether the dropdown it controls is currently expanded or collapsed\n 'aria-expanded': 'false',\n 'aria-label': options.ariaLabel,\n // Explicitly point to the listbox,\n // which is a list of suggestions (aka options)\n 'aria-owns': options.listboxId\n })\n .css(options.hint ? options.css.input : options.css.inputWithNoHint);\n\n // ie7 does not like it when dir is set to auto\n try {\n if (!$input.attr('dir')) {\n $input.attr('dir', 'auto');\n }\n } catch (e) {\n // ignore\n }\n\n $wrapper = options.appendTo\n ? $wrapper.appendTo(DOM.element(options.appendTo).eq(0)).eq(0)\n : $input.wrap($wrapper).parent();\n\n $wrapper\n .prepend(options.hint ? $hint : null)\n .append($dropdown);\n\n return {\n wrapper: $wrapper,\n input: $input,\n hint: $hint,\n menu: $dropdown\n };\n}\n\nfunction getBackgroundStyles($el) {\n return {\n backgroundAttachment: $el.css('background-attachment'),\n backgroundClip: $el.css('background-clip'),\n backgroundColor: $el.css('background-color'),\n backgroundImage: $el.css('background-image'),\n backgroundOrigin: $el.css('background-origin'),\n backgroundPosition: $el.css('background-position'),\n backgroundRepeat: $el.css('background-repeat'),\n backgroundSize: $el.css('background-size')\n };\n}\n\nfunction destroyDomStructure($node, cssClasses) {\n var $input = $node.find(_.className(cssClasses.prefix, cssClasses.input));\n\n // need to remove attrs that weren't previously defined and\n // revert attrs that originally had a value\n _.each($input.data(attrsKey), function(val, key) {\n if (val === undefined) {\n $input.removeAttr(key);\n } else {\n $input.attr(key, val);\n }\n });\n\n $input\n .detach()\n .removeClass(_.className(cssClasses.prefix, cssClasses.input, true))\n .insertAfter($node);\n if ($input.removeData) {\n $input.removeData(attrsKey);\n }\n\n $node.remove();\n}\n\nTypeahead.Dropdown = Dropdown;\nTypeahead.Input = Input;\nTypeahead.sources = require('../sources/index.js');\n\nmodule.exports = Typeahead;\n","'use strict';\n\nmodule.exports = {\n element: null\n};\n","'use strict';\nmodule.exports = function parseAlgoliaClientVersion(agent) {\n var parsed = agent.match(/Algolia for vanilla JavaScript (\\d+\\.)(\\d+\\.)(\\d+)/);\n if (parsed) return [parsed[1], parsed[2], parsed[3]];\n return undefined;\n};\n","'use strict';\n\nvar DOM = require('./dom.js');\n\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nmodule.exports = {\n // those methods are implemented differently\n // depending on which build it is, using\n // $... or angular... or Zepto... or require(...)\n isArray: null,\n isFunction: null,\n isObject: null,\n bind: null,\n each: null,\n map: null,\n mixin: null,\n\n isMsie: function(agentString) {\n if (agentString === undefined) { agentString = navigator.userAgent; }\n // from https://github.com/ded/bowser/blob/master/bowser.js\n if ((/(msie|trident)/i).test(agentString)) {\n var match = agentString.match(/(msie |rv:)(\\d+(.\\d+)?)/i);\n if (match) { return match[2]; }\n }\n return false;\n },\n\n // http://stackoverflow.com/a/6969486\n escapeRegExChars: function(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n },\n\n isNumber: function(obj) { return typeof obj === 'number'; },\n\n toStr: function toStr(s) {\n return s === undefined || s === null ? '' : s + '';\n },\n\n cloneDeep: function cloneDeep(obj) {\n var clone = this.mixin({}, obj);\n var self = this;\n this.each(clone, function(value, key) {\n if (value) {\n if (self.isArray(value)) {\n clone[key] = [].concat(value);\n } else if (self.isObject(value)) {\n clone[key] = self.cloneDeep(value);\n }\n }\n });\n return clone;\n },\n\n error: function(msg) {\n throw new Error(msg);\n },\n\n every: function(obj, test) {\n var result = true;\n if (!obj) {\n return result;\n }\n this.each(obj, function(val, key) {\n if (result) {\n result = test.call(null, val, key, obj) && result;\n }\n });\n return !!result;\n },\n\n any: function(obj, test) {\n var found = false;\n if (!obj) {\n return found;\n }\n this.each(obj, function(val, key) {\n if (test.call(null, val, key, obj)) {\n found = true;\n return false;\n }\n });\n return found;\n },\n\n getUniqueId: (function() {\n var counter = 0;\n return function() { return counter++; };\n })(),\n\n templatify: function templatify(obj) {\n if (this.isFunction(obj)) {\n return obj;\n }\n var $template = DOM.element(obj);\n if ($template.prop('tagName') === 'SCRIPT') {\n return function template() { return $template.text(); };\n }\n return function template() { return String(obj); };\n },\n\n defer: function(fn) { setTimeout(fn, 0); },\n\n noop: function() {},\n\n formatPrefix: function(prefix, noPrefix) {\n return noPrefix ? '' : prefix + '-';\n },\n\n className: function(prefix, clazz, skipDot) {\n return (skipDot ? '' : '.') + prefix + clazz;\n },\n\n escapeHighlightedString: function(str, highlightPreTag, highlightPostTag) {\n highlightPreTag = highlightPreTag || '<em>';\n var pre = document.createElement('div');\n pre.appendChild(document.createTextNode(highlightPreTag));\n\n highlightPostTag = highlightPostTag || '</em>';\n var post = document.createElement('div');\n post.appendChild(document.createTextNode(highlightPostTag));\n\n var div = document.createElement('div');\n div.appendChild(document.createTextNode(str));\n return div.innerHTML\n .replace(RegExp(escapeRegExp(pre.innerHTML), 'g'), highlightPreTag)\n .replace(RegExp(escapeRegExp(post.innerHTML), 'g'), highlightPostTag);\n }\n};\n","'use strict';\n\nvar _ = require('../common/utils.js');\nvar version = require('../../version.js');\nvar parseAlgoliaClientVersion = require('../common/parseAlgoliaClientVersion.js');\n\nmodule.exports = function search(index, params) {\n var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);\n if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {\n params = params || {};\n params.additionalUA = 'autocomplete.js ' + version;\n }\n return sourceFn;\n\n function sourceFn(query, cb) {\n index.search(query, params, function(error, content) {\n if (error) {\n _.error(error.message);\n return;\n }\n cb(content.hits, content);\n });\n }\n};\n","'use strict';\n\nmodule.exports = {\n hits: require('./hits.js'),\n popularIn: require('./popularIn.js')\n};\n","'use strict';\n\nvar _ = require('../common/utils.js');\nvar version = require('../../version.js');\nvar parseAlgoliaClientVersion = require('../common/parseAlgoliaClientVersion.js');\n\nmodule.exports = function popularIn(index, params, details, options) {\n var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);\n if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {\n params = params || {};\n params.additionalUA = 'autocomplete.js ' + version;\n }\n if (!details.source) {\n return _.error(\"Missing 'source' key\");\n }\n var source = _.isFunction(details.source) ? details.source : function(hit) { return hit[details.source]; };\n\n if (!details.index) {\n return _.error(\"Missing 'index' key\");\n }\n var detailsIndex = details.index;\n\n options = options || {};\n\n return sourceFn;\n\n function sourceFn(query, cb) {\n index.search(query, params, function(error, content) {\n if (error) {\n _.error(error.message);\n return;\n }\n\n if (content.hits.length > 0) {\n var first = content.hits[0];\n\n var detailsParams = _.mixin({hitsPerPage: 0}, details);\n delete detailsParams.source; // not a query parameter\n delete detailsParams.index; // not a query parameter\n\n var detailsAlgoliaVersion = parseAlgoliaClientVersion(detailsIndex.as._ua);\n if (detailsAlgoliaVersion && detailsAlgoliaVersion[0] >= 3 && detailsAlgoliaVersion[1] > 20) {\n params.additionalUA = 'autocomplete.js ' + version;\n }\n\n detailsIndex.search(source(first), detailsParams, function(error2, content2) {\n if (error2) {\n _.error(error2.message);\n return;\n }\n\n var suggestions = [];\n\n // add the 'all department' entry before others\n if (options.includeAll) {\n var label = options.allTitle || 'All departments';\n suggestions.push(_.mixin({\n facet: {value: label, count: content2.nbHits}\n }, _.cloneDeep(first)));\n }\n\n // enrich the first hit iterating over the facets\n _.each(content2.facets, function(values, facet) {\n _.each(values, function(count, value) {\n suggestions.push(_.mixin({\n facet: {facet: facet, value: value, count: count}\n }, _.cloneDeep(first)));\n });\n });\n\n // append all other hits\n for (var i = 1; i < content.hits.length; ++i) {\n suggestions.push(content.hits[i]);\n }\n\n cb(suggestions, content);\n });\n\n return;\n }\n\n cb([]);\n });\n }\n};\n","'use strict';\n\n// this will inject Zepto in window, unfortunately no easy commonJS zepto build\nvar zepto = require('../../zepto.js');\n\n// setup DOM element\nvar DOM = require('../common/dom.js');\nDOM.element = zepto;\n\n// setup utils functions\nvar _ = require('../common/utils.js');\n_.isArray = zepto.isArray;\n_.isFunction = zepto.isFunction;\n_.isObject = zepto.isPlainObject;\n_.bind = zepto.proxy;\n_.each = function(collection, cb) {\n // stupid argument order for jQuery.each\n zepto.each(collection, reverseArgs);\n function reverseArgs(index, value) {\n return cb(value, index);\n }\n};\n_.map = zepto.map;\n_.mixin = zepto.extend;\n_.Event = zepto.Event;\n\nvar typeaheadKey = 'aaAutocomplete';\nvar Typeahead = require('../autocomplete/typeahead.js');\nvar EventBus = require('../autocomplete/event_bus.js');\n\nfunction autocomplete(selector, options, datasets, typeaheadObject) {\n datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 2);\n\n var inputs = zepto(selector).each(function(i, input) {\n var $input = zepto(input);\n var eventBus = new EventBus({el: $input});\n var typeahead = typeaheadObject || new Typeahead({\n input: $input,\n eventBus: eventBus,\n dropdownMenuContainer: options.dropdownMenuContainer,\n hint: options.hint === undefined ? true : !!options.hint,\n minLength: options.minLength,\n autoselect: options.autoselect,\n autoselectOnBlur: options.autoselectOnBlur,\n tabAutocomplete: options.tabAutocomplete,\n openOnFocus: options.openOnFocus,\n templates: options.templates,\n debug: options.debug,\n clearOnSelected: options.clearOnSelected,\n cssClasses: options.cssClasses,\n datasets: datasets,\n keyboardShortcuts: options.keyboardShortcuts,\n appendTo: options.appendTo,\n autoWidth: options.autoWidth,\n ariaLabel: options.ariaLabel || input.getAttribute('aria-label')\n });\n $input.data(typeaheadKey, typeahead);\n });\n\n // expose all methods in the `autocomplete` attribute\n inputs.autocomplete = {};\n _.each(['open', 'close', 'getVal', 'setVal', 'destroy', 'getWrapper'], function(method) {\n inputs.autocomplete[method] = function() {\n var methodArguments = arguments;\n var result;\n inputs.each(function(j, input) {\n var typeahead = zepto(input).data(typeaheadKey);\n result = typeahead[method].apply(typeahead, methodArguments);\n });\n return result;\n };\n });\n\n return inputs;\n}\n\nautocomplete.sources = Typeahead.sources;\nautocomplete.escapeHighlightedString = _.escapeHighlightedString;\n\nvar wasAutocompleteSet = 'autocomplete' in window;\nvar oldAutocomplete = window.autocomplete;\nautocomplete.noConflict = function noConflict() {\n if (wasAutocompleteSet) {\n window.autocomplete = oldAutocomplete;\n } else {\n delete window.autocomplete;\n }\n return autocomplete;\n};\n\nmodule.exports = autocomplete;\n","module.exports = \"0.36.0\";\n","/* istanbul ignore next */\n/* Zepto v1.2.0 - zepto event assets data - zeptojs.com/license */\n(function(global, factory) {\n module.exports = factory(global);\n}(/* this ##### UPDATED: here we want to use window/global instead of this which is the current file context ##### */ window, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n try {\n var dataPropDescriptor = Object.getOwnPropertyDescriptor(e, 'data')\n if (!dataPropDescriptor || dataPropDescriptor.writable)\n e.data = data\n } catch (e) {} // when using strict mode dataPropDescriptor will be undefined when e is InputEvent (even though data property exists). So we surround with try/catch\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var cache = [], timeout\n\n $.fn.remove = function(){\n return this.each(function(){\n if(this.parentNode){\n if(this.tagName === 'IMG'){\n cache.push(this)\n this.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='\n if (timeout) clearTimeout(timeout)\n timeout = setTimeout(function(){ cache = [] }, 60000)\n }\n this.parentNode.removeChild(this)\n }\n })\n }\n})(Zepto)\n\n;(function($){\n var data = {}, dataAttr = $.fn.data, camelize = $.camelCase,\n exp = $.expando = 'Zepto' + (+new Date()), emptyArray = []\n\n // Get value from node:\n // 1. first try key as given,\n // 2. then try camelized key,\n // 3. fall back to reading \"data-*\" attribute.\n function getData(node, name) {\n var id = node[exp], store = id && data[id]\n if (name === undefined) return store || setData(node)\n else {\n if (store) {\n if (name in store) return store[name]\n var camelName = camelize(name)\n if (camelName in store) return store[camelName]\n }\n return dataAttr.call($(node), name)\n }\n }\n\n // Store value under camelized key on node\n function setData(node, name, value) {\n var id = node[exp] || (node[exp] = ++$.uuid),\n store = data[id] || (data[id] = attributeData(node))\n if (name !== undefined) store[camelize(name)] = value\n return store\n }\n\n // Read all \"data-*\" attributes from a node\n function attributeData(node) {\n var store = {}\n $.each(node.attributes || emptyArray, function(i, attr){\n if (attr.name.indexOf('data-') == 0)\n store[camelize(attr.name.replace('data-', ''))] =\n $.zepto.deserializeValue(attr.value)\n })\n return store\n }\n\n $.fn.data = function(name, value) {\n return value === undefined ?\n // set multiple values via object\n $.isPlainObject(name) ?\n this.each(function(i, node){\n $.each(name, function(key, value){ setData(node, key, value) })\n }) :\n // get value from first element\n (0 in this ? getData(this[0], name) : undefined) :\n // set value on all elements\n this.each(function(){ setData(this, name, value) })\n }\n\n $.data = function(elem, name, value) {\n return $(elem).data(name, value)\n }\n\n $.hasData = function(elem) {\n var id = elem[exp], store = id && data[id]\n return store ? !$.isEmptyObject(store) : false\n }\n\n $.fn.removeData = function(names) {\n if (typeof names == 'string') names = names.split(/\\s+/)\n return this.each(function(){\n var id = this[exp], store = id && data[id]\n if (store) $.each(names || store, function(key){\n delete store[names ? camelize(this) : key]\n })\n })\n }\n\n // Generate extended `remove` and `empty` functions\n ;['remove', 'empty'].forEach(function(methodName){\n var origFn = $.fn[methodName]\n $.fn[methodName] = function() {\n var elements = this.find('*')\n if (methodName === 'remove') elements = elements.add(this)\n elements.removeData()\n return origFn.call(this)\n }\n })\n})(Zepto)\n return Zepto\n}))\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*!\n * Bootstrap v4.6.0 (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' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { '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\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 function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\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 * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\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 /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.0';\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 SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\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 CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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.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.getTransitionDurationFromElement(element);\n $__default['default'](element).one(Util.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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\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 /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.6.0';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\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 var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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$1);\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$1);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$1, 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$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$1, 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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$1] = Button._jQueryInterface;\n $__default['default'].fn[NAME$1].Constructor = Button;\n\n $__default['default'].fn[NAME$1].noConflict = function () {\n $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.6.0';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default['default'](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default['default'](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default['default'](this._element).off(EVENT_KEY$2);\n $__default['default'].removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default['default'].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default['default'](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default['default'].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default['default'](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default['default'](activeElement).addClass(directionalClassName);\n $__default['default'](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default['default'](activeElement).one(Util.TRANSITION_END, function () {\n $__default['default'](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default['default'](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1);\n this._isSliding = false;\n $__default['default'](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$2);\n\n var _config = _extends({}, Default, $__default['default'](this).data());\n\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default['default'](this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default['default'](selector)[0];\n\n if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default['default'](target), config);\n\n if (slideIndex) {\n $__default['default'](target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default['default'](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$2] = Carousel._jQueryInterface;\n $__default['default'].fn[NAME$2].Constructor = Carousel;\n\n $__default['default'].fn[NAME$2].noConflict = function () {\n $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.6.0';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n var CLASS_NAME_SHOW$1 = '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 SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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$1));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.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$1)) {\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$1)) {\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$3);\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$3, 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$1);\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.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.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$1)) {\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.reflow(this._element);\n $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\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.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$1)) {\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.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.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$3);\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$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\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.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$1);\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.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$3);\n\n var _config = _extends({}, Default$1, $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$3, 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$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n // preventDefault only for <a> 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.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$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$3] = Collapse._jQueryInterface;\n $__default['default'].fn[NAME$3].Constructor = Collapse;\n\n $__default['default'].fn[NAME$3].noConflict = function () {\n $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.6.0';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4];\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 EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW$2 = '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 SELECTOR_DATA_TOGGLE$2 = '[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$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\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 * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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$2);\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$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default['default'].Event(EVENT_SHOW$1, 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 /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\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.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$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, 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$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, 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$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$4);\n $__default['default'](this._element).off(EVENT_KEY$4);\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.typeCheckConfig(NAME$4, 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$4);\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$4, 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$2));\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$4);\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$2)) {\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$1, 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$2);\n $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.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$2);\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$2)).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$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface;\n $__default['default'].fn[NAME$4].Constructor = Dropdown;\n\n $__default['default'].fn[NAME$4].noConflict = function () {\n $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.0';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\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$1 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$3 = '[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 /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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 if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $__default['default'].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default['default'](this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\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$2);\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$1);\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$3);\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.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.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$5);\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$5);\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$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\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.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._element).off(Util.TRANSITION_END);\n $__default['default'](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default['default'](_this3._element).one(Util.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$1);\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.reflow(this._element);\n }\n\n $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, {\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.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._dialog).one(Util.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$1) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\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$2);\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$1) ? CLASS_NAME_FADE$1 : '';\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.reflow(this._backdrop);\n }\n\n $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3);\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$1)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default['default'](this._backdrop).one(Util.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$5);\n\n var _config = _extends({}, Default$3, $__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$5, 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$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default['default'](target).data(DATA_KEY$5) ? '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$2, 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$2, 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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$5] = Modal._jQueryInterface;\n $__default['default'].fn[NAME$5].Constructor = Modal;\n\n $__default['default'].fn[NAME$5].noConflict = function () {\n $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.6.0';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default['default'](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default['default'](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default['default'](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default['default'](tip).addClass(CLASS_NAME_FADE$2);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default['default'](tip).appendTo(container);\n }\n\n $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n $__default['default'](tip).addClass(CLASS_NAME_SHOW$4);\n $__default['default'](tip).addClass(this.config.customClass); // 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 if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default['default'](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default['default'](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default['default'](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default['default'](this.config.container);\n }\n\n return $__default['default'](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default['default'](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$6, 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(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface;\n $__default['default'].fn[NAME$6].Constructor = Tooltip;\n\n $__default['default'].fn[NAME$6].noConflict = function () {\n $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.6.0';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n\n var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$5 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default['default'](this).data(DATA_KEY$7, 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(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$7] = Popover._jQueryInterface;\n $__default['default'].fn[NAME$7].Constructor = Popover;\n\n $__default['default'].fn[NAME$7].noConflict = function () {\n $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.6.0';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$8);\n $__default['default'](this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default['default'](config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $__default['default'](config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n $link.addClass(CLASS_NAME_ACTIVE$2);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n }\n\n $__default['default'](this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$2);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$2);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$8);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $__default['default'](this).data(DATA_KEY$8, 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(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](window).on(EVENT_LOAD_DATA_API$2, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $__default['default'](scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$8] = ScrollSpy._jQueryInterface;\n $__default['default'].fn[NAME$8].Constructor = ScrollSpy;\n\n $__default['default'].fn[NAME$8].noConflict = function () {\n $__default['default'].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.6.0';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default['default'].fn[NAME$9];\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$6 = 'show';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$3, {\n relatedTarget: this._element\n });\n var showEvent = $__default['default'].Event(EVENT_SHOW$3, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default['default'](previous).trigger(hideEvent);\n }\n\n $__default['default'](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN$3, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$3, {\n relatedTarget: previous\n });\n $__default['default'](previous).trigger(hiddenEvent);\n $__default['default'](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE$2);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE$4);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $__default['default'](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default['default'](active).removeClass(CLASS_NAME_ACTIVE$3);\n var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default['default'](element).addClass(CLASS_NAME_ACTIVE$3);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$4)) {\n element.classList.add(CLASS_NAME_SHOW$6);\n }\n\n if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN$1)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default['default'](this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, 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(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default['default'](this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$9] = Tab._jQueryInterface;\n $__default['default'].fn[NAME$9].Constructor = Tab;\n\n $__default['default'].fn[NAME$9].noConflict = function () {\n $__default['default'].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.6.0';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $__default['default'].fn[NAME$a];\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW$7 = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $__default['default'].Event(EVENT_SHOW$4);\n $__default['default'](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE$5);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW$7);\n\n $__default['default'](_this._element).trigger(EVENT_SHOWN$4);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util.reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n return;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$4);\n $__default['default'](this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n }\n\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default['default'].removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $__default['default'](_this3._element).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, 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](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$a] = Toast._jQueryInterface;\n $__default['default'].fn[NAME$a].Constructor = Toast;\n\n $__default['default'].fn[NAME$a].noConflict = function () {\n $__default['default'].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.dayjs=n()}(this,function(){\"use strict\";var t=\"millisecond\",n=\"second\",e=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",o=\"quarter\",a=\"year\",h=/^(\\d{4})-?(\\d{1,2})-?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d{1,3})?$/,f=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,n,e){var r=String(t);return!r||r.length>=n?t:\"\"+Array(n+1-r.length).join(e)+t},d={s:c,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),r=Math.floor(e/60),i=e%60;return(n<=0?\"+\":\"-\")+c(r,2,\"0\")+\":\"+c(i,2,\"0\")},m:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(e,u),i=n-r<0,s=t.clone().add(e+(i?-1:1),u);return Number(-(e+(n-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,h:r,m:e,s:n,ms:t,Q:o}[h]||String(h||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},$={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},l=\"en\",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,n,e){var r;if(!t)return null;if(\"string\"==typeof t)m[t]&&(r=t),n&&(m[t]=n,r=t);else{var i=t.name;m[i]=t,r=i}return e||(l=r),r},g=function(t,n,e){if(y(t))return t.clone();var r=n?\"string\"==typeof n?{format:n,pl:e}:n:{};return r.date=t,new v(r)},D=d;D.l=M,D.i=y,D.w=function(t,n){return g(t,{locale:n.$L,utc:n.$u})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0)||l,this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(D.u(n))return new Date;if(n instanceof Date)return new Date(n);if(\"string\"==typeof n&&!/Z$/i.test(n)){var r=n.match(h);if(r)return e?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(n)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},d.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},d.isAfter=function(t,n){return g(t)<this.startOf(n)},d.isBefore=function(t,n){return this.endOf(n)<g(t)},d.$g=function(t,n,e){return D.u(t)?this[n]:this.set(e,t)},d.year=function(t){return this.$g(t,\"$y\",a)},d.month=function(t){return this.$g(t,\"$M\",u)},d.day=function(t){return this.$g(t,\"$W\",i)},d.date=function(t){return this.$g(t,\"$D\",\"date\")},d.hour=function(t){return this.$g(t,\"$H\",r)},d.minute=function(t){return this.$g(t,\"$m\",e)},d.second=function(t){return this.$g(t,\"$s\",n)},d.millisecond=function(n){return this.$g(n,\"$ms\",t)},d.unix=function(){return Math.floor(this.valueOf()/1e3)},d.valueOf=function(){return this.$d.getTime()},d.startOf=function(t,o){var h=this,f=!!D.u(o)||o,c=D.p(t),d=function(t,n){var e=D.w(h.$u?Date.UTC(h.$y,n,t):new Date(h.$y,n,t),h);return f?e:e.endOf(i)},$=function(t,n){return D.w(h.toDate()[t].apply(h.toDate(),(f?[0,0,0,0]:[23,59,59,999]).slice(n)),h)},l=this.$W,m=this.$M,y=this.$D,M=\"set\"+(this.$u?\"UTC\":\"\");switch(c){case a:return f?d(1,0):d(31,11);case u:return f?d(1,m):d(0,m+1);case s:var g=this.$locale().weekStart||0,v=(l<g?l+7:l)-g;return d(f?y-v:y+(6-v),m);case i:case\"date\":return $(M+\"Hours\",0);case r:return $(M+\"Minutes\",1);case e:return $(M+\"Seconds\",2);case n:return $(M+\"Milliseconds\",3);default:return this.clone()}},d.endOf=function(t){return this.startOf(t,!1)},d.$set=function(s,o){var h,f=D.p(s),c=\"set\"+(this.$u?\"UTC\":\"\"),d=(h={},h[i]=c+\"Date\",h.date=c+\"Date\",h[u]=c+\"Month\",h[a]=c+\"FullYear\",h[r]=c+\"Hours\",h[e]=c+\"Minutes\",h[n]=c+\"Seconds\",h[t]=c+\"Milliseconds\",h)[f],$=f===i?this.$D+(o-this.$W):o;if(f===u||f===a){var l=this.clone().set(\"date\",1);l.$d[d]($),l.init(),this.$d=l.set(\"date\",Math.min(this.$D,l.daysInMonth())).toDate()}else d&&this.$d[d]($);return this.init(),this},d.set=function(t,n){return this.clone().$set(t,n)},d.get=function(t){return this[D.p(t)]()},d.add=function(t,o){var h,f=this;t=Number(t);var c=D.p(o),d=function(n){var e=g(f);return D.w(e.date(e.date()+Math.round(n*t)),f)};if(c===u)return this.set(u,this.$M+t);if(c===a)return this.set(a,this.$y+t);if(c===i)return d(1);if(c===s)return d(7);var $=(h={},h[e]=6e4,h[r]=36e5,h[n]=1e3,h)[c]||1,l=this.valueOf()+t*$;return D.w(l,this)},d.subtract=function(t,n){return this.add(-1*t,n)},d.format=function(t){var n=this;if(!this.isValid())return\"Invalid Date\";var e=t||\"YYYY-MM-DDTHH:mm:ssZ\",r=D.z(this),i=this.$locale(),s=this.$H,u=this.$m,o=this.$M,a=i.weekdays,h=i.months,c=function(t,r,i,s){return t&&(t[r]||t(n,e))||i[r].substr(0,s)},d=function(t){return D.s(s%12||12,t,\"0\")},$=i.meridiem||function(t,n,e){var r=t<12?\"AM\":\"PM\";return e?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:D.s(o+1,2,\"0\"),MMM:c(i.monthsShort,o,h,3),MMMM:h[o]||h(this,e),D:this.$D,DD:D.s(this.$D,2,\"0\"),d:String(this.$W),dd:c(i.weekdaysMin,this.$W,a,2),ddd:c(i.weekdaysShort,this.$W,a,3),dddd:a[this.$W],H:String(s),HH:D.s(s,2,\"0\"),h:d(1),hh:d(2),a:$(s,u,!0),A:$(s,u,!1),m:String(u),mm:D.s(u,2,\"0\"),s:String(this.$s),ss:D.s(this.$s,2,\"0\"),SSS:D.s(this.$ms,3,\"0\"),Z:r};return e.replace(f,function(t,n){return n||l[t]||r.replace(\":\",\"\")})},d.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},d.diff=function(t,h,f){var c,d=D.p(h),$=g(t),l=6e4*($.utcOffset()-this.utcOffset()),m=this-$,y=D.m(this,$);return y=(c={},c[a]=y/12,c[u]=y,c[o]=y/3,c[s]=(m-l)/6048e5,c[i]=(m-l)/864e5,c[r]=m/36e5,c[e]=m/6e4,c[n]=m/1e3,c)[d]||m,f?y:D.a(y)},d.daysInMonth=function(){return this.endOf(u).$D},d.$locale=function(){return m[this.$L]},d.locale=function(t,n){if(!t)return this.$L;var e=this.clone();return e.$L=M(t,n,!0),e},d.clone=function(){return D.w(this.toDate(),this)},d.toDate=function(){return new Date(this.$d)},d.toJSON=function(){return this.toISOString()},d.toISOString=function(){return this.$d.toISOString()},d.toString=function(){return this.$d.toUTCString()},c}();return g.prototype=v.prototype,g.extend=function(t,n){return t(n,v,g),g},g.locale=M,g.isDayjs=y,g.unix=function(t){return g(1e3*t)},g.en=m[l],g.Ls=m,g});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.confetti = confetti;\nvar defaultColors = [\"#a864fd\", \"#29cdff\", \"#78ff44\", \"#ff718d\", \"#fdff6a\"];\n\nfunction createElements(root, elementCount, colors, width, height) {\n return Array.from({ length: elementCount }).map(function (_, index) {\n var element = document.createElement(\"div\");\n var color = colors[index % colors.length];\n element.style[\"background-color\"] = color; // eslint-disable-line space-infix-ops\n element.style.width = width;\n element.style.height = height;\n element.style.position = \"absolute\";\n element.style.willChange = \"transform, opacity\";\n element.style.visibility = \"hidden\";\n root.appendChild(element);\n return element;\n });\n}\n\nfunction randomPhysics(angle, spread, startVelocity, random) {\n var radAngle = angle * (Math.PI / 180);\n var radSpread = spread * (Math.PI / 180);\n return {\n x: 0,\n y: 0,\n z: 0,\n wobble: random() * 10,\n wobbleSpeed: 0.1 + random() * 0.1,\n velocity: startVelocity * 0.5 + random() * startVelocity,\n angle2D: -radAngle + (0.5 * radSpread - random() * radSpread),\n angle3D: -(Math.PI / 4) + random() * (Math.PI / 2),\n tiltAngle: random() * Math.PI,\n tiltAngleSpeed: 0.1 + random() * 0.3\n };\n}\n\nfunction updateFetti(fetti, progress, dragFriction, decay) {\n /* eslint-disable no-param-reassign */\n fetti.physics.x += Math.cos(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.y += Math.sin(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.z += Math.sin(fetti.physics.angle3D) * fetti.physics.velocity;\n fetti.physics.wobble += fetti.physics.wobbleSpeed;\n // Backward compatibility\n if (decay) {\n fetti.physics.velocity *= decay;\n } else {\n fetti.physics.velocity -= fetti.physics.velocity * dragFriction;\n }\n fetti.physics.y += 3;\n fetti.physics.tiltAngle += fetti.physics.tiltAngleSpeed;\n\n var _fetti$physics = fetti.physics,\n x = _fetti$physics.x,\n y = _fetti$physics.y,\n z = _fetti$physics.z,\n tiltAngle = _fetti$physics.tiltAngle,\n wobble = _fetti$physics.wobble;\n\n var wobbleX = x + 10 * Math.cos(wobble);\n var wobbleY = y + 10 * Math.sin(wobble);\n var transform = \"translate3d(\" + wobbleX + \"px, \" + wobbleY + \"px, \" + z + \"px) rotate3d(1, 1, 1, \" + tiltAngle + \"rad)\";\n\n fetti.element.style.visibility = \"visible\";\n fetti.element.style.transform = transform;\n fetti.element.style.opacity = 1 - progress;\n\n /* eslint-enable */\n}\n\nfunction animate(root, fettis, dragFriction, decay, duration, stagger) {\n var startTime = void 0;\n\n return new Promise(function (resolve) {\n function update(time) {\n if (!startTime) startTime = time;\n var elapsed = time - startTime;\n var progress = startTime === time ? 0 : (time - startTime) / duration;\n fettis.slice(0, Math.ceil(elapsed / stagger)).forEach(function (fetti) {\n updateFetti(fetti, progress, dragFriction, decay);\n });\n\n if (time - startTime < duration) {\n requestAnimationFrame(update);\n } else {\n fettis.forEach(function (fetti) {\n if (fetti.element.parentNode === root) {\n return root.removeChild(fetti.element);\n }\n });\n resolve();\n }\n }\n\n requestAnimationFrame(update);\n });\n}\n\nvar defaults = {\n angle: 90,\n spread: 45,\n startVelocity: 45,\n elementCount: 50,\n width: \"10px\",\n height: \"10px\",\n perspective: \"\",\n colors: defaultColors,\n duration: 3000,\n stagger: 0,\n dragFriction: 0.1,\n random: Math.random\n};\n\nfunction backwardPatch(config) {\n if (!config.stagger && config.delay) {\n config.stagger = config.delay;\n }\n return config;\n}\n\nfunction confetti(root) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _Object$assign = Object.assign({}, defaults, backwardPatch(config)),\n elementCount = _Object$assign.elementCount,\n colors = _Object$assign.colors,\n width = _Object$assign.width,\n height = _Object$assign.height,\n perspective = _Object$assign.perspective,\n angle = _Object$assign.angle,\n spread = _Object$assign.spread,\n startVelocity = _Object$assign.startVelocity,\n decay = _Object$assign.decay,\n dragFriction = _Object$assign.dragFriction,\n duration = _Object$assign.duration,\n stagger = _Object$assign.stagger,\n random = _Object$assign.random;\n\n root.style.perspective = perspective;\n var elements = createElements(root, elementCount, colors, width, height);\n var fettis = elements.map(function (element) {\n return {\n element: element,\n physics: randomPhysics(angle, spread, startVelocity, random)\n };\n });\n\n return animate(root, fettis, dragFriction, decay, duration, stagger);\n}","+function(a){\"use strict\";function b(a,b){if(!(a instanceof b))throw new TypeError(\"Cannot call a class as a function\")}var c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,\"value\"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}();(function(a){var d=\"ekkoLightbox\",e=a.fn[d],f={title:\"\",footer:\"\",maxWidth:9999,maxHeight:9999,showArrows:!0,wrapping:!0,type:null,alwaysShowClose:!1,loadingMessage:'<div class=\"ekko-lightbox-loader\"><div><div></div><div></div></div></div>',leftArrow:\"<span>❮</span>\",rightArrow:\"<span>❯</span>\",strings:{close:\"Close\",fail:\"Failed to load image:\",type:\"Could not detect remote target type. Force the type using data-type\"},doc:document,onShow:function(){},onShown:function(){},onHide:function(){},onHidden:function(){},onNavigate:function(){},onContentLoaded:function(){}},g=function(){function d(c,e){var g=this;b(this,d),this._config=a.extend({},f,e),this._$modalArrows=null,this._galleryIndex=0,this._galleryName=null,this._padding=null,this._border=null,this._titleIsShown=!1,this._footerIsShown=!1,this._wantedWidth=0,this._wantedHeight=0,this._touchstartX=0,this._touchendX=0,this._modalId=\"ekkoLightbox-\"+Math.floor(1e3*Math.random()+1),this._$element=c instanceof jQuery?c:a(c),this._isBootstrap3=3==a.fn.modal.Constructor.VERSION[0];var h='<h4 class=\"modal-title\">'+(this._config.title||\" \")+\"</h4>\",i='<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"'+this._config.strings.close+'\"><span aria-hidden=\"true\">×</span></button>',j='<div class=\"modal-header'+(this._config.title||this._config.alwaysShowClose?\"\":\" hide\")+'\">'+(this._isBootstrap3?i+h:h+i)+\"</div>\",k='<div class=\"modal-footer'+(this._config.footer?\"\":\" hide\")+'\">'+(this._config.footer||\" \")+\"</div>\",l='<div class=\"modal-body\"><div class=\"ekko-lightbox-container\"><div class=\"ekko-lightbox-item fade in show\"></div><div class=\"ekko-lightbox-item fade\"></div></div></div>',m='<div class=\"modal-dialog\" role=\"document\"><div class=\"modal-content\">'+j+l+k+\"</div></div>\";a(this._config.doc.body).append('<div id=\"'+this._modalId+'\" class=\"ekko-lightbox modal fade\" tabindex=\"-1\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">'+m+\"</div>\"),this._$modal=a(\"#\"+this._modalId,this._config.doc),this._$modalDialog=this._$modal.find(\".modal-dialog\").first(),this._$modalContent=this._$modal.find(\".modal-content\").first(),this._$modalBody=this._$modal.find(\".modal-body\").first(),this._$modalHeader=this._$modal.find(\".modal-header\").first(),this._$modalFooter=this._$modal.find(\".modal-footer\").first(),this._$lightboxContainer=this._$modalBody.find(\".ekko-lightbox-container\").first(),this._$lightboxBodyOne=this._$lightboxContainer.find(\"> div:first-child\").first(),this._$lightboxBodyTwo=this._$lightboxContainer.find(\"> div:last-child\").first(),this._border=this._calculateBorders(),this._padding=this._calculatePadding(),this._galleryName=this._$element.data(\"gallery\"),this._galleryName&&(this._$galleryItems=a(document.body).find('*[data-gallery=\"'+this._galleryName+'\"]'),this._galleryIndex=this._$galleryItems.index(this._$element),a(document).on(\"keydown.ekkoLightbox\",this._navigationalBinder.bind(this)),this._config.showArrows&&this._$galleryItems.length>1&&(this._$lightboxContainer.append('<div class=\"ekko-lightbox-nav-overlay\"><a href=\"#\">'+this._config.leftArrow+'</a><a href=\"#\">'+this._config.rightArrow+\"</a></div>\"),this._$modalArrows=this._$lightboxContainer.find(\"div.ekko-lightbox-nav-overlay\").first(),this._$lightboxContainer.on(\"click\",\"a:first-child\",function(a){return a.preventDefault(),g.navigateLeft()}),this._$lightboxContainer.on(\"click\",\"a:last-child\",function(a){return a.preventDefault(),g.navigateRight()}),this.updateNavigation())),this._$modal.on(\"show.bs.modal\",this._config.onShow.bind(this)).on(\"shown.bs.modal\",function(){return g._toggleLoading(!0),g._handle(),g._config.onShown.call(g)}).on(\"hide.bs.modal\",this._config.onHide.bind(this)).on(\"hidden.bs.modal\",function(){return g._galleryName&&(a(document).off(\"keydown.ekkoLightbox\"),a(window).off(\"resize.ekkoLightbox\")),g._$modal.remove(),g._config.onHidden.call(g)}).modal(this._config),a(window).on(\"resize.ekkoLightbox\",function(){g._resize(g._wantedWidth,g._wantedHeight)}),this._$lightboxContainer.on(\"touchstart\",function(){g._touchstartX=event.changedTouches[0].screenX}).on(\"touchend\",function(){g._touchendX=event.changedTouches[0].screenX,g._swipeGesure()})}return c(d,null,[{key:\"Default\",get:function(){return f}}]),c(d,[{key:\"element\",value:function(){return this._$element}},{key:\"modal\",value:function(){return this._$modal}},{key:\"navigateTo\",value:function(b){return b<0||b>this._$galleryItems.length-1?this:(this._galleryIndex=b,this.updateNavigation(),this._$element=a(this._$galleryItems.get(this._galleryIndex)),void this._handle())}},{key:\"navigateLeft\",value:function(){if(this._$galleryItems&&1!==this._$galleryItems.length){if(0===this._galleryIndex){if(!this._config.wrapping)return;this._galleryIndex=this._$galleryItems.length-1}else this._galleryIndex--;return this._config.onNavigate.call(this,\"left\",this._galleryIndex),this.navigateTo(this._galleryIndex)}}},{key:\"navigateRight\",value:function(){if(this._$galleryItems&&1!==this._$galleryItems.length){if(this._galleryIndex===this._$galleryItems.length-1){if(!this._config.wrapping)return;this._galleryIndex=0}else this._galleryIndex++;return this._config.onNavigate.call(this,\"right\",this._galleryIndex),this.navigateTo(this._galleryIndex)}}},{key:\"updateNavigation\",value:function(){if(!this._config.wrapping){var a=this._$lightboxContainer.find(\"div.ekko-lightbox-nav-overlay\");0===this._galleryIndex?a.find(\"a:first-child\").addClass(\"disabled\"):a.find(\"a:first-child\").removeClass(\"disabled\"),this._galleryIndex===this._$galleryItems.length-1?a.find(\"a:last-child\").addClass(\"disabled\"):a.find(\"a:last-child\").removeClass(\"disabled\")}}},{key:\"close\",value:function(){return this._$modal.modal(\"hide\")}},{key:\"_navigationalBinder\",value:function(a){return a=a||window.event,39===a.keyCode?this.navigateRight():37===a.keyCode?this.navigateLeft():void 0}},{key:\"_detectRemoteType\",value:function(a,b){return b=b||!1,!b&&this._isImage(a)&&(b=\"image\"),!b&&this._getYoutubeId(a)&&(b=\"youtube\"),!b&&this._getVimeoId(a)&&(b=\"vimeo\"),!b&&this._getInstagramId(a)&&(b=\"instagram\"),(!b||[\"image\",\"youtube\",\"vimeo\",\"instagram\",\"video\",\"url\"].indexOf(b)<0)&&(b=\"url\"),b}},{key:\"_isImage\",value:function(a){return a&&a.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i)}},{key:\"_containerToUse\",value:function(){var a=this,b=this._$lightboxBodyTwo,c=this._$lightboxBodyOne;return this._$lightboxBodyTwo.hasClass(\"in\")&&(b=this._$lightboxBodyOne,c=this._$lightboxBodyTwo),c.removeClass(\"in show\"),setTimeout(function(){a._$lightboxBodyTwo.hasClass(\"in\")||a._$lightboxBodyTwo.empty(),a._$lightboxBodyOne.hasClass(\"in\")||a._$lightboxBodyOne.empty()},500),b.addClass(\"in show\"),b}},{key:\"_handle\",value:function(){var a=this._containerToUse();this._updateTitleAndFooter();var b=this._$element.attr(\"data-remote\")||this._$element.attr(\"href\"),c=this._detectRemoteType(b,this._$element.attr(\"data-type\")||!1);if([\"image\",\"youtube\",\"vimeo\",\"instagram\",\"video\",\"url\"].indexOf(c)<0)return this._error(this._config.strings.type);switch(c){case\"image\":this._preloadImage(b,a),this._preloadImageByIndex(this._galleryIndex,3);break;case\"youtube\":this._showYoutubeVideo(b,a);break;case\"vimeo\":this._showVimeoVideo(this._getVimeoId(b),a);break;case\"instagram\":this._showInstagramVideo(this._getInstagramId(b),a);break;case\"video\":this._showHtml5Video(b,a);break;default:this._loadRemoteContent(b,a)}return this}},{key:\"_getYoutubeId\",value:function(a){if(!a)return!1;var b=a.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/);return!(!b||11!==b[2].length)&&b[2]}},{key:\"_getVimeoId\",value:function(a){return!!(a&&a.indexOf(\"vimeo\")>0)&&a}},{key:\"_getInstagramId\",value:function(a){return!!(a&&a.indexOf(\"instagram\")>0)&&a}},{key:\"_toggleLoading\",value:function(b){return b=b||!1,b?(this._$modalDialog.css(\"display\",\"none\"),this._$modal.removeClass(\"in show\"),a(\".modal-backdrop\").append(this._config.loadingMessage)):(this._$modalDialog.css(\"display\",\"block\"),this._$modal.addClass(\"in show\"),a(\".modal-backdrop\").find(\".ekko-lightbox-loader\").remove()),this}},{key:\"_calculateBorders\",value:function(){return{top:this._totalCssByAttribute(\"border-top-width\"),right:this._totalCssByAttribute(\"border-right-width\"),bottom:this._totalCssByAttribute(\"border-bottom-width\"),left:this._totalCssByAttribute(\"border-left-width\")}}},{key:\"_calculatePadding\",value:function(){return{top:this._totalCssByAttribute(\"padding-top\"),right:this._totalCssByAttribute(\"padding-right\"),bottom:this._totalCssByAttribute(\"padding-bottom\"),left:this._totalCssByAttribute(\"padding-left\")}}},{key:\"_totalCssByAttribute\",value:function(a){return parseInt(this._$modalDialog.css(a),10)+parseInt(this._$modalContent.css(a),10)+parseInt(this._$modalBody.css(a),10)}},{key:\"_updateTitleAndFooter\",value:function(){var a=this._$element.data(\"title\")||\"\",b=this._$element.data(\"footer\")||\"\";return this._titleIsShown=!1,a||this._config.alwaysShowClose?(this._titleIsShown=!0,this._$modalHeader.css(\"display\",\"\").find(\".modal-title\").html(a||\" \")):this._$modalHeader.css(\"display\",\"none\"),this._footerIsShown=!1,b?(this._footerIsShown=!0,this._$modalFooter.css(\"display\",\"\").html(b)):this._$modalFooter.css(\"display\",\"none\"),this}},{key:\"_showYoutubeVideo\",value:function(a,b){var c=this._getYoutubeId(a),d=a.indexOf(\"&\")>0?a.substr(a.indexOf(\"&\")):\"\",e=this._$element.data(\"width\")||560,f=this._$element.data(\"height\")||e/(560/315);return this._showVideoIframe(\"//www.youtube.com/embed/\"+c+\"?badge=0&autoplay=1&html5=1\"+d,e,f,b)}},{key:\"_showVimeoVideo\",value:function(a,b){var c=this._$element.data(\"width\")||500,d=this._$element.data(\"height\")||c/(560/315);return this._showVideoIframe(a+\"?autoplay=1\",c,d,b)}},{key:\"_showInstagramVideo\",value:function(a,b){var c=this._$element.data(\"width\")||612,d=c+80;return a=\"/\"!==a.substr(-1)?a+\"/\":a,b.html('<iframe width=\"'+c+'\" height=\"'+d+'\" src=\"'+a+'embed/\" frameborder=\"0\" allowfullscreen></iframe>'),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css(\"display\",\"none\"),this._toggleLoading(!1),this}},{key:\"_showVideoIframe\",value:function(a,b,c,d){return c=c||b,d.html('<div class=\"embed-responsive embed-responsive-16by9\"><iframe width=\"'+b+'\" height=\"'+c+'\" src=\"'+a+'\" frameborder=\"0\" allowfullscreen class=\"embed-responsive-item\"></iframe></div>'),this._resize(b,c),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css(\"display\",\"none\"),this._toggleLoading(!1),this}},{key:\"_showHtml5Video\",value:function(a,b){var c=this._$element.data(\"width\")||560,d=this._$element.data(\"height\")||c/(560/315);return b.html('<div class=\"embed-responsive embed-responsive-16by9\"><video width=\"'+c+'\" height=\"'+d+'\" src=\"'+a+'\" preload=\"auto\" autoplay controls class=\"embed-responsive-item\"></video></div>'),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css(\"display\",\"none\"),this._toggleLoading(!1),this}},{key:\"_loadRemoteContent\",value:function(b,c){var d=this,e=this._$element.data(\"width\")||560,f=this._$element.data(\"height\")||560,g=this._$element.data(\"disableExternalCheck\")||!1;return this._toggleLoading(!1),g||this._isExternal(b)?(c.html('<iframe src=\"'+b+'\" frameborder=\"0\" allowfullscreen></iframe>'),this._config.onContentLoaded.call(this)):c.load(b,a.proxy(function(){return d._$element.trigger(\"loaded.bs.modal\")})),this._$modalArrows&&this._$modalArrows.css(\"display\",\"none\"),this._resize(e,f),this}},{key:\"_isExternal\",value:function(a){var b=a.match(/^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/);return\"string\"==typeof b[1]&&b[1].length>0&&b[1].toLowerCase()!==location.protocol||\"string\"==typeof b[2]&&b[2].length>0&&b[2].replace(new RegExp(\":(\"+{\"http:\":80,\"https:\":443}[location.protocol]+\")?$\"),\"\")!==location.host}},{key:\"_error\",value:function(a){return console.error(a),this._containerToUse().html(a),this._resize(300,300),this}},{key:\"_preloadImageByIndex\",value:function(b,c){if(this._$galleryItems){var d=a(this._$galleryItems.get(b),!1);if(\"undefined\"!=typeof d){var e=d.attr(\"data-remote\")||d.attr(\"href\");return(\"image\"===d.attr(\"data-type\")||this._isImage(e))&&this._preloadImage(e,!1),c>0?this._preloadImageByIndex(b+1,c-1):void 0}}}},{key:\"_preloadImage\",value:function(b,c){var d=this;c=c||!1;var e=new Image;return c&&!function(){var f=setTimeout(function(){c.append(d._config.loadingMessage)},200);e.onload=function(){f&&clearTimeout(f),f=null;var b=a(\"<img />\");return b.attr(\"src\",e.src),b.addClass(\"img-fluid\"),b.css(\"width\",\"100%\"),c.html(b),d._$modalArrows&&d._$modalArrows.css(\"display\",\"\"),d._resize(e.width,e.height),d._toggleLoading(!1),d._config.onContentLoaded.call(d)},e.onerror=function(){return d._toggleLoading(!1),d._error(d._config.strings.fail+(\" \"+b))}}(),e.src=b,e}},{key:\"_swipeGesure\",value:function(){return this._touchendX<this._touchstartX?this.navigateRight():this._touchendX>this._touchstartX?this.navigateLeft():void 0}},{key:\"_resize\",value:function(b,c){c=c||b,this._wantedWidth=b,this._wantedHeight=c;var d=b/c,e=this._padding.left+this._padding.right+this._border.left+this._border.right,f=this._config.doc.body.clientWidth>575?20:0,g=this._config.doc.body.clientWidth>575?0:20,h=Math.min(b+e,this._config.doc.body.clientWidth-f,this._config.maxWidth);b+e>h?(c=(h-e-g)/d,b=h):b+=e;var i=0,j=0;this._footerIsShown&&(j=this._$modalFooter.outerHeight(!0)||55),this._titleIsShown&&(i=this._$modalHeader.outerHeight(!0)||67);var k=this._padding.top+this._padding.bottom+this._border.bottom+this._border.top,l=parseFloat(this._$modalDialog.css(\"margin-top\"))+parseFloat(this._$modalDialog.css(\"margin-bottom\")),m=Math.min(c,a(window).height()-k-l-i-j,this._config.maxHeight-k-i-j);c>m&&(b=Math.ceil(m*d)+e),this._$lightboxContainer.css(\"height\",m),this._$modalDialog.css(\"flex\",1).css(\"maxWidth\",b);var n=this._$modal.data(\"bs.modal\");if(n)try{n._handleUpdate()}catch(o){n.handleUpdate()}return this}}],[{key:\"_jQueryInterface\",value:function(b){var c=this;return b=b||{},this.each(function(){var e=a(c),f=a.extend({},d.Default,e.data(),\"object\"==typeof b&&b);new d(c,f)})}}]),d}();return a.fn[d]=g._jQueryInterface,a.fn[d].Constructor=g,a.fn[d].noConflict=function(){return a.fn[d]=e,g._jQueryInterface},g})(jQuery)}(jQuery);\n//# sourceMappingURL=ekko-lightbox.min.js.map","\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\n}","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","/***************************************************************************************************\r\nLoadingOverlay - A flexible loading overlay jQuery plugin\r\n Author : Gaspare Sganga\r\n Version : 2.1.6\r\n License : MIT\r\n Documentation : https://gasparesganga.com/labs/jquery-loading-overlay/\r\n***************************************************************************************************/\r\n!function(e){\"function\"==typeof define&&define.amd?define([\"jquery\"],e):\"object\"==typeof module&&module.exports?e(require(\"jquery\")):e(jQuery)}(function(g,a){\"use strict\";var o={background:\"rgba(255, 255, 255, 0.8)\",backgroundClass:\"\",image:\"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'><circle r='80' cx='500' cy='90'/><circle r='80' cx='500' cy='910'/><circle r='80' cx='90' cy='500'/><circle r='80' cx='910' cy='500'/><circle r='80' cx='212' cy='212'/><circle r='80' cx='788' cy='212'/><circle r='80' cx='212' cy='788'/><circle r='80' cx='788' cy='788'/></svg>\",imageAnimation:\"2000ms rotate_right\",imageAutoResize:!0,imageResizeFactor:1,imageColor:\"#202020\",imageClass:\"\",imageOrder:1,fontawesome:\"\",fontawesomeAnimation:\"\",fontawesomeAutoResize:!0,fontawesomeResizeFactor:1,fontawesomeColor:\"#202020\",fontawesomeOrder:2,custom:\"\",customAnimation:\"\",customAutoResize:!0,customResizeFactor:1,customOrder:3,text:\"\",textAnimation:\"\",textAutoResize:!0,textResizeFactor:.5,textColor:\"#202020\",textClass:\"\",textOrder:4,progress:!1,progressAutoResize:!0,progressResizeFactor:.25,progressColor:\"#a0a0a0\",progressClass:\"\",progressOrder:5,progressFixedPosition:\"\",progressSpeed:200,progressMin:0,progressMax:100,size:50,maxSize:120,minSize:20,direction:\"column\",fade:!0,resizeInterval:50,zIndex:2147483647},c={overlay:{\"box-sizing\":\"border-box\",position:\"relative\",display:\"flex\",\"flex-wrap\":\"nowrap\",\"align-items\":\"center\",\"justify-content\":\"space-around\"},element:{\"box-sizing\":\"border-box\",overflow:\"visible\",flex:\"0 0 auto\",display:\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\"},element_svg:{width:\"100%\",height:\"100%\"},progress_fixed:{position:\"absolute\",left:\"0\",width:\"100%\"},progress_wrapper:{position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"},progress_bar:{position:\"absolute\",left:\"0\"}},n={count:0,container:a,settings:a,wholePage:a,resizeIntervalId:a,text:a,progress:a},s={animations:[\"rotate_right\",\"rotate_left\",\"fadein\",\"pulse\"],progressPosition:[\"top\",\"bottom\"]},d={animations:{name:\"rotate_right\",time:\"2000ms\"},fade:[400,200]};function r(e,s){e=g(e),s.size=b(s.size),s.maxSize=parseInt(s.maxSize,10)||0,s.minSize=parseInt(s.minSize,10)||0,s.resizeInterval=parseInt(s.resizeInterval,10)||0;var t=u(e),a=v(e);if(!1===a){if((a=g.extend({},n)).container=e,a.wholePage=e.is(\"body\"),t=g(\"<div>\",{class:\"loadingoverlay\"}).css(c.overlay).css(\"flex-direction\",\"row\"===s.direction.toLowerCase()?\"row\":\"column\"),s.backgroundClass?t.addClass(s.backgroundClass):t.css(\"background\",s.background),a.wholePage&&t.css({position:\"fixed\",top:0,left:0,width:\"100%\",height:\"100%\"}),void 0!==s.zIndex&&t.css(\"z-index\",s.zIndex),s.image){g.isArray(s.imageColor)?0===s.imageColor.length?s.imageColor=!1:1===s.imageColor.length?s.imageColor={fill:s.imageColor[0]}:s.imageColor={fill:s.imageColor[0],stroke:s.imageColor[1]}:s.imageColor&&(s.imageColor={fill:s.imageColor});var o=x(t,s.imageOrder,s.imageAutoResize,s.imageResizeFactor,s.imageAnimation);\"<svg\"===s.image.slice(0,4).toLowerCase()&&\"</svg>\"===s.image.slice(-6).toLowerCase()?(o.append(s.image),o.children().css(c.element_svg),!s.imageClass&&s.imageColor&&o.find(\"*\").css(s.imageColor)):\".svg\"===s.image.slice(-4).toLowerCase()||\"data:image/svg\"===s.image.slice(0,14).toLowerCase()?g.ajax({url:s.image,type:\"GET\",dataType:\"html\",global:!1}).done(function(e){o.html(e),o.children().css(c.element_svg),!s.imageClass&&s.imageColor&&o.find(\"*\").css(s.imageColor)}):o.css({\"background-image\":\"url(\"+s.image+\")\",\"background-position\":\"center\",\"background-repeat\":\"no-repeat\",\"background-size\":\"cover\"}),s.imageClass&&o.addClass(s.imageClass)}if(s.fontawesome){o=x(t,s.fontawesomeOrder,s.fontawesomeAutoResize,s.fontawesomeResizeFactor,s.fontawesomeAnimation).addClass(\"loadingoverlay_fa\");g(\"<div>\",{class:s.fontawesome}).appendTo(o),s.fontawesomeColor&&o.css(\"color\",s.fontawesomeColor)}if(s.custom)o=x(t,s.customOrder,s.customAutoResize,s.customResizeFactor,s.customAnimation).append(s.custom);if(s.text&&(a.text=x(t,s.textOrder,s.textAutoResize,s.textResizeFactor,s.textAnimation).addClass(\"loadingoverlay_text\").text(s.text),s.textClass?a.text.addClass(s.textClass):s.textColor&&a.text.css(\"color\",s.textColor)),s.progress){o=x(t,s.progressOrder,s.progressAutoResize,s.progressResizeFactor,!1).addClass(\"loadingoverlay_progress\");var r=g(\"<div>\").css(c.progress_wrapper).appendTo(o);a.progress={bar:g(\"<div>\").css(c.progress_bar).appendTo(r),fixed:!1,margin:0,min:parseFloat(s.progressMin),max:parseFloat(s.progressMax),speed:parseInt(s.progressSpeed,10)};var i=(s.progressFixedPosition+\"\").replace(/\\s\\s+/g,\" \").toLowerCase().split(\" \");2===i.length&&w(i[0])?(a.progress.fixed=i[0],a.progress.margin=b(i[1])):2===i.length&&w(i[1])?(a.progress.fixed=i[1],a.progress.margin=b(i[0])):1===i.length&&w(i[0])&&(a.progress.fixed=i[0],a.progress.margin=0),\"top\"===a.progress.fixed?o.css(c.progress_fixed).css(\"top\",a.progress.margin?a.progress.margin.value+(a.progress.margin.fixed?a.progress.margin.units:\"%\"):0):\"bottom\"===a.progress.fixed&&o.css(c.progress_fixed).css(\"top\",\"auto\"),s.progressClass?a.progress.bar.addClass(s.progressClass):s.progressColor&&a.progress.bar.css(\"background\",s.progressColor)}s.fade?!0===s.fade?s.fade=d.fade:\"string\"==typeof s.fade||\"number\"==typeof s.fade?s.fade=[s.fade,s.fade]:g.isArray(s.fade)&&s.fade.length<2&&(s.fade=[s.fade[0],s.fade[0]]):s.fade=[0,0],s.fade=[parseInt(s.fade[0],10),parseInt(s.fade[1],10)],a.settings=s,t.data(\"loadingoverlay_data\",a),e.data(\"loadingoverlay\",t),t.fadeTo(0,.01).appendTo(\"body\"),p(e,!0),0<s.resizeInterval&&(a.resizeIntervalId=setInterval(function(){p(e,!1)},s.resizeInterval)),t.fadeTo(s.fade[0],1)}a.count++}function i(e,s){var t=u(e=g(e)),a=v(e);!1!==a&&(a.count--,(s||a.count<=0)&&t.animate({opacity:0},a.settings.fade[1],function(){a.resizeIntervalId&&clearInterval(a.resizeIntervalId),g(this).remove(),e.removeData(\"loadingoverlay\")}))}function l(e){p(g(e),!0)}function m(e,s){var t=v(e=g(e));!1!==t&&t.text&&(!1===s?t.text.hide():t.text.show().text(s))}function f(e,s){var t=v(e=g(e));if(!1!==t&&t.progress)if(!1===s)t.progress.bar.hide();else{var a=100*((parseFloat(s)||0)-t.progress.min)/(t.progress.max-t.progress.min);a<0&&(a=0),100<a&&(a=100),t.progress.bar.show().animate({width:a+\"%\"},t.progress.speed)}}function p(e,t){var s=u(e),a=v(e);if(!1!==a){if(!a.wholePage){var o=\"fixed\"===e.css(\"position\"),r=o?e[0].getBoundingClientRect():e.offset();s.css({position:o?\"fixed\":\"absolute\",top:r.top+parseInt(e.css(\"border-top-width\"),10),left:r.left+parseInt(e.css(\"border-left-width\"),10),width:e.innerWidth(),height:e.innerHeight()})}if(a.settings.size){var i=a.wholePage?g(window):e,n=a.settings.size.value;a.settings.size.fixed||(n=Math.min(i.innerWidth(),i.innerHeight())*n/100,a.settings.maxSize&&n>a.settings.maxSize&&(n=a.settings.maxSize),a.settings.minSize&&n<a.settings.minSize&&(n=a.settings.minSize)),s.children(\".loadingoverlay_element\").each(function(){var e=g(this);if(t||e.data(\"loadingoverlay_autoresize\")){var s=e.data(\"loadingoverlay_resizefactor\");e.hasClass(\"loadingoverlay_fa\")||e.hasClass(\"loadingoverlay_text\")?e.css(\"font-size\",n*s+a.settings.size.units):e.hasClass(\"loadingoverlay_progress\")?(a.progress.bar.css(\"height\",n*s+a.settings.size.units),a.progress.fixed?\"bottom\"===a.progress.fixed&&e.css(\"bottom\",a.progress.margin?a.progress.margin.value+(a.progress.margin.fixed?a.progress.margin.units:\"%\"):0).css(\"bottom\",\"+=\"+n*s+a.settings.size.units):a.progress.bar.css(\"top\",e.position().top).css(\"top\",\"-=\"+n*s*.5+a.settings.size.units)):e.css({width:n*s+a.settings.size.units,height:n*s+a.settings.size.units})}})}}}function u(e){return e.data(\"loadingoverlay\")}function v(e){var s=u(e),t=void 0===s?a:s.data(\"loadingoverlay_data\");return void 0===t?(g(\".loadingoverlay\").each(function(){var e=g(this),s=e.data(\"loadingoverlay_data\");document.body.contains(s.container[0])||(s.resizeIntervalId&&clearInterval(s.resizeIntervalId),e.remove())}),!1):(s.toggle(e.is(\":visible\")),t)}function x(e,s,t,a,o){var r=g(\"<div>\",{class:\"loadingoverlay_element\",css:{order:s}}).css(c.element).data({loadingoverlay_autoresize:t,loadingoverlay_resizefactor:a}).appendTo(e);if(!0===o&&(o=d.animations.time+\" \"+d.animations.name),\"string\"==typeof o){var i,n,l=o.replace(/\\s\\s+/g,\" \").toLowerCase().split(\" \");2===l.length&&h(l[0])&&y(l[1])?(i=l[1],n=l[0]):2===l.length&&h(l[1])&&y(l[0])?(i=l[0],n=l[1]):1===l.length&&h(l[0])?(i=d.animations.name,n=l[0]):1===l.length&&y(l[0])&&(i=l[0],n=d.animations.time),r.css({\"animation-name\":\"loadingoverlay_animation__\"+i,\"animation-duration\":n,\"animation-timing-function\":\"linear\",\"animation-iteration-count\":\"infinite\"})}return r}function h(e){return!isNaN(parseFloat(e))&&(\"s\"===e.slice(-1)||\"ms\"===e.slice(-2))}function y(e){return-1<s.animations.indexOf(e)}function w(e){return-1<s.progressPosition.indexOf(e)}function b(e){return!(!e||e<0)&&(\"string\"==typeof e&&-1<[\"vmin\",\"vmax\"].indexOf(e.slice(-4))?{fixed:!0,units:e.slice(-4),value:e.slice(0,-4)}:\"string\"==typeof e&&-1<[\"rem\"].indexOf(e.slice(-3))?{fixed:!0,units:e.slice(-3),value:e.slice(0,-3)}:\"string\"==typeof e&&-1<[\"px\",\"em\",\"cm\",\"mm\",\"in\",\"pt\",\"pc\",\"vh\",\"vw\"].indexOf(e.slice(-2))?{fixed:!0,units:e.slice(-2),value:e.slice(0,-2)}:{fixed:!1,units:\"px\",value:parseFloat(e)})}g.LoadingOverlaySetup=function(e){g.extend(!0,o,e)},g.LoadingOverlay=function(e,s){switch(e.toLowerCase()){case\"show\":r(\"body\",g.extend(!0,{},o,s));break;case\"hide\":i(\"body\",s);break;case\"resize\":l(\"body\");break;case\"text\":m(\"body\",s);break;case\"progress\":f(\"body\",s)}},g.fn.LoadingOverlay=function(e,s){switch(e.toLowerCase()){case\"show\":var t=g.extend(!0,{},o,s);return this.each(function(){r(this,t)});case\"hide\":return this.each(function(){i(this,s)});case\"resize\":return this.each(function(){l(this)});case\"text\":return this.each(function(){m(this,s)});case\"progress\":return this.each(function(){f(this,s)})}},g(function(){g(\"head\").append([\"<style>\",\"@-webkit-keyframes loadingoverlay_animation__rotate_right {\",\"to {\",\"-webkit-transform : rotate(360deg);\",\"transform : rotate(360deg);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__rotate_right {\",\"to {\",\"-webkit-transform : rotate(360deg);\",\"transform : rotate(360deg);\",\"}\",\"}\",\"@-webkit-keyframes loadingoverlay_animation__rotate_left {\",\"to {\",\"-webkit-transform : rotate(-360deg);\",\"transform : rotate(-360deg);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__rotate_left {\",\"to {\",\"-webkit-transform : rotate(-360deg);\",\"transform : rotate(-360deg);\",\"}\",\"}\",\"@-webkit-keyframes loadingoverlay_animation__fadein {\",\"0% {\",\"opacity : 0;\",\"-webkit-transform : scale(0.1, 0.1);\",\"transform : scale(0.1, 0.1);\",\"}\",\"50% {\",\"opacity : 1;\",\"}\",\"100% {\",\"opacity : 0;\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__fadein {\",\"0% {\",\"opacity : 0;\",\"-webkit-transform : scale(0.1, 0.1);\",\"transform : scale(0.1, 0.1);\",\"}\",\"50% {\",\"opacity : 1;\",\"}\",\"100% {\",\"opacity : 0;\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"}\",\"@-webkit-keyframes loadingoverlay_animation__pulse {\",\"0% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"50% {\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"100% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__pulse {\",\"0% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"50% {\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"100% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"}\",\"</style>\"].join(\" \"))})});","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","'use strict';\nvar types = [\n require('./nextTick'),\n require('./queueMicrotask'),\n require('./mutation.js'),\n require('./messageChannel'),\n require('./stateChange'),\n require('./timeout')\n];\nvar draining;\nvar currentQueue;\nvar queueIndex = -1;\nvar queue = [];\nvar scheduled = false;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n nextTick();\n }\n}\n\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n if (draining) {\n return;\n }\n scheduled = false;\n draining = true;\n var len = queue.length;\n var timeout = setTimeout(cleanUpNextTick);\n while (len) {\n currentQueue = queue;\n queue = [];\n while (currentQueue && ++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n queueIndex = -1;\n draining = false;\n clearTimeout(timeout);\n}\nvar scheduleDrain;\nvar i = -1;\nvar len = types.length;\nwhile (++i < len) {\n if (types[i] && types[i].test && types[i].test()) {\n scheduleDrain = types[i].install(nextTick);\n break;\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n var fun = this.fun;\n var array = this.array;\n switch (array.length) {\n case 0:\n return fun();\n case 1:\n return fun(array[0]);\n case 2:\n return fun(array[0], array[1]);\n case 3:\n return fun(array[0], array[1], array[2]);\n default:\n return fun.apply(null, array);\n }\n\n};\nmodule.exports = immediate;\nfunction immediate(task) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(task, args));\n if (!scheduled && !draining) {\n scheduled = true;\n scheduleDrain();\n }\n}\n","'use strict';\n\nexports.test = function () {\n if (global.setImmediate) {\n // we can only get here in IE10\n // which doesn't handel postMessage well\n return false;\n }\n return typeof global.MessageChannel !== 'undefined';\n};\n\nexports.install = function (func) {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = func;\n return function () {\n channel.port2.postMessage(0);\n };\n};","'use strict';\n//based off rsvp https://github.com/tildeio/rsvp.js\n//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE\n//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js\n\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nexports.test = function () {\n return Mutation;\n};\n\nexports.install = function (handle) {\n var called = 0;\n var observer = new Mutation(handle);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n return function () {\n element.data = (called = ++called % 2);\n };\n};","'use strict';\nexports.test = function () {\n return typeof global.queueMicrotask === 'function';\n};\n\nexports.install = function (func) {\n return function () {\n global.queueMicrotask(func);\n };\n};\n","'use strict';\n\nexports.test = function () {\n return 'document' in global && 'onreadystatechange' in global.document.createElement('script');\n};\n\nexports.install = function (handle) {\n return function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n handle();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n\n return handle;\n };\n};","'use strict';\nexports.test = function () {\n return true;\n};\n\nexports.install = function (t) {\n return function () {\n setTimeout(t, 0);\n };\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\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 // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\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.5.1\",\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[ 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( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\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.5\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: 2020-03-14\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.namespaceURI,\n\t\tdocElem = ( 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 = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\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 = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\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: <number>) 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 = \"<a href='#'></a>\";\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 = \"<input/>\";\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 return 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 <tag> 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// <object> 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 master Deferred\n\t\t\tmaster = 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\tmaster.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, master.done( updateFunc( i ) ).resolve, master.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 ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.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 ), master.reject );\n\t\t}\n\n\t\treturn master.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\tvalue :\n\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 = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\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 <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\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, \"<select multiple='multiple'>\", \"</select>\" ];\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\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\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\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\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 <use> 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\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\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\t\t\t\t\t\treturn 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\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\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\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 = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\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\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\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\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 ) > 3;\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\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\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\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\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/* 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\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\t\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\"\" :\n\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\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 = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ 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;\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\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\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} )\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} )\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\toriginAnchor.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\t\tjQuery( callbackContext ) :\n\t\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\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\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( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\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\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tif ( typeof props.top === \"number\" ) {\n\t\t\t\tprops.top += \"px\";\n\t\t\t}\n\t\t\tif ( typeof props.left === \"number\" ) {\n\t\t\t\tprops.left += \"px\";\n\t\t\t}\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t} );\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(window, function l(window, document) {\n\t'use strict';\n\t/*jshint eqnull:true */\n\tif(!document.getElementsByClassName){return;}\n\n\tvar lazysizes, lazySizesConfig;\n\n\tvar docElem = document.documentElement;\n\n\tvar Date = window.Date;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\tvar addEventListener = window[_addEventListener];\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesConfig.throttleDelay;\n\t\tvar rICTimeout = lazySizesConfig.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesConfig.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesConfig.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesConfig)){\n\t\t\t\tlazySizesConfig[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\n\t\twindow.lazySizesConfig = lazySizesConfig;\n\n\t\tsetTimeout(function(){\n\t\t\tif(lazySizesConfig.init){\n\t\t\t\tinit();\n\t\t\t}\n\t\t});\n\t})();\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tdefaultExpand = (!lazySizesConfig.expand || lazySizesConfig.expand < 1) ?\n\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\tlazySizesConfig.expand;\n\n\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\tpreloadExpand = defaultExpand * lazySizesConfig.expFactor;\n\t\t\t\thFac = lazySizesConfig.hFac;\n\t\t\t\tisBodyHidden = null;\n\n\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\tlowRuns = 0;\n\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t} else {\n\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t}\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesConfig.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesConfig.loadedClass);\n\t\t\tremoveClass(elem, lazySizesConfig.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesConfig.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesConfig.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesConfig.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesConfig.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, 'ls-is-cached');\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar afterScroll = debounce(function(){\n\t\t\t\tlazySizesConfig.loadMode = 3;\n\t\t\t\tthrottledCheckElements();\n\t\t\t});\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesConfig.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', function(){\n\t\t\t\tif(lazySizesConfig.loadMode == 3){\n\t\t\t\t\tlazySizesConfig.loadMode = 2;\n\t\t\t\t}\n\t\t\t\tafterScroll();\n\t\t\t}, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tlazysizes = {\n\t\tcfg: lazySizesConfig,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _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/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","\n\n\n \n \n\n var faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [\n 576,\n 512,\n [],\n 'f1f3',\n \n 'M0 432c0 26.5 21.5 48 48 48H528c26.5 0 48-21.5 48-48v-1.1H514.3l-31.9-35.1-31.9 35.1H246.8V267.1H181L262.7 82.4h78.6l28.1 63.2V82.4h97.2L483.5 130l17-47.6H576V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80V432zm440.4-21.7L482.6 364l42 46.3H576l-68-72.1 68-72.1H525.4l-42 46.7-41.5-46.7H390.5L458 338.6l-67.4 71.6V377.1h-83V354.9h80.9V322.6H307.6V300.2h83V267.1h-122V410.3H440.4zm96.3-72L576 380.2V296.9l-39.3 41.4zm-36.3-92l36.9-100.6V246.3H576V103H515.8l-32.2 89.3L451.7 103H390.5V246.1L327.3 103H276.1L213.7 246.3h43l11.9-28.7h65.9l12 28.7h82.7V146L466 246.3h34.4zM282 185.4l19.5-46.9 19.4 46.9H282z'\n \n ]\n };\n\n \n\n \n \n\n var faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [\n 576,\n 512,\n [],\n 'f1f2',\n \n 'M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z'\n \n ]\n };\n\n \n\n \n \n\n var faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [\n 576,\n 512,\n [],\n 'f1f1',\n \n 'M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z'\n \n ]\n };\n\n \n\n \n \n\n var faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [\n 576,\n 512,\n [],\n 'f1f4',\n \n 'M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z'\n \n ]\n };\n\n \n\n \n \n\n var faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [\n 576,\n 512,\n [],\n 'f1f0',\n \n 'M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z'\n \n ]\n };\n\n \n\n \n \n\n var faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [\n 320,\n 512,\n [],\n 'f39e',\n \n 'M80 299.3V512H196V299.3h86.5l18-97.8H196V166.9c0-51.7 20.3-71.5 72.7-71.5c16.3 0 29.4 .4 37 1.2V7.9C291.4 4 256.4 0 236.2 0C129.3 0 80 50.5 80 159.4v42.1H14v97.8H80z'\n \n ]\n };\n\n \n\n \n \n\n var faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [\n 640,\n 512,\n [],\n 'f797',\n \n 'M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z'\n \n ]\n };\n\n \n\n \n \n\n var faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [\n 448,\n 512,\n [],\n 'f16d',\n \n 'M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z'\n \n ]\n };\n\n \n\n \n \n\n var faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [\n 512,\n 512,\n [],\n 'f099',\n \n 'M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z'\n \n ]\n };\n\n \n\n \n \n\n var faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [\n 384,\n 512,\n [],\n 'f7e0',\n \n 'M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z'\n \n ]\n };\n\n \n\n \n \n\n var faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [\n 576,\n 512,\n [],\n 'f7e1',\n \n 'M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z'\n \n ]\n };\n\n \n\n\n\nexport {\n\n faCcAmex,\n \n\n faCcDiscover,\n \n\n faCcMastercard,\n \n\n faCcPaypal,\n \n\n faCcVisa,\n \n\n faFacebookF,\n \n\n faFedex,\n \n\n faInstagram,\n \n\n faTwitter,\n \n\n faUps,\n \n\n faUsps,\n \n\n};\n","\n\n\n \n \n\n var faCartShopping = {\n prefix: 'fal',\n iconName: 'cart-shopping',\n icon: [\n 576,\n 512,\n [128722,\"shopping-cart\"],\n 'f07a',\n \n 'M16 0C7.2 0 0 7.2 0 16s7.2 16 16 16H53.9c7.6 0 14.2 5.3 15.7 12.8l58.9 288c6.1 29.8 32.3 51.2 62.7 51.2H496c8.8 0 16-7.2 16-16s-7.2-16-16-16H191.2c-15.2 0-28.3-10.7-31.4-25.6L152 288H466.5c29.4 0 55-20 62.1-48.5L570.6 71.8c5-20.2-10.2-39.8-31-39.8H99.1C92.5 13 74.4 0 53.9 0H16zm90.1 64H539.5L497.6 231.8C494 246 481.2 256 466.5 256H145.4L106.1 64zM168 456a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm80 0a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm200-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112z'\n \n ]\n };\n\n \n var faShoppingCart = faCartShopping;\n \n\n \n \n\n var faCircleQuestion = {\n prefix: 'fal',\n iconName: 'circle-question',\n icon: [\n 512,\n 512,\n [62108,\"question-circle\"],\n 'f059',\n \n 'M480 256A224 224 0 1 0 32 256a224 224 0 1 0 448 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm168.7-86.2c6.5-24.6 28.7-41.8 54.2-41.8H280c35.5 0 64 29 64 64.3c0 24-13.4 46.2-34.9 57.2L272 268.3V288c0 8.8-7.2 16-16 16s-16-7.2-16-16V258.5c0-6 3.4-11.5 8.7-14.3l45.8-23.4c10.7-5.4 17.5-16.6 17.5-28.7c0-17.8-14.4-32.3-32-32.3H222.9c-10.9 0-20.5 7.4-23.2 17.9l-.2 .7c-2.2 8.5-11 13.7-19.5 11.4s-13.7-11-11.4-19.5l.2-.7zM232 352a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z'\n \n ]\n };\n\n \n var faQuestionCircle = faCircleQuestion;\n \n\n \n \n\n var faClockRotateLeft = {\n prefix: 'fal',\n iconName: 'clock-rotate-left',\n icon: [\n 512,\n 512,\n [\"history\"],\n 'f1da',\n \n 'M32 132V48c0-8.8-7.2-16-16-16S0 39.2 0 48V176c0 8.8 7.2 16 16 16H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H53.6C89.5 84.3 166.7 32 256 32c123.7 0 224 100.3 224 224s-100.3 224-224 224c-73.3 0-138.3-35.2-179.2-89.6c-5.3-7.1-15.3-8.5-22.4-3.2s-8.5 15.3-3.2 22.4C97.9 471.8 172.2 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C159.6 0 75.7 53.3 32 132zm224-4c-8.8 0-16 7.2-16 16V256c0 4.2 1.7 8.3 4.7 11.3l80 80c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L272 249.4V144c0-8.8-7.2-16-16-16z'\n \n ]\n };\n\n \n var faHistory = faClockRotateLeft;\n \n\n \n \n\n var faRabbitRunning = {\n prefix: 'fal',\n iconName: 'rabbit-running',\n icon: [\n 576,\n 512,\n [\"rabbit-fast\"],\n 'f709',\n \n 'M449.3 148.5c14.6 2.1 28.7 6.6 41.8 13.5c-.7-35-15-69-40.8-94.2l-1.4-1.4c-1.9-1.9-4.7-2.7-7.3-2.2l-1.6 .3c-2.3 .4-4.2 1.9-5.3 3.9c-7.5-7.7-15.6-14.7-24.3-21.1c5.8-7.3 14.1-12.4 23.5-14.2l1.6-.3c13-2.5 26.4 1.5 35.8 10.8l1.4 1.4c37.1 36.4 55 87.5 49.4 138.2l23.7 17.7c19 14.2 30.2 36.5 30.2 60.3c0 41.5-33.7 75.2-75.2 75.2H406.6l-32 32H424c26.5 0 48 21.5 48 48s-21.5 48-48 48H306.5c-21.2 0-41.6-8.4-56.6-23.4L237 427.9l-66.4 44.3c-22.1 14.7-51.9 8.7-66.6-13.3s-8.7-51.9 13.3-66.6l50.4-33.6-55-55c-9.8-9.8-17.6-21.2-23.1-33.7c-5.7 1.4-11.6 2.2-17.7 2.2c-39.8 0-72-32.2-72-72s32.2-72 72-72c16.3 0 31.3 5.4 43.3 14.5c20.1-18.9 47.1-30.5 76.9-30.5h9c17.3 0 34.4 3.7 50.2 10.9L319 153.9c-5-10.7-8.8-22.1-11.3-33.9l-7.4-34.4c-3.9-18.4 6.6-36.8 24.4-42.7c7.2-2.4 15-2.5 22.3-.3c50.3 15.1 89 55.3 102.3 105.9zM81 239.3c-.7-4.9-1-9.8-1-14.8c0-20.7 5.6-40 15.3-56.7c-6.6-4.7-14.6-7.5-23.3-7.5c-22.1 0-40 17.9-40 40s17.9 40 40 40c3.1 0 6.1-.4 9-1zM135.1 419c-7.4 4.9-9.3 14.8-4.4 22.2s14.8 9.3 22.2 4.4L214 404.9l-23.1-23.1L135.1 419zM334.8 73.3c-2.4 .8-3.8 3.2-3.2 5.7l7.4 34.4c5.7 26.7 19.7 50.6 39.8 68.5c5.9 5.3 7 14.1 2.7 20.7s-12.8 9.1-20 5.8l-123.3-56c-11.6-5.3-24.2-8-36.9-8h-9c-44.3 0-80.2 35.9-80.2 80.2c0 21.3 8.4 41.7 23.5 56.7L272.6 418.2c9 9 21.2 14.1 33.9 14.1H424c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-6.5 0-12.3-3.9-14.8-9.9c-.8-1.9-1.2-3.8-1.2-5.8l-2.5-34.7c-2.8-39.5-29.7-73.2-67.5-84.9l-30.7-9.4c-8.4-2.6-13.2-11.6-10.6-20s11.6-13.2 20-10.6l30.7 9.4c50.5 15.5 86.3 60.5 90 113.2l0 .5L388.7 309c3-3 7.1-4.7 11.3-4.7H500.8c23.9 0 43.2-19.3 43.2-43.2c0-13.6-6.4-26.5-17.4-34.6l-37.3-27.9c-15.6-11.7-34.3-18.3-53.6-19.3c-7.1-.3-13.1-5.3-14.8-12.2l-2.1-8.7c-10-40.7-40.8-73.2-81-85.2c-1-.3-2-.3-2.9 0zM480 224.3a16 16 0 1 1 0 32 16 16 0 1 1 0-32z'\n \n ]\n };\n\n \n var faRabbitFast = faRabbitRunning;\n \n\n \n \n\n var faTags = {\n prefix: 'fal',\n iconName: 'tags',\n icon: [\n 512,\n 512,\n [],\n 'f02c',\n \n 'M204.1 32c12.7 0 24.9 5.1 33.9 14.1L410.7 218.7c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0L14.1 270.1c-9-9-14.1-21.2-14.1-33.9V80C0 53.5 21.5 32 48 32H204.1zM36.7 247.4L209.4 420.1c12.5 12.5 32.8 12.5 45.3 0L388.1 286.6c12.5-12.5 12.5-32.8 0-45.3L215.4 68.7c-3-3-7.1-4.7-11.3-4.7H48c-8.8 0-16 7.2-16 16V236.1c0 4.2 1.7 8.3 4.7 11.3zM308.4 36.9c6.1-6.4 16.2-6.6 22.6-.5l141.3 135c52.8 50.4 52.8 134.7 0 185.1l-124.6 119c-6.4 6.1-16.5 5.9-22.6-.5s-5.9-16.5 .5-22.6l124.6-119c39.6-37.8 39.6-101 0-138.8L308.9 59.6c-6.4-6.1-6.6-16.2-.5-22.6zM104 112a24 24 0 1 1 0 48 24 24 0 1 1 0-48z'\n \n ]\n };\n\n \n\n \n \n\n var faTruckFast = {\n prefix: 'fal',\n iconName: 'truck-fast',\n icon: [\n 640,\n 512,\n [\"shipping-fast\"],\n 'f48b',\n \n 'M128 32H352c17.7 0 32 14.3 32 32V384H250.5c-13.2-37.3-48.7-64-90.5-64c-24.6 0-47 9.2-64 24.4V288H64v96 32c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H608V235.8c0-11.5-4.1-22.5-11.6-31.2l-78.7-91.8C508.6 102.1 495.3 96 481.3 96H416V64c0-35.3-28.7-64-64-64H128C92.7 0 64 28.7 64 64V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H96V64c0-17.7 14.3-32 32-32zM570.9 224H416V128h65.3c4.7 0 9.1 2 12.1 5.6L570.9 224zM416 256H576V384h-5.5c-13.2-37.3-48.7-64-90.5-64c-24.6 0-47 9.2-64 24.4V256zM96 416a64 64 0 1 1 128 0A64 64 0 1 1 96 416zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM48 160c-8.8 0-16 7.2-16 16s7.2 16 16 16H272c8.8 0 16-7.2 16-16s-7.2-16-16-16H48zM16 224c-8.8 0-16 7.2-16 16s7.2 16 16 16H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H16z'\n \n ]\n };\n\n \n var faShippingFast = faTruckFast;\n \n\n\n\nexport {\n\n faCartShopping,\n \n faShoppingCart,\n \n\n faCircleQuestion,\n \n faQuestionCircle,\n \n\n faClockRotateLeft,\n \n faHistory,\n \n\n faRabbitRunning,\n \n faRabbitFast,\n \n\n faTags,\n \n\n faTruckFast,\n \n faShippingFast,\n \n\n};\n","\n\n\n \n \n\n var faArrowsRotate = {\n prefix: 'far',\n iconName: 'arrows-rotate',\n icon: [\n 512,\n 512,\n [128472,\"refresh\",\"sync\"],\n 'f021',\n \n 'M94 187.1C120.8 124.1 183.3 80 256 80c39.7 0 77.8 15.8 105.9 43.9L414.1 176H360c-13.3 0-24 10.7-24 24s10.7 24 24 24H472c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24s-24 10.7-24 24v54.1L395.9 89.9C358.8 52.8 308.5 32 256 32C163.4 32 83.9 88.2 49.8 168.3c-5.2 12.2 .5 26.3 12.7 31.5s26.3-.5 31.5-12.7zm368 157c5.2-12.2-.4-26.3-12.6-31.5s-26.3 .4-31.5 12.6C391 388.1 328.6 432 256 432c-39.7 0-77.8-15.8-105.9-43.9L97.9 336H152c13.3 0 24-10.7 24-24s-10.7-24-24-24H40c-13.3 0-24 10.7-24 24V424c0 13.3 10.7 24 24 24s24-10.7 24-24V369.9l52.1 52.1C153.2 459.2 203.5 480 256 480c92.5 0 171.8-56 206-135.9z'\n \n ]\n };\n\n \n var faRefresh = faArrowsRotate;\n \n var faSync = faArrowsRotate;\n \n\n \n \n\n var faBars = {\n prefix: 'far',\n iconName: 'bars',\n icon: [\n 448,\n 512,\n [\"navicon\"],\n 'f0c9',\n \n 'M0 88C0 74.7 10.7 64 24 64H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 112 0 101.3 0 88zM0 248c0-13.3 10.7-24 24-24H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM448 408c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H424c13.3 0 24 10.7 24 24z'\n \n ]\n };\n\n \n var faNavicon = faBars;\n \n\n \n \n\n var faCartShopping = {\n prefix: 'far',\n iconName: 'cart-shopping',\n icon: [\n 576,\n 512,\n [128722,\"shopping-cart\"],\n 'f07a',\n \n 'M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32h-411C111 12.8 91.6 0 69.5 0H24zM131.1 80H520.7L482.4 222.2c-2.8 10.5-12.3 17.8-23.2 17.8H161.6L131.1 80zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z'\n \n ]\n };\n\n \n var faShoppingCart = faCartShopping;\n \n\n \n \n\n var faCircleInfo = {\n prefix: 'far',\n iconName: 'circle-info',\n icon: [\n 512,\n 512,\n [\"info-circle\"],\n 'f05a',\n \n 'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V248c0-13.3-10.7-24-24-24H216c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v64H216zm40-144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z'\n \n ]\n };\n\n \n var faInfoCircle = faCircleInfo;\n \n\n \n \n\n var faCircleQuestion = {\n prefix: 'far',\n iconName: 'circle-question',\n icon: [\n 512,\n 512,\n [62108,\"question-circle\"],\n 'f059',\n \n 'M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z'\n \n ]\n };\n\n \n var faQuestionCircle = faCircleQuestion;\n \n\n \n \n\n var faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [\n 512,\n 512,\n [128339,\"clock-four\"],\n 'f017',\n \n 'M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z'\n \n ]\n };\n\n \n var faClockFour = faClock;\n \n\n \n \n\n var faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [\n 512,\n 512,\n [],\n 'f24d',\n \n 'M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 304H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16V288c0 8.8 7.2 16 16 16zm-64-16V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64z'\n \n ]\n };\n\n \n\n \n \n\n var faCrown = {\n prefix: 'far',\n iconName: 'crown',\n icon: [\n 576,\n 512,\n [128081],\n 'f521',\n \n 'M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34l-5.8 11.6L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7l-72-57.6L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0l4.4 23.9L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6l41.4-227.5 4.4-23.9c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-17.1 13.7-72 57.6c-15.9 12.7-39.5 7.5-48.6-10.7L314.8 117.7 309 106zM133.7 418.9L102.2 245.6l28.9 23.1c39.8 31.8 98.8 18.9 121.5-26.7L288 171.3l35.4 70.7c22.8 45.6 81.8 58.5 121.5 26.7l28.9-23.1L442.3 418.9c-1.4 7.6-8 13.1-15.7 13.1H149.4c-7.7 0-14.4-5.5-15.7-13.1z'\n \n ]\n };\n\n \n\n \n \n\n var faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [\n 512,\n 512,\n [9993,61443,128386],\n 'f0e0',\n \n 'M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z'\n \n ]\n };\n\n \n\n \n \n\n var faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [\n 576,\n 512,\n [128065],\n 'f06e',\n \n 'M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z'\n \n ]\n };\n\n \n\n \n \n\n var faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [\n 640,\n 512,\n [],\n 'f070',\n \n 'M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm51.3 163.3l-41.9-33C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5zm-88-69.3L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8z'\n \n ]\n };\n\n \n\n \n \n\n var faFire = {\n prefix: 'far',\n iconName: 'fire',\n icon: [\n 448,\n 512,\n [128293],\n 'f06d',\n \n 'M89.3 156.3C113 115 143.2 77 170.5 50.4c18.7 18.7 40.9 47.2 60.1 71.7c3.8 4.8 7.4 9.5 10.9 13.9c4.6 5.8 11.7 9.2 19.1 9.1s14.4-3.6 18.9-9.5c3.3-4.3 7.7-10.8 12.3-17.4c2.6-3.8 5.3-7.6 7.8-11.2c5.6-7.9 10.5-14.5 14.4-19.1c20 20.8 41 53 57.4 88.4c17.7 38.2 28.6 77 28.6 106.3c0 103-78.8 181.4-176 181.4c-98.3 0-176-78.4-176-181.4c0-37.5 16.2-82.4 41.3-126.2zM199.5 11.6C183.3-3.8 158-3.9 141.8 11.5c-32 30.1-67 73.6-94.1 121C20.7 179.5 0 233 0 282.6C0 410.9 98.1 512 224 512c124.6 0 224-100.9 224-229.4c0-39.1-13.9-85.2-33.1-126.5C395.7 114.6 369.8 74.9 343 49c-16.3-15.8-42-15.8-58.3-.1c-7.9 7.6-17 20-24.3 30.3l-1.1 1.6C240.6 57 218.4 29.5 199.5 11.6zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z'\n \n ]\n };\n\n \n\n \n \n\n var faMagnifyingGlass = {\n prefix: 'far',\n iconName: 'magnifying-glass',\n icon: [\n 512,\n 512,\n [128269,\"search\"],\n 'f002',\n \n 'M368 208A160 160 0 1 0 48 208a160 160 0 1 0 320 0zM337.1 371.1C301.7 399.2 256.8 416 208 416C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208c0 48.8-16.8 93.7-44.9 129.1L505 471c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L337.1 371.1z'\n \n ]\n };\n\n \n var faSearch = faMagnifyingGlass;\n \n\n \n \n\n var faMoneyBillWave = {\n prefix: 'far',\n iconName: 'money-bill-wave',\n icon: [\n 576,\n 512,\n [],\n 'f53a',\n \n 'M265.7 407.9c4.5-1.1 9-2.3 13.5-3.4l0 0c55.9-14.3 119.4-30.6 185.3-28.7c4.1-31.4 30.9-55.7 63.5-55.7V144c-35.3 0-63.9-28.6-64-63.9c-47-1.7-96.8 9.5-153.7 24c-4.5 1.1-9 2.3-13.5 3.5l0 0c-55.9 14.3-119.4 30.6-185.3 28.7C107.4 167.7 80.5 192 48 192V368c35.3 0 63.9 28.6 64 63.9c47 1.7 96.8-9.5 153.7-24zM0 421.5V113C0 88.8 25.4 72.7 48.4 79C128.2 101 208.1 80.6 288 60.3c86.9-22.1 173.8-44.3 260.7-12C565.8 54.6 576 72 576 90.5V399c0 24.3-25.4 40.3-48.3 34C447.8 411 367.9 431.4 288 451.7c-86.9 22.1-173.8 44.3-260.7 12C10.2 457.4 0 440 0 421.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96z'\n \n ]\n };\n\n \n\n \n \n\n var faPenToSquare = {\n prefix: 'far',\n iconName: 'pen-to-square',\n icon: [\n 512,\n 512,\n [\"edit\"],\n 'f044',\n \n 'M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z'\n \n ]\n };\n\n \n var faEdit = faPenToSquare;\n \n\n \n \n\n var faSliders = {\n prefix: 'far',\n iconName: 'sliders',\n icon: [\n 512,\n 512,\n [\"sliders-h\"],\n 'f1de',\n \n 'M0 416c0 13.3 10.7 24 24 24l59.7 0c10.2 32.5 40.5 56 76.3 56s66.1-23.5 76.3-56L488 440c13.3 0 24-10.7 24-24s-10.7-24-24-24l-251.7 0c-10.2-32.5-40.5-56-76.3-56s-66.1 23.5-76.3 56L24 392c-13.3 0-24 10.7-24 24zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-35.8 0-66.1 23.5-76.3 56L24 232c-13.3 0-24 10.7-24 24s10.7 24 24 24l251.7 0c10.2 32.5 40.5 56 76.3 56s66.1-23.5 76.3-56l59.7 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-59.7 0c-10.2-32.5-40.5-56-76.3-56zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm76.3-56C258.1 39.5 227.8 16 192 16s-66.1 23.5-76.3 56L24 72C10.7 72 0 82.7 0 96s10.7 24 24 24l91.7 0c10.2 32.5 40.5 56 76.3 56s66.1-23.5 76.3-56L488 120c13.3 0 24-10.7 24-24s-10.7-24-24-24L268.3 72z'\n \n ]\n };\n\n \n var faSlidersH = faSliders;\n \n\n \n \n\n var faSquareCheck = {\n prefix: 'far',\n iconName: 'square-check',\n icon: [\n 448,\n 512,\n [9745,9989,61510,\"check-square\"],\n 'f14a',\n \n 'M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z'\n \n ]\n };\n\n \n var faCheckSquare = faSquareCheck;\n \n\n \n \n\n var faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [\n 576,\n 512,\n [11088,61446],\n 'f005',\n \n 'M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z'\n \n ]\n };\n\n \n\n \n \n\n var faTrashCan = {\n prefix: 'far',\n iconName: 'trash-can',\n icon: [\n 448,\n 512,\n [61460,\"trash-alt\"],\n 'f2ed',\n \n 'M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z'\n \n ]\n };\n\n \n var faTrashAlt = faTrashCan;\n \n\n \n \n\n var faTriangleExclamation = {\n prefix: 'far',\n iconName: 'triangle-exclamation',\n icon: [\n 512,\n 512,\n [9888,\"exclamation-triangle\",\"warning\"],\n 'f071',\n \n 'M248.4 84.3c1.6-2.7 4.5-4.3 7.6-4.3s6 1.6 7.6 4.3L461.9 410c1.4 2.3 2.1 4.9 2.1 7.5c0 8-6.5 14.5-14.5 14.5H62.5c-8 0-14.5-6.5-14.5-14.5c0-2.7 .7-5.3 2.1-7.5L248.4 84.3zm-41-25L9.1 385c-6 9.8-9.1 21-9.1 32.5C0 452 28 480 62.5 480h387c34.5 0 62.5-28 62.5-62.5c0-11.5-3.2-22.7-9.1-32.5L304.6 59.3C294.3 42.4 275.9 32 256 32s-38.3 10.4-48.6 27.3zM288 368a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-8-184c0-13.3-10.7-24-24-24s-24 10.7-24 24v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184z'\n \n ]\n };\n\n \n var faExclamationTriangle = faTriangleExclamation;\n \n var faWarning = faTriangleExclamation;\n \n\n \n \n\n var faTruckFast = {\n prefix: 'far',\n iconName: 'truck-fast',\n icon: [\n 640,\n 512,\n [\"shipping-fast\"],\n 'f48b',\n \n 'M352 48H128c-8.8 0-16 7.2-16 16V96H240c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16s7.2-16 16-16H64V64C64 28.7 92.7 0 128 0H352c35.3 0 64 28.7 64 64V96h42.7c14.9 0 29.1 5.9 39.6 16.4l93.3 93.3c10.5 10.5 16.4 24.7 16.4 39.6V368h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H576c0 53-43 96-96 96s-96-43-96-96h-8H352 320 256c0 53-43 96-96 96s-96-43-96-96V368 288h48v44.8c14.1-8.2 30.5-12.8 48-12.8c35.5 0 66.6 19.3 83.2 48H320h32c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16zM557.7 239.6l-93.3-93.3c-1.5-1.5-3.5-2.3-5.7-2.3H416v96H558l-.2-.2-.2-.2zM208 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm272 48a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H48c-8.8 0-16-7.2-16-16s7.2-16 16-16zM16 224H240c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16s7.2-16 16-16z'\n \n ]\n };\n\n \n var faShippingFast = faTruckFast;\n \n\n \n \n\n var faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [\n 448,\n 512,\n [62144,128100],\n 'f007',\n \n 'M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z'\n \n ]\n };\n\n \n\n\n\nexport {\n\n faArrowsRotate,\n \n faRefresh,\n \n faSync,\n \n\n faBars,\n \n faNavicon,\n \n\n faCartShopping,\n \n faShoppingCart,\n \n\n faCircleInfo,\n \n faInfoCircle,\n \n\n faCircleQuestion,\n \n faQuestionCircle,\n \n\n faClock,\n \n faClockFour,\n \n\n faClone,\n \n\n faCrown,\n \n\n faEnvelope,\n \n\n faEye,\n \n\n faEyeSlash,\n \n\n faFire,\n \n\n faMagnifyingGlass,\n \n faSearch,\n \n\n faMoneyBillWave,\n \n\n faPenToSquare,\n \n faEdit,\n \n\n faSliders,\n \n faSlidersH,\n \n\n faSquareCheck,\n \n faCheckSquare,\n \n\n faStar,\n \n\n faTrashCan,\n \n faTrashAlt,\n \n\n faTriangleExclamation,\n \n faExclamationTriangle,\n \n faWarning,\n \n\n faTruckFast,\n \n faShippingFast,\n \n\n faUser,\n \n\n};\n","\n\n\n \n \n\n var faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [\n 512,\n 512,\n [9113,128424,128438],\n 'f02f',\n \n 'M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z'\n \n ]\n };\n\n \n\n \n \n\n var faCommentExclamation = {\n prefix: 'fas',\n iconName: 'comment-exclamation',\n icon: [\n 512,\n 512,\n [],\n 'f4af',\n \n 'M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm0-336c13.3 0 24 10.7 24 24V248c0 13.3-10.7 24-24 24s-24-10.7-24-24V136c0-13.3 10.7-24 24-24zM224 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z'\n \n ]\n };\n\n \n\n \n \n\n var faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [\n 512,\n 512,\n [61575,128077],\n 'f164',\n \n 'M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z'\n \n ]\n };\n\n \n\n \n \n\n var faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [\n 512,\n 512,\n [61532,\"times-circle\",\"xmark-circle\"],\n 'f057',\n \n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z'\n \n ]\n };\n\n \n var faTimesCircle = faCircleXmark;\n \n var faXmarkCircle = faCircleXmark;\n \n\n \n \n\n var faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [\n 512,\n 512,\n [],\n 'f436',\n \n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z'\n \n ]\n };\n\n \n\n \n \n\n var faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [\n 512,\n 512,\n [9888,\"exclamation-triangle\",\"warning\"],\n 'f071',\n \n 'M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\n \n ]\n };\n\n \n var faExclamationTriangle = faTriangleExclamation;\n \n var faWarning = faTriangleExclamation;\n \n\n \n \n\n var faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [\n 320,\n 512,\n [8249],\n 'f104',\n \n 'M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z'\n \n ]\n };\n\n \n\n \n \n\n var faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [\n 448,\n 512,\n [10003,10004],\n 'f00c',\n \n 'M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z'\n \n ]\n };\n\n \n\n \n \n\n var faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [\n 512,\n 512,\n [\"plus-circle\"],\n 'f055',\n \n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z'\n \n ]\n };\n\n \n var faPlusCircle = faCirclePlus;\n \n\n \n \n\n var faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [\n 640,\n 512,\n [],\n 'f54b',\n \n 'M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z'\n \n ]\n };\n\n \n\n \n \n\n var faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [\n 384,\n 512,\n [\"level-down\"],\n 'f149',\n \n 'M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z'\n \n ]\n };\n\n \n var faLevelDown = faArrowTurnDown;\n \n\n \n \n\n var faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [\n 512,\n 512,\n [],\n 'f110',\n \n 'M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z'\n \n ]\n };\n\n \n\n \n \n\n var faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [\n 512,\n 512,\n [128260,\"sync-alt\"],\n 'f2f1',\n \n 'M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z'\n \n ]\n };\n\n \n var faSyncAlt = faRotate;\n \n\n \n \n\n var faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [\n 320,\n 512,\n [9002],\n 'f054',\n \n 'M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z'\n \n ]\n };\n\n \n\n \n \n\n var faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [\n 320,\n 512,\n [9001],\n 'f053',\n \n 'M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z'\n \n ]\n };\n\n \n\n \n \n\n var faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [\n 448,\n 512,\n [8963],\n 'f106',\n \n 'M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z'\n \n ]\n };\n\n \n\n \n \n\n var faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [\n 384,\n 512,\n [215,10005,10006,10060,128473,\"close\",\"multiply\",\"remove\",\"times\"],\n 'f00d',\n \n 'M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z'\n \n ]\n };\n\n \n var faClose = faXmark;\n \n var faMultiply = faXmark;\n \n var faRemove = faXmark;\n \n var faTimes = faXmark;\n \n\n \n \n\n var faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [\n 512,\n 512,\n [62142,\"user-circle\"],\n 'f2bd',\n \n 'M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z'\n \n ]\n };\n\n \n var faUserCircle = faCircleUser;\n \n\n \n \n\n var faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [\n 384,\n 512,\n [8593],\n 'f062',\n \n 'M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z'\n \n ]\n };\n\n \n\n \n \n\n var faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [\n 384,\n 512,\n [],\n 'f5c1',\n \n 'M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z'\n \n ]\n };\n\n \n\n \n \n\n var faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [\n 512,\n 512,\n [128269,\"search\"],\n 'f002',\n \n 'M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z'\n \n ]\n };\n\n \n var faSearch = faMagnifyingGlass;\n \n\n \n \n\n var faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [\n 576,\n 512,\n [61731],\n 'f089',\n \n 'M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z'\n \n ]\n };\n\n \n\n \n \n\n var faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [\n 384,\n 512,\n [8595],\n 'f063',\n \n 'M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z'\n \n ]\n };\n\n \n\n \n \n\n var faMessageDots = {\n prefix: 'fas',\n iconName: 'message-dots',\n icon: [\n 512,\n 512,\n [\"comment-alt-dots\",\"messaging\"],\n 'f4a3',\n \n 'M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM128 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\n \n ]\n };\n\n \n var faCommentAltDots = faMessageDots;\n \n var faMessaging = faMessageDots;\n \n\n \n \n\n var faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [\n 512,\n 512,\n [61576,128078],\n 'f165',\n \n 'M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z'\n \n ]\n };\n\n \n\n \n \n\n var faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [\n 448,\n 512,\n [8964],\n 'f107',\n \n 'M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z'\n \n ]\n };\n\n \n\n \n \n\n var faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [\n 576,\n 512,\n [63498,63500,127968,\"home\",\"home-alt\",\"home-lg-alt\"],\n 'f015',\n \n 'M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z'\n \n ]\n };\n\n \n var faHome = faHouse;\n \n var faHomeAlt = faHouse;\n \n var faHomeLgAlt = faHouse;\n \n\n \n \n\n var faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [\n 512,\n 512,\n [],\n 'f019',\n \n 'M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z'\n \n ]\n };\n\n \n\n \n \n\n var faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [\n 384,\n 512,\n [128425],\n 'f1ec',\n \n 'M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z'\n \n ]\n };\n\n \n\n \n \n\n var faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [\n 512,\n 512,\n [\"long-arrow-alt-right\"],\n 'f30b',\n \n 'M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z'\n \n ]\n };\n\n \n var faLongArrowAltRight = faRightLong;\n \n\n \n \n\n var faCoin = {\n prefix: 'fas',\n iconName: 'coin',\n icon: [\n 512,\n 512,\n [129689],\n 'f85c',\n \n 'M256 352C114.6 352 0 287.5 0 208S114.6 64 256 64s256 64.5 256 144s-114.6 144-256 144zM86.6 248.2c12 11.4 27.7 20.1 44.4 26.8c33.6 13.4 77.8 21 125 21s91.4-7.6 125-21c16.7-6.7 32.4-15.4 44.4-26.8C437.5 236.7 448 220.5 448 200s-10.5-36.7-22.6-48.2c-12-11.4-27.7-20.1-44.4-26.8c-33.6-13.4-77.8-21-125-21s-91.4 7.6-125 21c-16.7 6.7-32.4 15.4-44.4 26.8C74.5 163.3 64 179.5 64 200s10.5 36.7 22.6 48.2zM96 200c0-35.3 71.6-64 160-64s160 28.7 160 64s-71.6 64-160 64s-160-28.7-160-64zM0 290.1c13.2 15.6 29.7 29.3 48 40.9l0 63.7C17.8 373.6 0 347.9 0 320l0-29.9zM80 413l0-64.7c28.4 13.2 60.9 23 96 29l0 64.3c-36.2-6-68.9-15.9-96-28.7zm128 32.8l0-64.1c15.7 1.6 31.7 2.4 48 2.4s32.3-.8 48-2.4l0 64.1c-15.5 1.5-31.6 2.2-48 2.2s-32.5-.8-48-2.2zm128-4.1l0-64.3c35.1-6 67.6-15.9 96-29l0 64.7c-27.1 12.8-59.8 22.7-96 28.7zm128-47l0-63.7c18.3-11.5 34.8-25.2 48-40.9l0 29.9c0 27.9-17.8 53.6-48 74.6z'\n \n ]\n };\n\n \n\n \n \n\n var faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [\n 320,\n 512,\n [],\n 'f0d7',\n \n 'M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z'\n \n ]\n };\n\n \n\n \n \n\n var faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [\n 576,\n 512,\n [128722,\"shopping-cart\"],\n 'f07a',\n \n 'M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z'\n \n ]\n };\n\n \n var faShoppingCart = faCartShopping;\n \n\n \n \n\n var faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [\n 512,\n 512,\n [\"long-arrow-alt-left\"],\n 'f30a',\n \n 'M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z'\n \n ]\n };\n\n \n var faLongArrowAltLeft = faLeftLong;\n \n\n \n \n\n var faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [\n 640,\n 512,\n [9951,128666],\n 'f0d1',\n \n 'M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z'\n \n ]\n };\n\n \n\n \n \n\n var faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [\n 512,\n 512,\n [9993,61443,128386],\n 'f0e0',\n \n 'M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z'\n \n ]\n };\n\n \n\n \n \n\n var faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [\n 448,\n 512,\n [127991],\n 'f02b',\n \n 'M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z'\n \n ]\n };\n\n \n\n \n \n\n var faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [\n 512,\n 512,\n [],\n 'f1c1',\n \n 'M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z'\n \n ]\n };\n\n \n\n \n \n\n var faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [\n 448,\n 512,\n [8592],\n 'f060',\n \n 'M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z'\n \n ]\n };\n\n \n\n \n \n\n var faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [\n 512,\n 512,\n [128222,128379],\n 'f095',\n \n 'M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z'\n \n ]\n };\n\n \n\n \n \n\n var faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [\n 512,\n 512,\n [],\n 'f02c',\n \n 'M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\n \n ]\n };\n\n \n\n \n \n\n var faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [\n 512,\n 512,\n [62108,\"question-circle\"],\n 'f059',\n \n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z'\n \n ]\n };\n\n \n var faQuestionCircle = faCircleQuestion;\n \n\n \n \n\n var faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [\n 384,\n 512,\n [\"mobile-alt\"],\n 'f3cd',\n \n 'M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z'\n \n ]\n };\n\n \n var faMobileAlt = faMobileScreenButton;\n \n\n \n \n\n var faBadgeCheck = {\n prefix: 'fas',\n iconName: 'badge-check',\n icon: [\n 512,\n 512,\n [],\n 'f336',\n \n 'M256 0c36.8 0 68.8 20.7 84.9 51.1C373.8 41 411 49 437 75s34 63.3 23.9 96.1C491.3 187.2 512 219.2 512 256s-20.7 68.8-51.1 84.9C471 373.8 463 411 437 437s-63.3 34-96.1 23.9C324.8 491.3 292.8 512 256 512s-68.8-20.7-84.9-51.1C138.2 471 101 463 75 437s-34-63.3-23.9-96.1C20.7 324.8 0 292.8 0 256s20.7-68.8 51.1-84.9C41 138.2 49 101 75 75s63.3-34 96.1-23.9C187.2 20.7 219.2 0 256 0zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z'\n \n ]\n };\n\n \n\n \n \n\n var faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [\n 512,\n 512,\n [9679,9898,9899,11044,61708,61915,128308,128309,128992,128993,128994,128995,128996],\n 'f111',\n \n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z'\n \n ]\n };\n\n \n\n \n \n\n var faLockKeyhole = {\n prefix: 'fas',\n iconName: 'lock-keyhole',\n icon: [\n 448,\n 512,\n [\"lock-alt\"],\n 'f30d',\n \n 'M224 64c44.2 0 80 35.8 80 80v48H144V144c0-44.2 35.8-80 80-80zM80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H368V144C368 64.5 303.5 0 224 0S80 64.5 80 144zM256 320v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32s32 14.3 32 32z'\n \n ]\n };\n\n \n var faLockAlt = faLockKeyhole;\n \n\n \n \n\n var faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [\n 512,\n 512,\n [9829,10084,61578,128153,128154,128155,128156,128420,129293,129294,129505],\n 'f004',\n \n 'M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z'\n \n ]\n };\n\n \n\n \n \n\n var faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [\n 448,\n 512,\n [8594],\n 'f061',\n \n 'M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z'\n \n ]\n };\n\n \n\n \n \n\n var faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [\n 576,\n 512,\n [\"star-half-alt\"],\n 'f5c0',\n \n 'M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z'\n \n ]\n };\n\n \n var faStarHalfAlt = faStarHalfStroke;\n \n\n \n \n\n var faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [\n 640,\n 512,\n [],\n 'f49e',\n \n 'M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z'\n \n ]\n };\n\n \n\n \n \n\n var faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [\n 512,\n 512,\n [],\n 'f0a3',\n \n 'M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z'\n \n ]\n };\n\n \n\n \n \n\n var faStocking = {\n prefix: 'fas',\n iconName: 'stocking',\n icon: [\n 384,\n 512,\n [],\n 'f7d5',\n \n 'M96 0C78.3 0 64 14.3 64 32V64c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H96zm0 128V238.9c0 10.7-5.3 20.7-14.2 26.6L55.7 282.9C20.9 306.1 0 345.1 0 386.9v2.2C0 457 55 512 122.8 512c24.2 0 48-7.2 68.1-20.6L295 422c35.6-23.7 57-63.7 57-106.5V128H96z'\n \n ]\n };\n\n \n\n \n \n\n var faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [\n 512,\n 512,\n [61533,\"check-circle\"],\n 'f058',\n \n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z'\n \n ]\n };\n\n \n var faCheckCircle = faCircleCheck;\n \n\n \n \n\n var faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [\n 512,\n 512,\n [127873],\n 'f06b',\n \n 'M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z'\n \n ]\n };\n\n \n\n \n \n\n var faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [\n 448,\n 512,\n [128293],\n 'f06d',\n \n 'M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z'\n \n ]\n };\n\n \n\n \n \n\n var faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [\n 576,\n 512,\n [128081],\n 'f521',\n \n 'M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z'\n \n ]\n };\n\n \n\n \n \n\n var faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [\n 576,\n 512,\n [11088,61446],\n 'f005',\n \n 'M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z'\n \n ]\n };\n\n \n\n \n \n\n var faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [\n 448,\n 512,\n [62144,128100],\n 'f007',\n \n 'M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z'\n \n ]\n };\n\n \n\n \n \n\n var faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [\n 320,\n 512,\n [8250],\n 'f105',\n \n 'M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z'\n \n ]\n };\n\n \n\n \n \n\n var faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [\n 576,\n 512,\n [],\n 'f217',\n \n 'M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z'\n \n ]\n };\n\n \n\n \n \n\n var faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [\n 512,\n 512,\n [],\n 'f740',\n \n 'M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z'\n \n ]\n };\n\n \n\n \n \n\n var faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [\n 640,\n 512,\n [61670,128490],\n 'f086',\n \n 'M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z'\n \n ]\n };\n\n \n\n \n \n\n var faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [\n 256,\n 512,\n [],\n 'f0da',\n \n 'M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z'\n \n ]\n };\n\n \n\n \n \n\n var faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [\n 512,\n 512,\n [9999,61504,\"pencil-alt\"],\n 'f303',\n \n 'M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z'\n \n ]\n };\n\n \n var faPencilAlt = faPencil;\n \n\n \n \n\n var faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [\n 512,\n 512,\n [\"comment-alt\"],\n 'f27a',\n \n 'M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z'\n \n ]\n };\n\n \n var faCommentAlt = faMessage;\n \n\n\n\nexport {\n\n faPrint,\n \n\n faCommentExclamation,\n \n\n faThumbsUp,\n \n\n faCircleXmark,\n \n faTimesCircle,\n \n faXmarkCircle,\n \n\n faBowlingBall,\n \n\n faTriangleExclamation,\n \n faExclamationTriangle,\n \n faWarning,\n \n\n faAngleLeft,\n \n\n faCheck,\n \n\n faCirclePlus,\n \n faPlusCircle,\n \n\n faShoePrints,\n \n\n faArrowTurnDown,\n \n faLevelDown,\n \n\n faSpinner,\n \n\n faRotate,\n \n faSyncAlt,\n \n\n faChevronRight,\n \n\n faChevronLeft,\n \n\n faAngleUp,\n \n\n faXmark,\n \n faClose,\n \n faMultiply,\n \n faRemove,\n \n faTimes,\n \n\n faCircleUser,\n \n faUserCircle,\n \n\n faArrowUp,\n \n\n faSuitcaseRolling,\n \n\n faMagnifyingGlass,\n \n faSearch,\n \n\n faStarHalf,\n \n\n faArrowDown,\n \n\n faMessageDots,\n \n faCommentAltDots,\n \n faMessaging,\n \n\n faThumbsDown,\n \n\n faAngleDown,\n \n\n faHouse,\n \n faHome,\n \n faHomeAlt,\n \n faHomeLgAlt,\n \n\n faDownload,\n \n\n faCalculator,\n \n\n faRightLong,\n \n faLongArrowAltRight,\n \n\n faCoin,\n \n\n faCaretDown,\n \n\n faCartShopping,\n \n faShoppingCart,\n \n\n faLeftLong,\n \n faLongArrowAltLeft,\n \n\n faTruck,\n \n\n faEnvelope,\n \n\n faTag,\n \n\n faFilePdf,\n \n\n faArrowLeft,\n \n\n faPhone,\n \n\n faTags,\n \n\n faCircleQuestion,\n \n faQuestionCircle,\n \n\n faMobileScreenButton,\n \n faMobileAlt,\n \n\n faBadgeCheck,\n \n\n faCircle,\n \n\n faLockKeyhole,\n \n faLockAlt,\n \n\n faHeart,\n \n\n faArrowRight,\n \n\n faStarHalfStroke,\n \n faStarHalfAlt,\n \n\n faBoxOpen,\n \n\n faCertificate,\n \n\n faStocking,\n \n\n faCircleCheck,\n \n faCheckCircle,\n \n\n faGift,\n \n\n faFire,\n \n\n faCrown,\n \n\n faStar,\n \n\n faUser,\n \n\n faAngleRight,\n \n\n faCartPlus,\n \n\n faCloudShowersHeavy,\n \n\n faComments,\n \n\n faCaretRight,\n \n\n faPencil,\n \n faPencilAlt,\n \n\n faMessage,\n \n faCommentAlt,\n \n\n};\n","\n\n\n \n \n\n var faConfetti = {\n prefix: 'fak',\n iconName: 'confetti',\n icon: [\n 512,\n 512,\n [],\n 'e000',\n \n 'M344.4 404c-6.4-6.4-230.2-230.2-236.4-236.4c-6.5-6.5-17.1-6.5-23.6 0s-6.5 17.1 0 23.6l16.2 16.2L1 489.7c-4.7 13.2 8.1 26 21.3 21.3l282.2-99.5 16.2 16.2c6.5 6.5 17.1 6.5 23.6 0s6.5-17.1 0-23.6zM44.1 467.9l21-59.4 38.5 38.5-59.4 21zm94.4-33.3l-61.1-61.1 18.5-52.4 95 95-52.4 18.5zm87.4-30.8L108.2 286.1l18.5-52.4 151.6 151.6-52.4 18.5zM384.7 127.3c-6.5-6.5-17.1-6.5-23.6 0L256.7 231.6c-6.5 6.5-6.5 17.1 0 23.6s17.1 6.5 23.6 0l104.4-104.4c6.5-6.5 6.5-17.1 0-23.6zM367.3 280.9h-58.4c-9.2 0-16.7 7.5-16.7 16.7s7.5 16.7 16.7 16.7h58.4c9.2 0 16.7-7.5 16.7-16.7s-7.5-16.7-16.7-16.7zm-153-153c-9.2 0-16.7 7.5-16.7 16.7v58.4c0 9.2 7.5 16.7 16.7 16.7s16.7-7.5 16.7-16.7v-58.4c0-9.2-7.5-16.7-16.7-16.7zm283 134.2c-19.6-19.6-51.3-19.6-70.9 0c-19.6 19.6-19.6 51.4 0 70.9c19.6 19.6 51.3 19.6 70.9 0c19.6-19.6 19.6-51.4 0-70.9zm-23.6 47.3c-6.5 6.5-17.1 6.5-23.6 0c-6.5-6.5-6.5-17.1 0-23.6c6.5-6.5 17.1-6.5 23.6 0s6.5 17.1 0 23.6zM249.8 14.7c-19.6-19.6-51.4-19.6-70.9 0c-19.6 19.6-19.6 51.3 0 70.9c19.5 19.6 51.4 19.6 70.9 0c19.6-19.6 19.6-51.3 0-70.9zM226.2 61.9c-6.5 6.5-17.1 6.5-23.6 0c-6.5-6.5-6.5-17.1 0-23.6s17.1-6.5 23.6 0s6.5 17.1 0 23.6zM427.1 186.4a16.7 16.7 0 1 0 0 33.4 16.7 16.7 0 1 0 0-33.4zM308.9 68.2a16.7 16.7 0 1 0 0 33.4 16.7 16.7 0 1 0 0-33.4zM427.1 375.5a16.7 16.7 0 1 0 0 33.4 16.7 16.7 0 1 0 0-33.4zM119.8 68.2a16.7 16.7 0 1 0 0 33.4 16.7 16.7 0 1 0 0-33.4zm324-66.9c-9.2 0-16.7 7.5-16.7 16.7V34.8c0 9.2 7.5 16.7 16.7 16.7s16.7-7.5 16.7-16.7V18c0-9.2-7.5-16.7-16.7-16.7zm0 83.6c-9.2 0-16.7 7.5-16.7 16.7v16.7c0 9.2 7.5 16.7 16.7 16.7s16.7-7.5 16.7-16.7v-16.7c0-9.2-7.5-16.7-16.7-16.7zM410.4 51.5h-16.7c-9.2 0-16.7 7.5-16.7 16.7s7.5 16.7 16.7 16.7h16.7c9.2 0 16.7-7.5 16.7-16.7s-7.5-16.7-16.7-16.7zm83.6 0H477.2c-9.2 0-16.7 7.5-16.7 16.7s7.5 16.7 16.7 16.7H494c9.2 0 16.7-7.5 16.7-16.7S503.2 51.5 494 51.5z'\n \n ]\n };\n\n \n\n \n \n\n var faCrownLight = {\n prefix: 'fak',\n iconName: 'crown-light',\n icon: [\n 640,\n 512,\n [],\n 'e003',\n \n 'M536 480H104c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm48-320c-30.9 0-56 25.1-56 56c0 7.6 1.5 14.8 4.3 21.4L476 271.2c-5.2 3.1-10.8 4.6-16.4 4.6c-11.1 0-21.9-5.8-27.8-16.1l-74.4-130.2c11.3-10.3 18.6-25 18.6-41.5c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 16.5 7.3 31.2 18.6 41.4l-74.4 130.2c-5.9 10.4-16.7 16.1-27.8 16.1c-5.6 0-11.3-1.5-16.4-4.6l-56.3-33.8c2.7-6.6 4.3-13.8 4.3-21.4c0-30.9-25.1-56-56-56S0 185.1 0 216s25.1 56 56 56c2 0 3.9-.4 5.8-.6L128 448h384l66.2-176.6c1.9 .2 3.8 .6 5.8 .6c30.9 0 56-25.1 56-56s-25.1-56-56-56zM320 64c13.2 0 24 10.8 24 24s-10.8 24-24 24-24-10.8-24-24 10.8-24 24-24zM56 240c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zm433.8 176H150.2l-56-149.4 53.4 32c10 6 21.3 9.1 32.9 9.1c22.9 0 44.2-12.4 55.6-32.3l75.6-132.3c2.8 .4 5.5 .8 8.4 .8s5.6-.4 8.4-.8L404 275.5c11.4 19.9 32.7 32.2 55.6 32.2c11.6 0 22.9-3.2 32.9-9.1l53.4-32L489.8 416zM584 240c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24z'\n \n ]\n };\n\n \n\n \n \n\n var faCrownRegular = {\n prefix: 'fak',\n iconName: 'crown-regular',\n icon: [\n 640,\n 512,\n [],\n 'e002',\n \n 'M528 464H112c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm64-336c-26.5 0-48 21.5-48 48c0 7.1 1.6 13.7 4.4 19.8L476 239.2c-5.2 3.1-10.8 4.6-16.4 4.6c-11.1 0-21.9-5.8-27.8-16.1L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-5.9 10.4-16.7 16.1-27.8 16.1c-5.6 0-11.3-1.5-16.4-4.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8c0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5 .4 5.1 .8 7.7 .8c26.5 0 48-21.5 48-48s-21.5-48-48-48zM478.7 368H161.3l-36-96.1 14 8.4c12.4 7.5 26.7 11.4 41.1 11.4c28.7 0 55.3-15.4 69.5-40.3L320 128.7l70.1 122.7c14.2 24.9 40.8 40.3 69.5 40.3c14.5 0 28.7-3.9 41.1-11.4l14-8.4-36 96.1z'\n \n ]\n };\n\n \n\n \n \n\n var faCrownSolid = {\n prefix: 'fak',\n iconName: 'crown-solid',\n icon: [\n 640,\n 512,\n [],\n 'e001',\n \n 'M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48c0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8c0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5 .4 5.1 .8 7.7 .8c26.5 0 48-21.5 48-48s-21.5-48-48-48z'\n \n ]\n };\n\n \n\n\n\nexport {\n\n faConfetti,\n \n\n faCrownLight,\n \n\n faCrownRegular,\n \n\n faCrownSolid,\n \n\n};\n","\n import * as fabIcons from './classic/brands.mjs';\n\n import * as falIcons from './classic/light.mjs';\n\n import * as farIcons from './classic/regular.mjs';\n\n import * as fasIcons from './classic/solid.mjs';\n\n import * as fakIcons from './kit/custom.mjs';\n\n \n\n\nvar byPrefixAndName = {'fab': {},'fal': {},'far': {},'fas': {},'fak': {},};\nvar all = [];\n\nfunction addIcons (icons) {\n Object.keys(icons).forEach(function (iconName) {\n if (iconName === 'prefix') {\n return;\n }\n\n var icon = icons[iconName];\n var aliases = icon.icon[2];\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n byPrefixAndName[icon.prefix][alias] = icon;\n }\n })\n byPrefixAndName[icon.prefix][icon.iconName] = icon;\n all.push(icon);\n });\n}\n\n\n \n addIcons(fabIcons);\n var fab = fabIcons;\n \n\n \n addIcons(falIcons);\n var fal = falIcons;\n \n\n \n addIcons(farIcons);\n var far = farIcons;\n \n\n \n addIcons(fasIcons);\n var fas = fasIcons;\n \n\n \n addIcons(fakIcons);\n var fak = fakIcons;\n \n\n \n\n\nexport {\n byPrefixAndName, all\n , fab, fal, far, fas, fak\n}\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fakd': 'kit',\n 'fa-kit': 'kit',\n 'fa-kit-duotone': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid',\n 'fasr': 'regular',\n 'fa-regular': 'regular',\n 'fasl': 'light',\n 'fa-light': 'light',\n 'fast': 'thin',\n 'fa-thin': 'thin'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n solid: 'fas',\n regular: 'far',\n light: 'fal',\n thin: 'fat',\n duotone: 'fad',\n brands: 'fab',\n kit: 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n solid: 'fass',\n regular: 'fasr',\n light: 'fasl',\n thin: 'fast'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n fab: 'fa-brands',\n fad: 'fa-duotone',\n fak: 'fa-kit',\n fal: 'fa-light',\n far: 'fa-regular',\n fas: 'fa-solid',\n fat: 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n fass: 'fa-solid',\n fasr: 'fa-regular',\n fasl: 'fa-light',\n fast: 'fa-thin'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass',\n 'fa-regular': 'fasr',\n 'fa-light': 'fasl',\n 'fa-thin': 'fast'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl|st)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i;\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n 900: 'fas',\n 400: 'far',\n normal: 'far',\n 300: 'fal',\n 100: 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n 900: 'fass',\n 400: 'fasr',\n 300: 'fasl',\n 100: 'fast'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n -webkit-transition-duration: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.5.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (_abstract) {\n node.parentNode.insertBefore(convertSVG(_abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var _abstract2 = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete _abstract2[0].attributes.id;\n\n if (_abstract2[0].attributes.class) {\n var splitClasses = _abstract2[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n\n _abstract2[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = _abstract2.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var _abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n\n var element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = _abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(_abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (_abstract.attributes && (_abstract.attributes.fill || force)) {\n _abstract.attributes.fill = 'black';\n }\n\n return _abstract;\n}\n\nfunction deGroup(_abstract2) {\n if (_abstract2.tag === 'g') {\n return _abstract2.children;\n } else {\n return [_abstract2];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n"],"names":["load","r","exports","storage","debug","e","process","DEBUG","module","log","console","Function","prototype","apply","call","arguments","formatArgs","args","useColors","this","namespace","humanize","diff","c","color","splice","index","lastC","replace","match","save","namespaces","removeItem","window","type","document","documentElement","style","WebkitAppearance","firebug","exception","table","navigator","userAgent","toLowerCase","parseInt","RegExp","$1","chrome","local","localStorage","localstorage","colors","formatters","j","v","JSON","stringify","err","message","enable","prevTime","createDebug","enabled","self","curr","Date","ms","prev","Array","length","i","coerce","unshift","format","formatter","val","bind","hash","charCodeAt","Math","abs","selectColor","init","Error","stack","disable","names","skips","split","len","push","substr","name","test","s","m","h","d","plural","n","floor","ceil","options","str","String","exec","parseFloat","parse","isNaN","long","round","fmtShort","AlgoliaSearchCore","errors","exitPromise","IndexCore","store","RESET_APP_DATA_TIMER","applicationID","apiKey","opts","clone","isArray","map","usage","_allowEmptyCredentials","AlgoliaSearchError","hosts","read","write","_timeouts","timeouts","connect","timeout","protocol","_checkAppIdData","defaultHosts","_shuffleResult","hostNumber","mainSuffix","dsn","concat","prepareHost","extraHeaders","cache","_cache","_ua","_useCache","undefined","_useRequestCache","_useFallback","useFallback","_setTimeout","host","safeJSONStringify","obj","toJSON","out","removeCredentials","headers","newHeaders","headerName","value","Object","hasOwnProperty","initIndex","indexName","setExtraHeader","getExtraHeader","unsetExtraHeader","addAlgoliaAgent","algoliaAgent","indexOf","_jsonRequest","initialOpts","body","cacheID","requestDebug","url","additionalUA","client","tries","usingFallback","hasFallback","_request","fallback","params","requests","_computeRequestHeaders","withApiKey","debugData","isCacheValidWithCurrentID","useRequestCache","currentCache","currentCacheID","interopCallbackReturn","request","callback","catch","then","content","setTimeout","maybePromiseForCache","_promise","resolve","responseText","doRequest","requester","reqOpts","startTime","hostType","reject","method","jsonBody","_getTimeoutsForRequest","_setHostIndexByType","currentHost","_getHostByType","forceAuthHeaders","httpResponse","status","statusCode","httpResponseOk","endTime","contentLength","duration","retryRequest","unrecoverableError","Unknown","UnparsableJSON","RequestTimeout","_incrementHostIndex","_incrementTimeoutMultipler","_getSearchParams","key","encodeURIComponent","toString","forEach","requestHeaders","userToken","securityTags","search","queries","postObj","query","JSONPParams","requestId","join","strategy","searchForFacetValues","all","facetName","facetQuery","omit","filteredParams","keyName","searchParameters","setSecurityTags","tags","strTags","oredTags","setUserToken","clearCache","setRequestTimeout","milliseconds","setTimeouts","getTimeouts","_getAppIdData","data","get","_cacheAppIdData","_setAppIdData","lastChange","getTime","set","now","_resetInitialAppIdData","newData","hostIndexes","timeoutMultiplier","shuffleResult","array","temporaryValue","randomIndex","currentIndex","random","shuffle","_hostIndexes","_timeoutMultiplier","_partialAppIdDataUpdate","foreach","currentData","_getHostIndexByType","_getTimeoutMultiplier","hostIndex","newHostIndexes","max","complete","buildSearchMethod","deprecate","deprecatedMessage","algoliasearch","as","typeAheadArgs","typeAheadValueOption","similarSearch","browse","queryParameters","page","hitsPerPage","merge","browseFrom","cursor","searchFacet","_search","getObject","objectID","attrs","getObjects","objectIDs","attributesToRetrieve","indexObj","createAlgoliasearch","global","Promise","AlgoliaSearch","uaSuffix","inherits","inlineHeaders","jsonpRequest","places","cloneDeep","ua","AlgoliaSearchBrowser","version","initPlaces","__algolia","support","hasXMLHttpRequest","hasXDomainRequest","cors","XMLHttpRequest","reqTimeout","timedOut","req","XDomainRequest","connected","onTimeout","onprogress","onConnect","onreadystatechange","readyState","onload","clearTimeout","getAllResponseHeaders","more","onerror","event","Network","open","setRequestHeader","send","abort","delay","promises","encode","cb","cbCalled","JSONPCounter","head","getElementsByTagName","script","createElement","cbName","done","removeGlobals","clean","ontimeout","success","JSONPScriptError","async","defer","src","appendChild","JSONPScriptFail","removeChild","queryParam","fn","warned","warn","previousUsage","newUsage","githubAnchorLink","extraProperties","error","captureStackTrace","constructor","createCustomError","AlgoliaSearchCustomError","slice","arr","newArr","item","itemIndex","destination","sources","source","keys","filtered","appID","reverse","encoded","qs3","localStorageNamespace","moduleStore","state","localStorageStore","g","localStorageFailure","_","cleanup","getOrSet","supportsLocalStorage","setItem","css","wrapper","position","display","hint","top","left","borderColor","boxShadow","opacity","input","verticalAlign","backgroundColor","inputWithNoHint","dropdown","zIndex","suggestions","suggestion","whiteSpace","suggestionChild","ltr","right","rtl","defaultClasses","root","prefix","noPrefix","dropdownMenu","dataset","empty","appendTo","isMsie","mixin","backgroundImage","marginTop","datasetKey","valueKey","datumKey","DOM","html","EventEmitter","Dataset","o","templates","displayFn","_isEmpty","highlight","getUniqueId","displayKey","isFunction","debounce","templatify","header","footer","context","cssClasses","formattedPrefix","formatPrefix","clazz","className","$el","$menu","find","element","clearCachedSuggestions","extractDatasetName","el","extractValue","extractDatum","datum","_render","hasSuggestions","that","renderArgs","isEmpty","prepend","getHeaderHtml","append","getFooterHtml","$suggestions","nodes","suggestionsHtml","suggestionHtml","attr","role","id","children","each","TypeError","addClass","removeClass","trigger","getRoot","update","handleSuggestions","canceled","extraArgs","cacheSuggestions","shouldFetchFromCache","cachedSuggestions","cachedRenderExtraArgs","execSource","debounceTimeout","cachedQuery","cancel","clear","destroy","Dropdown","onSuggestionClick","onSuggestionMouseEnter","onSuggestionMouseLeave","menu","datasets","isObject","isOpen","minLength","_onSuggestionClick","_onSuggestionMouseEnter","_onSuggestionMouseLeave","cssClass","on","$container","$empty","hide","oDataset","initializeDataset","parent","onSync","_onRendered","resize","_redraw","$e","currentTarget","elt","hasClass","_removeCursor","_setCursor","relatedTarget","closest","every","_hide","show","_show","any","_getSuggestions","_getCursor","first","updateInput","removeAttr","_moveCursor","increment","$oldCursor","newCursorIndex","$newCursor","eq","_ensureVisible","elTop","elBottom","menuScrollTop","menuHeight","height","scrollTop","close","setLanguageDirection","dir","moveCursorUp","moveCursorDown","getDatumForSuggestion","raw","datasetName","getCurrentCursor","getDatumForCursor","getDatumForTopSuggestion","cursorTopSuggestion","isVisible","off","EventBus","Event","immediate","splitter","types","bindContext","_callbacks","shift","sync","getFlush","callbacks","cancelled","onAsync","syncFlush","asyncFlush","specialKeyCodeMap","Input","onBlur","onFocus","onKeydown","onInput","$input","_onBlur","_onFocus","_onKeydown","_onInput","$hint","setHint","getHint","clearHint","clearHintIfInvalid","noop","which","keyCode","$overflowHelper","visibility","fontFamily","fontSize","fontStyle","fontVariant","fontWeight","wordSpacing","letterSpacing","textIndent","textRendering","textTransform","insertAfter","withModifier","altKey","ctrlKey","metaKey","shiftKey","normalizeQuery","resetInputValue","_managePreventDefault","_shouldTrigger","_checkInputValue","preventDefault","hintValue","inputValue","getInputValue","areEquivalent","hasDifferentWhitespace","a","b","focus","blur","getQuery","setQuery","setInputValue","silent","expand","collapse","setActiveDescendant","activedescendantId","removeActiveDescendant","valIsPrefixOfHint","hasOverflow","getLanguageDirection","constraint","width","text","isCursorAtEnd","valueLength","selectionStart","range","isNumber","selection","createRange","moveStart","attrsKey","Typeahead","isActivated","autoselect","autoselectOnBlur","openOnFocus","autoWidth","clearOnSelected","tabAutocomplete","listboxId","domElts","$wrapper","$dropdown","dropdownHtml","backgroundAttachment","backgroundClip","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","prop","autocomplete","spellcheck","tabindex","removeData","ariaLabel","wrap","buildDom","$node","dropdownMenuContainer","active","activeElement","contains","stopImmediatePropagation","eventBus","_onSuggestionClicked","_onCursorMoved","_onCursorRemoved","_onOpened","_onClosed","_onShown","_onEmpty","_onRedrawn","_onDatasetRendered","_onFocused","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_bindKeyboardShortcuts","_setLanguageDirection","keyboardShortcuts","toUpperCase","keydown","target","srcElement","tagName","isContentEditable","stopPropagation","_select","selectionMethod","currentCursorId","_updateHint","inputRect","getBoundingClientRect","wrapperRect","bottom","cursorDatum","topSuggestionDatum","_autocomplete","escapedQuery","escapeRegExChars","laxCursor","setVal","isDefaultPrevented","toStr","getVal","detach","remove","getWrapper","agent","parsed","counter","escapeRegExp","agentString","msg","result","found","$template","skipDot","escapeHighlightedString","highlightPreTag","highlightPostTag","pre","createTextNode","post","div","innerHTML","parseAlgoliaClientVersion","algoliaVersion","hits","popularIn","details","hit","detailsIndex","detailsParams","detailsAlgoliaVersion","error2","content2","includeAll","label","allTitle","facet","count","nbHits","facets","values","zepto","isPlainObject","proxy","collection","extend","typeaheadKey","selector","typeaheadObject","inputs","typeahead","getAttribute","methodArguments","wasAutocompleteSet","oldAutocomplete","noConflict","Zepto","$","classList","camelize","uniq","emptyArray","filter","elementDisplay","classCache","cssNumber","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","tableRow","containers","readyRE","simpleSelectorRE","class2type","tempParent","propMap","object","isWindow","isDocument","nodeType","DOCUMENT_NODE","getPrototypeOf","likeArray","dasherize","classRE","maybeAddPx","childNodes","node","Z","dom","deep","funcArg","arg","idx","payload","setAttribute","removeAttribute","klass","svg","baseVal","deserializeValue","parseJSON","traverseNode","fun","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","parentNode","temp","qsa","chr","fragment","properties","container","isZ","trim","ready","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","querySelectorAll","isEmptyObject","isNumeric","num","Number","isFinite","inArray","elem","camelCase","uuid","expr","elements","grep","reduce","sort","toArray","addEventListener","size","not","add","is","excludes","has","last","$this","some","parents","ancestors","pluck","contents","contentDocument","siblings","child","property","nodeName","getComputedStyle","getPropertyValue","replaceWith","newContent","before","structure","func","wrapAll","cloneNode","wrapInner","unwrap","toggle","setting","next","originHtml","newText","textContent","attribute","removeProp","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","props","pageXOffset","pageYOffset","computedStyle","removeProperty","cssText","cls","toggleClass","when","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","dimension","dimensionProperty","operator","operatorIndex","inside","argType","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","ownerDocument","defaultView","_zid","isString","handlers","specialEvents","focusinSupported","hover","mouseenter","mouseleave","zid","findHandlers","ns","matcher","handler","sel","parts","eventCapture","captureSetting","del","realEvent","events","delegator","capture","related","compatible","isImmediatePropagationStopped","dataPropDescriptor","getOwnPropertyDescriptor","writable","_args","removeEventListener","click","mousedown","mouseup","mousemove","proxyFn","unbind","one","returnTrue","returnFalse","ignoreProperties","eventMethods","predicate","sourceMethod","timeStamp","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","delegate","undelegate","live","die","autoRemove","evt","liveFired","dispatchEvent","triggerHandler","createEvent","bubbles","initEvent","dataAttr","exp","expando","setData","attributes","attributeData","camelName","getData","hasData","methodName","origFn","factory","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","onCanceled","requestData","responseType","cancelToken","unsubscribe","signal","isFormData","isStandardBrowserEnv","auth","username","password","unescape","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","response","statusText","paramsSerializer","responseURL","onabort","ECONNABORTED","ERR_NETWORK","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","isUndefined","onDownloadProgress","onUploadProgress","upload","subscribe","aborted","ERR_BAD_REQUEST","Axios","mergeConfig","axios","createInstance","defaultConfig","instance","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","spread","isAxiosError","executor","resolvePromise","promise","token","_listeners","l","onfulfilled","_resolve","reason","throwIfRequested","listener","ERR_CANCELED","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","code","description","number","fileName","lineNumber","columnNumber","descriptors","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","assign","use","eject","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","ERR_BAD_RESPONSE","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","contentType","_FormData","env","FormData","rawValue","parser","encoder","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","serializedParams","isDate","toISOString","hashmarkIndex","relativeURL","expires","path","domain","secure","cookie","toGMTString","decodeURIComponent","originURL","msie","urlParsingNode","resolveURL","href","hostname","port","pathname","charAt","location","requestURL","normalizedName","ignoreDuplicateOf","line","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","pop","thing","deprecatedWarnings","formatMessage","opt","desc","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","kindOf","kindOfTest","TypedArray","Uint8Array","pattern","ArrayBuffer","isView","pipe","product","assignValue","stripBOM","superConstructor","sourceObj","destObj","merged","getOwnPropertyNames","searchString","lastIndex","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","descriptor","enumerable","configurable","_createClass","Constructor","protoProps","staticProps","_extends","TRANSITION_END","transitionEndEmulator","_this","called","Util","triggerTransitionEnd","getUID","getSelectorFromElement","hrefAttr","querySelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","offsetHeight","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","getRootNode","ShadowRoot","jQueryDetection","jquery","emulateTransitionEnd","special","bindType","delegateType","handle","handleObj","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","Alert","_element","_proto","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","NAME$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","EVENT_CLICK_DATA_API$1","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","checked","hasAttribute","avoidTriggerChange","button","initialButton","inputBtn","buttons","_i","_len","_button","NAME$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$2","JQUERY_NO_CONFLICT$2","Default","interval","keyboard","slide","pause","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_ACTIVE$1","SELECTOR_ACTIVE_ITEM","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","to","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","start","pointerType","clientX","touches","end","move","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API$3","CLASS_NAME_SHOW$1","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","$trigger","selectors","$target","NAME$4","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK","EVENT_CLICK_DATA_API$4","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW$2","CLASS_NAME_MENURIGHT","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$2","flip","boundary","reference","popperConfig","DefaultType$2","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","_dataApiKeydownHandler","items","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$3","CLASS_NAME_STATIC","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","rect","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","nodeValue","regExp","attrRegex","allowedAttribute","NAME$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","animation","template","title","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","area","br","col","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","small","span","sub","sup","strong","u","ul","HOVER_STATE_SHOW","HOVER_STATE_OUT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$4","TRIGGER_HOVER","TRIGGER_FOCUS","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","Event$1","Popover","_Tooltip","subClass","superClass","__proto__","_getContent","CLASS_NAME_FADE$3","NAME$8","DATA_KEY$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API$2","CLASS_NAME_ACTIVE$2","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","$link","scrollSpys","$spy","NAME$9","DATA_KEY$9","EVENT_KEY$9","JQUERY_NO_CONFLICT$9","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK_DATA_API$6","CLASS_NAME_ACTIVE$3","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$6","SELECTOR_ACTIVE$2","SELECTOR_ACTIVE_UL","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","NAME$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLICK_DISMISS$1","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","CLASS_NAME_HIDE","CLASS_NAME_SHOW$7","CLASS_NAME_SHOWING","DefaultType$7","autohide","Default$7","Toast","_clearTimeout","_close","Scrollspy","t","f","z","utcOffset","year","month","M","y","w","Q","weekdays","months","pl","date","D","locale","$L","utc","$u","$d","NaN","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","day","hour","minute","second","millisecond","unix","valueOf","toDate","$locale","weekStart","$set","min","daysInMonth","subtract","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","getTimezoneOffset","toUTCString","isDayjs","en","Ls","randomPhysics","angle","startVelocity","radAngle","PI","radSpread","x","wobble","wobbleSpeed","velocity","angle2D","angle3D","tiltAngle","tiltAngleSpeed","_Object$assign","stagger","backwardPatch","elementCount","perspective","decay","dragFriction","fettis","willChange","createElements","physics","requestAnimationFrame","time","elapsed","progress","fetti","cos","sin","_fetti$physics","transform","updateFetti","maxWidth","maxHeight","showArrows","wrapping","alwaysShowClose","loadingMessage","leftArrow","rightArrow","strings","fail","doc","onShow","onShown","onHide","onHidden","onNavigate","onContentLoaded","_$modalArrows","_galleryIndex","_galleryName","_padding","_border","_titleIsShown","_footerIsShown","_wantedWidth","_wantedHeight","_touchstartX","_touchendX","_modalId","_$element","jQuery","_isBootstrap3","modal","_$modal","_$modalDialog","_$modalContent","_$modalBody","_$modalHeader","_$modalFooter","_$lightboxContainer","_$lightboxBodyOne","_$lightboxBodyTwo","_calculateBorders","_calculatePadding","_$galleryItems","_navigationalBinder","navigateLeft","navigateRight","updateNavigation","_toggleLoading","_handle","_resize","changedTouches","screenX","_swipeGesure","navigateTo","_isImage","_getYoutubeId","_getVimeoId","_getInstagramId","_containerToUse","_updateTitleAndFooter","_detectRemoteType","_error","_preloadImage","_preloadImageByIndex","_showYoutubeVideo","_showVimeoVideo","_showInstagramVideo","_showHtml5Video","_loadRemoteContent","_totalCssByAttribute","_showVideoIframe","_isExternal","Image","outerHeight","k","_handleUpdate","tester","validate","email","part","vertxNext","customSchedulerFn","asap","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","observer","onFulfillment","onRejection","PROMISE_ID","makePromise","_state","invokeCallback","_result","resolve$1","nextTick","observe","characterData","port1","onmessage","port2","postMessage","vertx","require","runOnLoop","runOnContext","attemptVertx","substring","PENDING","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","Enumerator","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","resolver","needsResolver","initializePromise","needsNew","finally","entries","race","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","P","promiseToString","cast","hasOwn","ctx","background","backgroundClass","image","imageAnimation","imageAutoResize","imageResizeFactor","imageColor","imageClass","imageOrder","fontawesome","fontawesomeAnimation","fontawesomeAutoResize","fontawesomeResizeFactor","fontawesomeColor","fontawesomeOrder","custom","customAnimation","customAutoResize","customResizeFactor","customOrder","textAnimation","textAutoResize","textResizeFactor","textColor","textClass","textOrder","progressAutoResize","progressResizeFactor","progressColor","progressClass","progressOrder","progressFixedPosition","progressSpeed","progressMin","progressMax","maxSize","minSize","fade","resizeInterval","overlay","overflow","flex","element_svg","progress_fixed","progress_wrapper","progress_bar","settings","wholePage","resizeIntervalId","animations","progressPosition","class","fill","stroke","ajax","dataType","bar","fixed","speed","units","fadeTo","order","loadingoverlay_autoresize","loadingoverlay_resizefactor","LoadingOverlaySetup","LoadingOverlay","win","draining","currentQueue","scheduleDrain","queueIndex","scheduled","cleanUpNextTick","run","install","Item","task","setImmediate","Mutation","queueMicrotask","scriptEl","ctor","superCtor","super_","TempCtor","noGlobal","getProto","flat","fnToString","ObjectFunctionString","preservedScriptAttributes","nonce","noModule","DOMEval","toType","isArrayLike","pushStack","elems","ret","prevObject","even","_elem","odd","copy","copyIsArray","isReady","proto","Ctor","globalEval","results","invert","callbackExpect","guid","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","groups","newSelector","newContext","testContext","scope","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","specified","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","unmatched","lang","elemLang","hasFocus","tabIndex","selectedIndex","_matchIndexes","radio","checkbox","file","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","sibling","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","newDefer","tuple","returned","notify","onProgress","maxDepth","depth","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","string","acceptData","owner","Data","uid","dataPriv","dataUser","rbrace","rmultiDash","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","option","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","ignored","attached","htmlPrefilter","rkeyEvent","rmouseEvent","rtypenamespace","expectSync","safeActiveElement","leverageNative","notAsync","saved","isTrigger","handleObjIn","eventHandle","origType","elemData","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","noBubble","beforeunload","isSimulated","cancelable","eventPhase","pageX","pageY","view","charCode","clientY","offsetX","offsetY","pointerId","screenY","targetTouches","toElement","pointerenter","pointerleave","orig","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","after","replaceChild","prependTo","replaceAll","original","insert","rnumnonpx","getStyles","opener","swap","old","rboxStyle","curCSS","computed","minWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","setPositiveNumber","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","scrollboxSizeBuggy","border","suffix","expanded","propHooks","percent","eased","pos","step","fx","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","prefilter","speeds","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","propFix","classes","curValue","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","accepts","json","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","requestHeadersNames","strAbort","getResponseHeader","overrideMimeType","mimeType","finalText","crossDomain","hasContent","ifModified","beforeSend","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","firstElementChild","htmlIsFunction","visible","xhr","xhrSuccessStatus","xhrSupported","errorCallback","xhrFields","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","Height","Width","defaultExtra","funcName","fnOver","fnOut","holdReady","hold","_jQuery","_$","lazySizes","lazysizes","lazySizesConfig","running","waiting","firstFns","secondFns","rafBatch","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","requestIdleCallback","regPicture","loadEvents","regClassCache","ele","reg","addRemoveLoadEvents","triggerEvent","noBubbles","noCancelable","updatePolyfill","full","picturefill","pf","reevaluate","getCSS","getWidth","_lazysizesWidth","rAF","_lsFlush","runFns","rAFIt","timestamp","later","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","srcsetAttr","sizesAttr","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazysizesConfig","autosizesElems","sizeElement","getSizeElement","debouncedUpdateElementsSizes","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isNestedVisible","checkElements","throttledCheckElements","switchLoadingClass","rafedSwitchLoadingClass","rafSwitchLoadingClass","changeIframeSrc","handleSources","lazyUnveil","unveilElement","loader","elemExpand","outerRect","lastTime","gDelay","rICTimeout","idleCallback","isPriority","throttle","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_defEx","_lazyRace","preloadAfterLoad","_lazyCache","contentWindow","sourceSrcset","isAuto","sizes","isImg","srcset","isPicture","firesLoad","isLoaded","naturalWidth","afterScroll","childList","subtree","checkElems","unveil","autoSizer","updateElem","cfg","uP","aC","rC","hC","gW","keysShim","isArgs","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isArguments","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","shim","keysWorksWithArguments","callee","isBrowser","timeoutDuration","longerTimeoutBrowsers","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","setStart","setEnd","commonAncestorContainer","element1root","getScroll","upperSide","scrollingElement","getBordersSize","axis","sideA","sideB","getSize","getWindowSizes","createClass","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","_ref","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","findIndex","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","Defaults","basePlacement","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","toValue","index2","parseOffset","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","classCallCheck","Utils","PopperUtils","qs","sep","regexp","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","res","decode","faCcAmex","iconName","icon","faCcDiscover","faCcMastercard","faCcPaypal","faCcVisa","faFacebookF","faFedex","faInstagram","faTwitter","faUps","faUsps","faCartShopping","faShoppingCart","faCircleQuestion","faQuestionCircle","faClockRotateLeft","faHistory","faRabbitRunning","faRabbitFast","faTags","faTruckFast","faShippingFast","faArrowsRotate","faRefresh","faSync","faBars","faNavicon","faCircleInfo","faInfoCircle","faClock","faClockFour","faClone","faCrown","faEnvelope","faEye","faEyeSlash","faFire","faMagnifyingGlass","faSearch","faMoneyBillWave","faPenToSquare","faEdit","faSliders","faSlidersH","faSquareCheck","faCheckSquare","faStar","faTrashCan","faTrashAlt","faTriangleExclamation","faExclamationTriangle","faWarning","faUser","faPrint","faCommentExclamation","faThumbsUp","faCircleXmark","faTimesCircle","faXmarkCircle","faBowlingBall","faAngleLeft","faCheck","faCirclePlus","faPlusCircle","faShoePrints","faArrowTurnDown","faLevelDown","faSpinner","faRotate","faSyncAlt","faChevronRight","faChevronLeft","faAngleUp","faXmark","faClose","faMultiply","faRemove","faTimes","faCircleUser","faUserCircle","faArrowUp","faSuitcaseRolling","faStarHalf","faArrowDown","faMessageDots","faCommentAltDots","faMessaging","faThumbsDown","faAngleDown","faHouse","faHome","faHomeAlt","faHomeLgAlt","faDownload","faCalculator","faRightLong","faLongArrowAltRight","faCoin","faCaretDown","faLeftLong","faLongArrowAltLeft","faTruck","faTag","faFilePdf","faArrowLeft","faPhone","faMobileScreenButton","faMobileAlt","faBadgeCheck","faCircle","faLockKeyhole","faLockAlt","faHeart","faArrowRight","faStarHalfStroke","faStarHalfAlt","faBoxOpen","faCertificate","faStocking","faCircleCheck","faCheckCircle","faGift","faAngleRight","faCartPlus","faCloudShowersHeavy","faComments","faCaretRight","faPencil","faPencilAlt","faMessage","faCommentAlt","faConfetti","faCrownLight","faCrownRegular","faCrownSolid","byPrefixAndName","addIcons","icons","alias","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","_typeof","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","arr2","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","performance","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","PREFIX_TO_STYLE","STYLE_TO_PREFIX","solid","regular","light","thin","duotone","brands","kit","PREFIX_TO_LONG_STYLE","fab","fad","fak","fal","far","fas","fat","fass","fasr","fasl","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","normal","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","Set","RESERVED_CLASSES","FontAwesomeConfig","getAttrConfig","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_onChangeCb","meaninglessTransform","rotate","flipX","flipY","idPool","nextUniqueId","classArray","htmlEscape","joinStyles","acc","styleName","transformIsMeaningful","baseStyles","dcp","drc","fp","rc","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","headChildren","beforeChild","insertCss","InjectCSS","mixout","beforeDOMElementCreation","beforeI2svg","shims","functions","loaded","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","joinAttributes","iconFromMapping","mapping","subject","initialValue","thisContext","bindInternal4","toHex","unicode","decoded","output","ucs2decode","normalizeIcons","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","lookup","reducer","aliases","hasRegular","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","emptyCanonicalIcon","rest","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","includes","canonical","getIconName","aliasIconName","Library","_classCallCheck","definitions","additions","_pullDefinitions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","accumulator","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","library","i2svg","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","makeInlineSvgAbstract","_params$icons","main","mask","symbol","maskId","titleId","_params$watchable","watchable","isUploadedIcon","attrClass","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","styles$1","asFoundIcon","vectorData","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","preamble","perf","begin","noop$2","isWatched","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","mutators","mutation","_abstract","comment","outerHTML","nodeAsComment","nest","_abstract2","forSvg","splitClasses","toSvg","toNode","newInnerHTML","performOperationSync","perform","mutations","callbackFunction","frame","mutator","disableObservation","enableObservation","mo","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","parseMeta","styleParser","_classParser","ligature","existingPrefix","existingIconName","innerText","TEXT_NODE","classParser","extraClasses","extraAttributes","attributesParser","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","htmlClassList","hclAdd","hclRemove","prefixesDomQuery","candidates","resolvedMutations","onNode","render","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","_ref3","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","makeLayersCounterAbstract","LayersText","generateLayersText","computedFontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","_content","_hexValueFromContent","cleaned","codePoint","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","processable","operations","_unwatched","parseTransformString","transformString","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","mixoutsTo","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","plugin","tk","sk","library$1","dom$1"],"sourceRoot":""}