{"version":3,"file":"/js/app.js","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js","webpack:///./resources/js/app.js","webpack:///./resources/js/bootstrap.js","webpack:///./node_modules/counterup2/dist/index.js","webpack:///./node_modules/countup.js/dist/countUp.min.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/isotope-layout/js/isotope.js","webpack:///./node_modules/isotope-layout/js/item.js","webpack:///./node_modules/isotope-layout/js/layout-mode.js","webpack:///./node_modules/isotope-layout/js/layout-modes/fit-rows.js","webpack:///./node_modules/isotope-layout/js/layout-modes/masonry.js","webpack:///./node_modules/isotope-layout/js/layout-modes/vertical.js","webpack:///./node_modules/jquery-bridget/jquery-bridget.js","webpack:///./node_modules/jquery-validation/dist/jquery.validate.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/masonry-layout/masonry.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./node_modules/outlayer/item.js","webpack:///./node_modules/outlayer/outlayer.js","webpack:///./node_modules/responsive-tabs/js/jquery.responsiveTabs.js","webpack:///./node_modules/slick-carousel/slick/slick.js","webpack:///./node_modules/waypoints/lib/noframework.waypoints.min.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// ==================================================\n// fancyBox v3.5.7\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2019 fancyApps\n//\n// ==================================================\n(function (window, document, $, undefined) {\r\n \"use strict\";\r\n\r\n window.console = window.console || {\r\n info: function (stuff) {}\r\n };\r\n\r\n // If there's no jQuery, fancyBox can't work\r\n // =========================================\r\n\r\n if (!$) {\r\n return;\r\n }\r\n\r\n // Check if fancyBox is already initialized\r\n // ========================================\r\n\r\n if ($.fn.fancybox) {\r\n console.info(\"fancyBox already initialized\");\r\n\r\n return;\r\n }\r\n\r\n // Private default settings\r\n // ========================\r\n\r\n var defaults = {\r\n // Close existing modals\r\n // Set this to false if you do not need to stack multiple instances\r\n closeExisting: false,\r\n\r\n // Enable infinite gallery navigation\r\n loop: false,\r\n\r\n // Horizontal space between slides\r\n gutter: 50,\r\n\r\n // Enable keyboard navigation\r\n keyboard: true,\r\n\r\n // Should allow caption to overlap the content\r\n preventCaptionOverlap: true,\r\n\r\n // Should display navigation arrows at the screen edges\r\n arrows: true,\r\n\r\n // Should display counter at the top left corner\r\n infobar: true,\r\n\r\n // Should display close button (using `btnTpl.smallBtn` template) over the content\r\n // Can be true, false, \"auto\"\r\n // If \"auto\" - will be automatically enabled for \"html\", \"inline\" or \"ajax\" items\r\n smallBtn: \"auto\",\r\n\r\n // Should display toolbar (buttons at the top)\r\n // Can be true, false, \"auto\"\r\n // If \"auto\" - will be automatically hidden if \"smallBtn\" is enabled\r\n toolbar: \"auto\",\r\n\r\n // What buttons should appear in the top right corner.\r\n // Buttons will be created using templates from `btnTpl` option\r\n // and they will be placed into toolbar (class=\"fancybox-toolbar\"` element)\r\n buttons: [\r\n \"zoom\",\r\n //\"share\",\r\n \"slideShow\",\r\n //\"fullScreen\",\r\n //\"download\",\r\n \"thumbs\",\r\n \"close\"\r\n ],\r\n\r\n // Detect \"idle\" time in seconds\r\n idleTime: 3,\r\n\r\n // Disable right-click and use simple image protection for images\r\n protect: false,\r\n\r\n // Shortcut to make content \"modal\" - disable keyboard navigtion, hide buttons, etc\r\n modal: false,\r\n\r\n image: {\r\n // Wait for images to load before displaying\r\n // true - wait for image to load and then display;\r\n // false - display thumbnail and load the full-sized image over top,\r\n // requires predefined image dimensions (`data-width` and `data-height` attributes)\r\n preload: false\r\n },\r\n\r\n ajax: {\r\n // Object containing settings for ajax request\r\n settings: {\r\n // This helps to indicate that request comes from the modal\r\n // Feel free to change naming\r\n data: {\r\n fancybox: true\r\n }\r\n }\r\n },\r\n\r\n iframe: {\r\n // Iframe template\r\n tpl: '',\r\n\r\n // Preload iframe before displaying it\r\n // This allows to calculate iframe content width and height\r\n // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n preload: true,\r\n\r\n // Custom CSS styling for iframe wrapping element\r\n // You can use this to set custom iframe dimensions\r\n css: {},\r\n\r\n // Iframe tag attributes\r\n attr: {\r\n scrolling: \"auto\"\r\n }\r\n },\r\n\r\n // For HTML5 video only\r\n video: {\r\n tpl: '\",\r\n format: \"\", // custom video format\r\n autoStart: true\r\n },\r\n\r\n // Default content type if cannot be detected automatically\r\n defaultType: \"image\",\r\n\r\n // Open/close animation type\r\n // Possible values:\r\n // false - disable\r\n // \"zoom\" - zoom images from/to thumbnail\r\n // \"fade\"\r\n // \"zoom-in-out\"\r\n //\r\n animationEffect: \"zoom\",\r\n\r\n // Duration in ms for open/close animation\r\n animationDuration: 366,\r\n\r\n // Should image change opacity while zooming\r\n // If opacity is \"auto\", then opacity will be changed if image and thumbnail have different aspect ratios\r\n zoomOpacity: \"auto\",\r\n\r\n // Transition effect between slides\r\n //\r\n // Possible values:\r\n // false - disable\r\n // \"fade'\r\n // \"slide'\r\n // \"circular'\r\n // \"tube'\r\n // \"zoom-in-out'\r\n // \"rotate'\r\n //\r\n transitionEffect: \"fade\",\r\n\r\n // Duration in ms for transition animation\r\n transitionDuration: 366,\r\n\r\n // Custom CSS class for slide element\r\n slideClass: \"\",\r\n\r\n // Custom CSS class for layout\r\n baseClass: \"\",\r\n\r\n // Base template for layout\r\n baseTpl: '
' +\r\n '
' +\r\n '
' +\r\n '
 / 
' +\r\n '
{{buttons}}
' +\r\n '
{{arrows}}
' +\r\n '
' +\r\n '
' +\r\n \"
\" +\r\n \"
\",\r\n\r\n // Loading indicator template\r\n spinnerTpl: '
',\r\n\r\n // Error message template\r\n errorTpl: '

{{ERROR}}

',\r\n\r\n btnTpl: {\r\n download: '' +\r\n '' +\r\n \"\",\r\n\r\n zoom: '\",\r\n\r\n close: '\",\r\n\r\n // Arrows\r\n arrowLeft: '\",\r\n\r\n arrowRight: '\",\r\n\r\n // This small close button will be appended to your html/inline/ajax content by default,\r\n // if \"smallBtn\" option is not set to false\r\n smallBtn: '\"\r\n },\r\n\r\n // Container is injected into this element\r\n parentEl: \"body\",\r\n\r\n // Hide browser vertical scrollbars; use at your own risk\r\n hideScrollbar: true,\r\n\r\n // Focus handling\r\n // ==============\r\n\r\n // Try to focus on the first focusable element after opening\r\n autoFocus: true,\r\n\r\n // Put focus back to active element after closing\r\n backFocus: true,\r\n\r\n // Do not let user to focus on element outside modal content\r\n trapFocus: true,\r\n\r\n // Module specific options\r\n // =======================\r\n\r\n fullScreen: {\r\n autoStart: false\r\n },\r\n\r\n // Set `touch: false` to disable panning/swiping\r\n touch: {\r\n vertical: true, // Allow to drag content vertically\r\n momentum: true // Continue movement after releasing mouse/touch when panning\r\n },\r\n\r\n // Hash value when initializing manually,\r\n // set `false` to disable hash change\r\n hash: null,\r\n\r\n // Customize or add new media types\r\n // Example:\r\n /*\r\n media : {\r\n youtube : {\r\n params : {\r\n autoplay : 0\r\n }\r\n }\r\n }\r\n */\r\n media: {},\r\n\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000\r\n },\r\n\r\n thumbs: {\r\n autoStart: false, // Display thumbnails on opening\r\n hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n parentEl: \".fancybox-container\", // Container is injected into this element\r\n axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n },\r\n\r\n // Use mousewheel to navigate gallery\r\n // If 'auto' - enabled for images only\r\n wheel: \"auto\",\r\n\r\n // Callbacks\r\n //==========\r\n\r\n // See Documentation/API/Events for more information\r\n // Example:\r\n /*\r\n afterShow: function( instance, current ) {\r\n console.info( 'Clicked element:' );\r\n console.info( current.opts.$orig );\r\n }\r\n */\r\n\r\n onInit: $.noop, // When instance has been initialized\r\n\r\n beforeLoad: $.noop, // Before the content of a slide is being loaded\r\n afterLoad: $.noop, // When the content of a slide is done loading\r\n\r\n beforeShow: $.noop, // Before open animation starts\r\n afterShow: $.noop, // When content is done loading and animating\r\n\r\n beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close.\r\n afterClose: $.noop, // After instance has been closed\r\n\r\n onActivate: $.noop, // When instance is brought to front\r\n onDeactivate: $.noop, // When other instance has been activated\r\n\r\n // Interaction\r\n // ===========\r\n\r\n // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,\r\n // each option can be string or method that returns value.\r\n //\r\n // Possible values:\r\n // \"close\" - close instance\r\n // \"next\" - move to next gallery item\r\n // \"nextOrClose\" - move to next gallery item or close if gallery has only one item\r\n // \"toggleControls\" - show/hide controls\r\n // \"zoom\" - zoom image (if loaded)\r\n // false - do nothing\r\n\r\n // Clicked on the content\r\n clickContent: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n },\r\n\r\n // Clicked on the slide\r\n clickSlide: \"close\",\r\n\r\n // Clicked on the background (backdrop) element;\r\n // if you have not changed the layout, then most likely you need to use `clickSlide` option\r\n clickOutside: \"close\",\r\n\r\n // Same as previous two, but for double click\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false,\r\n\r\n // Custom options when mobile device is detected\r\n // =============================================\r\n\r\n mobile: {\r\n preventCaptionOverlap: false,\r\n idleTime: false,\r\n clickContent: function (current, event) {\r\n return current.type === \"image\" ? \"toggleControls\" : false;\r\n },\r\n clickSlide: function (current, event) {\r\n return current.type === \"image\" ? \"toggleControls\" : \"close\";\r\n },\r\n dblclickContent: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n },\r\n dblclickSlide: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n }\r\n },\r\n\r\n // Internationalization\r\n // ====================\r\n\r\n lang: \"en\",\r\n i18n: {\r\n en: {\r\n CLOSE: \"Close\",\r\n NEXT: \"Next\",\r\n PREV: \"Previous\",\r\n ERROR: \"The requested content cannot be loaded.
Please try again later.\",\r\n PLAY_START: \"Start slideshow\",\r\n PLAY_STOP: \"Pause slideshow\",\r\n FULL_SCREEN: \"Full screen\",\r\n THUMBS: \"Thumbnails\",\r\n DOWNLOAD: \"Download\",\r\n SHARE: \"Share\",\r\n ZOOM: \"Zoom\"\r\n },\r\n de: {\r\n CLOSE: \"Schließen\",\r\n NEXT: \"Weiter\",\r\n PREV: \"Zurück\",\r\n ERROR: \"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.\",\r\n PLAY_START: \"Diaschau starten\",\r\n PLAY_STOP: \"Diaschau beenden\",\r\n FULL_SCREEN: \"Vollbild\",\r\n THUMBS: \"Vorschaubilder\",\r\n DOWNLOAD: \"Herunterladen\",\r\n SHARE: \"Teilen\",\r\n ZOOM: \"Vergrößern\"\r\n }\r\n }\r\n };\r\n\r\n // Few useful variables and methods\r\n // ================================\r\n\r\n var $W = $(window);\r\n var $D = $(document);\r\n\r\n var called = 0;\r\n\r\n // Check if an object is a jQuery object and not a native JavaScript object\r\n // ========================================================================\r\n var isQuery = function (obj) {\r\n return obj && obj.hasOwnProperty && obj instanceof $;\r\n };\r\n\r\n // Handle multiple browsers for \"requestAnimationFrame\" and \"cancelAnimationFrame\"\r\n // ===============================================================================\r\n var requestAFrame = (function () {\r\n return (\r\n window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n }\r\n );\r\n })();\r\n\r\n var cancelAFrame = (function () {\r\n return (\r\n window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n }\r\n );\r\n })();\r\n\r\n // Detect the supported transition-end event property name\r\n // =======================================================\r\n var transitionEnd = (function () {\r\n var el = document.createElement(\"fakeelement\"),\r\n t;\r\n\r\n var transitions = {\r\n transition: \"transitionend\",\r\n OTransition: \"oTransitionEnd\",\r\n MozTransition: \"transitionend\",\r\n WebkitTransition: \"webkitTransitionEnd\"\r\n };\r\n\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n\r\n return \"transitionend\";\r\n })();\r\n\r\n // Force redraw on an element.\r\n // This helps in cases where the browser doesn't redraw an updated element properly\r\n // ================================================================================\r\n var forceRedraw = function ($el) {\r\n return $el && $el.length && $el[0].offsetHeight;\r\n };\r\n\r\n // Exclude array (`buttons`) options from deep merging\r\n // ===================================================\r\n var mergeOpts = function (opts1, opts2) {\r\n var rez = $.extend(true, {}, opts1, opts2);\r\n\r\n $.each(opts2, function (key, value) {\r\n if ($.isArray(value)) {\r\n rez[key] = value;\r\n }\r\n });\r\n\r\n return rez;\r\n };\r\n\r\n // How much of an element is visible in viewport\r\n // =============================================\r\n\r\n var inViewport = function (elem) {\r\n var elemCenter, rez;\r\n\r\n if (!elem || elem.ownerDocument !== document) {\r\n return false;\r\n }\r\n\r\n $(\".fancybox-container\").css(\"pointer-events\", \"none\");\r\n\r\n elemCenter = {\r\n x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\r\n y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\r\n };\r\n\r\n rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem;\r\n\r\n $(\".fancybox-container\").css(\"pointer-events\", \"\");\r\n\r\n return rez;\r\n };\r\n\r\n // Class definition\r\n // ================\r\n\r\n var FancyBox = function (content, opts, index) {\r\n var self = this;\r\n\r\n self.opts = mergeOpts({\r\n index: index\r\n }, $.fancybox.defaults);\r\n\r\n if ($.isPlainObject(opts)) {\r\n self.opts = mergeOpts(self.opts, opts);\r\n }\r\n\r\n if ($.fancybox.isMobile) {\r\n self.opts = mergeOpts(self.opts, self.opts.mobile);\r\n }\r\n\r\n self.id = self.opts.id || ++called;\r\n\r\n self.currIndex = parseInt(self.opts.index, 10) || 0;\r\n self.prevIndex = null;\r\n\r\n self.prevPos = null;\r\n self.currPos = 0;\r\n\r\n self.firstRun = true;\r\n\r\n // All group items\r\n self.group = [];\r\n\r\n // Existing slides (for current, next and previous gallery items)\r\n self.slides = {};\r\n\r\n // Create group elements\r\n self.addContent(content);\r\n\r\n if (!self.group.length) {\r\n return;\r\n }\r\n\r\n self.init();\r\n };\r\n\r\n $.extend(FancyBox.prototype, {\r\n // Create DOM structure\r\n // ====================\r\n\r\n init: function () {\r\n var self = this,\r\n firstItem = self.group[self.currIndex],\r\n firstItemOpts = firstItem.opts,\r\n $container,\r\n buttonStr;\r\n\r\n if (firstItemOpts.closeExisting) {\r\n $.fancybox.close(true);\r\n }\r\n\r\n // Hide scrollbars\r\n // ===============\r\n\r\n $(\"body\").addClass(\"fancybox-active\");\r\n\r\n if (\r\n !$.fancybox.getInstance() &&\r\n firstItemOpts.hideScrollbar !== false &&\r\n !$.fancybox.isMobile &&\r\n document.body.scrollHeight > window.innerHeight\r\n ) {\r\n $(\"head\").append(\r\n '\"\r\n );\r\n\r\n $(\"body\").addClass(\"compensate-for-scrollbar\");\r\n }\r\n\r\n // Build html markup and set references\r\n // ====================================\r\n\r\n // Build html code for buttons and insert into main template\r\n buttonStr = \"\";\r\n\r\n $.each(firstItemOpts.buttons, function (index, value) {\r\n buttonStr += firstItemOpts.btnTpl[value] || \"\";\r\n });\r\n\r\n // Create markup from base template, it will be initially hidden to\r\n // avoid unnecessary work like painting while initializing is not complete\r\n $container = $(\r\n self.translate(\r\n self,\r\n firstItemOpts.baseTpl\r\n .replace(\"{{buttons}}\", buttonStr)\r\n .replace(\"{{arrows}}\", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)\r\n )\r\n )\r\n .attr(\"id\", \"fancybox-container-\" + self.id)\r\n .addClass(firstItemOpts.baseClass)\r\n .data(\"FancyBox\", self)\r\n .appendTo(firstItemOpts.parentEl);\r\n\r\n // Create object holding references to jQuery wrapped nodes\r\n self.$refs = {\r\n container: $container\r\n };\r\n\r\n [\"bg\", \"inner\", \"infobar\", \"toolbar\", \"stage\", \"caption\", \"navigation\"].forEach(function (item) {\r\n self.$refs[item] = $container.find(\".fancybox-\" + item);\r\n });\r\n\r\n self.trigger(\"onInit\");\r\n\r\n // Enable events, deactive previous instances\r\n self.activate();\r\n\r\n // Build slides, load and reveal content\r\n self.jumpTo(self.currIndex);\r\n },\r\n\r\n // Simple i18n support - replaces object keys found in template\r\n // with corresponding values\r\n // ============================================================\r\n\r\n translate: function (obj, str) {\r\n var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en;\r\n\r\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, function (match, n) {\r\n return arr[n] === undefined ? match : arr[n];\r\n });\r\n },\r\n\r\n // Populate current group with fresh content\r\n // Check if each object has valid type and content\r\n // ===============================================\r\n\r\n addContent: function (content) {\r\n var self = this,\r\n items = $.makeArray(content),\r\n thumbs;\r\n\r\n $.each(items, function (i, item) {\r\n var obj = {},\r\n opts = {},\r\n $item,\r\n type,\r\n found,\r\n src,\r\n srcParts;\r\n\r\n // Step 1 - Make sure we have an object\r\n // ====================================\r\n\r\n if ($.isPlainObject(item)) {\r\n // We probably have manual usage here, something like\r\n // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n obj = item;\r\n opts = item.opts || item;\r\n } else if ($.type(item) === \"object\" && $(item).length) {\r\n // Here we probably have jQuery collection returned by some selector\r\n $item = $(item);\r\n\r\n // Support attributes like `data-options='{\"touch\" : false}'` and `data-touch='false'`\r\n opts = $item.data() || {};\r\n opts = $.extend(true, {}, opts, opts.options);\r\n\r\n // Here we store clicked element\r\n opts.$orig = $item;\r\n\r\n obj.src = self.opts.src || opts.src || $item.attr(\"href\");\r\n\r\n // Assume that simple syntax is used, for example:\r\n // `$.fancybox.open( $(\"#test\"), {} );`\r\n if (!obj.type && !obj.src) {\r\n obj.type = \"inline\";\r\n obj.src = item;\r\n }\r\n } else {\r\n // Assume we have a simple html code, for example:\r\n // $.fancybox.open( '

Hi!

' );\r\n obj = {\r\n type: \"html\",\r\n src: item + \"\"\r\n };\r\n }\r\n\r\n // Each gallery object has full collection of options\r\n obj.opts = $.extend(true, {}, self.opts, opts);\r\n\r\n // Do not merge buttons array\r\n if ($.isArray(opts.buttons)) {\r\n obj.opts.buttons = opts.buttons;\r\n }\r\n\r\n if ($.fancybox.isMobile && obj.opts.mobile) {\r\n obj.opts = mergeOpts(obj.opts, obj.opts.mobile);\r\n }\r\n\r\n // Step 2 - Make sure we have content type, if not - try to guess\r\n // ==============================================================\r\n\r\n type = obj.type || obj.opts.type;\r\n src = obj.src || \"\";\r\n\r\n if (!type && src) {\r\n if ((found = src.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))) {\r\n type = \"video\";\r\n\r\n if (!obj.opts.video.format) {\r\n obj.opts.video.format = \"video/\" + (found[1] === \"ogv\" ? \"ogg\" : found[1]);\r\n }\r\n } else if (src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)) {\r\n type = \"image\";\r\n } else if (src.match(/\\.(pdf)((\\?|#).*)?$/i)) {\r\n type = \"iframe\";\r\n obj = $.extend(true, obj, {\r\n contentType: \"pdf\",\r\n opts: {\r\n iframe: {\r\n preload: false\r\n }\r\n }\r\n });\r\n } else if (src.charAt(0) === \"#\") {\r\n type = \"inline\";\r\n }\r\n }\r\n\r\n if (type) {\r\n obj.type = type;\r\n } else {\r\n self.trigger(\"objectNeedsType\", obj);\r\n }\r\n\r\n if (!obj.contentType) {\r\n obj.contentType = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1 ? \"html\" : obj.type;\r\n }\r\n\r\n // Step 3 - Some adjustments\r\n // =========================\r\n\r\n obj.index = self.group.length;\r\n\r\n if (obj.opts.smallBtn == \"auto\") {\r\n obj.opts.smallBtn = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1;\r\n }\r\n\r\n if (obj.opts.toolbar === \"auto\") {\r\n obj.opts.toolbar = !obj.opts.smallBtn;\r\n }\r\n\r\n // Find thumbnail image, check if exists and if is in the viewport\r\n obj.$thumb = obj.opts.$thumb || null;\r\n\r\n if (obj.opts.$trigger && obj.index === self.opts.index) {\r\n obj.$thumb = obj.opts.$trigger.find(\"img:first\");\r\n\r\n if (obj.$thumb.length) {\r\n obj.opts.$orig = obj.opts.$trigger;\r\n }\r\n }\r\n\r\n if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) {\r\n obj.$thumb = obj.opts.$orig.find(\"img:first\");\r\n }\r\n\r\n if (obj.$thumb && !obj.$thumb.length) {\r\n obj.$thumb = null;\r\n }\r\n\r\n obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null);\r\n\r\n // \"caption\" is a \"special\" option, it can be used to customize caption per gallery item\r\n if ($.type(obj.opts.caption) === \"function\") {\r\n obj.opts.caption = obj.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n if ($.type(self.opts.caption) === \"function\") {\r\n obj.opts.caption = self.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n // Make sure we have caption as a string or jQuery object\r\n if (!(obj.opts.caption instanceof $)) {\r\n obj.opts.caption = obj.opts.caption === undefined ? \"\" : obj.opts.caption + \"\";\r\n }\r\n\r\n // Check if url contains \"filter\" used to filter the content\r\n // Example: \"ajax.html #something\"\r\n if (obj.type === \"ajax\") {\r\n srcParts = src.split(/\\s+/, 2);\r\n\r\n if (srcParts.length > 1) {\r\n obj.src = srcParts.shift();\r\n\r\n obj.opts.filter = srcParts.shift();\r\n }\r\n }\r\n\r\n // Hide all buttons and disable interactivity for modal items\r\n if (obj.opts.modal) {\r\n obj.opts = $.extend(true, obj.opts, {\r\n trapFocus: true,\r\n // Remove buttons\r\n infobar: 0,\r\n toolbar: 0,\r\n\r\n smallBtn: 0,\r\n\r\n // Disable keyboard navigation\r\n keyboard: 0,\r\n\r\n // Disable some modules\r\n slideShow: 0,\r\n fullScreen: 0,\r\n thumbs: 0,\r\n touch: 0,\r\n\r\n // Disable click event handlers\r\n clickContent: false,\r\n clickSlide: false,\r\n clickOutside: false,\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false\r\n });\r\n }\r\n\r\n // Step 4 - Add processed object to group\r\n // ======================================\r\n\r\n self.group.push(obj);\r\n });\r\n\r\n // Update controls if gallery is already opened\r\n if (Object.keys(self.slides).length) {\r\n self.updateControls();\r\n\r\n // Update thumbnails, if needed\r\n thumbs = self.Thumbs;\r\n\r\n if (thumbs && thumbs.isActive) {\r\n thumbs.create();\r\n\r\n thumbs.focus();\r\n }\r\n }\r\n },\r\n\r\n // Attach an event handler functions for:\r\n // - navigation buttons\r\n // - browser scrolling, resizing;\r\n // - focusing\r\n // - keyboard\r\n // - detecting inactivity\r\n // ======================================\r\n\r\n addEvents: function () {\r\n var self = this;\r\n\r\n self.removeEvents();\r\n\r\n // Make navigation elements clickable\r\n // ==================================\r\n\r\n self.$refs.container\r\n .on(\"click.fb-close\", \"[data-fancybox-close]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n })\r\n .on(\"touchstart.fb-prev click.fb-prev\", \"[data-fancybox-prev]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.previous();\r\n })\r\n .on(\"touchstart.fb-next click.fb-next\", \"[data-fancybox-next]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.next();\r\n })\r\n .on(\"click.fb\", \"[data-fancybox-zoom]\", function (e) {\r\n // Click handler for zoom button\r\n self[self.isScaledDown() ? \"scaleToActual\" : \"scaleToFit\"]();\r\n });\r\n\r\n // Handle page scrolling and browser resizing\r\n // ==========================================\r\n\r\n $W.on(\"orientationchange.fb resize.fb\", function (e) {\r\n if (e && e.originalEvent && e.originalEvent.type === \"resize\") {\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n self.update(e);\r\n });\r\n } else {\r\n if (self.current && self.current.type === \"iframe\") {\r\n self.$refs.stage.hide();\r\n }\r\n\r\n setTimeout(\r\n function () {\r\n self.$refs.stage.show();\r\n\r\n self.update(e);\r\n },\r\n $.fancybox.isMobile ? 600 : 250\r\n );\r\n }\r\n });\r\n\r\n $D.on(\"keydown.fb\", function (e) {\r\n var instance = $.fancybox ? $.fancybox.getInstance() : null,\r\n current = instance.current,\r\n keycode = e.keyCode || e.which;\r\n\r\n // Trap keyboard focus inside of the modal\r\n // =======================================\r\n\r\n if (keycode == 9) {\r\n if (current.opts.trapFocus) {\r\n self.focus(e);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Enable keyboard navigation\r\n // ==========================\r\n\r\n if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is(\"input,textarea,video,audio,select\")) {\r\n return;\r\n }\r\n\r\n // Backspace and Esc keys\r\n if (keycode === 8 || keycode === 27) {\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n\r\n return;\r\n }\r\n\r\n // Left arrow and Up arrow\r\n if (keycode === 37 || keycode === 38) {\r\n e.preventDefault();\r\n\r\n self.previous();\r\n\r\n return;\r\n }\r\n\r\n // Righ arrow and Down arrow\r\n if (keycode === 39 || keycode === 40) {\r\n e.preventDefault();\r\n\r\n self.next();\r\n\r\n return;\r\n }\r\n\r\n self.trigger(\"afterKeydown\", e, keycode);\r\n });\r\n\r\n // Hide controls after some inactivity period\r\n if (self.group[self.currIndex].opts.idleTime) {\r\n self.idleSecondsCounter = 0;\r\n\r\n $D.on(\r\n \"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",\r\n function (e) {\r\n self.idleSecondsCounter = 0;\r\n\r\n if (self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n self.isIdle = false;\r\n }\r\n );\r\n\r\n self.idleInterval = window.setInterval(function () {\r\n self.idleSecondsCounter++;\r\n\r\n if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) {\r\n self.isIdle = true;\r\n self.idleSecondsCounter = 0;\r\n\r\n self.hideControls();\r\n }\r\n }, 1000);\r\n }\r\n },\r\n\r\n // Remove events added by the core\r\n // ===============================\r\n\r\n removeEvents: function () {\r\n var self = this;\r\n\r\n $W.off(\"orientationchange.fb resize.fb\");\r\n $D.off(\"keydown.fb .fb-idle\");\r\n\r\n this.$refs.container.off(\".fb-close .fb-prev .fb-next\");\r\n\r\n if (self.idleInterval) {\r\n window.clearInterval(self.idleInterval);\r\n\r\n self.idleInterval = null;\r\n }\r\n },\r\n\r\n // Change to previous gallery item\r\n // ===============================\r\n\r\n previous: function (duration) {\r\n return this.jumpTo(this.currPos - 1, duration);\r\n },\r\n\r\n // Change to next gallery item\r\n // ===========================\r\n\r\n next: function (duration) {\r\n return this.jumpTo(this.currPos + 1, duration);\r\n },\r\n\r\n // Switch to selected gallery item\r\n // ===============================\r\n\r\n jumpTo: function (pos, duration) {\r\n var self = this,\r\n groupLen = self.group.length,\r\n firstRun,\r\n isMoved,\r\n loop,\r\n current,\r\n previous,\r\n slidePos,\r\n stagePos,\r\n prop,\r\n diff;\r\n\r\n if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) {\r\n return;\r\n }\r\n\r\n // Should loop?\r\n pos = parseInt(pos, 10);\r\n loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n if (!loop && (pos < 0 || pos >= groupLen)) {\r\n return false;\r\n }\r\n\r\n // Check if opening for the first time; this helps to speed things up\r\n firstRun = self.firstRun = !Object.keys(self.slides).length;\r\n\r\n // Create slides\r\n previous = self.current;\r\n\r\n self.prevIndex = self.currIndex;\r\n self.prevPos = self.currPos;\r\n\r\n current = self.createSlide(pos);\r\n\r\n if (groupLen > 1) {\r\n if (loop || current.index < groupLen - 1) {\r\n self.createSlide(pos + 1);\r\n }\r\n\r\n if (loop || current.index > 0) {\r\n self.createSlide(pos - 1);\r\n }\r\n }\r\n\r\n self.current = current;\r\n self.currIndex = current.index;\r\n self.currPos = current.pos;\r\n\r\n self.trigger(\"beforeShow\", firstRun);\r\n\r\n self.updateControls();\r\n\r\n // Validate duration length\r\n current.forcedDuration = undefined;\r\n\r\n if ($.isNumeric(duration)) {\r\n current.forcedDuration = duration;\r\n } else {\r\n duration = current.opts[firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n }\r\n\r\n duration = parseInt(duration, 10);\r\n\r\n // Check if user has swiped the slides or if still animating\r\n isMoved = self.isMoved(current);\r\n\r\n // Make sure current slide is visible\r\n current.$slide.addClass(\"fancybox-slide--current\");\r\n\r\n // Fresh start - reveal container, current slide and start loading content\r\n if (firstRun) {\r\n if (current.opts.animationEffect && duration) {\r\n self.$refs.container.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n self.$refs.container.addClass(\"fancybox-is-open\").trigger(\"focus\");\r\n\r\n // Attempt to load content into slide\r\n // This will later call `afterLoad` -> `revealContent`\r\n self.loadSlide(current);\r\n\r\n self.preload(\"image\");\r\n\r\n return;\r\n }\r\n\r\n // Get actual slide/stage positions (before cleaning up)\r\n slidePos = $.fancybox.getTranslate(previous.$slide);\r\n stagePos = $.fancybox.getTranslate(self.$refs.stage);\r\n\r\n // Clean up all slides\r\n $.each(self.slides, function (index, slide) {\r\n $.fancybox.stop(slide.$slide, true);\r\n });\r\n\r\n if (previous.pos !== current.pos) {\r\n previous.isComplete = false;\r\n }\r\n\r\n previous.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current\");\r\n\r\n // If slides are out of place, then animate them to correct position\r\n if (isMoved) {\r\n // Calculate horizontal swipe distance\r\n diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter);\r\n\r\n $.each(self.slides, function (index, slide) {\r\n slide.$slide.removeClass(\"fancybox-animated\").removeClass(function (index, className) {\r\n return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n });\r\n\r\n // Make sure that each slide is in equal distance\r\n // This is mostly needed for freshly added slides, because they are not yet positioned\r\n var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter;\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: 0,\r\n left: leftPos - stagePos.left + diff\r\n });\r\n\r\n if (slide.pos !== current.pos) {\r\n slide.$slide.addClass(\"fancybox-slide--\" + (slide.pos > current.pos ? \"next\" : \"previous\"));\r\n }\r\n\r\n // Redraw to make sure that transition will start\r\n forceRedraw(slide.$slide);\r\n\r\n // Animate the slide\r\n $.fancybox.animate(\r\n slide.$slide, {\r\n top: 0,\r\n left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter\r\n },\r\n duration,\r\n function () {\r\n slide.$slide\r\n .css({\r\n transform: \"\",\r\n opacity: \"\"\r\n })\r\n .removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n }\r\n );\r\n });\r\n } else if (duration && current.opts.transitionEffect) {\r\n // Set transition effect for previously active slide\r\n prop = \"fancybox-animated fancybox-fx-\" + current.opts.transitionEffect;\r\n\r\n previous.$slide.addClass(\"fancybox-slide--\" + (previous.pos > current.pos ? \"next\" : \"previous\"));\r\n\r\n $.fancybox.animate(\r\n previous.$slide,\r\n prop,\r\n duration,\r\n function () {\r\n previous.$slide.removeClass(prop).removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n },\r\n false\r\n );\r\n }\r\n\r\n if (current.isLoaded) {\r\n self.revealContent(current);\r\n } else {\r\n self.loadSlide(current);\r\n }\r\n\r\n self.preload(\"image\");\r\n },\r\n\r\n // Create new \"slide\" element\r\n // These are gallery items that are actually added to DOM\r\n // =======================================================\r\n\r\n createSlide: function (pos) {\r\n var self = this,\r\n $slide,\r\n index;\r\n\r\n index = pos % self.group.length;\r\n index = index < 0 ? self.group.length + index : index;\r\n\r\n if (!self.slides[pos] && self.group[index]) {\r\n $slide = $('
').appendTo(self.$refs.stage);\r\n\r\n self.slides[pos] = $.extend(true, {}, self.group[index], {\r\n pos: pos,\r\n $slide: $slide,\r\n isLoaded: false\r\n });\r\n\r\n self.updateSlide(self.slides[pos]);\r\n }\r\n\r\n return self.slides[pos];\r\n },\r\n\r\n // Scale image to the actual size of the image;\r\n // x and y values should be relative to the slide\r\n // ==============================================\r\n\r\n scaleToActual: function (x, y, duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n canvasWidth = $.fancybox.getTranslate(current.$slide).width,\r\n canvasHeight = $.fancybox.getTranslate(current.$slide).height,\r\n newImgWidth = current.width,\r\n newImgHeight = current.height,\r\n imgPos,\r\n posX,\r\n posY,\r\n scaleX,\r\n scaleY;\r\n\r\n if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n self.isAnimating = true;\r\n\r\n $.fancybox.stop($content);\r\n\r\n x = x === undefined ? canvasWidth * 0.5 : x;\r\n y = y === undefined ? canvasHeight * 0.5 : y;\r\n\r\n imgPos = $.fancybox.getTranslate($content);\r\n\r\n imgPos.top -= $.fancybox.getTranslate(current.$slide).top;\r\n imgPos.left -= $.fancybox.getTranslate(current.$slide).left;\r\n\r\n scaleX = newImgWidth / imgPos.width;\r\n scaleY = newImgHeight / imgPos.height;\r\n\r\n // Get center position for original image\r\n posX = canvasWidth * 0.5 - newImgWidth * 0.5;\r\n posY = canvasHeight * 0.5 - newImgHeight * 0.5;\r\n\r\n // Make sure image does not move away from edges\r\n if (newImgWidth > canvasWidth) {\r\n posX = imgPos.left * scaleX - (x * scaleX - x);\r\n\r\n if (posX > 0) {\r\n posX = 0;\r\n }\r\n\r\n if (posX < canvasWidth - newImgWidth) {\r\n posX = canvasWidth - newImgWidth;\r\n }\r\n }\r\n\r\n if (newImgHeight > canvasHeight) {\r\n posY = imgPos.top * scaleY - (y * scaleY - y);\r\n\r\n if (posY > 0) {\r\n posY = 0;\r\n }\r\n\r\n if (posY < canvasHeight - newImgHeight) {\r\n posY = canvasHeight - newImgHeight;\r\n }\r\n }\r\n\r\n self.updateCursor(newImgWidth, newImgHeight);\r\n\r\n $.fancybox.animate(\r\n $content, {\r\n top: posY,\r\n left: posX,\r\n scaleX: scaleX,\r\n scaleY: scaleY\r\n },\r\n duration || 366,\r\n function () {\r\n self.isAnimating = false;\r\n }\r\n );\r\n\r\n // Stop slideshow\r\n if (self.SlideShow && self.SlideShow.isActive) {\r\n self.SlideShow.stop();\r\n }\r\n },\r\n\r\n // Scale image to fit inside parent element\r\n // ========================================\r\n\r\n scaleToFit: function (duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n end;\r\n\r\n if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n self.isAnimating = true;\r\n\r\n $.fancybox.stop($content);\r\n\r\n end = self.getFitPos(current);\r\n\r\n self.updateCursor(end.width, end.height);\r\n\r\n $.fancybox.animate(\r\n $content, {\r\n top: end.top,\r\n left: end.left,\r\n scaleX: end.width / $content.width(),\r\n scaleY: end.height / $content.height()\r\n },\r\n duration || 366,\r\n function () {\r\n self.isAnimating = false;\r\n }\r\n );\r\n },\r\n\r\n // Calculate image size to fit inside viewport\r\n // ===========================================\r\n\r\n getFitPos: function (slide) {\r\n var self = this,\r\n $content = slide.$content,\r\n $slide = slide.$slide,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n maxWidth,\r\n maxHeight,\r\n minRatio,\r\n aspectRatio,\r\n rez = {};\r\n\r\n if (!slide.isLoaded || !$content || !$content.length) {\r\n return false;\r\n }\r\n\r\n maxWidth = $.fancybox.getTranslate(self.$refs.stage).width;\r\n maxHeight = $.fancybox.getTranslate(self.$refs.stage).height;\r\n\r\n maxWidth -=\r\n parseFloat($slide.css(\"paddingLeft\")) +\r\n parseFloat($slide.css(\"paddingRight\")) +\r\n parseFloat($content.css(\"marginLeft\")) +\r\n parseFloat($content.css(\"marginRight\"));\r\n\r\n maxHeight -=\r\n parseFloat($slide.css(\"paddingTop\")) +\r\n parseFloat($slide.css(\"paddingBottom\")) +\r\n parseFloat($content.css(\"marginTop\")) +\r\n parseFloat($content.css(\"marginBottom\"));\r\n\r\n if (!width || !height) {\r\n width = maxWidth;\r\n height = maxHeight;\r\n }\r\n\r\n minRatio = Math.min(1, maxWidth / width, maxHeight / height);\r\n\r\n width = minRatio * width;\r\n height = minRatio * height;\r\n\r\n // Adjust width/height to precisely fit into container\r\n if (width > maxWidth - 0.5) {\r\n width = maxWidth;\r\n }\r\n\r\n if (height > maxHeight - 0.5) {\r\n height = maxHeight;\r\n }\r\n\r\n if (slide.type === \"image\") {\r\n rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css(\"paddingTop\"));\r\n rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css(\"paddingLeft\"));\r\n } else if (slide.contentType === \"video\") {\r\n // Force aspect ratio for the video\r\n // \"I say the whole world must learn of our peaceful ways… by force!\"\r\n aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9;\r\n\r\n if (height > width / aspectRatio) {\r\n height = width / aspectRatio;\r\n } else if (width > height * aspectRatio) {\r\n width = height * aspectRatio;\r\n }\r\n }\r\n\r\n rez.width = width;\r\n rez.height = height;\r\n\r\n return rez;\r\n },\r\n\r\n // Update content size and position for all slides\r\n // ==============================================\r\n\r\n update: function (e) {\r\n var self = this;\r\n\r\n $.each(self.slides, function (key, slide) {\r\n self.updateSlide(slide, e);\r\n });\r\n },\r\n\r\n // Update slide content position and size\r\n // ======================================\r\n\r\n updateSlide: function (slide, e) {\r\n var self = this,\r\n $content = slide && slide.$content,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n $slide = slide.$slide;\r\n\r\n // First, prevent caption overlap, if needed\r\n self.adjustCaption(slide);\r\n\r\n // Then resize content to fit inside the slide\r\n if ($content && (width || height || slide.contentType === \"video\") && !slide.hasError) {\r\n $.fancybox.stop($content);\r\n\r\n $.fancybox.setTranslate($content, self.getFitPos(slide));\r\n\r\n if (slide.pos === self.currPos) {\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n }\r\n }\r\n\r\n // Then some adjustments\r\n self.adjustLayout(slide);\r\n\r\n if ($slide.length) {\r\n $slide.trigger(\"refresh\");\r\n\r\n if (slide.pos === self.currPos) {\r\n self.$refs.toolbar\r\n .add(self.$refs.navigation.find(\".fancybox-button--arrow_right\"))\r\n .toggleClass(\"compensate-for-scrollbar\", $slide.get(0).scrollHeight > $slide.get(0).clientHeight);\r\n }\r\n }\r\n\r\n self.trigger(\"onUpdate\", slide, e);\r\n },\r\n\r\n // Horizontally center slide\r\n // =========================\r\n\r\n centerSlide: function (duration) {\r\n var self = this,\r\n current = self.current,\r\n $slide = current.$slide;\r\n\r\n if (self.isClosing || !current) {\r\n return;\r\n }\r\n\r\n $slide.siblings().css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n $slide\r\n .parent()\r\n .children()\r\n .removeClass(\"fancybox-slide--previous fancybox-slide--next\");\r\n\r\n $.fancybox.animate(\r\n $slide, {\r\n top: 0,\r\n left: 0,\r\n opacity: 1\r\n },\r\n duration === undefined ? 0 : duration,\r\n function () {\r\n // Clean up\r\n $slide.css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n if (!current.isComplete) {\r\n self.complete();\r\n }\r\n },\r\n false\r\n );\r\n },\r\n\r\n // Check if current slide is moved (swiped)\r\n // ========================================\r\n\r\n isMoved: function (slide) {\r\n var current = slide || this.current,\r\n slidePos,\r\n stagePos;\r\n\r\n if (!current) {\r\n return false;\r\n }\r\n\r\n stagePos = $.fancybox.getTranslate(this.$refs.stage);\r\n slidePos = $.fancybox.getTranslate(current.$slide);\r\n\r\n return (\r\n !current.$slide.hasClass(\"fancybox-animated\") &&\r\n (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5)\r\n );\r\n },\r\n\r\n // Update cursor style depending if content can be zoomed\r\n // ======================================================\r\n\r\n updateCursor: function (nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n $container = self.$refs.container,\r\n canPan,\r\n isZoomable;\r\n\r\n if (!current || self.isClosing || !self.Guestures) {\r\n return;\r\n }\r\n\r\n $container.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan\");\r\n\r\n canPan = self.canPan(nextWidth, nextHeight);\r\n\r\n isZoomable = canPan ? true : self.isZoomable();\r\n\r\n $container.toggleClass(\"fancybox-is-zoomable\", isZoomable);\r\n\r\n $(\"[data-fancybox-zoom]\").prop(\"disabled\", !isZoomable);\r\n\r\n if (canPan) {\r\n $container.addClass(\"fancybox-can-pan\");\r\n } else if (\r\n isZoomable &&\r\n (current.opts.clickContent === \"zoom\" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == \"zoom\"))\r\n ) {\r\n $container.addClass(\"fancybox-can-zoomIn\");\r\n } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== \"video\") {\r\n $container.addClass(\"fancybox-can-swipe\");\r\n }\r\n },\r\n\r\n // Check if current slide is zoomable\r\n // ==================================\r\n\r\n isZoomable: function () {\r\n var self = this,\r\n current = self.current,\r\n fitPos;\r\n\r\n // Assume that slide is zoomable if:\r\n // - image is still loading\r\n // - actual size of the image is smaller than available area\r\n if (current && !self.isClosing && current.type === \"image\" && !current.hasError) {\r\n if (!current.isLoaded) {\r\n return true;\r\n }\r\n\r\n fitPos = self.getFitPos(current);\r\n\r\n if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Check if current image dimensions are smaller than actual\r\n // =========================================================\r\n\r\n isScaledDown: function (nextWidth, nextHeight) {\r\n var self = this,\r\n rez = false,\r\n current = self.current,\r\n $content = current.$content;\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n rez = nextWidth < current.width && nextHeight < current.height;\r\n } else if ($content) {\r\n rez = $.fancybox.getTranslate($content);\r\n rez = rez.width < current.width && rez.height < current.height;\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Check if image dimensions exceed parent element\r\n // ===============================================\r\n\r\n canPan: function (nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n pos = null,\r\n rez = false;\r\n\r\n if (current.type === \"image\" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) {\r\n rez = self.getFitPos(current);\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n pos = {\r\n width: nextWidth,\r\n height: nextHeight\r\n };\r\n } else if (current.isComplete) {\r\n pos = $.fancybox.getTranslate(current.$content);\r\n }\r\n\r\n if (pos && rez) {\r\n rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5;\r\n }\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Load content into the slide\r\n // ===========================\r\n\r\n loadSlide: function (slide) {\r\n var self = this,\r\n type,\r\n $slide,\r\n ajaxLoad;\r\n\r\n if (slide.isLoading || slide.isLoaded) {\r\n return;\r\n }\r\n\r\n slide.isLoading = true;\r\n\r\n if (self.trigger(\"beforeLoad\", slide) === false) {\r\n slide.isLoading = false;\r\n\r\n return false;\r\n }\r\n\r\n type = slide.type;\r\n $slide = slide.$slide;\r\n\r\n $slide\r\n .off(\"refresh\")\r\n .trigger(\"onReset\")\r\n .addClass(slide.opts.slideClass);\r\n\r\n // Create content depending on the type\r\n switch (type) {\r\n case \"image\":\r\n self.setImage(slide);\r\n\r\n break;\r\n\r\n case \"iframe\":\r\n self.setIframe(slide);\r\n\r\n break;\r\n\r\n case \"html\":\r\n self.setContent(slide, slide.src || slide.content);\r\n\r\n break;\r\n\r\n case \"video\":\r\n self.setContent(\r\n slide,\r\n slide.opts.video.tpl\r\n .replace(/\\{\\{src\\}\\}/gi, slide.src)\r\n .replace(\"{{format}}\", slide.opts.videoFormat || slide.opts.video.format || \"\")\r\n .replace(\"{{poster}}\", slide.thumb || \"\")\r\n );\r\n\r\n break;\r\n\r\n case \"inline\":\r\n if ($(slide.src).length) {\r\n self.setContent(slide, $(slide.src));\r\n } else {\r\n self.setError(slide);\r\n }\r\n\r\n break;\r\n\r\n case \"ajax\":\r\n self.showLoading(slide);\r\n\r\n ajaxLoad = $.ajax(\r\n $.extend({}, slide.opts.ajax.settings, {\r\n url: slide.src,\r\n success: function (data, textStatus) {\r\n if (textStatus === \"success\") {\r\n self.setContent(slide, data);\r\n }\r\n },\r\n error: function (jqXHR, textStatus) {\r\n if (jqXHR && textStatus !== \"abort\") {\r\n self.setError(slide);\r\n }\r\n }\r\n })\r\n );\r\n\r\n $slide.one(\"onReset\", function () {\r\n ajaxLoad.abort();\r\n });\r\n\r\n break;\r\n\r\n default:\r\n self.setError(slide);\r\n\r\n break;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // Use thumbnail image, if possible\r\n // ================================\r\n\r\n setImage: function (slide) {\r\n var self = this,\r\n ghost;\r\n\r\n // Check if need to show loading icon\r\n setTimeout(function () {\r\n var $img = slide.$image;\r\n\r\n if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) {\r\n self.showLoading(slide);\r\n }\r\n }, 50);\r\n\r\n //Check if image has srcset\r\n self.checkSrcset(slide);\r\n\r\n // This will be wrapper containing both ghost and actual image\r\n slide.$content = $('
')\r\n .addClass(\"fancybox-is-hidden\")\r\n .appendTo(slide.$slide.addClass(\"fancybox-slide--image\"));\r\n\r\n // If we have a thumbnail, we can display it while actual image is loading\r\n // Users will not stare at black screen and actual image will appear gradually\r\n if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) {\r\n slide.width = slide.opts.width;\r\n slide.height = slide.opts.height;\r\n\r\n ghost = document.createElement(\"img\");\r\n\r\n ghost.onerror = function () {\r\n $(this).remove();\r\n\r\n slide.$ghost = null;\r\n };\r\n\r\n ghost.onload = function () {\r\n self.afterLoad(slide);\r\n };\r\n\r\n slide.$ghost = $(ghost)\r\n .addClass(\"fancybox-image\")\r\n .appendTo(slide.$content)\r\n .attr(\"src\", slide.thumb);\r\n }\r\n\r\n // Start loading actual image\r\n self.setBigImage(slide);\r\n },\r\n\r\n // Check if image has srcset and get the source\r\n // ============================================\r\n checkSrcset: function (slide) {\r\n var srcset = slide.opts.srcset || slide.opts.image.srcset,\r\n found,\r\n temp,\r\n pxRatio,\r\n windowWidth;\r\n\r\n // If we have \"srcset\", then we need to find first matching \"src\" value.\r\n // This is necessary, because when you set an src attribute, the browser will preload the image\r\n // before any javascript or even CSS is applied.\r\n if (srcset) {\r\n pxRatio = window.devicePixelRatio || 1;\r\n windowWidth = window.innerWidth * pxRatio;\r\n\r\n temp = srcset.split(\",\").map(function (el) {\r\n var ret = {};\r\n\r\n el.trim()\r\n .split(/\\s+/)\r\n .forEach(function (el, i) {\r\n var value = parseInt(el.substring(0, el.length - 1), 10);\r\n\r\n if (i === 0) {\r\n return (ret.url = el);\r\n }\r\n\r\n if (value) {\r\n ret.value = value;\r\n ret.postfix = el[el.length - 1];\r\n }\r\n });\r\n\r\n return ret;\r\n });\r\n\r\n // Sort by value\r\n temp.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n\r\n // Ok, now we have an array of all srcset values\r\n for (var j = 0; j < temp.length; j++) {\r\n var el = temp[j];\r\n\r\n if ((el.postfix === \"w\" && el.value >= windowWidth) || (el.postfix === \"x\" && el.value >= pxRatio)) {\r\n found = el;\r\n break;\r\n }\r\n }\r\n\r\n // If not found, take the last one\r\n if (!found && temp.length) {\r\n found = temp[temp.length - 1];\r\n }\r\n\r\n if (found) {\r\n slide.src = found.url;\r\n\r\n // If we have default width/height values, we can calculate height for matching source\r\n if (slide.width && slide.height && found.postfix == \"w\") {\r\n slide.height = (slide.width / slide.height) * found.value;\r\n slide.width = found.value;\r\n }\r\n\r\n slide.opts.srcset = srcset;\r\n }\r\n }\r\n },\r\n\r\n // Create full-size image\r\n // ======================\r\n\r\n setBigImage: function (slide) {\r\n var self = this,\r\n img = document.createElement(\"img\"),\r\n $img = $(img);\r\n\r\n slide.$image = $img\r\n .one(\"error\", function () {\r\n self.setError(slide);\r\n })\r\n .one(\"load\", function () {\r\n var sizes;\r\n\r\n if (!slide.$ghost) {\r\n self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight);\r\n\r\n self.afterLoad(slide);\r\n }\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n if (slide.opts.srcset) {\r\n sizes = slide.opts.sizes;\r\n\r\n if (!sizes || sizes === \"auto\") {\r\n sizes =\r\n (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? \"100\" : Math.round((slide.width / slide.height) * 100)) +\r\n \"vw\";\r\n }\r\n\r\n $img.attr(\"sizes\", sizes).attr(\"srcset\", slide.opts.srcset);\r\n }\r\n\r\n // Hide temporary image after some delay\r\n if (slide.$ghost) {\r\n setTimeout(function () {\r\n if (slide.$ghost && !self.isClosing) {\r\n slide.$ghost.hide();\r\n }\r\n }, Math.min(300, Math.max(1000, slide.height / 1600)));\r\n }\r\n\r\n self.hideLoading(slide);\r\n })\r\n .addClass(\"fancybox-image\")\r\n .attr(\"src\", slide.src)\r\n .appendTo(slide.$content);\r\n\r\n if ((img.complete || img.readyState == \"complete\") && $img.naturalWidth && $img.naturalHeight) {\r\n $img.trigger(\"load\");\r\n } else if (img.error) {\r\n $img.trigger(\"error\");\r\n }\r\n },\r\n\r\n // Computes the slide size from image size and maxWidth/maxHeight\r\n // ==============================================================\r\n\r\n resolveImageSlideSize: function (slide, imgWidth, imgHeight) {\r\n var maxWidth = parseInt(slide.opts.width, 10),\r\n maxHeight = parseInt(slide.opts.height, 10);\r\n\r\n // Sets the default values from the image\r\n slide.width = imgWidth;\r\n slide.height = imgHeight;\r\n\r\n if (maxWidth > 0) {\r\n slide.width = maxWidth;\r\n slide.height = Math.floor((maxWidth * imgHeight) / imgWidth);\r\n }\r\n\r\n if (maxHeight > 0) {\r\n slide.width = Math.floor((maxHeight * imgWidth) / imgHeight);\r\n slide.height = maxHeight;\r\n }\r\n },\r\n\r\n // Create iframe wrapper, iframe and bindings\r\n // ==========================================\r\n\r\n setIframe: function (slide) {\r\n var self = this,\r\n opts = slide.opts.iframe,\r\n $slide = slide.$slide,\r\n $iframe;\r\n\r\n slide.$content = $('
')\r\n .css(opts.css)\r\n .appendTo($slide);\r\n\r\n $slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n slide.$iframe = $iframe = $(opts.tpl.replace(/\\{rnd\\}/g, new Date().getTime()))\r\n .attr(opts.attr)\r\n .appendTo(slide.$content);\r\n\r\n if (opts.preload) {\r\n self.showLoading(slide);\r\n\r\n // Unfortunately, it is not always possible to determine if iframe is successfully loaded\r\n // (due to browser security policy)\r\n\r\n $iframe.on(\"load.fb error.fb\", function (e) {\r\n this.isReady = 1;\r\n\r\n slide.$slide.trigger(\"refresh\");\r\n\r\n self.afterLoad(slide);\r\n });\r\n\r\n // Recalculate iframe content size\r\n // ===============================\r\n\r\n $slide.on(\"refresh.fb\", function () {\r\n var $content = slide.$content,\r\n frameWidth = opts.css.width,\r\n frameHeight = opts.css.height,\r\n $contents,\r\n $body;\r\n\r\n if ($iframe[0].isReady !== 1) {\r\n return;\r\n }\r\n\r\n try {\r\n $contents = $iframe.contents();\r\n $body = $contents.find(\"body\");\r\n } catch (ignore) {}\r\n\r\n // Calculate content dimensions, if it is accessible\r\n if ($body && $body.length && $body.children().length) {\r\n // Avoid scrolling to top (if multiple instances)\r\n $slide.css(\"overflow\", \"visible\");\r\n\r\n $content.css({\r\n width: \"100%\",\r\n \"max-width\": \"100%\",\r\n height: \"9999px\"\r\n });\r\n\r\n if (frameWidth === undefined) {\r\n frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true)));\r\n }\r\n\r\n $content.css(\"width\", frameWidth ? frameWidth : \"\").css(\"max-width\", \"\");\r\n\r\n if (frameHeight === undefined) {\r\n frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true)));\r\n }\r\n\r\n $content.css(\"height\", frameHeight ? frameHeight : \"\");\r\n\r\n $slide.css(\"overflow\", \"auto\");\r\n }\r\n\r\n $content.removeClass(\"fancybox-is-hidden\");\r\n });\r\n } else {\r\n self.afterLoad(slide);\r\n }\r\n\r\n $iframe.attr(\"src\", slide.src);\r\n\r\n // Remove iframe if closing or changing gallery item\r\n $slide.one(\"onReset\", function () {\r\n // This helps IE not to throw errors when closing\r\n try {\r\n $(this)\r\n .find(\"iframe\")\r\n .hide()\r\n .unbind()\r\n .attr(\"src\", \"//about:blank\");\r\n } catch (ignore) {}\r\n\r\n $(this)\r\n .off(\"refresh.fb\")\r\n .empty();\r\n\r\n slide.isLoaded = false;\r\n slide.isRevealed = false;\r\n });\r\n },\r\n\r\n // Wrap and append content to the slide\r\n // ======================================\r\n\r\n setContent: function (slide, content) {\r\n var self = this;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n self.hideLoading(slide);\r\n\r\n if (slide.$content) {\r\n $.fancybox.stop(slide.$content);\r\n }\r\n\r\n slide.$slide.empty();\r\n\r\n // If content is a jQuery object, then it will be moved to the slide.\r\n // The placeholder is created so we will know where to put it back.\r\n if (isQuery(content) && content.parent().length) {\r\n // Make sure content is not already moved to fancyBox\r\n if (content.hasClass(\"fancybox-content\") || content.parent().hasClass(\"fancybox-content\")) {\r\n content.parents(\".fancybox-slide\").trigger(\"onReset\");\r\n }\r\n\r\n // Create temporary element marking original place of the content\r\n slide.$placeholder = $(\"
\")\r\n .hide()\r\n .insertAfter(content);\r\n\r\n // Make sure content is visible\r\n content.css(\"display\", \"inline-block\");\r\n } else if (!slide.hasError) {\r\n // If content is just a plain text, try to convert it to html\r\n if ($.type(content) === \"string\") {\r\n content = $(\"
\")\r\n .append($.trim(content))\r\n .contents();\r\n }\r\n\r\n // If \"filter\" option is provided, then filter content\r\n if (slide.opts.filter) {\r\n content = $(\"
\")\r\n .html(content)\r\n .find(slide.opts.filter);\r\n }\r\n }\r\n\r\n slide.$slide.one(\"onReset\", function () {\r\n // Pause all html5 video/audio\r\n $(this)\r\n .find(\"video,audio\")\r\n .trigger(\"pause\");\r\n\r\n // Put content back\r\n if (slide.$placeholder) {\r\n slide.$placeholder.after(content.removeClass(\"fancybox-content\").hide()).remove();\r\n\r\n slide.$placeholder = null;\r\n }\r\n\r\n // Remove custom close button\r\n if (slide.$smallBtn) {\r\n slide.$smallBtn.remove();\r\n\r\n slide.$smallBtn = null;\r\n }\r\n\r\n // Remove content and mark slide as not loaded\r\n if (!slide.hasError) {\r\n $(this).empty();\r\n\r\n slide.isLoaded = false;\r\n slide.isRevealed = false;\r\n }\r\n });\r\n\r\n $(content).appendTo(slide.$slide);\r\n\r\n if ($(content).is(\"video,audio\")) {\r\n $(content).addClass(\"fancybox-video\");\r\n\r\n $(content).wrap(\"
\");\r\n\r\n slide.contentType = \"video\";\r\n\r\n slide.opts.width = slide.opts.width || $(content).attr(\"width\");\r\n slide.opts.height = slide.opts.height || $(content).attr(\"height\");\r\n }\r\n\r\n slide.$content = slide.$slide\r\n .children()\r\n .filter(\"div,form,main,video,audio,article,.fancybox-content\")\r\n .first();\r\n\r\n slide.$content.siblings().hide();\r\n\r\n // Re-check if there is a valid content\r\n // (in some cases, ajax response can contain various elements or plain text)\r\n if (!slide.$content.length) {\r\n slide.$content = slide.$slide\r\n .wrapInner(\"
\")\r\n .children()\r\n .first();\r\n }\r\n\r\n slide.$content.addClass(\"fancybox-content\");\r\n\r\n slide.$slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n self.afterLoad(slide);\r\n },\r\n\r\n // Display error message\r\n // =====================\r\n\r\n setError: function (slide) {\r\n slide.hasError = true;\r\n\r\n slide.$slide\r\n .trigger(\"onReset\")\r\n .removeClass(\"fancybox-slide--\" + slide.contentType)\r\n .addClass(\"fancybox-slide--error\");\r\n\r\n slide.contentType = \"html\";\r\n\r\n this.setContent(slide, this.translate(slide, slide.opts.errorTpl));\r\n\r\n if (slide.pos === this.currPos) {\r\n this.isAnimating = false;\r\n }\r\n },\r\n\r\n // Show loading icon inside the slide\r\n // ==================================\r\n\r\n showLoading: function (slide) {\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if (slide && !slide.$spinner) {\r\n slide.$spinner = $(self.translate(self, self.opts.spinnerTpl))\r\n .appendTo(slide.$slide)\r\n .hide()\r\n .fadeIn(\"fast\");\r\n }\r\n },\r\n\r\n // Remove loading icon from the slide\r\n // ==================================\r\n\r\n hideLoading: function (slide) {\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if (slide && slide.$spinner) {\r\n slide.$spinner.stop().remove();\r\n\r\n delete slide.$spinner;\r\n }\r\n },\r\n\r\n // Adjustments after slide content has been loaded\r\n // ===============================================\r\n\r\n afterLoad: function (slide) {\r\n var self = this;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n slide.isLoading = false;\r\n slide.isLoaded = true;\r\n\r\n self.trigger(\"afterLoad\", slide);\r\n\r\n self.hideLoading(slide);\r\n\r\n // Add small close button\r\n if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) {\r\n slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content);\r\n }\r\n\r\n // Disable right click\r\n if (slide.opts.protect && slide.$content && !slide.hasError) {\r\n slide.$content.on(\"contextmenu.fb\", function (e) {\r\n if (e.button == 2) {\r\n e.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n\r\n // Add fake element on top of the image\r\n // This makes a bit harder for user to select image\r\n if (slide.type === \"image\") {\r\n $('
').appendTo(slide.$content);\r\n }\r\n }\r\n\r\n self.adjustCaption(slide);\r\n\r\n self.adjustLayout(slide);\r\n\r\n if (slide.pos === self.currPos) {\r\n self.updateCursor();\r\n }\r\n\r\n self.revealContent(slide);\r\n },\r\n\r\n // Prevent caption overlap,\r\n // fix css inconsistency across browsers\r\n // =====================================\r\n\r\n adjustCaption: function (slide) {\r\n var self = this,\r\n current = slide || self.current,\r\n caption = current.opts.caption,\r\n preventOverlap = current.opts.preventCaptionOverlap,\r\n $caption = self.$refs.caption,\r\n $clone,\r\n captionH = false;\r\n\r\n $caption.toggleClass(\"fancybox-caption--separate\", preventOverlap);\r\n\r\n if (preventOverlap && caption && caption.length) {\r\n if (current.pos !== self.currPos) {\r\n $clone = $caption.clone().appendTo($caption.parent());\r\n\r\n $clone\r\n .children()\r\n .eq(0)\r\n .empty()\r\n .html(caption);\r\n\r\n captionH = $clone.outerHeight(true);\r\n\r\n $clone.empty().remove();\r\n } else if (self.$caption) {\r\n captionH = self.$caption.outerHeight(true);\r\n }\r\n\r\n current.$slide.css(\"padding-bottom\", captionH || \"\");\r\n }\r\n },\r\n\r\n // Simple hack to fix inconsistency across browsers, described here (affects Edge, too):\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=748518\r\n // ====================================================================================\r\n\r\n adjustLayout: function (slide) {\r\n var self = this,\r\n current = slide || self.current,\r\n scrollHeight,\r\n marginBottom,\r\n inlinePadding,\r\n actualPadding;\r\n\r\n if (current.isLoaded && current.opts.disableLayoutFix !== true) {\r\n current.$content.css(\"margin-bottom\", \"\");\r\n\r\n // If we would always set margin-bottom for the content,\r\n // then it would potentially break vertical align\r\n if (current.$content.outerHeight() > current.$slide.height() + 0.5) {\r\n inlinePadding = current.$slide[0].style[\"padding-bottom\"];\r\n actualPadding = current.$slide.css(\"padding-bottom\");\r\n\r\n if (parseFloat(actualPadding) > 0) {\r\n scrollHeight = current.$slide[0].scrollHeight;\r\n\r\n current.$slide.css(\"padding-bottom\", 0);\r\n\r\n if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) {\r\n marginBottom = actualPadding;\r\n }\r\n\r\n current.$slide.css(\"padding-bottom\", inlinePadding);\r\n }\r\n }\r\n\r\n current.$content.css(\"margin-bottom\", marginBottom);\r\n }\r\n },\r\n\r\n // Make content visible\r\n // This method is called right after content has been loaded or\r\n // user navigates gallery and transition should start\r\n // ============================================================\r\n\r\n revealContent: function (slide) {\r\n var self = this,\r\n $slide = slide.$slide,\r\n end = false,\r\n start = false,\r\n isMoved = self.isMoved(slide),\r\n isRevealed = slide.isRevealed,\r\n effect,\r\n effectClassName,\r\n duration,\r\n opacity;\r\n\r\n slide.isRevealed = true;\r\n\r\n effect = slide.opts[self.firstRun ? \"animationEffect\" : \"transitionEffect\"];\r\n duration = slide.opts[self.firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n\r\n duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10);\r\n\r\n if (isMoved || slide.pos !== self.currPos || !duration) {\r\n effect = false;\r\n }\r\n\r\n // Check if can zoom\r\n if (effect === \"zoom\") {\r\n if (slide.pos === self.currPos && duration && slide.type === \"image\" && !slide.hasError && (start = self.getThumbPos(slide))) {\r\n end = self.getFitPos(slide);\r\n } else {\r\n effect = \"fade\";\r\n }\r\n }\r\n\r\n // Zoom animation\r\n // ==============\r\n if (effect === \"zoom\") {\r\n self.isAnimating = true;\r\n\r\n end.scaleX = end.width / start.width;\r\n end.scaleY = end.height / start.height;\r\n\r\n // Check if we need to animate opacity\r\n opacity = slide.opts.zoomOpacity;\r\n\r\n if (opacity == \"auto\") {\r\n opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1;\r\n }\r\n\r\n if (opacity) {\r\n start.opacity = 0.1;\r\n end.opacity = 1;\r\n }\r\n\r\n // Draw image at start position\r\n $.fancybox.setTranslate(slide.$content.removeClass(\"fancybox-is-hidden\"), start);\r\n\r\n forceRedraw(slide.$content);\r\n\r\n // Start animation\r\n $.fancybox.animate(slide.$content, end, duration, function () {\r\n self.isAnimating = false;\r\n\r\n self.complete();\r\n });\r\n\r\n return;\r\n }\r\n\r\n self.updateSlide(slide);\r\n\r\n // Simply show content if no effect\r\n // ================================\r\n if (!effect) {\r\n slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n if (!isRevealed && isMoved && slide.type === \"image\" && !slide.hasError) {\r\n slide.$content.hide().fadeIn(\"fast\");\r\n }\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Prepare for CSS transiton\r\n // =========================\r\n $.fancybox.stop($slide);\r\n\r\n //effectClassName = \"fancybox-animated fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-fx-\" + effect;\r\n effectClassName = \"fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-animated fancybox-fx-\" + effect;\r\n\r\n $slide.addClass(effectClassName).removeClass(\"fancybox-slide--current\"); //.addClass(effectClassName);\r\n\r\n slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n // Force reflow\r\n forceRedraw($slide);\r\n\r\n if (slide.type !== \"image\") {\r\n slide.$content.hide().show(0);\r\n }\r\n\r\n $.fancybox.animate(\r\n $slide,\r\n \"fancybox-slide--current\",\r\n duration,\r\n function () {\r\n $slide.removeClass(effectClassName).css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n },\r\n true\r\n );\r\n },\r\n\r\n // Check if we can and have to zoom from thumbnail\r\n //================================================\r\n\r\n getThumbPos: function (slide) {\r\n var rez = false,\r\n $thumb = slide.$thumb,\r\n thumbPos,\r\n btw,\r\n brw,\r\n bbw,\r\n blw;\r\n\r\n if (!$thumb || !inViewport($thumb[0])) {\r\n return false;\r\n }\r\n\r\n thumbPos = $.fancybox.getTranslate($thumb);\r\n\r\n btw = parseFloat($thumb.css(\"border-top-width\") || 0);\r\n brw = parseFloat($thumb.css(\"border-right-width\") || 0);\r\n bbw = parseFloat($thumb.css(\"border-bottom-width\") || 0);\r\n blw = parseFloat($thumb.css(\"border-left-width\") || 0);\r\n\r\n rez = {\r\n top: thumbPos.top + btw,\r\n left: thumbPos.left + blw,\r\n width: thumbPos.width - brw - blw,\r\n height: thumbPos.height - btw - bbw,\r\n scaleX: 1,\r\n scaleY: 1\r\n };\r\n\r\n return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false;\r\n },\r\n\r\n // Final adjustments after current gallery item is moved to position\r\n // and it`s content is loaded\r\n // ==================================================================\r\n\r\n complete: function () {\r\n var self = this,\r\n current = self.current,\r\n slides = {},\r\n $el;\r\n\r\n if (self.isMoved() || !current.isLoaded) {\r\n return;\r\n }\r\n\r\n if (!current.isComplete) {\r\n current.isComplete = true;\r\n\r\n current.$slide.siblings().trigger(\"onReset\");\r\n\r\n self.preload(\"inline\");\r\n\r\n // Trigger any CSS transiton inside the slide\r\n forceRedraw(current.$slide);\r\n\r\n current.$slide.addClass(\"fancybox-slide--complete\");\r\n\r\n // Remove unnecessary slides\r\n $.each(self.slides, function (key, slide) {\r\n if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) {\r\n slides[slide.pos] = slide;\r\n } else if (slide) {\r\n $.fancybox.stop(slide.$slide);\r\n\r\n slide.$slide.off().remove();\r\n }\r\n });\r\n\r\n self.slides = slides;\r\n }\r\n\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n\r\n self.trigger(\"afterShow\");\r\n\r\n // Autoplay first html5 video/audio\r\n if (!!current.opts.video.autoStart) {\r\n current.$slide\r\n .find(\"video,audio\")\r\n .filter(\":visible:first\")\r\n .trigger(\"play\")\r\n .one(\"ended\", function () {\r\n if (Document.exitFullscreen) {\r\n Document.exitFullscreen();\r\n } else if (this.webkitExitFullscreen) {\r\n this.webkitExitFullscreen();\r\n }\r\n\r\n self.next();\r\n });\r\n }\r\n\r\n // Try to focus on the first focusable element\r\n if (current.opts.autoFocus && current.contentType === \"html\") {\r\n // Look for the first input with autofocus attribute\r\n $el = current.$content.find(\"input[autofocus]:enabled:visible:first\");\r\n\r\n if ($el.length) {\r\n $el.trigger(\"focus\");\r\n } else {\r\n self.focus(null, true);\r\n }\r\n }\r\n\r\n // Avoid jumping\r\n current.$slide.scrollTop(0).scrollLeft(0);\r\n },\r\n\r\n // Preload next and previous slides\r\n // ================================\r\n\r\n preload: function (type) {\r\n var self = this,\r\n prev,\r\n next;\r\n\r\n if (self.group.length < 2) {\r\n return;\r\n }\r\n\r\n next = self.slides[self.currPos + 1];\r\n prev = self.slides[self.currPos - 1];\r\n\r\n if (prev && prev.type === type) {\r\n self.loadSlide(prev);\r\n }\r\n\r\n if (next && next.type === type) {\r\n self.loadSlide(next);\r\n }\r\n },\r\n\r\n // Try to find and focus on the first focusable element\r\n // ====================================================\r\n\r\n focus: function (e, firstRun) {\r\n var self = this,\r\n focusableStr = [\r\n \"a[href]\",\r\n \"area[href]\",\r\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\r\n \"select:not([disabled]):not([aria-hidden])\",\r\n \"textarea:not([disabled]):not([aria-hidden])\",\r\n \"button:not([disabled]):not([aria-hidden])\",\r\n \"iframe\",\r\n \"object\",\r\n \"embed\",\r\n \"video\",\r\n \"audio\",\r\n \"[contenteditable]\",\r\n '[tabindex]:not([tabindex^=\"-\"])'\r\n ].join(\",\"),\r\n focusableItems,\r\n focusedItemIndex;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n if (e || !self.current || !self.current.isComplete) {\r\n // Focus on any element inside fancybox\r\n focusableItems = self.$refs.container.find(\"*:visible\");\r\n } else {\r\n // Focus inside current slide\r\n focusableItems = self.current.$slide.find(\"*:visible\" + (firstRun ? \":not(.fancybox-close-small)\" : \"\"));\r\n }\r\n\r\n focusableItems = focusableItems.filter(focusableStr).filter(function () {\r\n return $(this).css(\"visibility\") !== \"hidden\" && !$(this).hasClass(\"disabled\");\r\n });\r\n\r\n if (focusableItems.length) {\r\n focusedItemIndex = focusableItems.index(document.activeElement);\r\n\r\n if (e && e.shiftKey) {\r\n // Back tab\r\n if (focusedItemIndex < 0 || focusedItemIndex == 0) {\r\n e.preventDefault();\r\n\r\n focusableItems.eq(focusableItems.length - 1).trigger(\"focus\");\r\n }\r\n } else {\r\n // Outside or Forward tab\r\n if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n\r\n focusableItems.eq(0).trigger(\"focus\");\r\n }\r\n }\r\n } else {\r\n self.$refs.container.trigger(\"focus\");\r\n }\r\n },\r\n\r\n // Activates current instance - brings container to the front and enables keyboard,\r\n // notifies other instances about deactivating\r\n // =================================================================================\r\n\r\n activate: function () {\r\n var self = this;\r\n\r\n // Deactivate all instances\r\n $(\".fancybox-container\").each(function () {\r\n var instance = $(this).data(\"FancyBox\");\r\n\r\n // Skip self and closing instances\r\n if (instance && instance.id !== self.id && !instance.isClosing) {\r\n instance.trigger(\"onDeactivate\");\r\n\r\n instance.removeEvents();\r\n\r\n instance.isVisible = false;\r\n }\r\n });\r\n\r\n self.isVisible = true;\r\n\r\n if (self.current || self.isIdle) {\r\n self.update();\r\n\r\n self.updateControls();\r\n }\r\n\r\n self.trigger(\"onActivate\");\r\n\r\n self.addEvents();\r\n },\r\n\r\n // Start closing procedure\r\n // This will start \"zoom-out\" animation if needed and clean everything up afterwards\r\n // =================================================================================\r\n\r\n close: function (e, d) {\r\n var self = this,\r\n current = self.current,\r\n effect,\r\n duration,\r\n $content,\r\n domRect,\r\n opacity,\r\n start,\r\n end;\r\n\r\n var done = function () {\r\n self.cleanUp(e);\r\n };\r\n\r\n if (self.isClosing) {\r\n return false;\r\n }\r\n\r\n self.isClosing = true;\r\n\r\n // If beforeClose callback prevents closing, make sure content is centered\r\n if (self.trigger(\"beforeClose\", e) === false) {\r\n self.isClosing = false;\r\n\r\n requestAFrame(function () {\r\n self.update();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n // Remove all events\r\n // If there are multiple instances, they will be set again by \"activate\" method\r\n self.removeEvents();\r\n\r\n $content = current.$content;\r\n effect = current.opts.animationEffect;\r\n duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0;\r\n\r\n current.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\");\r\n\r\n if (e !== true) {\r\n $.fancybox.stop(current.$slide);\r\n } else {\r\n effect = false;\r\n }\r\n\r\n // Remove other slides\r\n current.$slide\r\n .siblings()\r\n .trigger(\"onReset\")\r\n .remove();\r\n\r\n // Trigger animations\r\n if (duration) {\r\n self.$refs.container\r\n .removeClass(\"fancybox-is-open\")\r\n .addClass(\"fancybox-is-closing\")\r\n .css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n // Clean up\r\n self.hideLoading(current);\r\n\r\n self.hideControls(true);\r\n\r\n self.updateCursor();\r\n\r\n // Check if possible to zoom-out\r\n if (\r\n effect === \"zoom\" &&\r\n !($content && duration && current.type === \"image\" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current)))\r\n ) {\r\n effect = \"fade\";\r\n }\r\n\r\n if (effect === \"zoom\") {\r\n $.fancybox.stop($content);\r\n\r\n domRect = $.fancybox.getTranslate($content);\r\n\r\n start = {\r\n top: domRect.top,\r\n left: domRect.left,\r\n scaleX: domRect.width / end.width,\r\n scaleY: domRect.height / end.height,\r\n width: end.width,\r\n height: end.height\r\n };\r\n\r\n // Check if we need to animate opacity\r\n opacity = current.opts.zoomOpacity;\r\n\r\n if (opacity == \"auto\") {\r\n opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1;\r\n }\r\n\r\n if (opacity) {\r\n end.opacity = 0;\r\n }\r\n\r\n $.fancybox.setTranslate($content, start);\r\n\r\n forceRedraw($content);\r\n\r\n $.fancybox.animate($content, end, duration, done);\r\n\r\n return true;\r\n }\r\n\r\n if (effect && duration) {\r\n $.fancybox.animate(\r\n current.$slide.addClass(\"fancybox-slide--previous\").removeClass(\"fancybox-slide--current\"),\r\n \"fancybox-animated fancybox-fx-\" + effect,\r\n duration,\r\n done\r\n );\r\n } else {\r\n // If skip animation\r\n if (e === true) {\r\n setTimeout(done, duration);\r\n } else {\r\n done();\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // Final adjustments after removing the instance\r\n // =============================================\r\n\r\n cleanUp: function (e) {\r\n var self = this,\r\n instance,\r\n $focus = self.current.opts.$orig,\r\n x,\r\n y;\r\n\r\n self.current.$slide.trigger(\"onReset\");\r\n\r\n self.$refs.container.empty().remove();\r\n\r\n self.trigger(\"afterClose\", e);\r\n\r\n // Place back focus\r\n if (!!self.current.opts.backFocus) {\r\n if (!$focus || !$focus.length || !$focus.is(\":visible\")) {\r\n $focus = self.$trigger;\r\n }\r\n\r\n if ($focus && $focus.length) {\r\n x = window.scrollX;\r\n y = window.scrollY;\r\n\r\n $focus.trigger(\"focus\");\r\n\r\n $(\"html, body\")\r\n .scrollTop(y)\r\n .scrollLeft(x);\r\n }\r\n }\r\n\r\n self.current = null;\r\n\r\n // Check if there are other instances\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n instance.activate();\r\n } else {\r\n $(\"body\").removeClass(\"fancybox-active compensate-for-scrollbar\");\r\n\r\n $(\"#fancybox-style-noscroll\").remove();\r\n }\r\n },\r\n\r\n // Call callback and trigger an event\r\n // ==================================\r\n\r\n trigger: function (name, slide) {\r\n var args = Array.prototype.slice.call(arguments, 1),\r\n self = this,\r\n obj = slide && slide.opts ? slide : self.current,\r\n rez;\r\n\r\n if (obj) {\r\n args.unshift(obj);\r\n } else {\r\n obj = self;\r\n }\r\n\r\n args.unshift(self);\r\n\r\n if ($.isFunction(obj.opts[name])) {\r\n rez = obj.opts[name].apply(obj, args);\r\n }\r\n\r\n if (rez === false) {\r\n return rez;\r\n }\r\n\r\n if (name === \"afterClose\" || !self.$refs) {\r\n $D.trigger(name + \".fb\", args);\r\n } else {\r\n self.$refs.container.trigger(name + \".fb\", args);\r\n }\r\n },\r\n\r\n // Update infobar values, navigation button states and reveal caption\r\n // ==================================================================\r\n\r\n updateControls: function () {\r\n var self = this,\r\n current = self.current,\r\n index = current.index,\r\n $container = self.$refs.container,\r\n $caption = self.$refs.caption,\r\n caption = current.opts.caption;\r\n\r\n // Recalculate content dimensions\r\n current.$slide.trigger(\"refresh\");\r\n\r\n // Set caption\r\n if (caption && caption.length) {\r\n self.$caption = $caption;\r\n\r\n $caption\r\n .children()\r\n .eq(0)\r\n .html(caption);\r\n } else {\r\n self.$caption = null;\r\n }\r\n\r\n if (!self.hasHiddenControls && !self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n // Update info and navigation elements\r\n $container.find(\"[data-fancybox-count]\").html(self.group.length);\r\n $container.find(\"[data-fancybox-index]\").html(index + 1);\r\n\r\n $container.find(\"[data-fancybox-prev]\").prop(\"disabled\", !current.opts.loop && index <= 0);\r\n $container.find(\"[data-fancybox-next]\").prop(\"disabled\", !current.opts.loop && index >= self.group.length - 1);\r\n\r\n if (current.type === \"image\") {\r\n // Re-enable buttons; update download button source\r\n $container\r\n .find(\"[data-fancybox-zoom]\")\r\n .show()\r\n .end()\r\n .find(\"[data-fancybox-download]\")\r\n .attr(\"href\", current.opts.image.src || current.src)\r\n .show();\r\n } else if (current.opts.toolbar) {\r\n $container.find(\"[data-fancybox-download],[data-fancybox-zoom]\").hide();\r\n }\r\n\r\n // Make sure focus is not on disabled button/element\r\n if ($(document.activeElement).is(\":hidden,[disabled]\")) {\r\n self.$refs.container.trigger(\"focus\");\r\n }\r\n },\r\n\r\n // Hide toolbar and caption\r\n // ========================\r\n\r\n hideControls: function (andCaption) {\r\n var self = this,\r\n arr = [\"infobar\", \"toolbar\", \"nav\"];\r\n\r\n if (andCaption || !self.current.opts.preventCaptionOverlap) {\r\n arr.push(\"caption\");\r\n }\r\n\r\n this.$refs.container.removeClass(\r\n arr\r\n .map(function (i) {\r\n return \"fancybox-show-\" + i;\r\n })\r\n .join(\" \")\r\n );\r\n\r\n this.hasHiddenControls = true;\r\n },\r\n\r\n showControls: function () {\r\n var self = this,\r\n opts = self.current ? self.current.opts : self.opts,\r\n $container = self.$refs.container;\r\n\r\n self.hasHiddenControls = false;\r\n self.idleSecondsCounter = 0;\r\n\r\n $container\r\n .toggleClass(\"fancybox-show-toolbar\", !!(opts.toolbar && opts.buttons))\r\n .toggleClass(\"fancybox-show-infobar\", !!(opts.infobar && self.group.length > 1))\r\n .toggleClass(\"fancybox-show-caption\", !!self.$caption)\r\n .toggleClass(\"fancybox-show-nav\", !!(opts.arrows && self.group.length > 1))\r\n .toggleClass(\"fancybox-is-modal\", !!opts.modal);\r\n },\r\n\r\n // Toggle toolbar and caption\r\n // ==========================\r\n\r\n toggleControls: function () {\r\n if (this.hasHiddenControls) {\r\n this.showControls();\r\n } else {\r\n this.hideControls();\r\n }\r\n }\r\n });\r\n\r\n $.fancybox = {\r\n version: \"3.5.7\",\r\n defaults: defaults,\r\n\r\n // Get current instance and execute a command.\r\n //\r\n // Examples of usage:\r\n //\r\n // $instance = $.fancybox.getInstance();\r\n // $.fancybox.getInstance().jumpTo( 1 );\r\n // $.fancybox.getInstance( 'jumpTo', 1 );\r\n // $.fancybox.getInstance( function() {\r\n // console.info( this.currIndex );\r\n // });\r\n // ======================================================\r\n\r\n getInstance: function (command) {\r\n var instance = $('.fancybox-container:not(\".fancybox-is-closing\"):last').data(\"FancyBox\"),\r\n args = Array.prototype.slice.call(arguments, 1);\r\n\r\n if (instance instanceof FancyBox) {\r\n if ($.type(command) === \"string\") {\r\n instance[command].apply(instance, args);\r\n } else if ($.type(command) === \"function\") {\r\n command.apply(instance, args);\r\n }\r\n\r\n return instance;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Create new instance\r\n // ===================\r\n\r\n open: function (items, opts, index) {\r\n return new FancyBox(items, opts, index);\r\n },\r\n\r\n // Close current or all instances\r\n // ==============================\r\n\r\n close: function (all) {\r\n var instance = this.getInstance();\r\n\r\n if (instance) {\r\n instance.close();\r\n\r\n // Try to find and close next instance\r\n if (all === true) {\r\n this.close(all);\r\n }\r\n }\r\n },\r\n\r\n // Close all instances and unbind all events\r\n // =========================================\r\n\r\n destroy: function () {\r\n this.close(true);\r\n\r\n $D.add(\"body\").off(\"click.fb-start\", \"**\");\r\n },\r\n\r\n // Try to detect mobile devices\r\n // ============================\r\n\r\n isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\r\n // Detect if 'translate3d' support is available\r\n // ============================================\r\n\r\n use3d: (function () {\r\n var div = document.createElement(\"div\");\r\n\r\n return (\r\n window.getComputedStyle &&\r\n window.getComputedStyle(div) &&\r\n window.getComputedStyle(div).getPropertyValue(\"transform\") &&\r\n !(document.documentMode && document.documentMode < 11)\r\n );\r\n })(),\r\n\r\n // Helper function to get current visual state of an element\r\n // returns array[ top, left, horizontal-scale, vertical-scale, opacity ]\r\n // =====================================================================\r\n\r\n getTranslate: function ($el) {\r\n var domRect;\r\n\r\n if (!$el || !$el.length) {\r\n return false;\r\n }\r\n\r\n domRect = $el[0].getBoundingClientRect();\r\n\r\n return {\r\n top: domRect.top || 0,\r\n left: domRect.left || 0,\r\n width: domRect.width,\r\n height: domRect.height,\r\n opacity: parseFloat($el.css(\"opacity\"))\r\n };\r\n },\r\n\r\n // Shortcut for setting \"translate3d\" properties for element\r\n // Can set be used to set opacity, too\r\n // ========================================================\r\n\r\n setTranslate: function ($el, props) {\r\n var str = \"\",\r\n css = {};\r\n\r\n if (!$el || !props) {\r\n return;\r\n }\r\n\r\n if (props.left !== undefined || props.top !== undefined) {\r\n str =\r\n (props.left === undefined ? $el.position().left : props.left) +\r\n \"px, \" +\r\n (props.top === undefined ? $el.position().top : props.top) +\r\n \"px\";\r\n\r\n if (this.use3d) {\r\n str = \"translate3d(\" + str + \", 0px)\";\r\n } else {\r\n str = \"translate(\" + str + \")\";\r\n }\r\n }\r\n\r\n if (props.scaleX !== undefined && props.scaleY !== undefined) {\r\n str += \" scale(\" + props.scaleX + \", \" + props.scaleY + \")\";\r\n } else if (props.scaleX !== undefined) {\r\n str += \" scaleX(\" + props.scaleX + \")\";\r\n }\r\n\r\n if (str.length) {\r\n css.transform = str;\r\n }\r\n\r\n if (props.opacity !== undefined) {\r\n css.opacity = props.opacity;\r\n }\r\n\r\n if (props.width !== undefined) {\r\n css.width = props.width;\r\n }\r\n\r\n if (props.height !== undefined) {\r\n css.height = props.height;\r\n }\r\n\r\n return $el.css(css);\r\n },\r\n\r\n // Simple CSS transition handler\r\n // =============================\r\n\r\n animate: function ($el, to, duration, callback, leaveAnimationName) {\r\n var self = this,\r\n from;\r\n\r\n if ($.isFunction(duration)) {\r\n callback = duration;\r\n duration = null;\r\n }\r\n\r\n self.stop($el);\r\n\r\n from = self.getTranslate($el);\r\n\r\n $el.on(transitionEnd, function (e) {\r\n // Skip events from child elements and z-index change\r\n if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == \"z-index\")) {\r\n return;\r\n }\r\n\r\n self.stop($el);\r\n\r\n if ($.isNumeric(duration)) {\r\n $el.css(\"transition-duration\", \"\");\r\n }\r\n\r\n if ($.isPlainObject(to)) {\r\n if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n self.setTranslate($el, {\r\n top: to.top,\r\n left: to.left,\r\n width: from.width * to.scaleX,\r\n height: from.height * to.scaleY,\r\n scaleX: 1,\r\n scaleY: 1\r\n });\r\n }\r\n } else if (leaveAnimationName !== true) {\r\n $el.removeClass(to);\r\n }\r\n\r\n if ($.isFunction(callback)) {\r\n callback(e);\r\n }\r\n });\r\n\r\n if ($.isNumeric(duration)) {\r\n $el.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n // Start animation by changing CSS properties or class name\r\n if ($.isPlainObject(to)) {\r\n if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n delete to.width;\r\n delete to.height;\r\n\r\n if ($el.parent().hasClass(\"fancybox-slide--image\")) {\r\n $el.parent().addClass(\"fancybox-is-scaling\");\r\n }\r\n }\r\n\r\n $.fancybox.setTranslate($el, to);\r\n } else {\r\n $el.addClass(to);\r\n }\r\n\r\n // Make sure that `transitionend` callback gets fired\r\n $el.data(\r\n \"timer\",\r\n setTimeout(function () {\r\n $el.trigger(transitionEnd);\r\n }, duration + 33)\r\n );\r\n },\r\n\r\n stop: function ($el, callCallback) {\r\n if ($el && $el.length) {\r\n clearTimeout($el.data(\"timer\"));\r\n\r\n if (callCallback) {\r\n $el.trigger(transitionEnd);\r\n }\r\n\r\n $el.off(transitionEnd).css(\"transition-duration\", \"\");\r\n\r\n $el.parent().removeClass(\"fancybox-is-scaling\");\r\n }\r\n }\r\n };\r\n\r\n // Default click handler for \"fancyboxed\" links\r\n // ============================================\r\n\r\n function _run(e, opts) {\r\n var items = [],\r\n index = 0,\r\n $target,\r\n value,\r\n instance;\r\n\r\n // Avoid opening multiple times\r\n if (e && e.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n opts = opts || {};\r\n\r\n if (e && e.data) {\r\n opts = mergeOpts(e.data.options, opts);\r\n }\r\n\r\n $target = opts.$target || $(e.currentTarget).trigger(\"blur\");\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance && instance.$trigger && instance.$trigger.is($target)) {\r\n return;\r\n }\r\n\r\n if (opts.selector) {\r\n items = $(opts.selector);\r\n } else {\r\n // Get all related items and find index for clicked one\r\n value = $target.attr(\"data-fancybox\") || \"\";\r\n\r\n if (value) {\r\n items = e.data ? e.data.items : [];\r\n items = items.length ? items.filter('[data-fancybox=\"' + value + '\"]') : $('[data-fancybox=\"' + value + '\"]');\r\n } else {\r\n items = [$target];\r\n }\r\n }\r\n\r\n index = $(items).index($target);\r\n\r\n // Sometimes current item can not be found\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n\r\n instance = $.fancybox.open(items, opts, index);\r\n\r\n // Save last active element\r\n instance.$trigger = $target;\r\n }\r\n\r\n // Create a jQuery plugin\r\n // ======================\r\n\r\n $.fn.fancybox = function (options) {\r\n var selector;\r\n\r\n options = options || {};\r\n selector = options.selector || false;\r\n\r\n if (selector) {\r\n // Use body element instead of document so it executes first\r\n $(\"body\")\r\n .off(\"click.fb-start\", selector)\r\n .on(\"click.fb-start\", selector, {\r\n options: options\r\n }, _run);\r\n } else {\r\n this.off(\"click.fb-start\").on(\r\n \"click.fb-start\", {\r\n items: this,\r\n options: options\r\n },\r\n _run\r\n );\r\n }\r\n\r\n return this;\r\n };\r\n\r\n // Self initializing plugin for all elements having `data-fancybox` attribute\r\n // ==========================================================================\r\n\r\n $D.on(\"click.fb-start\", \"[data-fancybox]\", _run);\r\n\r\n // Enable \"trigger elements\"\r\n // =========================\r\n\r\n $D.on(\"click.fb-start\", \"[data-fancybox-trigger]\", function (e) {\r\n $('[data-fancybox=\"' + $(this).attr(\"data-fancybox-trigger\") + '\"]')\r\n .eq($(this).attr(\"data-fancybox-index\") || 0)\r\n .trigger(\"click.fb-start\", {\r\n $trigger: $(this)\r\n });\r\n });\r\n\r\n // Track focus event for better accessibility styling\r\n // ==================================================\r\n (function () {\r\n var buttonStr = \".fancybox-button\",\r\n focusStr = \"fancybox-focus\",\r\n $pressed = null;\r\n\r\n $D.on(\"mousedown mouseup focus blur\", buttonStr, function (e) {\r\n switch (e.type) {\r\n case \"mousedown\":\r\n $pressed = $(this);\r\n break;\r\n case \"mouseup\":\r\n $pressed = null;\r\n break;\r\n case \"focusin\":\r\n $(buttonStr).removeClass(focusStr);\r\n\r\n if (!$(this).is($pressed) && !$(this).is(\"[disabled]\")) {\r\n $(this).addClass(focusStr);\r\n }\r\n break;\r\n case \"focusout\":\r\n $(buttonStr).removeClass(focusStr);\r\n break;\r\n }\r\n });\r\n })();\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n(function ($) {\r\n \"use strict\";\r\n\r\n // Object containing properties for each media type\r\n var defaults = {\r\n youtube: {\r\n matcher: /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n params: {\r\n autoplay: 1,\r\n autohide: 1,\r\n fs: 1,\r\n rel: 0,\r\n hd: 1,\r\n wmode: \"transparent\",\r\n enablejsapi: 1,\r\n html5: 1\r\n },\r\n paramPlace: 8,\r\n type: \"iframe\",\r\n url: \"https://www.youtube-nocookie.com/embed/$4\",\r\n thumb: \"https://img.youtube.com/vi/$4/hqdefault.jpg\"\r\n },\r\n\r\n vimeo: {\r\n matcher: /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n params: {\r\n autoplay: 1,\r\n hd: 1,\r\n show_title: 1,\r\n show_byline: 1,\r\n show_portrait: 0,\r\n fullscreen: 1\r\n },\r\n paramPlace: 3,\r\n type: \"iframe\",\r\n url: \"//player.vimeo.com/video/$2\"\r\n },\r\n\r\n instagram: {\r\n matcher: /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n type: \"image\",\r\n url: \"//$1/p/$2/media/?size=l\"\r\n },\r\n\r\n // Examples:\r\n // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z\r\n // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en\r\n // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n gmap_place: {\r\n matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n type: \"iframe\",\r\n url: function (rez) {\r\n return (\r\n \"//maps.google.\" +\r\n rez[2] +\r\n \"/?ll=\" +\r\n (rez[9] ? rez[9] + \"&z=\" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\\//, \"&\") : \"\") : rez[12] + \"\").replace(/\\?/, \"&\") +\r\n \"&output=\" +\r\n (rez[12] && rez[12].indexOf(\"layer=c\") > 0 ? \"svembed\" : \"embed\")\r\n );\r\n }\r\n },\r\n\r\n // Examples:\r\n // https://www.google.com/maps/search/Empire+State+Building/\r\n // https://www.google.com/maps/search/?api=1&query=centurylink+field\r\n // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393\r\n gmap_search: {\r\n matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,\r\n type: \"iframe\",\r\n url: function (rez) {\r\n return \"//maps.google.\" + rez[2] + \"/maps?q=\" + rez[5].replace(\"query=\", \"q=\").replace(\"api=1\", \"\") + \"&output=embed\";\r\n }\r\n }\r\n };\r\n\r\n // Formats matching url to final form\r\n var format = function (url, rez, params) {\r\n if (!url) {\r\n return;\r\n }\r\n\r\n params = params || \"\";\r\n\r\n if ($.type(params) === \"object\") {\r\n params = $.param(params, true);\r\n }\r\n\r\n $.each(rez, function (key, value) {\r\n url = url.replace(\"$\" + key, value || \"\");\r\n });\r\n\r\n if (params.length) {\r\n url += (url.indexOf(\"?\") > 0 ? \"&\" : \"?\") + params;\r\n }\r\n\r\n return url;\r\n };\r\n\r\n $(document).on(\"objectNeedsType.fb\", function (e, instance, item) {\r\n var url = item.src || \"\",\r\n type = false,\r\n media,\r\n thumb,\r\n rez,\r\n params,\r\n urlParams,\r\n paramObj,\r\n provider;\r\n\r\n media = $.extend(true, {}, defaults, item.opts.media);\r\n\r\n // Look for any matching media type\r\n $.each(media, function (providerName, providerOpts) {\r\n rez = url.match(providerOpts.matcher);\r\n\r\n if (!rez) {\r\n return;\r\n }\r\n\r\n type = providerOpts.type;\r\n provider = providerName;\r\n paramObj = {};\r\n\r\n if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) {\r\n urlParams = rez[providerOpts.paramPlace];\r\n\r\n if (urlParams[0] == \"?\") {\r\n urlParams = urlParams.substring(1);\r\n }\r\n\r\n urlParams = urlParams.split(\"&\");\r\n\r\n for (var m = 0; m < urlParams.length; ++m) {\r\n var p = urlParams[m].split(\"=\", 2);\r\n\r\n if (p.length == 2) {\r\n paramObj[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\r\n }\r\n }\r\n }\r\n\r\n params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj);\r\n\r\n url =\r\n $.type(providerOpts.url) === \"function\" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params);\r\n\r\n thumb =\r\n $.type(providerOpts.thumb) === \"function\" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez);\r\n\r\n if (providerName === \"youtube\") {\r\n url = url.replace(/&t=((\\d+)m)?(\\d+)s/, function (match, p1, m, s) {\r\n return \"&start=\" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10));\r\n });\r\n } else if (providerName === \"vimeo\") {\r\n url = url.replace(\"&%23\", \"#\");\r\n }\r\n\r\n return false;\r\n });\r\n\r\n // If it is found, then change content type and update the url\r\n\r\n if (type) {\r\n if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) {\r\n item.opts.thumb = thumb;\r\n }\r\n\r\n if (type === \"iframe\") {\r\n item.opts = $.extend(true, item.opts, {\r\n iframe: {\r\n preload: false,\r\n attr: {\r\n scrolling: \"no\"\r\n }\r\n }\r\n });\r\n }\r\n\r\n $.extend(item, {\r\n type: type,\r\n src: url,\r\n origSrc: item.src,\r\n contentSource: provider,\r\n contentType: type === \"image\" ? \"image\" : provider == \"gmap_place\" || provider == \"gmap_search\" ? \"map\" : \"video\"\r\n });\r\n } else if (url) {\r\n item.type = item.opts.defaultType;\r\n }\r\n });\r\n\r\n // Load YouTube/Video API on request to detect when video finished playing\r\n var VideoAPILoader = {\r\n youtube: {\r\n src: \"https://www.youtube.com/iframe_api\",\r\n class: \"YT\",\r\n loading: false,\r\n loaded: false\r\n },\r\n\r\n vimeo: {\r\n src: \"https://player.vimeo.com/api/player.js\",\r\n class: \"Vimeo\",\r\n loading: false,\r\n loaded: false\r\n },\r\n\r\n load: function (vendor) {\r\n var _this = this,\r\n script;\r\n\r\n if (this[vendor].loaded) {\r\n setTimeout(function () {\r\n _this.done(vendor);\r\n });\r\n return;\r\n }\r\n\r\n if (this[vendor].loading) {\r\n return;\r\n }\r\n\r\n this[vendor].loading = true;\r\n\r\n script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.src = this[vendor].src;\r\n\r\n if (vendor === \"youtube\") {\r\n window.onYouTubeIframeAPIReady = function () {\r\n _this[vendor].loaded = true;\r\n _this.done(vendor);\r\n };\r\n } else {\r\n script.onload = function () {\r\n _this[vendor].loaded = true;\r\n _this.done(vendor);\r\n };\r\n }\r\n\r\n document.body.appendChild(script);\r\n },\r\n done: function (vendor) {\r\n var instance, $el, player;\r\n\r\n if (vendor === \"youtube\") {\r\n delete window.onYouTubeIframeAPIReady;\r\n }\r\n\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n $el = instance.current.$content.find(\"iframe\");\r\n\r\n if (vendor === \"youtube\" && YT !== undefined && YT) {\r\n player = new YT.Player($el.attr(\"id\"), {\r\n events: {\r\n onStateChange: function (e) {\r\n if (e.data == 0) {\r\n instance.next();\r\n }\r\n }\r\n }\r\n });\r\n } else if (vendor === \"vimeo\" && Vimeo !== undefined && Vimeo) {\r\n player = new Vimeo.Player($el);\r\n\r\n player.on(\"ended\", function () {\r\n instance.next();\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n $(document).on({\r\n \"afterShow.fb\": function (e, instance, current) {\r\n if (instance.group.length > 1 && (current.contentSource === \"youtube\" || current.contentSource === \"vimeo\")) {\r\n VideoAPILoader.load(current.contentSource);\r\n }\r\n }\r\n });\r\n})(jQuery);\n// ==========================================================================\r\n//\r\n// Guestures\r\n// Adds touch guestures, handles click and tap events\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n \"use strict\";\r\n\r\n var requestAFrame = (function () {\r\n return (\r\n window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n }\r\n );\r\n })();\r\n\r\n var cancelAFrame = (function () {\r\n return (\r\n window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n }\r\n );\r\n })();\r\n\r\n var getPointerXY = function (e) {\r\n var result = [];\r\n\r\n e = e.originalEvent || e || window.e;\r\n e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];\r\n\r\n for (var key in e) {\r\n if (e[key].pageX) {\r\n result.push({\r\n x: e[key].pageX,\r\n y: e[key].pageY\r\n });\r\n } else if (e[key].clientX) {\r\n result.push({\r\n x: e[key].clientX,\r\n y: e[key].clientY\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var distance = function (point2, point1, what) {\r\n if (!point1 || !point2) {\r\n return 0;\r\n }\r\n\r\n if (what === \"x\") {\r\n return point2.x - point1.x;\r\n } else if (what === \"y\") {\r\n return point2.y - point1.y;\r\n }\r\n\r\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\r\n };\r\n\r\n var isClickable = function ($el) {\r\n if (\r\n $el.is('a,area,button,[role=\"button\"],input,label,select,summary,textarea,video,audio,iframe') ||\r\n $.isFunction($el.get(0).onclick) ||\r\n $el.data(\"selectable\")\r\n ) {\r\n return true;\r\n }\r\n\r\n // Check for attributes like data-fancybox-next or data-fancybox-close\r\n for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) {\r\n if (atts[i].nodeName.substr(0, 14) === \"data-fancybox-\") {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var hasScrollbars = function (el) {\r\n var overflowY = window.getComputedStyle(el)[\"overflow-y\"],\r\n overflowX = window.getComputedStyle(el)[\"overflow-x\"],\r\n vertical = (overflowY === \"scroll\" || overflowY === \"auto\") && el.scrollHeight > el.clientHeight,\r\n horizontal = (overflowX === \"scroll\" || overflowX === \"auto\") && el.scrollWidth > el.clientWidth;\r\n\r\n return vertical || horizontal;\r\n };\r\n\r\n var isScrollable = function ($el) {\r\n var rez = false;\r\n\r\n while (true) {\r\n rez = hasScrollbars($el.get(0));\r\n\r\n if (rez) {\r\n break;\r\n }\r\n\r\n $el = $el.parent();\r\n\r\n if (!$el.length || $el.hasClass(\"fancybox-stage\") || $el.is(\"body\")) {\r\n break;\r\n }\r\n }\r\n\r\n return rez;\r\n };\r\n\r\n var Guestures = function (instance) {\r\n var self = this;\r\n\r\n self.instance = instance;\r\n\r\n self.$bg = instance.$refs.bg;\r\n self.$stage = instance.$refs.stage;\r\n self.$container = instance.$refs.container;\r\n\r\n self.destroy();\r\n\r\n self.$container.on(\"touchstart.fb.touch mousedown.fb.touch\", $.proxy(self, \"ontouchstart\"));\r\n };\r\n\r\n Guestures.prototype.destroy = function () {\r\n var self = this;\r\n\r\n self.$container.off(\".fb.touch\");\r\n\r\n $(document).off(\".fb.touch\");\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n self.requestId = null;\r\n }\r\n\r\n if (self.tapped) {\r\n clearTimeout(self.tapped);\r\n self.tapped = null;\r\n }\r\n };\r\n\r\n Guestures.prototype.ontouchstart = function (e) {\r\n var self = this,\r\n $target = $(e.target),\r\n instance = self.instance,\r\n current = instance.current,\r\n $slide = current.$slide,\r\n $content = current.$content,\r\n isTouchDevice = e.type == \"touchstart\";\r\n\r\n // Do not respond to both (touch and mouse) events\r\n if (isTouchDevice) {\r\n self.$container.off(\"mousedown.fb.touch\");\r\n }\r\n\r\n // Ignore right click\r\n if (e.originalEvent && e.originalEvent.button == 2) {\r\n return;\r\n }\r\n\r\n // Ignore taping on links, buttons, input elements\r\n if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) {\r\n return;\r\n }\r\n // Ignore clicks on the scrollbar\r\n if (!$target.is(\"img\") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) {\r\n return;\r\n }\r\n\r\n // Ignore clicks while zooming or closing\r\n if (!current || instance.isAnimating || current.$slide.hasClass(\"fancybox-animated\")) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n self.realPoints = self.startPoints = getPointerXY(e);\r\n\r\n if (!self.startPoints.length) {\r\n return;\r\n }\r\n\r\n // Allow other scripts to catch touch event if \"touch\" is set to false\r\n if (current.touch) {\r\n e.stopPropagation();\r\n }\r\n\r\n self.startEvent = e;\r\n\r\n self.canTap = true;\r\n self.$target = $target;\r\n self.$content = $content;\r\n self.opts = current.opts.touch;\r\n\r\n self.isPanning = false;\r\n self.isSwiping = false;\r\n self.isZooming = false;\r\n self.isScrolling = false;\r\n self.canPan = instance.canPan();\r\n\r\n self.startTime = new Date().getTime();\r\n self.distanceX = self.distanceY = self.distance = 0;\r\n\r\n self.canvasWidth = Math.round($slide[0].clientWidth);\r\n self.canvasHeight = Math.round($slide[0].clientHeight);\r\n\r\n self.contentLastPos = null;\r\n self.contentStartPos = $.fancybox.getTranslate(self.$content) || {\r\n top: 0,\r\n left: 0\r\n };\r\n self.sliderStartPos = $.fancybox.getTranslate($slide);\r\n\r\n // Since position will be absolute, but we need to make it relative to the stage\r\n self.stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n self.sliderStartPos.top -= self.stagePos.top;\r\n self.sliderStartPos.left -= self.stagePos.left;\r\n\r\n self.contentStartPos.top -= self.stagePos.top;\r\n self.contentStartPos.left -= self.stagePos.left;\r\n\r\n $(document)\r\n .off(\".fb.touch\")\r\n .on(isTouchDevice ? \"touchend.fb.touch touchcancel.fb.touch\" : \"mouseup.fb.touch mouseleave.fb.touch\", $.proxy(self, \"ontouchend\"))\r\n .on(isTouchDevice ? \"touchmove.fb.touch\" : \"mousemove.fb.touch\", $.proxy(self, \"ontouchmove\"));\r\n\r\n if ($.fancybox.isMobile) {\r\n document.addEventListener(\"scroll\", self.onscroll, true);\r\n }\r\n\r\n // Skip if clicked outside the sliding area\r\n if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) {\r\n if ($target.is(\".fancybox-image\")) {\r\n e.preventDefault();\r\n }\r\n\r\n if (!($.fancybox.isMobile && $target.parents(\".fancybox-caption\").length)) {\r\n return;\r\n }\r\n }\r\n\r\n self.isScrollable = isScrollable($target) || isScrollable($target.parent());\r\n\r\n // Check if element is scrollable and try to prevent default behavior (scrolling)\r\n if (!($.fancybox.isMobile && self.isScrollable)) {\r\n e.preventDefault();\r\n }\r\n\r\n // One finger or mouse click - swipe or pan an image\r\n if (self.startPoints.length === 1 || current.hasError) {\r\n if (self.canPan) {\r\n $.fancybox.stop(self.$content);\r\n\r\n self.isPanning = true;\r\n } else {\r\n self.isSwiping = true;\r\n }\r\n\r\n self.$container.addClass(\"fancybox-is-grabbing\");\r\n }\r\n\r\n // Two fingers - zoom image\r\n if (self.startPoints.length === 2 && current.type === \"image\" && (current.isLoaded || current.$ghost)) {\r\n self.canTap = false;\r\n self.isSwiping = false;\r\n self.isPanning = false;\r\n\r\n self.isZooming = true;\r\n\r\n $.fancybox.stop(self.$content);\r\n\r\n self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft();\r\n self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop();\r\n\r\n self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width;\r\n self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height;\r\n\r\n self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]);\r\n }\r\n };\r\n\r\n Guestures.prototype.onscroll = function (e) {\r\n var self = this;\r\n\r\n self.isScrolling = true;\r\n\r\n document.removeEventListener(\"scroll\", self.onscroll, true);\r\n };\r\n\r\n Guestures.prototype.ontouchmove = function (e) {\r\n var self = this;\r\n\r\n // Make sure user has not released over iframe or disabled element\r\n if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) {\r\n self.ontouchend(e);\r\n return;\r\n }\r\n\r\n if (self.isScrolling) {\r\n self.canTap = false;\r\n return;\r\n }\r\n\r\n self.newPoints = getPointerXY(e);\r\n\r\n if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) {\r\n return;\r\n }\r\n\r\n if (!(self.isSwiping && self.isSwiping === true)) {\r\n e.preventDefault();\r\n }\r\n\r\n self.distanceX = distance(self.newPoints[0], self.startPoints[0], \"x\");\r\n self.distanceY = distance(self.newPoints[0], self.startPoints[0], \"y\");\r\n\r\n self.distance = distance(self.newPoints[0], self.startPoints[0]);\r\n\r\n // Skip false ontouchmove events (Chrome)\r\n if (self.distance > 0) {\r\n if (self.isSwiping) {\r\n self.onSwipe(e);\r\n } else if (self.isPanning) {\r\n self.onPan();\r\n } else if (self.isZooming) {\r\n self.onZoom();\r\n }\r\n }\r\n };\r\n\r\n Guestures.prototype.onSwipe = function (e) {\r\n var self = this,\r\n instance = self.instance,\r\n swiping = self.isSwiping,\r\n left = self.sliderStartPos.left || 0,\r\n angle;\r\n\r\n // If direction is not yet determined\r\n if (swiping === true) {\r\n // We need at least 10px distance to correctly calculate an angle\r\n if (Math.abs(self.distance) > 10) {\r\n self.canTap = false;\r\n\r\n if (instance.group.length < 2 && self.opts.vertical) {\r\n self.isSwiping = \"y\";\r\n } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === \"auto\" && $(window).width() > 800)) {\r\n self.isSwiping = \"x\";\r\n } else {\r\n angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI);\r\n\r\n self.isSwiping = angle > 45 && angle < 135 ? \"y\" : \"x\";\r\n }\r\n\r\n if (self.isSwiping === \"y\" && $.fancybox.isMobile && self.isScrollable) {\r\n self.isScrolling = true;\r\n\r\n return;\r\n }\r\n\r\n instance.isDragging = self.isSwiping;\r\n\r\n // Reset points to avoid jumping, because we dropped first swipes to calculate the angle\r\n self.startPoints = self.newPoints;\r\n\r\n $.each(instance.slides, function (index, slide) {\r\n var slidePos, stagePos;\r\n\r\n $.fancybox.stop(slide.$slide);\r\n\r\n slidePos = $.fancybox.getTranslate(slide.$slide);\r\n stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n slide.$slide\r\n .css({\r\n transform: \"\",\r\n opacity: \"\",\r\n \"transition-duration\": \"\"\r\n })\r\n .removeClass(\"fancybox-animated\")\r\n .removeClass(function (index, className) {\r\n return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n });\r\n\r\n if (slide.pos === instance.current.pos) {\r\n self.sliderStartPos.top = slidePos.top - stagePos.top;\r\n self.sliderStartPos.left = slidePos.left - stagePos.left;\r\n }\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: slidePos.top - stagePos.top,\r\n left: slidePos.left - stagePos.left\r\n });\r\n });\r\n\r\n // Stop slideshow\r\n if (instance.SlideShow && instance.SlideShow.isActive) {\r\n instance.SlideShow.stop();\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Sticky edges\r\n if (swiping == \"x\") {\r\n if (\r\n self.distanceX > 0 &&\r\n (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop))\r\n ) {\r\n left = left + Math.pow(self.distanceX, 0.8);\r\n } else if (\r\n self.distanceX < 0 &&\r\n (self.instance.group.length < 2 ||\r\n (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop))\r\n ) {\r\n left = left - Math.pow(-self.distanceX, 0.8);\r\n } else {\r\n left = left + self.distanceX;\r\n }\r\n }\r\n\r\n self.sliderLastPos = {\r\n top: swiping == \"x\" ? 0 : self.sliderStartPos.top + self.distanceY,\r\n left: left\r\n };\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n\r\n self.requestId = null;\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n if (self.sliderLastPos) {\r\n $.each(self.instance.slides, function (index, slide) {\r\n var pos = slide.pos - self.instance.currPos;\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: self.sliderLastPos.top,\r\n left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter\r\n });\r\n });\r\n\r\n self.$container.addClass(\"fancybox-is-sliding\");\r\n }\r\n });\r\n };\r\n\r\n Guestures.prototype.onPan = function () {\r\n var self = this;\r\n\r\n // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit)\r\n if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) {\r\n self.startPoints = self.newPoints;\r\n return;\r\n }\r\n\r\n self.canTap = false;\r\n\r\n self.contentLastPos = self.limitMovement();\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n });\r\n };\r\n\r\n // Make panning sticky to the edges\r\n Guestures.prototype.limitMovement = function () {\r\n var self = this;\r\n\r\n var canvasWidth = self.canvasWidth;\r\n var canvasHeight = self.canvasHeight;\r\n\r\n var distanceX = self.distanceX;\r\n var distanceY = self.distanceY;\r\n\r\n var contentStartPos = self.contentStartPos;\r\n\r\n var currentOffsetX = contentStartPos.left;\r\n var currentOffsetY = contentStartPos.top;\r\n\r\n var currentWidth = contentStartPos.width;\r\n var currentHeight = contentStartPos.height;\r\n\r\n var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY;\r\n\r\n if (currentWidth > canvasWidth) {\r\n newOffsetX = currentOffsetX + distanceX;\r\n } else {\r\n newOffsetX = currentOffsetX;\r\n }\r\n\r\n newOffsetY = currentOffsetY + distanceY;\r\n\r\n // Slow down proportionally to traveled distance\r\n minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5);\r\n minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5);\r\n maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n // ->\r\n if (distanceX > 0 && newOffsetX > minTranslateX) {\r\n newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0;\r\n }\r\n\r\n // <-\r\n if (distanceX < 0 && newOffsetX < maxTranslateX) {\r\n newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0;\r\n }\r\n\r\n // \\/\r\n if (distanceY > 0 && newOffsetY > minTranslateY) {\r\n newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0;\r\n }\r\n\r\n // /\\\r\n if (distanceY < 0 && newOffsetY < maxTranslateY) {\r\n newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0;\r\n }\r\n\r\n return {\r\n top: newOffsetY,\r\n left: newOffsetX\r\n };\r\n };\r\n\r\n Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) {\r\n var self = this;\r\n\r\n var canvasWidth = self.canvasWidth;\r\n var canvasHeight = self.canvasHeight;\r\n\r\n if (newWidth > canvasWidth) {\r\n newOffsetX = newOffsetX > 0 ? 0 : newOffsetX;\r\n newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;\r\n } else {\r\n // Center horizontally\r\n newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2);\r\n }\r\n\r\n if (newHeight > canvasHeight) {\r\n newOffsetY = newOffsetY > 0 ? 0 : newOffsetY;\r\n newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;\r\n } else {\r\n // Center vertically\r\n newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2);\r\n }\r\n\r\n return {\r\n top: newOffsetY,\r\n left: newOffsetX\r\n };\r\n };\r\n\r\n Guestures.prototype.onZoom = function () {\r\n var self = this;\r\n\r\n // Calculate current distance between points to get pinch ratio and new width and height\r\n var contentStartPos = self.contentStartPos;\r\n\r\n var currentWidth = contentStartPos.width;\r\n var currentHeight = contentStartPos.height;\r\n\r\n var currentOffsetX = contentStartPos.left;\r\n var currentOffsetY = contentStartPos.top;\r\n\r\n var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]);\r\n\r\n var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;\r\n\r\n var newWidth = Math.floor(currentWidth * pinchRatio);\r\n var newHeight = Math.floor(currentHeight * pinchRatio);\r\n\r\n // This is the translation due to pinch-zooming\r\n var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX;\r\n var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;\r\n\r\n // Point between the two touches\r\n var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft();\r\n var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop();\r\n\r\n // And this is the translation due to translation of the centerpoint\r\n // between the two fingers\r\n var translateFromTranslatingX = centerPointEndX - self.centerPointStartX;\r\n var translateFromTranslatingY = centerPointEndY - self.centerPointStartY;\r\n\r\n // The new offset is the old/current one plus the total translation\r\n var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX);\r\n var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY);\r\n\r\n var newPos = {\r\n top: newOffsetY,\r\n left: newOffsetX,\r\n scaleX: pinchRatio,\r\n scaleY: pinchRatio\r\n };\r\n\r\n self.canTap = false;\r\n\r\n self.newWidth = newWidth;\r\n self.newHeight = newHeight;\r\n\r\n self.contentLastPos = newPos;\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n });\r\n };\r\n\r\n Guestures.prototype.ontouchend = function (e) {\r\n var self = this;\r\n\r\n var swiping = self.isSwiping;\r\n var panning = self.isPanning;\r\n var zooming = self.isZooming;\r\n var scrolling = self.isScrolling;\r\n\r\n self.endPoints = getPointerXY(e);\r\n self.dMs = Math.max(new Date().getTime() - self.startTime, 1);\r\n\r\n self.$container.removeClass(\"fancybox-is-grabbing\");\r\n\r\n $(document).off(\".fb.touch\");\r\n\r\n document.removeEventListener(\"scroll\", self.onscroll, true);\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n\r\n self.requestId = null;\r\n }\r\n\r\n self.isSwiping = false;\r\n self.isPanning = false;\r\n self.isZooming = false;\r\n self.isScrolling = false;\r\n\r\n self.instance.isDragging = false;\r\n\r\n if (self.canTap) {\r\n return self.onTap(e);\r\n }\r\n\r\n self.speed = 100;\r\n\r\n // Speed in px/ms\r\n self.velocityX = (self.distanceX / self.dMs) * 0.5;\r\n self.velocityY = (self.distanceY / self.dMs) * 0.5;\r\n\r\n if (panning) {\r\n self.endPanning();\r\n } else if (zooming) {\r\n self.endZooming();\r\n } else {\r\n self.endSwiping(swiping, scrolling);\r\n }\r\n\r\n return;\r\n };\r\n\r\n Guestures.prototype.endSwiping = function (swiping, scrolling) {\r\n var self = this,\r\n ret = false,\r\n len = self.instance.group.length,\r\n distanceX = Math.abs(self.distanceX),\r\n canAdvance = swiping == \"x\" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50),\r\n speedX = 300;\r\n\r\n self.sliderLastPos = null;\r\n\r\n // Close if swiped vertically / navigate if horizontally\r\n if (swiping == \"y\" && !scrolling && Math.abs(self.distanceY) > 50) {\r\n // Continue vertical movement\r\n $.fancybox.animate(\r\n self.instance.current.$slide, {\r\n top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150,\r\n opacity: 0\r\n },\r\n 200\r\n );\r\n ret = self.instance.close(true, 250);\r\n } else if (canAdvance && self.distanceX > 0) {\r\n ret = self.instance.previous(speedX);\r\n } else if (canAdvance && self.distanceX < 0) {\r\n ret = self.instance.next(speedX);\r\n }\r\n\r\n if (ret === false && (swiping == \"x\" || swiping == \"y\")) {\r\n self.instance.centerSlide(200);\r\n }\r\n\r\n self.$container.removeClass(\"fancybox-is-sliding\");\r\n };\r\n\r\n // Limit panning from edges\r\n // ========================\r\n Guestures.prototype.endPanning = function () {\r\n var self = this,\r\n newOffsetX,\r\n newOffsetY,\r\n newPos;\r\n\r\n if (!self.contentLastPos) {\r\n return;\r\n }\r\n\r\n if (self.opts.momentum === false || self.dMs > 350) {\r\n newOffsetX = self.contentLastPos.left;\r\n newOffsetY = self.contentLastPos.top;\r\n } else {\r\n // Continue movement\r\n newOffsetX = self.contentLastPos.left + self.velocityX * 500;\r\n newOffsetY = self.contentLastPos.top + self.velocityY * 500;\r\n }\r\n\r\n newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height);\r\n\r\n newPos.width = self.contentStartPos.width;\r\n newPos.height = self.contentStartPos.height;\r\n\r\n $.fancybox.animate(self.$content, newPos, 366);\r\n };\r\n\r\n Guestures.prototype.endZooming = function () {\r\n var self = this;\r\n\r\n var current = self.instance.current;\r\n\r\n var newOffsetX, newOffsetY, newPos, reset;\r\n\r\n var newWidth = self.newWidth;\r\n var newHeight = self.newHeight;\r\n\r\n if (!self.contentLastPos) {\r\n return;\r\n }\r\n\r\n newOffsetX = self.contentLastPos.left;\r\n newOffsetY = self.contentLastPos.top;\r\n\r\n reset = {\r\n top: newOffsetY,\r\n left: newOffsetX,\r\n width: newWidth,\r\n height: newHeight,\r\n scaleX: 1,\r\n scaleY: 1\r\n };\r\n\r\n // Reset scalex/scaleY values; this helps for perfomance and does not break animation\r\n $.fancybox.setTranslate(self.$content, reset);\r\n\r\n if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) {\r\n self.instance.scaleToFit(150);\r\n } else if (newWidth > current.width || newHeight > current.height) {\r\n self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150);\r\n } else {\r\n newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight);\r\n\r\n $.fancybox.animate(self.$content, newPos, 150);\r\n }\r\n };\r\n\r\n Guestures.prototype.onTap = function (e) {\r\n var self = this;\r\n var $target = $(e.target);\r\n\r\n var instance = self.instance;\r\n var current = instance.current;\r\n\r\n var endPoints = (e && getPointerXY(e)) || self.startPoints;\r\n\r\n var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0;\r\n var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0;\r\n\r\n var where;\r\n\r\n var process = function (prefix) {\r\n var action = current.opts[prefix];\r\n\r\n if ($.isFunction(action)) {\r\n action = action.apply(instance, [current, e]);\r\n }\r\n\r\n if (!action) {\r\n return;\r\n }\r\n\r\n switch (action) {\r\n case \"close\":\r\n instance.close(self.startEvent);\r\n\r\n break;\r\n\r\n case \"toggleControls\":\r\n instance.toggleControls();\r\n\r\n break;\r\n\r\n case \"next\":\r\n instance.next();\r\n\r\n break;\r\n\r\n case \"nextOrClose\":\r\n if (instance.group.length > 1) {\r\n instance.next();\r\n } else {\r\n instance.close(self.startEvent);\r\n }\r\n\r\n break;\r\n\r\n case \"zoom\":\r\n if (current.type == \"image\" && (current.isLoaded || current.$ghost)) {\r\n if (instance.canPan()) {\r\n instance.scaleToFit();\r\n } else if (instance.isScaledDown()) {\r\n instance.scaleToActual(tapX, tapY);\r\n } else if (instance.group.length < 2) {\r\n instance.close(self.startEvent);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n // Ignore right click\r\n if (e.originalEvent && e.originalEvent.button == 2) {\r\n return;\r\n }\r\n\r\n // Skip if clicked on the scrollbar\r\n if (!$target.is(\"img\") && tapX > $target[0].clientWidth + $target.offset().left) {\r\n return;\r\n }\r\n\r\n // Check where is clicked\r\n if ($target.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\")) {\r\n where = \"Outside\";\r\n } else if ($target.is(\".fancybox-slide\")) {\r\n where = \"Slide\";\r\n } else if (\r\n instance.current.$content &&\r\n instance.current.$content\r\n .find($target)\r\n .addBack()\r\n .filter($target).length\r\n ) {\r\n where = \"Content\";\r\n } else {\r\n return;\r\n }\r\n\r\n // Check if this is a double tap\r\n if (self.tapped) {\r\n // Stop previously created single tap\r\n clearTimeout(self.tapped);\r\n self.tapped = null;\r\n\r\n // Skip if distance between taps is too big\r\n if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) {\r\n return this;\r\n }\r\n\r\n // OK, now we assume that this is a double-tap\r\n process(\"dblclick\" + where);\r\n } else {\r\n // Single tap will be processed if user has not clicked second time within 300ms\r\n // or there is no need to wait for double-tap\r\n self.tapX = tapX;\r\n self.tapY = tapY;\r\n\r\n if (current.opts[\"dblclick\" + where] && current.opts[\"dblclick\" + where] !== current.opts[\"click\" + where]) {\r\n self.tapped = setTimeout(function () {\r\n self.tapped = null;\r\n\r\n if (!instance.isAnimating) {\r\n process(\"click\" + where);\r\n }\r\n }, 500);\r\n } else {\r\n process(\"click\" + where);\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n $(document)\r\n .on(\"onActivate.fb\", function (e, instance) {\r\n if (instance && !instance.Guestures) {\r\n instance.Guestures = new Guestures(instance);\r\n }\r\n })\r\n .on(\"beforeClose.fb\", function (e, instance) {\r\n if (instance && instance.Guestures) {\r\n instance.Guestures.destroy();\r\n }\r\n });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// SlideShow\r\n// Enables slideshow functionality\r\n//\r\n// Example of usage:\r\n// $.fancybox.getInstance().SlideShow.start()\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n slideShow: '\"\r\n },\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000,\r\n progress: true\r\n }\r\n });\r\n\r\n var SlideShow = function (instance) {\r\n this.instance = instance;\r\n this.init();\r\n };\r\n\r\n $.extend(SlideShow.prototype, {\r\n timer: null,\r\n isActive: false,\r\n $button: null,\r\n\r\n init: function () {\r\n var self = this,\r\n instance = self.instance,\r\n opts = instance.group[instance.currIndex].opts.slideShow;\r\n\r\n self.$button = instance.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\", function () {\r\n self.toggle();\r\n });\r\n\r\n if (instance.group.length < 2 || !opts) {\r\n self.$button.hide();\r\n } else if (opts.progress) {\r\n self.$progress = $('
').appendTo(instance.$refs.inner);\r\n }\r\n },\r\n\r\n set: function (force) {\r\n var self = this,\r\n instance = self.instance,\r\n current = instance.current;\r\n\r\n // Check if reached last element\r\n if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) {\r\n if (self.isActive && current.contentType !== \"video\") {\r\n if (self.$progress) {\r\n $.fancybox.animate(self.$progress.show(), {\r\n scaleX: 1\r\n }, current.opts.slideShow.speed);\r\n }\r\n\r\n self.timer = setTimeout(function () {\r\n if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) {\r\n instance.jumpTo(0);\r\n } else {\r\n instance.next();\r\n }\r\n }, current.opts.slideShow.speed);\r\n }\r\n } else {\r\n self.stop();\r\n instance.idleSecondsCounter = 0;\r\n instance.showControls();\r\n }\r\n },\r\n\r\n clear: function () {\r\n var self = this;\r\n\r\n clearTimeout(self.timer);\r\n\r\n self.timer = null;\r\n\r\n if (self.$progress) {\r\n self.$progress.removeAttr(\"style\").hide();\r\n }\r\n },\r\n\r\n start: function () {\r\n var self = this,\r\n current = self.instance.current;\r\n\r\n if (current) {\r\n self.$button\r\n .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP)\r\n .removeClass(\"fancybox-button--play\")\r\n .addClass(\"fancybox-button--pause\");\r\n\r\n self.isActive = true;\r\n\r\n if (current.isComplete) {\r\n self.set(true);\r\n }\r\n\r\n self.instance.trigger(\"onSlideShowChange\", true);\r\n }\r\n },\r\n\r\n stop: function () {\r\n var self = this,\r\n current = self.instance.current;\r\n\r\n self.clear();\r\n\r\n self.$button\r\n .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START)\r\n .removeClass(\"fancybox-button--pause\")\r\n .addClass(\"fancybox-button--play\");\r\n\r\n self.isActive = false;\r\n\r\n self.instance.trigger(\"onSlideShowChange\", false);\r\n\r\n if (self.$progress) {\r\n self.$progress.removeAttr(\"style\").hide();\r\n }\r\n },\r\n\r\n toggle: function () {\r\n var self = this;\r\n\r\n if (self.isActive) {\r\n self.stop();\r\n } else {\r\n self.start();\r\n }\r\n }\r\n });\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n if (instance && !instance.SlideShow) {\r\n instance.SlideShow = new SlideShow(instance);\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (firstRun) {\r\n if (SlideShow && current.opts.slideShow.autoStart) {\r\n SlideShow.start();\r\n }\r\n } else if (SlideShow && SlideShow.isActive) {\r\n SlideShow.clear();\r\n }\r\n },\r\n\r\n \"afterShow.fb\": function (e, instance, current) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow && SlideShow.isActive) {\r\n SlideShow.set();\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n // \"P\" or Spacebar\r\n if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is(\"button,a,input\")) {\r\n keypress.preventDefault();\r\n\r\n SlideShow.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb onDeactivate.fb\": function (e, instance) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow) {\r\n SlideShow.stop();\r\n }\r\n }\r\n });\r\n\r\n // Page Visibility API to pause slideshow when window is not active\r\n $(document).on(\"visibilitychange\", function () {\r\n var instance = $.fancybox.getInstance(),\r\n SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow && SlideShow.isActive) {\r\n if (document.hidden) {\r\n SlideShow.clear();\r\n } else {\r\n SlideShow.set();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// FullScreen\r\n// Adds fullscreen functionality\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n // Collection of methods supported by user browser\r\n var fn = (function () {\r\n var fnMap = [\r\n [\"requestFullscreen\", \"exitFullscreen\", \"fullscreenElement\", \"fullscreenEnabled\", \"fullscreenchange\", \"fullscreenerror\"],\r\n // new WebKit\r\n [\r\n \"webkitRequestFullscreen\",\r\n \"webkitExitFullscreen\",\r\n \"webkitFullscreenElement\",\r\n \"webkitFullscreenEnabled\",\r\n \"webkitfullscreenchange\",\r\n \"webkitfullscreenerror\"\r\n ],\r\n // old WebKit (Safari 5.1)\r\n [\r\n \"webkitRequestFullScreen\",\r\n \"webkitCancelFullScreen\",\r\n \"webkitCurrentFullScreenElement\",\r\n \"webkitCancelFullScreen\",\r\n \"webkitfullscreenchange\",\r\n \"webkitfullscreenerror\"\r\n ],\r\n [\r\n \"mozRequestFullScreen\",\r\n \"mozCancelFullScreen\",\r\n \"mozFullScreenElement\",\r\n \"mozFullScreenEnabled\",\r\n \"mozfullscreenchange\",\r\n \"mozfullscreenerror\"\r\n ],\r\n [\"msRequestFullscreen\", \"msExitFullscreen\", \"msFullscreenElement\", \"msFullscreenEnabled\", \"MSFullscreenChange\", \"MSFullscreenError\"]\r\n ];\r\n\r\n var ret = {};\r\n\r\n for (var i = 0; i < fnMap.length; i++) {\r\n var val = fnMap[i];\r\n\r\n if (val && val[1] in document) {\r\n for (var j = 0; j < val.length; j++) {\r\n ret[fnMap[0][j]] = val[j];\r\n }\r\n\r\n return ret;\r\n }\r\n }\r\n\r\n return false;\r\n })();\r\n\r\n if (fn) {\r\n var FullScreen = {\r\n request: function (elem) {\r\n elem = elem || document.documentElement;\r\n\r\n elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT);\r\n },\r\n exit: function () {\r\n document[fn.exitFullscreen]();\r\n },\r\n toggle: function (elem) {\r\n elem = elem || document.documentElement;\r\n\r\n if (this.isFullscreen()) {\r\n this.exit();\r\n } else {\r\n this.request(elem);\r\n }\r\n },\r\n isFullscreen: function () {\r\n return Boolean(document[fn.fullscreenElement]);\r\n },\r\n enabled: function () {\r\n return Boolean(document[fn.fullscreenEnabled]);\r\n }\r\n };\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n fullScreen: '\"\r\n },\r\n fullScreen: {\r\n autoStart: false\r\n }\r\n });\r\n\r\n $(document).on(fn.fullscreenchange, function () {\r\n var isFullscreen = FullScreen.isFullscreen(),\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n // If image is zooming, then force to stop and reposition properly\r\n if (instance.current && instance.current.type === \"image\" && instance.isAnimating) {\r\n instance.isAnimating = false;\r\n\r\n instance.update(true, true, 0);\r\n\r\n if (!instance.isComplete) {\r\n instance.complete();\r\n }\r\n }\r\n\r\n instance.trigger(\"onFullscreenChange\", isFullscreen);\r\n\r\n instance.$refs.container.toggleClass(\"fancybox-is-fullscreen\", isFullscreen);\r\n\r\n instance.$refs.toolbar\r\n .find(\"[data-fancybox-fullscreen]\")\r\n .toggleClass(\"fancybox-button--fsenter\", !isFullscreen)\r\n .toggleClass(\"fancybox-button--fsexit\", isFullscreen);\r\n }\r\n });\r\n }\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var $container;\r\n\r\n if (!fn) {\r\n instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").remove();\r\n\r\n return;\r\n }\r\n\r\n if (instance && instance.group[instance.currIndex].opts.fullScreen) {\r\n $container = instance.$refs.container;\r\n\r\n $container.on(\"click.fb-fullscreen\", \"[data-fancybox-fullscreen]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n FullScreen.toggle();\r\n });\r\n\r\n if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) {\r\n FullScreen.request();\r\n }\r\n\r\n // Expose API\r\n instance.FullScreen = FullScreen;\r\n } else if (instance) {\r\n instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").hide();\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n // \"F\"\r\n if (instance && instance.FullScreen && keycode === 70) {\r\n keypress.preventDefault();\r\n\r\n instance.FullScreen.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance) {\r\n if (instance && instance.FullScreen && instance.$refs.container.hasClass(\"fancybox-is-fullscreen\")) {\r\n FullScreen.exit();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Thumbs\r\n// Displays thumbnails in a grid\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n var CLASS = \"fancybox-thumbs\",\r\n CLASS_ACTIVE = CLASS + \"-active\";\r\n\r\n // Make sure there are default values\r\n $.fancybox.defaults = $.extend(\r\n true, {\r\n btnTpl: {\r\n thumbs: '\"\r\n },\r\n thumbs: {\r\n autoStart: false, // Display thumbnails on opening\r\n hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n parentEl: \".fancybox-container\", // Container is injected into this element\r\n axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n }\r\n },\r\n $.fancybox.defaults\r\n );\r\n\r\n var FancyThumbs = function (instance) {\r\n this.init(instance);\r\n };\r\n\r\n $.extend(FancyThumbs.prototype, {\r\n $button: null,\r\n $grid: null,\r\n $list: null,\r\n isVisible: false,\r\n isActive: false,\r\n\r\n init: function (instance) {\r\n var self = this,\r\n group = instance.group,\r\n enabled = 0;\r\n\r\n self.instance = instance;\r\n self.opts = group[instance.currIndex].opts.thumbs;\r\n\r\n instance.Thumbs = self;\r\n\r\n self.$button = instance.$refs.toolbar.find(\"[data-fancybox-thumbs]\");\r\n\r\n // Enable thumbs if at least two group items have thumbnails\r\n for (var i = 0, len = group.length; i < len; i++) {\r\n if (group[i].thumb) {\r\n enabled++;\r\n }\r\n\r\n if (enabled > 1) {\r\n break;\r\n }\r\n }\r\n\r\n if (enabled > 1 && !!self.opts) {\r\n self.$button.removeAttr(\"style\").on(\"click\", function () {\r\n self.toggle();\r\n });\r\n\r\n self.isActive = true;\r\n } else {\r\n self.$button.hide();\r\n }\r\n },\r\n\r\n create: function () {\r\n var self = this,\r\n instance = self.instance,\r\n parentEl = self.opts.parentEl,\r\n list = [],\r\n src;\r\n\r\n if (!self.$grid) {\r\n // Create main element\r\n self.$grid = $('
').appendTo(\r\n instance.$refs.container\r\n .find(parentEl)\r\n .addBack()\r\n .filter(parentEl)\r\n );\r\n\r\n // Add \"click\" event that performs gallery navigation\r\n self.$grid.on(\"click\", \"a\", function () {\r\n instance.jumpTo($(this).attr(\"data-index\"));\r\n });\r\n }\r\n\r\n // Build the list\r\n if (!self.$list) {\r\n self.$list = $('
').appendTo(self.$grid);\r\n }\r\n\r\n $.each(instance.group, function (i, item) {\r\n src = item.thumb;\r\n\r\n if (!src && item.type === \"image\") {\r\n src = item.src;\r\n }\r\n\r\n list.push(\r\n '\"\r\n );\r\n });\r\n\r\n self.$list[0].innerHTML = list.join(\"\");\r\n\r\n if (self.opts.axis === \"x\") {\r\n // Set fixed width for list element to enable horizontal scrolling\r\n self.$list.width(\r\n parseInt(self.$grid.css(\"padding-right\"), 10) +\r\n instance.group.length *\r\n self.$list\r\n .children()\r\n .eq(0)\r\n .outerWidth(true)\r\n );\r\n }\r\n },\r\n\r\n focus: function (duration) {\r\n var self = this,\r\n $list = self.$list,\r\n $grid = self.$grid,\r\n thumb,\r\n thumbPos;\r\n\r\n if (!self.instance.current) {\r\n return;\r\n }\r\n\r\n thumb = $list\r\n .children()\r\n .removeClass(CLASS_ACTIVE)\r\n .filter('[data-index=\"' + self.instance.current.index + '\"]')\r\n .addClass(CLASS_ACTIVE);\r\n\r\n thumbPos = thumb.position();\r\n\r\n // Check if need to scroll to make current thumb visible\r\n if (self.opts.axis === \"y\" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) {\r\n $list.stop().animate({\r\n scrollTop: $list.scrollTop() + thumbPos.top\r\n },\r\n duration\r\n );\r\n } else if (\r\n self.opts.axis === \"x\" &&\r\n (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth()))\r\n ) {\r\n $list\r\n .parent()\r\n .stop()\r\n .animate({\r\n scrollLeft: thumbPos.left\r\n },\r\n duration\r\n );\r\n }\r\n },\r\n\r\n update: function () {\r\n var that = this;\r\n that.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\", this.isVisible);\r\n\r\n if (that.isVisible) {\r\n if (!that.$grid) {\r\n that.create();\r\n }\r\n\r\n that.instance.trigger(\"onThumbsShow\");\r\n\r\n that.focus(0);\r\n } else if (that.$grid) {\r\n that.instance.trigger(\"onThumbsHide\");\r\n }\r\n\r\n // Update content position\r\n that.instance.update();\r\n },\r\n\r\n hide: function () {\r\n this.isVisible = false;\r\n this.update();\r\n },\r\n\r\n show: function () {\r\n this.isVisible = true;\r\n this.update();\r\n },\r\n\r\n toggle: function () {\r\n this.isVisible = !this.isVisible;\r\n this.update();\r\n }\r\n });\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var Thumbs;\r\n\r\n if (instance && !instance.Thumbs) {\r\n Thumbs = new FancyThumbs(instance);\r\n\r\n if (Thumbs.isActive && Thumbs.opts.autoStart === true) {\r\n Thumbs.show();\r\n }\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, item, firstRun) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n if (Thumbs && Thumbs.isVisible) {\r\n Thumbs.focus(firstRun ? 0 : 250);\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n // \"G\"\r\n if (Thumbs && Thumbs.isActive && keycode === 71) {\r\n keypress.preventDefault();\r\n\r\n Thumbs.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) {\r\n Thumbs.$grid.hide();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n//// ==========================================================================\r\n//\r\n// Share\r\n// Displays simple form for sharing current url\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n share: '\"\r\n },\r\n share: {\r\n url: function (instance, item) {\r\n return (\r\n (!instance.currentHash && !(item.type === \"inline\" || item.type === \"html\") ? item.origSrc || item.src : false) || window.location\r\n );\r\n },\r\n tpl: '
' +\r\n \"

{{SHARE}}

\" +\r\n \"

\" +\r\n '' +\r\n '' +\r\n \"Facebook\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Twitter\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Pinterest\" +\r\n \"\" +\r\n \"

\" +\r\n '

' +\r\n \"
\"\r\n }\r\n });\r\n\r\n function escapeHtml(string) {\r\n var entityMap = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': \""\",\r\n \"'\": \"'\",\r\n \"/\": \"/\",\r\n \"`\": \"`\",\r\n \"=\": \"=\"\r\n };\r\n\r\n return String(string).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n return entityMap[s];\r\n });\r\n }\r\n\r\n $(document).on(\"click\", \"[data-fancybox-share]\", function () {\r\n var instance = $.fancybox.getInstance(),\r\n current = instance.current || null,\r\n url,\r\n tpl;\r\n\r\n if (!current) {\r\n return;\r\n }\r\n\r\n if ($.type(current.opts.share.url) === \"function\") {\r\n url = current.opts.share.url.apply(current, [instance, current]);\r\n }\r\n\r\n tpl = current.opts.share.tpl\r\n .replace(/\\{\\{media\\}\\}/g, current.type === \"image\" ? encodeURIComponent(current.src) : \"\")\r\n .replace(/\\{\\{url\\}\\}/g, encodeURIComponent(url))\r\n .replace(/\\{\\{url_raw\\}\\}/g, escapeHtml(url))\r\n .replace(/\\{\\{descr\\}\\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : \"\");\r\n\r\n $.fancybox.open({\r\n src: instance.translate(instance, tpl),\r\n type: \"html\",\r\n opts: {\r\n touch: false,\r\n animationEffect: false,\r\n afterLoad: function (shareInstance, shareCurrent) {\r\n // Close self if parent instance is closing\r\n instance.$refs.container.one(\"beforeClose.fb\", function () {\r\n shareInstance.close(null, 0);\r\n });\r\n\r\n // Opening links in a popup window\r\n shareCurrent.$content.find(\".fancybox-share__button\").click(function () {\r\n window.open(this.href, \"Share\", \"width=550, height=450\");\r\n return false;\r\n });\r\n },\r\n mobile: {\r\n autoFocus: false\r\n }\r\n }\r\n });\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Hash\r\n// Enables linking to each modal\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n \"use strict\";\r\n\r\n // Simple $.escapeSelector polyfill (for jQuery prior v3)\r\n if (!$.escapeSelector) {\r\n $.escapeSelector = function (sel) {\r\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\r\n var fcssescape = function (ch, asCodePoint) {\r\n if (asCodePoint) {\r\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n if (ch === \"\\0\") {\r\n return \"\\uFFFD\";\r\n }\r\n\r\n // Control characters and (dependent upon position) numbers get escaped as code points\r\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\r\n }\r\n\r\n // Other potentially-special ASCII characters get backslash-escaped\r\n return \"\\\\\" + ch;\r\n };\r\n\r\n return (sel + \"\").replace(rcssescape, fcssescape);\r\n };\r\n }\r\n\r\n // Get info about gallery name and current index from url\r\n function parseUrl() {\r\n var hash = window.location.hash.substr(1),\r\n rez = hash.split(\"-\"),\r\n index = rez.length > 1 && /^\\+?\\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1,\r\n gallery = rez.join(\"-\");\r\n\r\n return {\r\n hash: hash,\r\n /* Index is starting from 1 */\r\n index: index < 1 ? 1 : index,\r\n gallery: gallery\r\n };\r\n }\r\n\r\n // Trigger click evnt on links to open new fancyBox instance\r\n function triggerFromUrl(url) {\r\n if (url.gallery !== \"\") {\r\n // If we can find element matching 'data-fancybox' atribute,\r\n // then triggering click event should start fancyBox\r\n $(\"[data-fancybox='\" + $.escapeSelector(url.gallery) + \"']\")\r\n .eq(url.index - 1)\r\n .focus()\r\n .trigger(\"click.fb-start\");\r\n }\r\n }\r\n\r\n // Get gallery name from current instance\r\n function getGalleryID(instance) {\r\n var opts, ret;\r\n\r\n if (!instance) {\r\n return false;\r\n }\r\n\r\n opts = instance.current ? instance.current.opts : instance.opts;\r\n ret = opts.hash || (opts.$orig ? opts.$orig.data(\"fancybox\") || opts.$orig.data(\"fancybox-trigger\") : \"\");\r\n\r\n return ret === \"\" ? false : ret;\r\n }\r\n\r\n // Start when DOM becomes ready\r\n $(function () {\r\n // Check if user has disabled this module\r\n if ($.fancybox.defaults.hash === false) {\r\n return;\r\n }\r\n\r\n // Update hash when opening/closing fancyBox\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var url, gallery;\r\n\r\n if (instance.group[instance.currIndex].opts.hash === false) {\r\n return;\r\n }\r\n\r\n url = parseUrl();\r\n gallery = getGalleryID(instance);\r\n\r\n // Make sure gallery start index matches index from hash\r\n if (gallery && url.gallery && gallery == url.gallery) {\r\n instance.currIndex = url.index - 1;\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n var gallery;\r\n\r\n if (!current || current.opts.hash === false) {\r\n return;\r\n }\r\n\r\n // Check if need to update window hash\r\n gallery = getGalleryID(instance);\r\n\r\n if (!gallery) {\r\n return;\r\n }\r\n\r\n // Variable containing last hash value set by fancyBox\r\n // It will be used to determine if fancyBox needs to close after hash change is detected\r\n instance.currentHash = gallery + (instance.group.length > 1 ? \"-\" + (current.index + 1) : \"\");\r\n\r\n // If current hash is the same (this instance most likely is opened by hashchange), then do nothing\r\n if (window.location.hash === \"#\" + instance.currentHash) {\r\n return;\r\n }\r\n\r\n if (firstRun && !instance.origHash) {\r\n instance.origHash = window.location.hash;\r\n }\r\n\r\n if (instance.hashTimer) {\r\n clearTimeout(instance.hashTimer);\r\n }\r\n\r\n // Update hash\r\n instance.hashTimer = setTimeout(function () {\r\n if (\"replaceState\" in window.history) {\r\n window.history[firstRun ? \"pushState\" : \"replaceState\"]({},\r\n document.title,\r\n window.location.pathname + window.location.search + \"#\" + instance.currentHash\r\n );\r\n\r\n if (firstRun) {\r\n instance.hasCreatedHistory = true;\r\n }\r\n } else {\r\n window.location.hash = instance.currentHash;\r\n }\r\n\r\n instance.hashTimer = null;\r\n }, 300);\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance, current) {\r\n if (!current || current.opts.hash === false) {\r\n return;\r\n }\r\n\r\n clearTimeout(instance.hashTimer);\r\n\r\n // Goto previous history entry\r\n if (instance.currentHash && instance.hasCreatedHistory) {\r\n window.history.back();\r\n } else if (instance.currentHash) {\r\n if (\"replaceState\" in window.history) {\r\n window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || \"\"));\r\n } else {\r\n window.location.hash = instance.origHash;\r\n }\r\n }\r\n\r\n instance.currentHash = null;\r\n }\r\n });\r\n\r\n // Check if need to start/close after url has changed\r\n $(window).on(\"hashchange.fb\", function () {\r\n var url = parseUrl(),\r\n fb = null;\r\n\r\n // Find last fancyBox instance that has \"hash\"\r\n $.each(\r\n $(\".fancybox-container\")\r\n .get()\r\n .reverse(),\r\n function (index, value) {\r\n var tmp = $(value).data(\"FancyBox\");\r\n\r\n if (tmp && tmp.currentHash) {\r\n fb = tmp;\r\n return false;\r\n }\r\n }\r\n );\r\n\r\n if (fb) {\r\n // Now, compare hash values\r\n if (fb.currentHash !== url.gallery + \"-\" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) {\r\n fb.currentHash = null;\r\n\r\n fb.close();\r\n }\r\n } else if (url.gallery !== \"\") {\r\n triggerFromUrl(url);\r\n }\r\n });\r\n\r\n // Check current hash and trigger click event on matching element to start fancyBox, if needed\r\n setTimeout(function () {\r\n if (!$.fancybox.getInstance()) {\r\n triggerFromUrl(parseUrl());\r\n }\r\n }, 50);\r\n });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Wheel\r\n// Basic mouse weheel support for gallery navigation\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n var prevTime = new Date().getTime();\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance, current) {\r\n instance.$refs.stage.on(\"mousewheel DOMMouseScroll wheel MozMousePixelScroll\", function (e) {\r\n var current = instance.current,\r\n currTime = new Date().getTime();\r\n\r\n if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === \"auto\" && current.type !== \"image\")) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (current.$slide.hasClass(\"fancybox-animated\")) {\r\n return;\r\n }\r\n\r\n e = e.originalEvent || e;\r\n\r\n if (currTime - prevTime < 250) {\r\n return;\r\n }\r\n\r\n prevTime = currTime;\r\n\r\n instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? \"next\" : \"previous\"]();\r\n });\r\n }\r\n });\r\n})(document, jQuery);","require(\"./bootstrap\");\nrequire(\"@fancyapps/fancybox\");\n\nconst responsiveTabs = require(\"responsive-tabs\");\nconst Isotope = require(\"isotope-layout\");\nconst jQueryBridget = require(\"jquery-bridget\");\njQueryBridget(\"isotope\", Isotope, $);\n// var $ = jQuery.noConflict();\n\nimport objectFitImages from \"object-fit-images\";\n\nimport counterUp from \"counterup2\";\nimport validate from \"jquery-validation\";\nimport \"waypoints/lib/noframework.waypoints.min.js\";\nimport \"slick-carousel\";\nconst counterup2 = require(\"counterup2\");\nconst countup = require(\"countup.js\");\n\n(function ($) {\n \"use strict\";\n\n $(window).on(\"load resize\", function () {\n // text box\n\n function textBox() {\n const textBox = $(\".text-box\");\n\n if (!textBox.length) {\n return;\n }\n\n textBox.each(function () {\n const $this = $(this);\n const eachHeight = parseInt(\n $this.find(\".text-box__text\").css(\"height\")\n );\n const slideBlock = $this.find(\".text-box__details\");\n\n slideBlock.css({\n transform: \"translateY(\" + eachHeight + \"px)\",\n });\n });\n }\n\n textBox();\n });\n\n $(window).on(\"scroll\", function () {\n // header front-1\n\n function headerFrontOne() {\n const header = $(\".header-common\");\n\n if (!header.length) {\n return;\n }\n\n const lower = $(\".header-common .header__lower\");\n const scroll = $(window).scrollTop();\n\n if (scroll >= 1) {\n lower.addClass(\"header__lower--fixed\");\n } else {\n lower.removeClass(\"header__lower--fixed\");\n }\n }\n\n headerFrontOne();\n\n // header front-2\n\n function headerFrontTwo() {\n const header = $(\".header-f2\");\n\n if (!header.length) {\n return;\n }\n\n const topSize = parseInt(\n header.find(\".header__lower\").css(\"height\")\n );\n const lower = $(\".header-f2 .header__top\");\n const scroll = $(window).scrollTop();\n\n if (scroll >= 1) {\n header.css({\n transform: \"translate(-50%, -\" + topSize + \"px)\",\n });\n lower.addClass(\"lower--fixed\");\n } else {\n header.css({ transform: \"translate(-50%, -\" + 0 + \"px)\" });\n lower.removeClass(\"lower--fixed\");\n }\n }\n\n headerFrontTwo();\n\n // header front-3\n\n function headerFrontThree() {\n const header = $(\".header-f3\");\n\n if (!header.length) {\n return;\n }\n\n const topSize = parseInt(\n header.find(\".header__lower\").css(\"height\")\n );\n const lower = $(\".header-f3 .header__top\");\n const scroll = $(window).scrollTop();\n\n if (scroll >= 1) {\n header.css({\n transform: \"translate(-50%, -\" + topSize + \"px)\",\n });\n lower.addClass(\"lower--fixed\");\n } else {\n header.css({ transform: \"translate(-50%, -\" + 0 + \"px)\" });\n lower.removeClass(\"lower--fixed\");\n }\n }\n\n headerFrontThree();\n\n // header intro\n\n function headerIntro() {\n const header = $(\".header-intro\");\n\n if (!header.length) {\n return;\n }\n\n const scroll = $(window).scrollTop();\n\n if (scroll >= 1) {\n header.addClass(\"header--fixed\");\n } else {\n header.removeClass(\"header--fixed\");\n }\n }\n\n headerIntro();\n });\n\n $(document).ready(function () {\n // object fit\n\n objectFitImages();\n\n // menu trigger\n\n function menuTrigger() {\n const trigger = $(\".hamburger\");\n\n if (!trigger.length) {\n return;\n }\n\n $(\".hamburger\").on(\"click\", function () {\n $(\"body\").toggleClass(\"body--static\");\n $(\".menu-dropdown\").toggleClass(\"menu-dropdown--active\");\n });\n }\n\n menuTrigger();\n\n // mobile menu\n\n function mobileMenu() {\n $(\".screen--trigger\").on(\"click\", function () {\n const triggerValue = $(this).data(\"category\");\n\n $(\".screen--start\").addClass(\"screen--inactive\");\n\n $(\".menu-dropdown__inner\").each(function () {\n if ($(this).data(\"value\") === triggerValue) {\n $(this).addClass(\"menu-dropdown__inner--active\");\n }\n });\n });\n\n $(\".screen__back\").on(\"click\", function () {\n $(\".menu-dropdown__inner\").removeClass(\n \"menu-dropdown__inner--active\"\n );\n $(\".screen--start\").removeClass(\"screen--inactive\");\n });\n\n $(\".screen__link\").on(\"click\", function () {\n $(\"body\").removeClass(\"body--static\");\n $(\".menu-dropdown\").removeClass(\"menu-dropdown--active\");\n });\n\n $(\".aside-menu .main-menu__item .main-menu__link\").on(\n \"click\",\n function () {\n $(\"body\").removeClass(\"body--static\");\n $(\".menu-dropdown\").removeClass(\"menu-dropdown--active\");\n }\n );\n }\n\n mobileMenu();\n\n // scroll to id\n\n function scrollToId() {\n var scroll = $(\"a.main-menu__link--scroll\");\n\n if (!scroll.length) {\n return;\n }\n\n scroll.mPageScroll2id({\n highlightClass: \"main-menu__link--highlighted\",\n });\n }\n\n scrollToId();\n\n // header bar\n\n $(window).on(\"scroll\", function () {\n const lower = $(\".header-common .header__lower\");\n const scroll = $(window).scrollTop();\n\n if (scroll >= 1) {\n lower.addClass(\"header__lower--fixed\");\n } else {\n lower.removeClass(\"header__lower--fixed\");\n }\n });\n\n // alert close\n\n $(\".alert__close\").on(\"click\", function () {\n $(this).parent(\".alert\").fadeOut(300);\n });\n\n // scroll to id\n\n function scrollTo() {\n const scrollTo = $('a.anchor[href^=\"#\"]');\n\n if (!scrollTo.length) {\n return;\n }\n\n scrollTo.on(\"click\", function (e) {\n const anchor = $(this);\n\n $(\"html, body\")\n .stop()\n .animate(\n {\n scrollTop: $(anchor.attr(\"href\")).offset().top,\n },\n 600\n );\n\n e.preventDefault();\n });\n }\n\n scrollTo();\n\n // accordion\n\n function accordion() {\n const accordion = $(\".accordion\");\n\n if (!accordion.length) {\n return;\n }\n\n const close = $(\".accordion .accordion__close\");\n\n close.on(\"click\", function () {\n $(this)\n .toggleClass(\"accordion__close--active\")\n .parents()\n .children(\".accordion__text-block\")\n .stop()\n .slideToggle(300);\n });\n }\n\n accordion();\n\n // counter\n\n function counter() {\n var counter = $(\".js-counter\");\n\n if (!counter.length) {\n return;\n var counter = document.querySelector(\".js-counter\");\n }\n\n if (!counter) {\n return;\n }\n\n counter.counterUp({\n delay: 10,\n time: 1500,\n });\n\n // counterUp(counter, {\n // delay: 10,\n // time: 1500,\n // });\n }\n\n // counter();\n\n // bar chart\n\n function barChart() {\n const barChart = $(\"#bar-chart\");\n\n if (!barChart.length) {\n return;\n }\n\n const ctx = barChart[0].getContext(\"2d\");\n\n const myChart = new Chart(ctx, {\n type: \"bar\",\n data: {\n labels: [\n \"Red\",\n \"Blue\",\n \"Yellow\",\n \"Green\",\n \"Purple\",\n \"Orange\",\n ],\n datasets: [\n {\n label: \"# of Votes\",\n data: [12, 19, 3, 5, 2, 3],\n backgroundColor: [\n \"rgba(255, 99, 132, 0.2)\",\n \"rgba(54, 162, 235, 0.2)\",\n \"rgba(255, 206, 86, 0.2)\",\n \"rgba(75, 192, 192, 0.2)\",\n \"rgba(153, 102, 255, 0.2)\",\n \"rgba(255, 159, 64, 0.2)\",\n ],\n borderColor: [\n \"rgba(255, 99, 132, 1)\",\n \"rgba(54, 162, 235, 1)\",\n \"rgba(255, 206, 86, 1)\",\n \"rgba(75, 192, 192, 1)\",\n \"rgba(153, 102, 255, 1)\",\n \"rgba(255, 159, 64, 1)\",\n ],\n borderWidth: 1,\n },\n ],\n },\n options: {\n scales: {\n yAxes: [\n {\n ticks: {\n beginAtZero: true,\n },\n },\n ],\n },\n },\n });\n }\n\n barChart();\n\n // line chart\n\n function lineChart() {\n const lineChart = $(\"#line-chart\");\n\n if (!lineChart.length) {\n return;\n }\n\n const ctx = lineChart[0].getContext(\"2d\");\n\n const myChart = new Chart(ctx, {\n type: \"line\",\n data: {\n labels: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n ],\n datasets: [\n {\n label: \"Red\",\n data: [330, 250, 480, 120, 220, 130, 255],\n backgroundColor: \"rgba(255, 99, 132, 0.2)\",\n borderColor: \"rgba(255, 99, 132, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Blue\",\n data: [230, 350, 120, 240, 360, 180, 295],\n backgroundColor: \"rgba(105, 195, 255, 0.2)\",\n borderColor: \"rgba(105, 195, 255, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Yellow\",\n data: [450, 290, 123, 332, 439, 222, 340],\n backgroundColor: \"rgba(255, 209, 94, 0.2)\",\n borderColor: \"rgba(255, 209, 94, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Green\",\n data: [400, 450, 380, 250, 450, 320, 210],\n backgroundColor: \"rgba(155, 220, 220, 0.2)\",\n borderColor: \"rgba(155, 220, 220, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Purple\",\n data: [500, 220, 110, 50, 430, 310, 410],\n backgroundColor: \"rgba(154, 104, 255, 0.2)\",\n borderColor: \"rgba(154, 104, 255, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Orange\",\n data: [0, 100, 200, 300, 400, 320, 222],\n backgroundColor: \"rgba(255, 159, 64, 0.2)\",\n borderColor: \"rgba(255, 159, 64, 1)\",\n borderWidth: 1,\n },\n ],\n },\n });\n }\n\n lineChart();\n\n // radar chart\n\n function radarChart() {\n const radarChart = $(\"#radar-chart\");\n\n if (!radarChart.length) {\n return;\n }\n\n const ctx = radarChart[0].getContext(\"2d\");\n\n const myChart = new Chart(ctx, {\n type: \"radar\",\n data: {\n labels: [\n \"Eating\",\n \"Drinking\",\n \"Sleeping\",\n \"Designing\",\n \"Coding\",\n \"Cycling\",\n \"Running\",\n ],\n datasets: [\n {\n label: \"First\",\n data: [100, 44, 55, 90, 55, 80, 100],\n backgroundColor: \"rgba(154, 104, 255, 0.2)\",\n borderColor: \"rgba(154, 104, 255, 1)\",\n borderWidth: 1,\n },\n {\n label: \"Second\",\n data: [30, 80, 60, 20, 40, 100, 50],\n backgroundColor: \"rgba(255, 99, 132, 0.2)\",\n borderColor: \"rgba(255, 99, 132, 1)\",\n borderWidth: 1,\n },\n ],\n },\n });\n }\n\n radarChart();\n\n // doughnut chart\n\n function doughnutChart() {\n const doughnutChart = $(\"#doughnut-chart\");\n\n if (!doughnutChart.length) {\n return;\n }\n\n const ctx = doughnutChart[0].getContext(\"2d\");\n\n const myChart = new Chart(ctx, {\n type: \"doughnut\",\n data: {\n labels: [\"Red\", \"Blue\", \"Yellow\"],\n datasets: [\n {\n data: [70, 20, 10],\n backgroundColor: [\n \"rgba(255, 99, 132, 1)\",\n \"rgba(105, 195, 255, 1)\",\n \"rgba(255, 209, 94, 1)\",\n ],\n },\n ],\n },\n });\n }\n\n doughnutChart();\n\n // tabs\n\n function tabs() {\n const tabs = $(\".tabs\");\n\n if (!tabs.length) {\n return;\n }\n\n tabs.responsiveTabs({\n startCollapsed: \"false\",\n });\n }\n\n tabs();\n\n // video trigger\n\n function videoTrigger() {\n const trigger = $(\".video-trigger\");\n\n if (!trigger.length) {\n return;\n }\n\n trigger.fancybox();\n }\n\n videoTrigger();\n\n // video trigger\n\n function photoTrigger() {\n const trigger = $(\".photo-trigger\");\n\n if (!trigger.length) {\n return;\n }\n\n trigger.fancybox();\n }\n\n photoTrigger();\n\n // masonry gallery\n\n function masonryGallery() {\n const masonryGalleryEl = $(\".gallery-masonry\");\n if (!masonryGalleryEl.length) return;\n\n masonryGalleryEl.isotope({\n itemSelector: \".gallery-masonry__item\",\n percentPosition: true,\n });\n\n // const masonryGallery = new isotope(\".gallery-masonry\", {\n // itemSelector: \".gallery-masonry__item\",\n // percentPosition: true,\n // });\n\n const filter = $(\".filter-panel__item\");\n\n filter.on(\"click\", function () {\n const filterValue = $(this).attr(\"data-filter\");\n // masonryGallery.options({\n // filter: filterValue,\n // });\n masonryGalleryEl.isotope({\n filter: filterValue,\n });\n console.log(filtered);\n });\n\n filter.on(\"click\", function () {\n filter.removeClass(\"filter-panel__item--active\");\n $(this).addClass(\"filter-panel__item--active\");\n });\n }\n\n masonryGallery();\n\n // quantity\n\n function quantity() {\n const count = $(\".cart-item__count\");\n\n if (!count.length) {\n return;\n }\n\n const minus = $(\".cart-item__minus\");\n const plus = $(\".cart-item__plus\");\n\n minus.on(\"click\", function () {\n const $input = $(this).parent().find(\"input\");\n let count = parseInt($input.val()) - 1;\n count = count < 1 ? 1 : count;\n $input.val(count);\n $input.change();\n return false;\n });\n\n plus.on(\"click\", function () {\n const $input = $(this).parent().find(\"input\");\n $input.val(parseInt($input.val()) + 1);\n $input.change();\n return false;\n });\n }\n\n quantity();\n\n // form quantity\n\n function formQuantity() {\n const count = $(\".form__count\");\n\n if (!count.length) {\n return;\n }\n\n const minus = $(\".form__minus\");\n const plus = $(\".form__plus\");\n\n minus.on(\"click\", function () {\n const $input = $(this).parent().find(\"input\");\n let count = parseInt($input.val()) - 1;\n count = count < 1 ? 1 : count;\n $input.val(count);\n $input.change();\n return false;\n });\n\n plus.on(\"click\", function () {\n const $input = $(this).parent().find(\"input\");\n $input.val(parseInt($input.val()) + 1);\n $input.change();\n return false;\n });\n }\n\n formQuantity();\n\n // range slider\n\n function rangeSlider() {\n const rangeSlider = $(\".range-slider .range-slider__bar\");\n\n if (!rangeSlider.length) {\n return;\n }\n\n const min = $(\".range-slider__min\");\n const max = $(\".range-slider__max\");\n\n rangeSlider.ionRangeSlider({\n type: \"double\",\n min: 0,\n max: 5000,\n from: 0,\n to: 3000,\n skin: \"round\",\n step: 10,\n onChange: function (data) {\n min.val(data.from);\n max.val(data.to);\n },\n });\n }\n\n rangeSlider();\n\n // nice select\n\n function select() {\n const select = $(\".form__select\");\n\n if (!select.length) {\n return;\n }\n\n select.niceSelect();\n }\n\n select();\n\n // aside trigger\n\n function asideTrigger() {\n const trigger = $(\".shop__aside-trigger\");\n\n if (!trigger.length) {\n return;\n }\n\n trigger.on(\"click\", function () {\n $(\"body\")\n .find(\".aside-holder\")\n .toggleClass(\"aside-holder--visible\");\n $(\"body\")\n .find(\".shop__backdrop\")\n .toggleClass(\"shop__backdrop--visible\");\n });\n\n const close = $(\".shop__aside-close\");\n\n close.on(\"click\", function () {\n $(\"body\")\n .find(\".aside-holder\")\n .removeClass(\"aside-holder--visible\");\n $(\"body\")\n .find(\".shop__backdrop\")\n .removeClass(\"shop__backdrop--visible\");\n });\n\n const backdrop = $(\".shop__backdrop\");\n\n backdrop.on(\"click\", function () {\n $(this).removeClass(\"shop__backdrop--visible\");\n $(\"body\")\n .find(\".aside-holder\")\n .removeClass(\"aside-holder--visible\");\n });\n }\n\n asideTrigger();\n\n // SLIDERS\n\n // promo slider\n\n function promoSlider() {\n const slider = $(\".promo-slider\");\n\n if (!slider.length) {\n return;\n }\n\n const status = $(\".promo-slider__count\");\n\n $(\".promo-slider--style-2\").on(\n \"init afterChange\",\n function (event, slick, currentSlide, nextSlide) {\n let i = (currentSlide ? currentSlide : 0) + 1;\n status.text(i + \"/\" + slick.slideCount);\n }\n );\n\n slider.slick({\n fade: true,\n adaptiveHeight: true,\n infinite: true,\n speed: 1200,\n arrows: false,\n dots: true,\n appendDots: $(\".promo-slider__nav\"),\n });\n }\n\n promoSlider();\n\n // testimonials-1\n\n function testimonialsSlider() {\n const testimonials = $(\".testimonials-slider\");\n\n if (!testimonials.length) {\n return;\n }\n\n const testimonialsOne = $(\".testimonials-slider--style-1\");\n\n testimonialsOne.slick({\n arrows: false,\n dots: true,\n appendDots: $(\".testimonials--style-1__dots\"),\n adaptiveHeight: true,\n });\n\n const testimonialsTwo = $(\".testimonials-slider--style-2\");\n\n testimonialsTwo.slick({\n arrows: false,\n dots: true,\n fade: true,\n appendDots: $(\".testimonials--style-2__dots\"),\n adaptiveHeight: true,\n });\n\n const testimonialsThree = $(\".testimonials-slider--style-3\");\n\n testimonialsThree.slick({\n arrows: false,\n dots: true,\n fade: true,\n appendDots: $(\".testimonials--style-3__dots\"),\n adaptiveHeight: true,\n });\n }\n\n testimonialsSlider();\n\n // logos slider\n\n function logosSlider() {\n const slider = $(\".logos-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n arrows: false,\n dots: true,\n appendDots: $(\".logos-slider__dots\"),\n slidesToShow: 5,\n slidesToScroll: 4,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 4,\n },\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n },\n },\n ],\n });\n }\n\n logosSlider();\n\n // dual slider\n\n function dualSlider() {\n const slider = $(\".main-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n arrows: false,\n asNavFor: \".nav-slider\",\n fade: true,\n });\n\n const navSlider = $(\".nav-slider\");\n\n navSlider.slick({\n slidesToShow: 4,\n slidesToScroll: 1,\n asNavFor: \".main-slider\",\n focusOnSelect: true,\n arrows: false,\n });\n }\n\n dualSlider();\n\n // related slider\n\n function relatedSlider() {\n const relatedSlider = $(\".related-slider\");\n\n if (!relatedSlider.length) {\n return;\n }\n\n relatedSlider.slick({\n slidesToShow: 4,\n slidesToScroll: 2,\n arrows: false,\n dots: true,\n appendDots: $(\".related-slider__dots\"),\n\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n slidesToShow: 3,\n },\n },\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n relatedSlider();\n\n // tours slider\n\n function toursSlider() {\n const slider = $(\".tours-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n arrows: false,\n dots: true,\n appendDots: $(\".tours-slider__dots\"),\n slidesToShow: 3,\n responsive: [\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n toursSlider();\n\n // donations slider\n\n function donationSlider() {\n const slider = $(\".donation-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n slidesToShow: 2,\n arrows: false,\n dots: true,\n appendDots: $(\".donation-slider__dots\"),\n\n responsive: [\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n donationSlider();\n\n // instagram slider\n\n function instagramSlider() {\n const slider = $(\".instagram-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n arrows: false,\n dots: false,\n slidesToShow: 6,\n responsive: [\n {\n breakpoint: 1600,\n settings: {\n slidesToShow: 5,\n },\n },\n {\n breakpoint: 1200,\n settings: {\n slidesToShow: 4,\n },\n },\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n },\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n },\n },\n ],\n });\n }\n\n instagramSlider();\n\n // destination slider\n\n function destSlider() {\n const slider = $(\".destination-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n arrows: false,\n dots: true,\n appendDots: $(\".destination-slider__dots\"),\n slidesToShow: 4,\n slidesToScroll: 2,\n\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 2,\n },\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n },\n },\n {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n destSlider();\n\n // blogs slider\n\n function blogsSlider() {\n const slider = $(\".blogs-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n arrows: false,\n dots: true,\n appendDots: $(\".blogs-slider__dots\"),\n slidesToShow: 2,\n slidesToScroll: 1,\n\n responsive: [\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n blogsSlider();\n\n // fishes slider\n\n function fishesSlider() {\n const slider = $(\".fishes-slider\");\n\n if (!slider.length) {\n return;\n }\n\n slider.slick({\n arrows: false,\n dots: true,\n appendDots: $(\".fishes-slider__dots\"),\n slidesToShow: 5,\n slidesToScroll: 2,\n\n responsive: [\n {\n breakpoint: 1830,\n settings: {\n slidesToShow: 4,\n },\n },\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n },\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n fishesSlider();\n\n // pages slider\n\n function pagesSlider() {\n const slider = $(\".pages-slider\");\n\n if (!slider.length) {\n return;\n }\n\n const dots = $(\".pages-slider__dots\");\n\n slider.slick({\n slidesToShow: 2,\n arrows: false,\n dots: true,\n appendDots: dots,\n adaptiveHeight: true,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n },\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 1,\n },\n },\n ],\n });\n }\n\n pagesSlider();\n\n // contact form\n\n function form() {\n const jsform = $(\"#ajax-form\");\n\n if (!jsform.length) {\n return;\n }\n\n jsform.validate({\n rules: {\n name: {\n required: true,\n minlength: 2,\n },\n email: {\n required: true,\n email: true,\n },\n phone: {\n required: true,\n },\n message: {\n required: true,\n },\n },\n\n messages: {\n name: {\n required: \"Please enter your name\",\n minlength:\n \"Your name must consist of at least 2 characters\",\n },\n email: {\n required: \"Please enter your email\",\n },\n phone: {\n required: \"Please enter your phone number\",\n },\n message: {\n required: \"Please enter your message\",\n },\n },\n\n submitHandler: function (form) {\n $(form).ajaxSubmit({\n type: \"POST\",\n data: $(form).serialize(),\n url: \"form.php\",\n\n success: function () {\n $(\".alert--success\").fadeIn();\n $(\"#ajax-form\").each(function () {\n this.reset();\n });\n },\n\n error: function () {\n $(\".alert--error\").fadeIn();\n },\n });\n },\n });\n }\n\n form();\n });\n})(jQuery);\n","// import \"alpinejs\";\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n// window._ = require(\"lodash\");\n// import Echo from 'laravel-echo'\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n// broadcaster: 'pusher',\n// key: process.env.MIX_PUSHER_APP_KEY,\n// cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n// forceTLS: true\n// });\n\n// window.axios = require(\"axios\");\n\n// window.axios.defaults.headers.common[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\ntry {\n window.$ = window.jQuery = require(\"jquery\");\n} catch (e) {\n console.error(e);\n}\n\n// import objectFitImages from \"object-fit-images\";\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.counterUp=e():t.counterUp=e()}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";n.r(e),n.d(e,\"divideNumbers\",function(){return o}),n.d(e,\"hasComma\",function(){return i}),n.d(e,\"isFloat\",function(){return u}),n.d(e,\"decimalPlaces\",function(){return l});e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.action,i=void 0===n?\"start\":n,u=e.duration,l=void 0===u?1e3:u,a=e.delay,c=void 0===a?16:a,d=e.lang,f=void 0===d?void 0:d;if(\"stop\"!==i){if(r(t),/[0-9]/.test(t.innerHTML)){var s=o(t.innerHTML,{duration:l||t.getAttribute(\"data-duration\"),lang:f||document.querySelector(\"html\").getAttribute(\"lang\")||void 0,delay:c||t.getAttribute(\"data-delay\")});t._countUpOrigInnerHTML=t.innerHTML,t.innerHTML=s[0],t.style.visibility=\"visible\",t.countUpTimeout=setTimeout(function e(){t.innerHTML=s.shift(),s.length?(clearTimeout(t.countUpTimeout),t.countUpTimeout=setTimeout(e,c)):t._countUpOrigInnerHTML=void 0},c)}}else r(t)};var r=function(t){clearTimeout(t.countUpTimeout),t._countUpOrigInnerHTML&&(t.innerHTML=t._countUpOrigInnerHTML,t._countUpOrigInnerHTML=void 0),t.style.visibility=\"\"},o=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.duration,r=void 0===n?1e3:n,o=e.delay,i=void 0===o?16:o,u=e.lang,l=void 0===u?void 0:u,a=r/i,c=t.toString().split(/(<[^>]+>|[0-9.][,.0-9]*[0-9]*)/),d=[],f=0;f]+>/.test(c[s])){var p=c[s],v=/[0-9]+,[0-9]+/.test(p);p=p.replace(/,/g,\"\");for(var g=/^[0-9]+\\.[0-9]+$/.test(p),y=g?(p.split(\".\")[1]||[]).length:0,b=d.length-1,m=a;m>=1;m--){var T=parseInt(p/a*m,10);g&&(T=parseFloat(p/a*m).toFixed(y),T=parseFloat(T).toLocaleString(l)),v&&(T=T.toLocaleString(l)),d[b--]+=T}}else for(var M=0;Ma.endVal?a.endVal:a.frameVal,a.frameVal=Number(a.frameVal.toFixed(a.options.decimalPlaces)),a.printValue(a.frameVal),i1?a.options.decimal+o[1]:\"\",a.options.useGrouping){e=\"\";for(var l=0,h=n.length;lwindow.scrollY&&t.paused?(t.paused=!1,setTimeout(function(){return t.start()},t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):window.scrollY>n&&!t.paused&&t.reset()}},t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,this.finalEndVal||this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/*!\n * Isotope v3.0.6\n *\n * Licensed GPLv3 for open source use\n * or Isotope Commercial License for commercial use\n *\n * https://isotope.metafizzy.co\n * Copyright 2010-2018 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size',\n 'desandro-matches-selector/matches-selector',\n 'fizzy-ui-utils/utils',\n './item',\n './layout-mode',\n // include default layout modes\n './layout-modes/masonry',\n './layout-modes/fit-rows',\n './layout-modes/vertical'\n ],\n function( Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ) {\n return factory( window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('outlayer'),\n require('get-size'),\n require('desandro-matches-selector'),\n require('fizzy-ui-utils'),\n require('./item'),\n require('./layout-mode'),\n // include default layout modes\n require('./layout-modes/masonry'),\n require('./layout-modes/fit-rows'),\n require('./layout-modes/vertical')\n );\n } else {\n // browser global\n window.Isotope = factory(\n window,\n window.Outlayer,\n window.getSize,\n window.matchesSelector,\n window.fizzyUIUtils,\n window.Isotope.Item,\n window.Isotope.LayoutMode\n );\n }\n\n}( window, function factory( window, Outlayer, getSize, matchesSelector, utils,\n Item, LayoutMode ) {\n\n'use strict';\n\n// -------------------------- vars -------------------------- //\n\nvar jQuery = window.jQuery;\n\n// -------------------------- helpers -------------------------- //\n\nvar trim = String.prototype.trim ?\n function( str ) {\n return str.trim();\n } :\n function( str ) {\n return str.replace( /^\\s+|\\s+$/g, '' );\n };\n\n// -------------------------- isotopeDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Isotope = Outlayer.create( 'isotope', {\n layoutMode: 'masonry',\n isJQueryFiltering: true,\n sortAscending: true\n });\n\n Isotope.Item = Item;\n Isotope.LayoutMode = LayoutMode;\n\n var proto = Isotope.prototype;\n\n proto._create = function() {\n this.itemGUID = 0;\n // functions that sort items\n this._sorters = {};\n this._getSorters();\n // call super\n Outlayer.prototype._create.call( this );\n\n // create layout modes\n this.modes = {};\n // start filteredItems with all items\n this.filteredItems = this.items;\n // keep of track of sortBys\n this.sortHistory = [ 'original-order' ];\n // create from registered layout modes\n for ( var name in LayoutMode.modes ) {\n this._initLayoutMode( name );\n }\n };\n\n proto.reloadItems = function() {\n // reset item ID counter\n this.itemGUID = 0;\n // call super\n Outlayer.prototype.reloadItems.call( this );\n };\n\n proto._itemize = function() {\n var items = Outlayer.prototype._itemize.apply( this, arguments );\n // assign ID for original-order\n for ( var i=0; i < items.length; i++ ) {\n var item = items[i];\n item.id = this.itemGUID++;\n }\n this._updateItemsSortData( items );\n return items;\n };\n\n\n // -------------------------- layout -------------------------- //\n\n proto._initLayoutMode = function( name ) {\n var Mode = LayoutMode.modes[ name ];\n // set mode options\n // HACK extend initial options, back-fill in default options\n var initialOpts = this.options[ name ] || {};\n this.options[ name ] = Mode.options ?\n utils.extend( Mode.options, initialOpts ) : initialOpts;\n // init layout mode instance\n this.modes[ name ] = new Mode( this );\n };\n\n\n proto.layout = function() {\n // if first time doing layout, do all magic\n if ( !this._isLayoutInited && this._getOption('initLayout') ) {\n this.arrange();\n return;\n }\n this._layout();\n };\n\n // private method to be used in layout() & magic()\n proto._layout = function() {\n // don't animate first layout\n var isInstant = this._getIsInstant();\n // layout flow\n this._resetLayout();\n this._manageStamps();\n this.layoutItems( this.filteredItems, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n };\n\n // filter + sort + layout\n proto.arrange = function( opts ) {\n // set any options pass\n this.option( opts );\n this._getIsInstant();\n // filter, sort, and layout\n\n // filter\n var filtered = this._filter( this.items );\n this.filteredItems = filtered.matches;\n\n this._bindArrangeComplete();\n\n if ( this._isInstant ) {\n this._noTransition( this._hideReveal, [ filtered ] );\n } else {\n this._hideReveal( filtered );\n }\n\n this._sort();\n this._layout();\n };\n // alias to _init for main plugin method\n proto._init = proto.arrange;\n\n proto._hideReveal = function( filtered ) {\n this.reveal( filtered.needReveal );\n this.hide( filtered.needHide );\n };\n\n // HACK\n // Don't animate/transition first layout\n // Or don't animate/transition other layouts\n proto._getIsInstant = function() {\n var isLayoutInstant = this._getOption('layoutInstant');\n var isInstant = isLayoutInstant !== undefined ? isLayoutInstant :\n !this._isLayoutInited;\n this._isInstant = isInstant;\n return isInstant;\n };\n\n // listen for layoutComplete, hideComplete and revealComplete\n // to trigger arrangeComplete\n proto._bindArrangeComplete = function() {\n // listen for 3 events to trigger arrangeComplete\n var isLayoutComplete, isHideComplete, isRevealComplete;\n var _this = this;\n function arrangeParallelCallback() {\n if ( isLayoutComplete && isHideComplete && isRevealComplete ) {\n _this.dispatchEvent( 'arrangeComplete', null, [ _this.filteredItems ] );\n }\n }\n this.once( 'layoutComplete', function() {\n isLayoutComplete = true;\n arrangeParallelCallback();\n });\n this.once( 'hideComplete', function() {\n isHideComplete = true;\n arrangeParallelCallback();\n });\n this.once( 'revealComplete', function() {\n isRevealComplete = true;\n arrangeParallelCallback();\n });\n };\n\n // -------------------------- filter -------------------------- //\n\n proto._filter = function( items ) {\n var filter = this.options.filter;\n filter = filter || '*';\n var matches = [];\n var hiddenMatched = [];\n var visibleUnmatched = [];\n\n var test = this._getFilterTest( filter );\n\n // test each item\n for ( var i=0; i < items.length; i++ ) {\n var item = items[i];\n if ( item.isIgnored ) {\n continue;\n }\n // add item to either matched or unmatched group\n var isMatched = test( item );\n // item.isFilterMatched = isMatched;\n // add to matches if its a match\n if ( isMatched ) {\n matches.push( item );\n }\n // add to additional group if item needs to be hidden or revealed\n if ( isMatched && item.isHidden ) {\n hiddenMatched.push( item );\n } else if ( !isMatched && !item.isHidden ) {\n visibleUnmatched.push( item );\n }\n }\n\n // return collections of items to be manipulated\n return {\n matches: matches,\n needReveal: hiddenMatched,\n needHide: visibleUnmatched\n };\n };\n\n // get a jQuery, function, or a matchesSelector test given the filter\n proto._getFilterTest = function( filter ) {\n if ( jQuery && this.options.isJQueryFiltering ) {\n // use jQuery\n return function( item ) {\n return jQuery( item.element ).is( filter );\n };\n }\n if ( typeof filter == 'function' ) {\n // use filter as function\n return function( item ) {\n return filter( item.element );\n };\n }\n // default, use filter as selector string\n return function( item ) {\n return matchesSelector( item.element, filter );\n };\n };\n\n // -------------------------- sorting -------------------------- //\n\n /**\n * @params {Array} elems\n * @public\n */\n proto.updateSortData = function( elems ) {\n // get items\n var items;\n if ( elems ) {\n elems = utils.makeArray( elems );\n items = this.getItems( elems );\n } else {\n // update all items if no elems provided\n items = this.items;\n }\n\n this._getSorters();\n this._updateItemsSortData( items );\n };\n\n proto._getSorters = function() {\n var getSortData = this.options.getSortData;\n for ( var key in getSortData ) {\n var sorter = getSortData[ key ];\n this._sorters[ key ] = mungeSorter( sorter );\n }\n };\n\n /**\n * @params {Array} items - of Isotope.Items\n * @private\n */\n proto._updateItemsSortData = function( items ) {\n // do not update if no items\n var len = items && items.length;\n\n for ( var i=0; len && i < len; i++ ) {\n var item = items[i];\n item.updateSortData();\n }\n };\n\n // ----- munge sorter ----- //\n\n // encapsulate this, as we just need mungeSorter\n // other functions in here are just for munging\n var mungeSorter = ( function() {\n // add a magic layer to sorters for convienent shorthands\n // `.foo-bar` will use the text of .foo-bar querySelector\n // `[foo-bar]` will use attribute\n // you can also add parser\n // `.foo-bar parseInt` will parse that as a number\n function mungeSorter( sorter ) {\n // if not a string, return function or whatever it is\n if ( typeof sorter != 'string' ) {\n return sorter;\n }\n // parse the sorter string\n var args = trim( sorter ).split(' ');\n var query = args[0];\n // check if query looks like [an-attribute]\n var attrMatch = query.match( /^\\[(.+)\\]$/ );\n var attr = attrMatch && attrMatch[1];\n var getValue = getValueGetter( attr, query );\n // use second argument as a parser\n var parser = Isotope.sortDataParsers[ args[1] ];\n // parse the value, if there was a parser\n sorter = parser ? function( elem ) {\n return elem && parser( getValue( elem ) );\n } :\n // otherwise just return value\n function( elem ) {\n return elem && getValue( elem );\n };\n\n return sorter;\n }\n\n // get an attribute getter, or get text of the querySelector\n function getValueGetter( attr, query ) {\n // if query looks like [foo-bar], get attribute\n if ( attr ) {\n return function getAttribute( elem ) {\n return elem.getAttribute( attr );\n };\n }\n\n // otherwise, assume its a querySelector, and get its text\n return function getChildText( elem ) {\n var child = elem.querySelector( query );\n return child && child.textContent;\n };\n }\n\n return mungeSorter;\n })();\n\n // parsers used in getSortData shortcut strings\n Isotope.sortDataParsers = {\n 'parseInt': function( val ) {\n return parseInt( val, 10 );\n },\n 'parseFloat': function( val ) {\n return parseFloat( val );\n }\n };\n\n // ----- sort method ----- //\n\n // sort filteredItem order\n proto._sort = function() {\n if ( !this.options.sortBy ) {\n return;\n }\n // keep track of sortBy History\n var sortBys = utils.makeArray( this.options.sortBy );\n if ( !this._getIsSameSortBy( sortBys ) ) {\n // concat all sortBy and sortHistory, add to front, oldest goes in last\n this.sortHistory = sortBys.concat( this.sortHistory );\n }\n // sort magic\n var itemSorter = getItemSorter( this.sortHistory, this.options.sortAscending );\n this.filteredItems.sort( itemSorter );\n };\n\n // check if sortBys is same as start of sortHistory\n proto._getIsSameSortBy = function( sortBys ) {\n for ( var i=0; i < sortBys.length; i++ ) {\n if ( sortBys[i] != this.sortHistory[i] ) {\n return false;\n }\n }\n return true;\n };\n\n // returns a function used for sorting\n function getItemSorter( sortBys, sortAsc ) {\n return function sorter( itemA, itemB ) {\n // cycle through all sortKeys\n for ( var i = 0; i < sortBys.length; i++ ) {\n var sortBy = sortBys[i];\n var a = itemA.sortData[ sortBy ];\n var b = itemB.sortData[ sortBy ];\n if ( a > b || a < b ) {\n // if sortAsc is an object, use the value given the sortBy key\n var isAscending = sortAsc[ sortBy ] !== undefined ? sortAsc[ sortBy ] : sortAsc;\n var direction = isAscending ? 1 : -1;\n return ( a > b ? 1 : -1 ) * direction;\n }\n }\n return 0;\n };\n }\n\n // -------------------------- methods -------------------------- //\n\n // get layout mode\n proto._mode = function() {\n var layoutMode = this.options.layoutMode;\n var mode = this.modes[ layoutMode ];\n if ( !mode ) {\n // TODO console.error\n throw new Error( 'No layout mode: ' + layoutMode );\n }\n // HACK sync mode's options\n // any options set after init for layout mode need to be synced\n mode.options = this.options[ layoutMode ];\n return mode;\n };\n\n proto._resetLayout = function() {\n // trigger original reset layout\n Outlayer.prototype._resetLayout.call( this );\n this._mode()._resetLayout();\n };\n\n proto._getItemLayoutPosition = function( item ) {\n return this._mode()._getItemLayoutPosition( item );\n };\n\n proto._manageStamp = function( stamp ) {\n this._mode()._manageStamp( stamp );\n };\n\n proto._getContainerSize = function() {\n return this._mode()._getContainerSize();\n };\n\n proto.needsResizeLayout = function() {\n return this._mode().needsResizeLayout();\n };\n\n // -------------------------- adding & removing -------------------------- //\n\n // HEADS UP overwrites default Outlayer appended\n proto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // filter, layout, reveal new items\n var filteredItems = this._filterRevealAdded( items );\n // add to filteredItems\n this.filteredItems = this.filteredItems.concat( filteredItems );\n };\n\n // HEADS UP overwrites default Outlayer prepended\n proto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // filter, layout, reveal new items\n var filteredItems = this._filterRevealAdded( items );\n // layout previous items\n this.layoutItems( this.filteredItems );\n // add to items and filteredItems\n this.filteredItems = filteredItems.concat( this.filteredItems );\n this.items = items.concat( this.items );\n };\n\n proto._filterRevealAdded = function( items ) {\n var filtered = this._filter( items );\n this.hide( filtered.needHide );\n // reveal all new items\n this.reveal( filtered.matches );\n // layout new items, no transition\n this.layoutItems( filtered.matches, true );\n return filtered.matches;\n };\n\n /**\n * Filter, sort, and layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\n proto.insert = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // append item elements\n var i, item;\n var len = items.length;\n for ( i=0; i < len; i++ ) {\n item = items[i];\n this.element.appendChild( item.element );\n }\n // filter new stuff\n var filteredInsertItems = this._filter( items ).matches;\n // set flag\n for ( i=0; i < len; i++ ) {\n items[i].isLayoutInstant = true;\n }\n this.arrange();\n // reset flag\n for ( i=0; i < len; i++ ) {\n delete items[i].isLayoutInstant;\n }\n this.reveal( filteredInsertItems );\n };\n\n var _remove = proto.remove;\n proto.remove = function( elems ) {\n elems = utils.makeArray( elems );\n var removeItems = this.getItems( elems );\n // do regular thing\n _remove.call( this, elems );\n // bail if no items to remove\n var len = removeItems && removeItems.length;\n // remove elems from filteredItems\n for ( var i=0; len && i < len; i++ ) {\n var item = removeItems[i];\n // remove item from collection\n utils.removeFrom( this.filteredItems, item );\n }\n };\n\n proto.shuffle = function() {\n // update random sortData\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n item.sortData.random = Math.random();\n }\n this.options.sortBy = 'random';\n this._sort();\n this._layout();\n };\n\n /**\n * trigger fn without transition\n * kind of hacky to have this in the first place\n * @param {Function} fn\n * @param {Array} args\n * @returns ret\n * @private\n */\n proto._noTransition = function( fn, args ) {\n // save transitionDuration before disabling\n var transitionDuration = this.options.transitionDuration;\n // disable transition\n this.options.transitionDuration = 0;\n // do it\n var returnValue = fn.apply( this, args );\n // re-enable transition for reveal\n this.options.transitionDuration = transitionDuration;\n return returnValue;\n };\n\n // ----- helper methods ----- //\n\n /**\n * getter method for getting filtered item elements\n * @returns {Array} elems - collection of item elements\n */\n proto.getFilteredItemElements = function() {\n return this.filteredItems.map( function( item ) {\n return item.element;\n });\n };\n\n // ----- ----- //\n\n return Isotope;\n\n}));\n","/**\n * Isotope Item\n**/\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer')\n );\n } else {\n // browser global\n window.Isotope = window.Isotope || {};\n window.Isotope.Item = factory(\n window.Outlayer\n );\n }\n\n}( window, function factory( Outlayer ) {\n'use strict';\n\n// -------------------------- Item -------------------------- //\n\n// sub-class Outlayer Item\nfunction Item() {\n Outlayer.Item.apply( this, arguments );\n}\n\nvar proto = Item.prototype = Object.create( Outlayer.Item.prototype );\n\nvar _create = proto._create;\nproto._create = function() {\n // assign id, used for original-order sorting\n this.id = this.layout.itemGUID++;\n _create.call( this );\n this.sortData = {};\n};\n\nproto.updateSortData = function() {\n if ( this.isIgnored ) {\n return;\n }\n // default sorters\n this.sortData.id = this.id;\n // for backward compatibility\n this.sortData['original-order'] = this.id;\n this.sortData.random = Math.random();\n // go thru getSortData obj and apply the sorters\n var getSortData = this.layout.options.getSortData;\n var sorters = this.layout._sorters;\n for ( var key in getSortData ) {\n var sorter = sorters[ key ];\n this.sortData[ key ] = sorter( this.element, this );\n }\n};\n\nvar _destroy = proto.destroy;\nproto.destroy = function() {\n // call super\n _destroy.apply( this, arguments );\n // reset display, #741\n this.css({\n display: ''\n });\n};\n\nreturn Item;\n\n}));\n","/**\n * Isotope LayoutMode\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n 'outlayer/outlayer'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('get-size'),\n require('outlayer')\n );\n } else {\n // browser global\n window.Isotope = window.Isotope || {};\n window.Isotope.LayoutMode = factory(\n window.getSize,\n window.Outlayer\n );\n }\n\n}( window, function factory( getSize, Outlayer ) {\n 'use strict';\n\n // layout mode class\n function LayoutMode( isotope ) {\n this.isotope = isotope;\n // link properties\n if ( isotope ) {\n this.options = isotope.options[ this.namespace ];\n this.element = isotope.element;\n this.items = isotope.filteredItems;\n this.size = isotope.size;\n }\n }\n\n var proto = LayoutMode.prototype;\n\n /**\n * some methods should just defer to default Outlayer method\n * and reference the Isotope instance as `this`\n **/\n var facadeMethods = [\n '_resetLayout',\n '_getItemLayoutPosition',\n '_manageStamp',\n '_getContainerSize',\n '_getElementOffset',\n 'needsResizeLayout',\n '_getOption'\n ];\n\n facadeMethods.forEach( function( methodName ) {\n proto[ methodName ] = function() {\n return Outlayer.prototype[ methodName ].apply( this.isotope, arguments );\n };\n });\n\n // ----- ----- //\n\n // for horizontal layout modes, check vertical size\n proto.needsVerticalResizeLayout = function() {\n // don't trigger if size did not change\n var size = getSize( this.isotope.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.isotope.size && size;\n return hasSizes && size.innerHeight != this.isotope.size.innerHeight;\n };\n\n // ----- measurements ----- //\n\n proto._getMeasurement = function() {\n this.isotope._getMeasurement.apply( this, arguments );\n };\n\n proto.getColumnWidth = function() {\n this.getSegmentSize( 'column', 'Width' );\n };\n\n proto.getRowHeight = function() {\n this.getSegmentSize( 'row', 'Height' );\n };\n\n /**\n * get columnWidth or rowHeight\n * segment: 'column' or 'row'\n * size 'Width' or 'Height'\n **/\n proto.getSegmentSize = function( segment, size ) {\n var segmentName = segment + size;\n var outerSize = 'outer' + size;\n // columnWidth / outerWidth // rowHeight / outerHeight\n this._getMeasurement( segmentName, outerSize );\n // got rowHeight or columnWidth, we can chill\n if ( this[ segmentName ] ) {\n return;\n }\n // fall back to item of first element\n var firstItemSize = this.getFirstItemSize();\n this[ segmentName ] = firstItemSize && firstItemSize[ outerSize ] ||\n // or size of container\n this.isotope.size[ 'inner' + size ];\n };\n\n proto.getFirstItemSize = function() {\n var firstItem = this.isotope.filteredItems[0];\n return firstItem && firstItem.element && getSize( firstItem.element );\n };\n\n // ----- methods that should reference isotope ----- //\n\n proto.layout = function() {\n this.isotope.layout.apply( this.isotope, arguments );\n };\n\n proto.getSize = function() {\n this.isotope.getSize();\n this.size = this.isotope.size;\n };\n\n // -------------------------- create -------------------------- //\n\n LayoutMode.modes = {};\n\n LayoutMode.create = function( namespace, options ) {\n\n function Mode() {\n LayoutMode.apply( this, arguments );\n }\n\n Mode.prototype = Object.create( proto );\n Mode.prototype.constructor = Mode;\n\n // default options\n if ( options ) {\n Mode.options = options;\n }\n\n Mode.prototype.namespace = namespace;\n // register in Isotope\n LayoutMode.modes[ namespace ] = Mode;\n\n return Mode;\n };\n\n return LayoutMode;\n\n}));\n","/**\n * fitRows layout mode\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n '../layout-mode'\n ],\n factory );\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n require('../layout-mode')\n );\n } else {\n // browser global\n factory(\n window.Isotope.LayoutMode\n );\n }\n\n}( window, function factory( LayoutMode ) {\n'use strict';\n\nvar FitRows = LayoutMode.create('fitRows');\n\nvar proto = FitRows.prototype;\n\nproto._resetLayout = function() {\n this.x = 0;\n this.y = 0;\n this.maxY = 0;\n this._getMeasurement( 'gutter', 'outerWidth' );\n};\n\nproto._getItemLayoutPosition = function( item ) {\n item.getSize();\n\n var itemWidth = item.size.outerWidth + this.gutter;\n // if this element cannot fit in the current row\n var containerWidth = this.isotope.size.innerWidth + this.gutter;\n if ( this.x !== 0 && itemWidth + this.x > containerWidth ) {\n this.x = 0;\n this.y = this.maxY;\n }\n\n var position = {\n x: this.x,\n y: this.y\n };\n\n this.maxY = Math.max( this.maxY, this.y + item.size.outerHeight );\n this.x += itemWidth;\n\n return position;\n};\n\nproto._getContainerSize = function() {\n return { height: this.maxY };\n};\n\nreturn FitRows;\n\n}));\n","/*!\n * Masonry layout mode\n * sub-classes Masonry\n * https://masonry.desandro.com\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n '../layout-mode',\n 'masonry-layout/masonry'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('../layout-mode'),\n require('masonry-layout')\n );\n } else {\n // browser global\n factory(\n window.Isotope.LayoutMode,\n window.Masonry\n );\n }\n\n}( window, function factory( LayoutMode, Masonry ) {\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var MasonryMode = LayoutMode.create('masonry');\n\n var proto = MasonryMode.prototype;\n\n var keepModeMethods = {\n _getElementOffset: true,\n layout: true,\n _getMeasurement: true\n };\n\n // inherit Masonry prototype\n for ( var method in Masonry.prototype ) {\n // do not inherit mode methods\n if ( !keepModeMethods[ method ] ) {\n proto[ method ] = Masonry.prototype[ method ];\n }\n }\n\n var measureColumns = proto.measureColumns;\n proto.measureColumns = function() {\n // set items, used if measuring first item\n this.items = this.isotope.filteredItems;\n measureColumns.call( this );\n };\n\n // point to mode options for fitWidth\n var _getOption = proto._getOption;\n proto._getOption = function( option ) {\n if ( option == 'fitWidth' ) {\n return this.options.isFitWidth !== undefined ?\n this.options.isFitWidth : this.options.fitWidth;\n }\n return _getOption.apply( this.isotope, arguments );\n };\n\n return MasonryMode;\n\n}));\n","/**\n * vertical layout mode\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n '../layout-mode'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('../layout-mode')\n );\n } else {\n // browser global\n factory(\n window.Isotope.LayoutMode\n );\n }\n\n}( window, function factory( LayoutMode ) {\n'use strict';\n\nvar Vertical = LayoutMode.create( 'vertical', {\n horizontalAlignment: 0\n});\n\nvar proto = Vertical.prototype;\n\nproto._resetLayout = function() {\n this.y = 0;\n};\n\nproto._getItemLayoutPosition = function( item ) {\n item.getSize();\n var x = ( this.isotope.size.innerWidth - item.size.outerWidth ) *\n this.options.horizontalAlignment;\n var y = this.y;\n this.y += item.size.outerHeight;\n return { x: x, y: y };\n};\n\nproto._getContainerSize = function() {\n return { height: this.y };\n};\n\nreturn Vertical;\n\n}));\n","/**\n * Bridget makes jQuery widgets\n * v3.0.1\n * MIT license\n */\n\n( function( window, factory ) {\n // module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('jquery'),\n );\n } else {\n // browser global\n window.jQueryBridget = factory(\n window,\n window.jQuery,\n );\n }\n\n}( window, function factory( window, jQuery ) {\n\n// ----- utils ----- //\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nlet console = window.console;\nlet logError = typeof console == 'undefined' ? function() {} :\n function( message ) {\n console.error( message );\n };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n $ = $ || jQuery || window.jQuery;\n if ( !$ ) {\n return;\n }\n\n // add option method -> $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n if ( !opts ) return;\n\n this.options = Object.assign( this.options || {}, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0, ...args ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n let returnValue;\n let pluginMethodStr = `$().${namespace}(\"${methodName}\")`;\n\n $elems.each( function( i, elem ) {\n // get instance\n let instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( `${namespace} not initialized.` +\n ` Cannot call method ${pluginMethodStr}` );\n return;\n }\n\n let method = instance[ methodName ];\n if ( !method || methodName.charAt( 0 ) == '_' ) {\n logError(`${pluginMethodStr} is not a valid method`);\n return;\n }\n\n // apply method, get return value\n let value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n } );\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n let instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n } );\n }\n\n}\n\n// ----- ----- //\n\nreturn jQueryBridget;\n\n} ) );\n","/*!\n * jQuery Validation Plugin v1.19.4\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2022 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\n}));","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"