{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/clipboard/dist/clipboard.js","webpack:///(webpack)/buildin/module.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./app/javascript/packs/stack.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","_typeof2","iterator","obj","constructor","webpackUniversalModuleDefinition","root","factory","this","select","element","selectedText","nodeName","focus","isReadOnly","hasAttribute","setAttribute","setSelectionRange","length","removeAttribute","selection","window","getSelection","range","document","createRange","selectNodeContents","removeAllRanges","addRange","toString","E","on","callback","ctx","e","push","fn","once","self","listener","off","apply","arguments","_","emit","data","slice","evtArr","len","evts","liveEvents","TinyEmitter","is","delegate","listen","target","type","Error","string","TypeError","node","listenNode","addEventListener","destroy","removeEventListener","nodeList","listenNodeList","Array","forEach","listenSelector","selector","body","undefined","HTMLElement","nodeType","String","closest","_delegate","useCapture","listenerFn","delegateTarget","elements","querySelectorAll","map","DOCUMENT_NODE_TYPE","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","parentNode","__webpack_exports__","src_select","select_default","_typeof","_createClass","defineProperties","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","clipboard_action","ClipboardAction","options","_classCallCheck","instance","resolveOptions","initSelection","action","container","emitter","text","trigger","selectFake","selectTarget","_this","isRTL","documentElement","getAttribute","removeFake","fakeHandlerCallback","fakeHandler","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","pageYOffset","scrollTop","top","appendChild","copyText","removeChild","succeeded","execCommand","err","handleResult","clearSelection","activeElement","blur","set","_action","_target","tiny_emitter","tiny_emitter_default","listen_default","clipboard_typeof","clipboard_createClass","clipboard_Clipboard","_Emitter","Clipboard","clipboard_classCallCheck","_possibleConstructorReturn","ReferenceError","__proto__","getPrototypeOf","listenClick","_inherits","subClass","superClass","setPrototypeOf","defaultAction","defaultTarget","defaultText","_this2","onClick","currentTarget","clipboardAction","getAttributeValue","querySelector","isSupported","actions","support","queryCommandSupported","a","suffix","attribute","webpackPolyfill","deprecate","paths","children","g","Function","global","w","noGlobal","arr","getProto","_slice","concat","indexOf","class2type","hasOwn","fnToString","ObjectFunctionString","isFunction","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","doc","val","script","head","toType","jQuery","context","init","rtrim","isArrayLike","jquery","toArray","num","pushStack","elems","ret","merge","prevObject","each","elem","first","eq","last","j","end","sort","splice","extend","copy","copyIsArray","clone","deep","isPlainObject","isArray","expando","Math","random","replace","isReady","error","msg","noop","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","callbackExpect","arg","guid","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","seed","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","qsaError","keys","cache","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","ATTR","CHILD","PSEUDO","excess","unquoted","TAG","nodeNameSelector","CLASS","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","hasFocus","href","tabIndex","checked","selected","selectedIndex","empty","header","button","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","contexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","matcherFromGroupMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","_dir","until","truncate","_siblings","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","has","targets","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","createOptions","flag","firing","memory","_fired","_locked","queue","firingIndex","fire","stopOnFalse","remove","disable","lock","locked","fireWith","fired","Deferred","func","tuples","_state","_promise","state","always","deferred","_catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","acceptData","owner","Data","uid","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","JSON","parse","_data","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","_on","types","one","origFn","event","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","Event","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","_final","cssProps","vendorPropName","capName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","prefix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ajaxHandleResponses","ct","finalDataType","firstDataType","ajaxConvert","conv2","current","conv","dataFilter","getJSON","getScript","textScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","hover","fnOver","fnOut","unbind","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","$","noConflict","ClipboardJS","timeslotCount","classList","previous","last_time_slot_id","scroll","scrollHeight","show_options","push_cal","pull_cal","collision","user_email","profile_pic","team_img","img","original_img","reader","FileReader","readAsDataURL","files","converted_option","merchant_id","mobile_view","venue_id","room_id","modal","ele"],"mappings":"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","file":"js/stack-576d136a2a463e36143b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 871);\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof2(module)) === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object') exports[\"ClipboardJS\"] = factory();else root[\"ClipboardJS\"] = factory();\n})(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && _typeof2(value) === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) {\n __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n }\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 6);\n /******/\n }(\n /************************************************************************/\n\n /******/\n [\n /* 0 */\n\n /***/\n function (module, exports) {\n function select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n selectedText = element.value;\n } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n } else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n selectedText = selection.toString();\n }\n\n return selectedText;\n }\n\n module.exports = select;\n /***/\n },\n /* 1 */\n\n /***/\n function (module, exports) {\n function E() {// Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n }\n\n E.prototype = {\n on: function on(name, callback, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n return this;\n },\n once: function once(name, callback, ctx) {\n var self = this;\n\n function listener() {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n\n ;\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n emit: function emit(name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n off: function off(name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n } // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n\n liveEvents.length ? e[name] = liveEvents : delete e[name];\n return this;\n }\n };\n module.exports = E;\n module.exports.TinyEmitter = E;\n /***/\n },\n /* 2 */\n\n /***/\n function (module, exports, __webpack_require__) {\n var is = __webpack_require__(3);\n\n var delegate = __webpack_require__(4);\n /**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n } else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n } else if (is.string(target)) {\n return listenSelector(target, type, callback);\n } else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n }\n /**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n return {\n destroy: function destroy() {\n node.removeEventListener(type, callback);\n }\n };\n }\n /**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function (node) {\n node.addEventListener(type, callback);\n });\n return {\n destroy: function destroy() {\n Array.prototype.forEach.call(nodeList, function (node) {\n node.removeEventListener(type, callback);\n });\n }\n };\n }\n /**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n }\n\n module.exports = listen;\n /***/\n },\n /* 3 */\n\n /***/\n function (module, exports) {\n /**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n exports.node = function (value) {\n return value !== undefined && value instanceof HTMLElement && value.nodeType === 1;\n };\n /**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n exports.nodeList = function (value) {\n var type = Object.prototype.toString.call(value);\n return value !== undefined && (type === '[object NodeList]' || type === '[object HTMLCollection]') && 'length' in value && (value.length === 0 || exports.node(value[0]));\n };\n /**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n exports.string = function (value) {\n return typeof value === 'string' || value instanceof String;\n };\n /**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n exports.fn = function (value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Function]';\n };\n /***/\n\n },\n /* 4 */\n\n /***/\n function (module, exports, __webpack_require__) {\n var closest = __webpack_require__(5);\n /**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\n\n\n function _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n element.addEventListener(type, listenerFn, useCapture);\n return {\n destroy: function destroy() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n };\n }\n /**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\n\n\n function delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n } // Handle Element-less usage, it defaults to global delegation\n\n\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n } // Handle Selector-based usage\n\n\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n } // Handle Array-like based usage\n\n\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n }\n /**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\n\n\n function listener(element, selector, type, callback) {\n return function (e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n };\n }\n\n module.exports = delegate;\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports) {\n var DOCUMENT_NODE_TYPE = 9;\n /**\n * A polyfill for Element.matches()\n */\n\n if (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n }\n /**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\n\n\n function closest(element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' && element.matches(selector)) {\n return element;\n }\n\n element = element.parentNode;\n }\n }\n\n module.exports = closest;\n /***/\n },\n /* 6 */\n\n /***/\n function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__); // EXTERNAL MODULE: ./node_modules/select/src/select.js\n\n\n var src_select = __webpack_require__(0);\n\n var select_default =\n /*#__PURE__*/\n __webpack_require__.n(src_select); // CONCATENATED MODULE: ./src/clipboard-action.js\n\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n /**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\n\n var clipboard_action_ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n this.selectedText = '';\n }\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n this.fakeElem = document.createElement('textarea'); // Prevent zooming on iOS\n\n this.fakeElem.style.fontSize = '12pt'; // Reset box model\n\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0'; // Move element out of screen horizontally\n\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n this.container.appendChild(this.fakeElem);\n this.selectedText = select_default()(this.fakeElem);\n this.copyText();\n }\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = select_default()(this.target);\n this.copyText();\n }\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n document.activeElement.blur();\n window.getSelection().removeAllRanges();\n }\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n }();\n /* harmony default export */\n\n\n var clipboard_action = clipboard_action_ClipboardAction; // EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\n\n var tiny_emitter = __webpack_require__(1);\n\n var tiny_emitter_default =\n /*#__PURE__*/\n __webpack_require__.n(tiny_emitter); // EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\n\n\n var listen = __webpack_require__(2);\n\n var listen_default =\n /*#__PURE__*/\n __webpack_require__.n(listen); // CONCATENATED MODULE: ./src/clipboard.js\n\n\n var clipboard_typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var clipboard_createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function clipboard_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n /**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\n var clipboard_Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n\n\n function Clipboard(trigger, options) {\n clipboard_classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n clipboard_createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new clipboard_action({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n return Clipboard;\n }(tiny_emitter_default.a);\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\n function getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n }\n /* harmony default export */\n\n\n var clipboard = __webpack_exports__[\"default\"] = clipboard_Clipboard;\n /***/\n }\n /******/\n ])[\"default\"]\n );\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && _typeof(module.exports) === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\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\n var arr = [];\n var document = window.document;\n var getProto = Object.getPrototypeOf;\n var _slice = arr.slice;\n var concat = arr.concat;\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return _typeof(obj) === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : _typeof(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 var version = \"3.4.1\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n },\n // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a global context\n globalEval: function globalEval(code, options) {\n DOMEval(code, {\n nonce: options && options.nonce\n });\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // Support: Android <=4.0 only\n trim: function trim(text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"\");\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return concat.apply([], ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.4\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: 2019-04-08\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function sortOrder(a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n push_native = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function indexOf(list, elem) {\n var i = 0,\n len = list.length;\n\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n identifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\"),\n funescape = function funescape(_, escaped, escapedWhitespace) {\n var high = \"0x\" + escaped - 0x10000; // NaN means non-codepoint\n // Support: Firefox<24\n // Workaround erroneous numeric interpretation of +\"0x\"\n\n return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint\n String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function unloadHandler() {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0\n // Detect silently failing push.apply\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ? // Leverage slice if possible\n function (target, els) {\n push_native.apply(target, slice.call(els));\n } : // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0; // Can't trust NodeList.length\n\n while (target[j++] = els[i++]) {}\n\n target.length = j - 1;\n }\n };\n }\n\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n if ((context ? context.ownerDocument || context : preferredDoc) !== document) {\n setDocument(context);\n }\n\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && rdescend.test(selector)) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = \"#\" + nid + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\"); // Expand context for sibling selectors\n\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\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 */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\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 */\n\n\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\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 */\n\n\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes\n\n if (diff) {\n return diff;\n } // Check if b follows a\n\n\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n\n return a ? 1 : -1;\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\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 */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\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 */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n } // Expose support vars for convenience\n\n\n support = Sizzle.support = {};\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 */\n\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem.namespaceURI,\n docElem = (elem.ownerDocument || elem).documentElement; // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\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 */\n\n\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n\n if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document); // Support: IE 9-11, Edge\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\n if (preferredDoc !== document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false); // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n }\n /* Attributes\n ---------------------------------------------------------------------- */\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n\n\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n // Check if getElementsByTagName(\"*\") returns only elements\n\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n }); // Support: IE<9\n\n support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag); // Filter out possible comments\n\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n\n return tmp;\n }\n\n return results;\n }; // Class\n\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\n\n rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n\n rbuggyQSA = [];\n\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n docElem.appendChild(el).innerHTML = \"\" + \"\"; // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n });\n assert(function (el) {\n el.innerHTML = \"\" + \"\"; // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE8\n // Enforce case-sensitivity of name attribute\n\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n\n\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n\n\n docElem.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Opera 10-11 does not throw on post-comma invalid pseudos\n\n\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\"); // This should fail with an exception\n // Gecko does not error, returns false instead\n\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n /* Contains\n ---------------------------------------------------------------------- */\n\n hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n\n return false;\n };\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n\n\n compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {\n return -1;\n }\n\n if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b]; // Parentless nodes are either documents or disconnected\n\n if (!aup || !bup) {\n return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n } // Otherwise we need full lists of their ancestors for comparison\n\n\n cur = a;\n\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n\n cur = b;\n\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n } // Walk down the tree looking for a discrepancy\n\n\n while (ap[i] === bp[i]) {\n i++;\n }\n\n return i ? // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first\n ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\n };\n return document;\n };\n\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n\n Sizzle.matchesSelector = function (elem, expr) {\n // Set document vars if needed\n if ((elem.ownerDocument || elem) !== document) {\n setDocument(elem);\n }\n\n if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n if ((context.ownerDocument || context) !== document) {\n setDocument(context);\n }\n\n return contains(context, elem);\n };\n\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n if ((elem.ownerDocument || elem) !== document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n\n\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n };\n\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function ATTR(match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n \"CHILD\": function CHILD(match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n\n return match;\n },\n \"PSEUDO\": function PSEUDO(match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function TAG(nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function CLASS(className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function ATTR(name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n };\n },\n \"CHILD\": function CHILD(type, what, argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function PSEUDO(pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element (issue #299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function target(elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function root(elem) {\n return elem === docElem;\n },\n \"focus\": function focus(elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function checked(elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function selected(elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n \"empty\": function empty(elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n \"parent\": function parent(elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function header(elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function input(elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function button(elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function text(elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && ( // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument > length ? length : argument;\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"]; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results : matcherIn; // Find primary matches\n\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function superMatcher(seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n outermostContext = context === document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n\n if (!context && elem.ownerDocument !== document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n compile = Sizzle.compile = function (selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\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 */\n\n\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }; // One-time assignments\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n\n support.detectDuplicates = !!hasDuplicate; // Initialize against the default document\n\n setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n }); // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\n if (!assert(function (el) {\n el.innerHTML = \"\";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n } // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n\n\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \"\";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n } // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n\n\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n\n return Sizzle;\n }(window);\n\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n\n var dir = function dir(elem, _dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[_dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var _siblings = function siblings(n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n ;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function find(selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function filter(selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function not(selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function is(selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function has(target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function closest(selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function index(elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function add(selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function addBack(selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function parent(elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function parents(elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function parentsUntil(elem, i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function next(elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function prev(elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function nextAll(elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function prevAll(elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function nextUntil(elem, i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function prevUntil(elem, i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function siblings(elem) {\n return _siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function children(elem) {\n return _siblings(elem.firstChild);\n },\n contents: function contents(elem) {\n if (typeof elem.contentDocument !== \"undefined\") {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\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 */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n _fired,\n // Flag to prevent firing\n _locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function fire() {\n // Enforce single-firing\n _locked = _locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n _fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (_locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function add() {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function remove() {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function has(fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function empty() {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function disable() {\n _locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function disabled() {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function lock() {\n _locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function locked() {\n return !!_locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function fireWith(context, args) {\n if (!_locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function fire() {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function fired() {\n return !!_fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function Deferred(func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n _state = \"pending\",\n _promise = {\n state: function state() {\n return _state;\n },\n always: function always() {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function _catch(fn) {\n return _promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function pipe()\n /* fnDone, fnFail, fnProgress */\n {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function then(onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function mightThrow() {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && ( // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n _typeof(returned) === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function promise(obj) {\n return obj != null ? jQuery.extend(obj, _promise) : _promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n _promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n _state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n _promise.promise(deferred); // Call given func if any\n\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function when(singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = _slice.call(arguments),\n // the master Deferred\n master = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function updateFunc(i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;\n\n if (! --remaining) {\n master.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, master.done(updateFunc(i)).resolve, master.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (master.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return master.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), master.reject);\n }\n\n return master.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n [\"catch\"](function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function ready(wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\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\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function fn(elem, key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(all, letter) {\n return letter.toUpperCase();\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)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function acceptData(owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function cache(owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function set(owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function get(owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function access(owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function remove(owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function hasData(owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\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\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function hasData(elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function data(elem, name, _data) {\n return dataUser.access(elem, name, _data);\n },\n removeData: function removeData(elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function _data(elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function _removeData(elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function data(key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (_typeof(key) === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function removeData(key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function queue(elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function dequeue(elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function next() {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function _queueHooks(elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function queue(type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function dequeue(type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function clearQueue(type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function promise(type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function resolve() {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n var swap = function swap(elem, options, callback, args) {\n var ret,\n name,\n old = {}; // Remember the old values, and insert the new ones\n\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n\n ret = callback.apply(elem, args || []); // Revert the old values\n\n for (name in options) {\n elem.style[name] = old[name];\n }\n\n return ret;\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function show() {\n return showHide(this, true);\n },\n hide: function hide() {\n return showHide(this);\n },\n toggle: function toggle(state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i; // We have to close these tags to support XHTML (#13200)\n\n var wrapMap = {\n // Support: IE <=9 only\n option: [1, \"\"],\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting or other required elements.\n thead: [1, \"\", \"
\"],\n col: [2, \"\", \"
\"],\n tr: [2, \"\", \"
\"],\n td: [3, \"\", \"
\"],\n _default: [0, \"\", \"\"]\n }; // Support: IE <=9 only\n\n wrapMap.optgroup = wrapMap.option;\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|&#?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n })();\n\n var rkeyEvent = /^key/,\n rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\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).\n\n\n function expectSync(elem, type) {\n return elem === safeActiveElement() === (type === \"focus\");\n } // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n function _on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (_typeof(types) === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n _on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function fn(event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\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 */\n\n\n jQuery.event = {\n global: {},\n add: function add(elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Don't attach events to noData or text/comment nodes (but allow plain objects)\n\n if (!elemData) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = {};\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function remove(elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function dispatch(nativeEvent) {\n // Make a writable jQuery.Event from the native event object\n var event = jQuery.event.fix(nativeEvent);\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n handlers = (dataPriv.get(this, \"events\") || {})[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function handlers(event, _handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = _handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < _handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: _handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function addProp(name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function set(value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function fix(originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function setup(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", returnTrue);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function trigger(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function _default(event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function postDispatch(event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\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.\n\n function leverageNative(el, type, expectSync) {\n // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n if (!expectSync) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function handler(event) {\n var notAsync,\n result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n // Saved data should be false in such cases, but might be a leftover capture object\n // from an async native handler (gh-4350)\n if (!saved.length) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = _slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous\n\n notAsync = expectSync(this, type);\n this[type]();\n result = dataPriv.get(this, type);\n\n if (saved !== result || notAsync) {\n dataPriv.set(this, type, false);\n } else {\n result = {};\n }\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result.value;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering the\n // native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved.length) {\n // ...and capture the result\n dataPriv.set(this, type, {\n value: jQuery.event.trigger( // Support: IE <=9 - 11+\n // Extend with the prototype to reset the above stopImmediatePropagation()\n jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)\n }); // Abort handling of the native event\n\n event.stopImmediatePropagation();\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (#504, #13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\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\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function preventDefault() {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: function which(event) {\n var button = event.button; // Add which for key events\n\n if (event.which == null && rkeyEvent.test(event.type)) {\n return event.charCode != null ? event.charCode : event.keyCode;\n } // Add which for click: 1 === left; 2 === middle; 3 === right\n\n\n if (!event.which && button !== undefined && rmouseEvent.test(event.type)) {\n if (button & 1) {\n return 1;\n }\n\n if (button & 2) {\n return 3;\n }\n\n if (button & 4) {\n return 2;\n }\n\n return 0;\n }\n\n return event.which;\n }\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function setup() {\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller\n\n return false;\n },\n trigger: function trigger() {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n delegateType: delegateType\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).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function handle(event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function on(types, selector, data, fn) {\n return _on(this, types, selector, data, fn);\n },\n one: function one(types, selector, data, fn) {\n return _on(this, types, selector, data, fn, 1);\n },\n off: function off(types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (_typeof(types) === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var\n /* eslint-disable max-len */\n // See https://github.com/eslint/eslint/issues/3229\n rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n /* eslint-enable */\n // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /\\s*$/g; // Prefer a tbody over its parent table for containing new rows\n\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n\n return elem;\n } // Replace/restore the type attribute of script elements for safe DOM manipulation\n\n\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n\n return elem;\n }\n\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n if (dest.nodeType !== 1) {\n return;\n } // 1. Copy private data: events, handlers, etc.\n\n\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.access(src);\n pdataCur = dataPriv.set(dest, pdataOld);\n events = pdataOld.events;\n\n if (events) {\n delete pdataCur.handle;\n pdataCur.events = {};\n\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n } // 2. Copy user data\n\n\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n } // Fix IE bugs, see support tests\n\n\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.\n\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = concat.apply([], args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit\n\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n\n domManip(self, args, callback, ignored);\n });\n }\n\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n\n if (fragment.childNodes.length === 1) {\n fragment = first;\n } // Require either new content or an interest in ignored elements to invoke the callback\n\n\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length; // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (#8070).\n\n for (; i < l; i++) {\n node = fragment;\n\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration\n\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n\n callback.call(collection[i], node, i);\n }\n\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts\n\n jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion\n\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n });\n }\n } else {\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n\n return collection;\n }\n\n function _remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n\n node.parentNode.removeChild(node);\n }\n }\n\n return elem;\n }\n\n jQuery.extend({\n htmlPrefilter: function htmlPrefilter(html) {\n return html.replace(rxhtmlTag, \"<$1>\");\n },\n clone: function clone(elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem); // Fix IE cloning issues\n\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n } // Copy the events from the original to the clone\n\n\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n } // Preserve script evaluation history\n\n\n destElements = getAll(clone, \"script\");\n\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n } // Return the cloned set\n\n\n return clone;\n },\n cleanData: function cleanData(elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n } // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n\n\n elem[dataPriv.expando] = undefined;\n }\n\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function detach(selector) {\n return _remove(this, selector, true);\n },\n remove: function remove(selector) {\n return _remove(this, selector);\n },\n text: function text(value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function append() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function prepend() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function before() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function after() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function empty() {\n var elem,\n i = 0;\n\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes\n\n elem.textContent = \"\";\n }\n }\n\n return this;\n },\n clone: function clone(dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function html(value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n } // See if we can take a shortcut and just use innerHTML\n\n\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n\n try {\n for (; i < l; i++) {\n elem = this[i] || {}; // Remove element nodes and prevent memory leaks\n\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n\n elem = 0; // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function replaceWith() {\n var ignored = []; // Make the changes, replacing each non-ignored context element with the new content\n\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n\n if (parent) {\n parent.replaceChild(elem, this);\n }\n } // Force callback invocation\n\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n\n push.apply(ret, elems.get());\n }\n\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n\n var getStyles = function getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n };\n\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n\n div = null;\n }\n\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\"); // Finish early in limited (non-browser) environments\n\n if (!div.style) {\n return;\n } // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (#8908)\n\n\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function boxSizingReliable() {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function pixelBoxStyles() {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function pixelPosition() {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function reliableMarginLeft() {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function scrollboxSize() {\n computeStyleTests();\n return scrollboxSizeVal;\n }\n });\n })();\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem); // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, #12537)\n // .css('--customProperty) (#3144)\n\n if (computed) {\n ret = computed.getPropertyValue(name) || computed[name];\n\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n } // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n\n\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth; // Put in the new values to get a computed value out\n\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width; // Revert the changed values\n\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n\n return ret !== undefined ? // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function get() {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n } // Hook needed; redefine it so that the support test is not executed again.\n\n\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {}; // Return a vendor-prefixed property or undefined\n\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n\n while (i--) {\n name = cssPrefixes[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n\n\n function finalPropName(name) {\n var _final = jQuery.cssProps[name] || vendorProps[name];\n\n if (_final) {\n return _final;\n }\n\n if (name in emptyStyle) {\n return name;\n }\n\n return vendorProps[name] = vendorPropName(name) || name;\n }\n\n var // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n rcustomProp = /^--/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n\n function setPositiveNumber(elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ? // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0; // Adjustment may not be necessary\n\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n if (box === \"margin\") {\n delta += jQuery.css(elem, box + cssExpand[i], true, styles);\n } // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\n\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles); // For \"border\" or \"margin\", add border\n\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles); // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n } // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n } // For \"content\" or \"padding\", subtract border\n\n\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n } // Account for positive content-box scroll gutter when requested by providing computedVal\n\n\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n\n return delta;\n }\n\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n\n val = \"auto\";\n } // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n // Support: IE 9-11 only\n // Also use offsetWidth/offsetHeight for when box sizing is unreliable\n // We use getClientRects() to check for hidden/disconnected.\n // In those cases, the computed value can be trusted to be border-box\n\n\n if ((!support.boxSizingReliable() && isBorderBox || val === \"auto\" || !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") && elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n\n valueIsBorderBox = offsetProp in elem;\n\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n } // Normalize \"\" and auto\n\n\n val = parseFloat(val) || 0; // Adjust for the element's box model\n\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function get(elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"gridArea\": true,\n \"gridColumn\": true,\n \"gridColumnEnd\": true,\n \"gridColumnStart\": true,\n \"gridRow\": true,\n \"gridRowEnd\": true,\n \"gridRowStart\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function style(elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n } // Make sure that we're working with the right name\n\n\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style; // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Gets hook for the prefixed version, then unprefixed version\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value\n\n if (value !== undefined) {\n type = _typeof(value); // Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret); // Fixes bug #9237\n\n type = \"number\";\n } // Make sure that null and NaN values aren't set (#7116)\n\n\n if (value == null || value !== value) {\n return;\n } // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n\n\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n } // background-* props affect original clone's values\n\n\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n } // If a hook was provided, use that value, otherwise just set the specified value\n\n\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n } // Otherwise just get the value from the style object\n\n\n return style[name];\n }\n },\n css: function css(elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Try prefixed name followed by the unprefixed name\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there\n\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n } // Otherwise, if a way to get the computed value exists, use that\n\n\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n } // Convert \"normal\" to computed value\n\n\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n } // Make numeric if forced or a qualifier was provided and val looks numeric\n\n\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function get(elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && ( // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function set(elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n } // Convert to pixels if value adjustment is needed\n\n\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n }); // These hooks are used by animate to expand properties\n\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function expand(value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n\n return expanded;\n }\n };\n\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function css(name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n\n return map;\n }\n\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function init(elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function cur() {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function run(percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n\n this.now = (this.end - this.start) * eased + this.start;\n\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function get(tween) {\n var result; // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n } // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n\n\n result = jQuery.css(tween.elem, tween.prop, \"\"); // Empty strings, null, undefined and \"auto\" are converted to 0.\n\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function set(tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n }; // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function set(tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function linear(p) {\n return p;\n },\n swing: function swing(p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point\n\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n\n jQuery.fx.tick();\n }\n } // Animations created synchronously will run synchronously\n\n\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n } // Generate parameters to create a standard animation\n\n\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n }; // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n\n includeWidth = includeWidth ? 1 : 0;\n\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n\n return attrs;\n }\n\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\"); // Queue-skipping animations hijack the fx hooks\n\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n } // Detect show/hide animations\n\n\n for (prop in props) {\n value = props[prop];\n\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true; // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n } // Bail out if this is a no-op like .hide().hide()\n\n\n propTween = !jQuery.isEmptyObject(props);\n\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n } // Restrict \"overflow\" and \"display\" styles during box animations\n\n\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade\n\n restoreDisplay = dataShow && dataShow.display;\n\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n\n display = jQuery.css(elem, \"display\");\n\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n } // Animate inline elements as inline-block\n\n\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n\n style.display = \"inline-block\";\n }\n }\n }\n\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n } // Implement show/hide animations\n\n\n propTween = false;\n\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n } // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\n\n if (toggle) {\n dataShow.hidden = !hidden;\n } // Show elements before animating them\n\n\n if (hidden) {\n showHide([elem], true);\n }\n /* eslint-disable no-loop-func */\n\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n\n dataPriv.remove(elem, \"fxshow\");\n\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n } // Per-property setup\n\n\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass\n\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n\n hooks = jQuery.cssHooks[name];\n\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name]; // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function tick() {\n if (stopped) {\n return false;\n }\n\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n\n deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield\n\n if (percent < 1 && length) {\n return remaining;\n } // If this was an empty animation, synthesize a final progress notification\n\n\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n } // Resolve the animation and report its conclusion\n\n\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function createTween(prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function stop(gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n\n if (stopped) {\n return this;\n }\n\n stopped = true;\n\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n } // Resolve when we played the last frame; otherwise, reject\n\n\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n\n return this;\n }\n }),\n props = animation.props;\n\n propFilter(props, animation.opts.specialEasing);\n\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n\n return result;\n }\n }\n\n jQuery.map(props, createTween, animation);\n\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n } // Attach callbacks from options\n\n\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function tweener(props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n\n var prop,\n index = 0,\n length = props.length;\n\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function prefilter(callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && _typeof(speed) === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n }; // Go to the end state if fx are off\n\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n } // Normalize opt.queue - true/undefined/null -> \"fx\"\n\n\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n } // Queueing\n\n\n opt.old = opt.complete;\n\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n\n return opt;\n };\n\n jQuery.fn.extend({\n fadeTo: function fadeTo(speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show() // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function animate(prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function doAnimation() {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately\n\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function stop(type, clearQueue, gotoEnd) {\n var stopQueue = function stopQueue(hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n\n if (clearQueue && type !== false) {\n this.queue(type || \"fx\", []);\n }\n\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n } // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n\n\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function finish(type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0; // Enable finishing flag on private data\n\n data.finish = true; // Empty the queue first\n\n jQuery.queue(this, type, []);\n\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n } // Look for any active animations, and finish them\n\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n } // Look for any animations in the old queue and finish them\n\n\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n } // Turn off finishing flag\n\n\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (i, name) {\n var cssFn = jQuery.fn[name];\n\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n }); // Generate shortcuts for custom animations\n\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n\n for (; i < timers.length; i++) {\n timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)\n\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n jQuery.fx.stop();\n }\n\n fxNow = undefined;\n };\n\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n\n jQuery.fx.interval = 13;\n\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n\n inProgress = true;\n schedule();\n };\n\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\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/\n\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\"; // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n\n support.checkOn = input.value !== \"\"; // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n\n support.optSelected = opt.selected; // Support: IE <=11 only\n // An input loses its value after becoming a radio\n\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function attr(name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function attr(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n } // Fallback to prop when attributes are not supported\n\n\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n } // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n elem.setAttribute(name, value + \"\");\n return value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined\n\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function set(elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n\n if (val) {\n elem.value = val;\n }\n\n return value;\n }\n }\n }\n },\n removeAttr: function removeAttr(elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n }); // Hooks for boolean attributes\n\n boolHook = {\n set: function set(elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function prop(name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function removeProp(name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function prop(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n return elem[name] = value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function get(elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n // Use proper attribute retrieval(#12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\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\n\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function get(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n\n return null;\n },\n set: function set(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent) {\n parent.selectedIndex;\n\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n }); // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n\n return [];\n }\n\n jQuery.fn.extend({\n addClass: function addClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem);\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n if (cur.indexOf(\" \" + clazz + \" \") < 0) {\n cur += clazz + \" \";\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n removeClass: function removeClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem); // This expression is here for better compressibility (see addClass)\n\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n // Remove *all* instances\n while (cur.indexOf(\" \" + clazz + \" \") > -1) {\n cur = cur.replace(\" \" + clazz + \" \", \" \");\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n toggleClass: function toggleClass(value, stateVal) {\n var type = _typeof(value),\n isValidValue = type === \"string\" || Array.isArray(value);\n\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n\n return this.each(function () {\n var className, i, self, classNames;\n\n if (isValidValue) {\n // Toggle individual class names\n i = 0;\n self = jQuery(this);\n classNames = classesToArray(value);\n\n while (className = classNames[i++]) {\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n } // Toggle whole class name\n\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n } // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n\n\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function hasClass(selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function val(value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n\n ret = elem.value; // Handle most common string cases\n\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n } // Handle cases where value is null/undef or number\n\n\n return ret == null ? \"\" : ret;\n }\n\n return;\n }\n\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n\n if (this.nodeType !== 1) {\n return;\n }\n\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n } // Treat null/undefined as \"\"; convert numbers to string\n\n\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting\n\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function get(elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val : // Support: IE <=10 - 11 only\n // option.text throws exceptions (#14686, #14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function get(elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n } // Loop through all the selected options\n\n\n for (; i < max; i++) {\n option = options[i]; // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (#2551)\n\n if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val(); // We don't need an array for one selects\n\n if (one) {\n return value;\n } // Multi-Selects return an array\n\n\n values.push(value);\n }\n }\n\n return values;\n },\n set: function set(elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n\n while (i--) {\n option = options[i];\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n /* eslint-enable no-cond-assign */\n\n } // Force browsers to behave consistently when non-matching value is set\n\n\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n\n return values;\n }\n }\n }\n }); // Radios and checkboxes getter/setter\n\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function set(elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n }); // Return jQuery for attributes-only inclusion\n\n support.focusin = \"onfocusin\" in window;\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function stopPropagationCallback(e) {\n e.stopPropagation();\n };\n\n jQuery.extend(jQuery.event, {\n trigger: function trigger(event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes\n\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n } // focus/blur morphs to focusin/out; ensure we're not firing them right now\n\n\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n\n ontype = type.indexOf(\":\") < 0 && \"on\" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string\n\n event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === \"object\" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null; // Clean up the event in case it is being reused\n\n event.result = undefined;\n\n if (!event.target) {\n event.target = elem;\n } // Clone any incoming data and prepend the event, creating the handler arg list\n\n\n data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines\n\n special = jQuery.event.special[type] || {};\n\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n } // Determine event propagation path in advance, per W3C events spec (#9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\n\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n } // Only add window if we got to document (e.g., not plain obj or detached DOM)\n\n\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n } // Fire handlers on the event path\n\n\n i = 0;\n\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler\n\n handle = (dataPriv.get(cur, \"events\") || {})[event.type] && dataPriv.get(cur, \"handle\");\n\n if (handle) {\n handle.apply(cur, data);\n } // Native handler\n\n\n handle = ontype && cur[ontype];\n\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n\n event.type = type; // If nobody prevented the default action, do it now\n\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (#6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n\n if (tmp) {\n elem[ontype] = null;\n } // Prevent re-triggering of the same event, since we already bubbled it above\n\n\n jQuery.event.triggered = type;\n\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n\n elem[type]();\n\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n\n jQuery.event.triggered = undefined;\n\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function simulate(type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function trigger(type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function triggerHandler(type, data) {\n var elem = this[0];\n\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\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\n\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function handler(event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n\n jQuery.event.special[fix] = {\n setup: function setup() {\n var doc = this.ownerDocument || this,\n attaches = dataPriv.access(doc, fix);\n\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function teardown() {\n var doc = this.ownerDocument || this,\n attaches = dataPriv.access(doc, fix) - 1;\n\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n\n var location = window.location;\n var nonce = Date.now();\n var rquery = /\\?/; // Cross-browser xml parsing\n\n jQuery.parseXML = function (data) {\n var xml;\n\n if (!data || typeof data !== \"string\") {\n return null;\n } // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n\n\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {\n xml = undefined;\n }\n\n if (!xml || xml.getElementsByTagName(\"parsererror\").length) {\n jQuery.error(\"Invalid XML: \" + data);\n }\n\n return xml;\n };\n\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n function buildParams(prefix, obj, traditional, add) {\n var name;\n\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (_typeof(v) === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n } // Serialize an array of form elements or a set of\n // key/values into a query string\n\n\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function add(key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n if (a == null) {\n return \"\";\n } // If an array was passed in, assume that it is an array of form elements.\n\n\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n } // Return the resulting serialization\n\n\n return s.join(\"&\");\n };\n\n jQuery.fn.extend({\n serialize: function serialize() {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function serializeArray() {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type; // Use .is( \":disabled\" ) so that fieldset[disabled] works\n\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (i, elem) {\n var val = jQuery(this).val();\n\n if (val == null) {\n return null;\n }\n\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // #7653, #8125, #8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href; // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n } // Base inspection function for prefilters and transports\n\n\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n } // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes #9887\n\n\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n\n return target;\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 */\n\n\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process\n\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n } // Check if we're dealing with a known content-type\n\n\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n } // Check to see if we have a response for the expected dataType\n\n\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n\n if (!firstDataType) {\n firstDataType = type;\n }\n } // Or just use first one\n\n\n finalDataType = finalDataType || firstDataType;\n } // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n\n\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n\n return responses[finalDataType];\n }\n }\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n\n\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys\n\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n\n current = dataTypes.shift(); // Convert to each sequential dataType\n\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n } // Apply the dataFilter if provided\n\n\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n\n prev = current;\n current = dataTypes.shift();\n\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev; // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current]; // If none found, seek a pair\n\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2]; // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n\n break;\n }\n }\n }\n } // Apply converter (if not an equivalence)\n\n\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s[\"throws\"]) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n\n return {\n state: \"success\",\n data: response\n };\n }\n\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function ajaxSetup(target, settings) {\n return settings ? // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function ajax(url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (_typeof(url) === \"object\") {\n options = url;\n url = undefined;\n } // Force options to be an object\n\n\n options = options || {};\n\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n _statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function getResponseHeader(key) {\n var match;\n\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function getAllResponseHeaders() {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function setRequestHeader(name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function overrideMimeType(type) {\n if (completed == null) {\n s.mimeType = type;\n }\n\n return this;\n },\n // Status-dependent callbacks\n statusCode: function statusCode(map) {\n var code;\n\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n _statusCode[code] = [_statusCode[code], map[code]];\n }\n }\n }\n\n return this;\n },\n // Cancel the request\n abort: function abort(statusText) {\n var finalText = statusText || strAbort;\n\n if (transport) {\n transport.abort(finalText);\n }\n\n done(0, finalText);\n return this;\n }\n }; // Attach deferreds\n\n\n deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (#10093: consistency with old signature)\n // We also use the url parameter if available\n\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\"); // Alias method option to type as per ticket #12004\n\n s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list\n\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"]; // A cross-domain request is in order when the origin doesn't match the current origin.\n\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\"); // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n\n try {\n urlAnchor.href = s.url; // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n } // Convert data if not already a string\n\n\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n } // Apply prefilters\n\n\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there\n\n if (completed) {\n return jqXHR;\n } // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\n\n fireGlobals = jQuery.event && s.global; // Watch for a new set of requests\n\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n } // Uppercase the type\n\n\n s.type = s.type.toUpperCase(); // Determine if request has content\n\n s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n\n cacheURL = s.url.replace(rhash, \"\"); // More options handling for requests with no content\n\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url\n\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data; // #9682: remove data so that it's not used in an eventual retry\n\n delete s.data;\n } // Add or update anti-cache param if needed\n\n\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce++ + uncached;\n } // Put hash and anti-cache on the URL that will be requested (gh-1732)\n\n\n s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\n\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n } // Set the correct header, if data is being sent\n\n\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n } // Set the Accepts header for the server, depending on the dataType\n\n\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]); // Check for headers option\n\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n } // Allow custom headers/mimetypes and early abort\n\n\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n } // Aborting is no longer a cancellation\n\n\n strAbort = \"abort\"; // Install callbacks on deferreds\n\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error); // Get transport\n\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort\n\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1; // Send global event\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n } // If request was aborted inside ajaxSend, stop there\n\n\n if (completed) {\n return jqXHR;\n } // Timeout\n\n\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n } // Propagate others as results\n\n\n done(-1, e);\n }\n } // Callback for when everything is done\n\n\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText; // Ignore repeat invocations\n\n if (completed) {\n return;\n }\n\n completed = true; // Clear timeout if it exists\n\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n } // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n\n\n transport = undefined; // Cache response headers\n\n responseHeadersString = headers || \"\"; // Set readyState\n\n jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful\n\n isSuccess = status >= 200 && status < 300 || status === 304; // Get response data\n\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n } // Convert no matter what (that way responseXXX fields are always set)\n\n\n response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining\n\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n\n modified = jqXHR.getResponseHeader(\"etag\");\n\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n } // if no content\n\n\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\"; // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\"; // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n\n if (status || !statusText) {\n statusText = \"error\";\n\n if (status < 0) {\n status = 0;\n }\n }\n } // Set data for the fake xhr object\n\n\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\"; // Success/Error\n\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n } // Status-dependent callbacks\n\n\n jqXHR.statusCode(_statusCode);\n _statusCode = undefined;\n\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n } // Complete\n\n\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]); // Handle the global AJAX counter\n\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n\n return jqXHR;\n },\n getJSON: function getJSON(url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function getScript(url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n } // The url can be an options object (which then must have .url)\n\n\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n\n jQuery._evalUrl = function (url, options) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (#11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function textScript() {}\n },\n dataFilter: function dataFilter(response) {\n jQuery.globalEval(response, options);\n }\n });\n };\n\n jQuery.fn.extend({\n wrapAll: function wrapAll(html) {\n var wrap;\n\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n } // The elements to wrap the target around\n\n\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n\n wrap.map(function () {\n var elem = this;\n\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n\n return elem;\n }).append(this);\n }\n\n return this;\n },\n wrapInner: function wrapInner(html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function wrap(html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function unwrap(selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // #1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest\n\n\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function send(headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided\n\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n } // Override mime type if needed\n\n\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n } // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n\n\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n } // Set headers\n\n\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n } // Callback\n\n\n _callback = function callback(type) {\n return function () {\n if (_callback) {\n _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete( // File: protocol always yields status 0; see #8605, #14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n }; // Listen to events\n\n\n xhr.onload = _callback();\n errorCallback = xhr.onerror = xhr.ontimeout = _callback(\"error\"); // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (_callback) {\n errorCallback();\n }\n });\n }\n };\n } // Create the abort callback\n\n\n _callback = _callback(\"abort\");\n\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // #14683: Only rethrow if this hasn't been notified as an error yet\n if (_callback) {\n throw e;\n }\n }\n },\n abort: function abort() {\n if (_callback) {\n _callback();\n }\n }\n };\n }\n }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n }); // Install script dataType\n\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function textScript(text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n }); // Handle cache's special case and crossDomain\n\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n }); // Bind script tag hack transport\n\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, _callback2;\n\n return {\n send: function send(_, complete) {\n script = jQuery(\"