{"version":3,"sources":["webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./resources/js/application/app.js","webpack:///./resources/js/application/bootstrap.js","webpack:///./node_modules/gasparesganga-jquery-loading-overlay/dist/loadingoverlay.min.js","webpack:///./node_modules/jquery-confirm/dist/jquery-confirm.min.js","webpack:///./node_modules/jquery-mask-plugin/dist/jquery.mask.js","webpack:///./node_modules/jquery-maskmoney/dist/jquery.maskMoney.min.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/lightslider/dist/js/lightslider.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"names":["module","exports","require","getBaseUrl","$","attr","searchProducts","paramName","paramValue","preserveParams","console","log","urlParams","URLSearchParams","window","location","search","set","url","toString","href","on","val","this","length","replace","getJSON","data","street","neighborhood","city","e","preventDefault","referrer","document","baseUrl","indexOf","lightSlider","gallery","item","loop","thumbItem","slideMargin","currentPagerPosition","thisEl","quantityEl","parent","find","actualQuantity","parseInt","hasClass","trigger","scrollIntoViewIfNeeded","quantity","quantityAvailable","text","productManageStock","alert","title","content","type","useBootstrap","attributes","variationEls","each","name","value","push","postData","product_id","variation_id","ajax","method","datatype","beforeSend","addClass","success","res","removeClass","setTimeout","error","remove","insertAfter","cart_item_id","reload","undefined","show","hide","removeAttr","focus","SPMaskBehavior","spOptions","onKeyPress","field","options","mask","apply","arguments","maskMoney","allowNegative","thousands","decimal","orderTotal","parseFloat","deliverTax","formData","serialize","dataType","whatsLinkHref","changeStock","hasStock","verifyForVariations","productVariations","productHasStock","index","el","$el","selectedVariationIndex","findIndex","variation","orderObject","objVar","Object","keys","sort","reduce","obj","key","JSON","stringify","selectedVariation","id","stock","Number","brlNumber","Intl","NumberFormat","currency","maximumFractionDigits","minimumFractionDigits","format","price","html","LoadingOverlay","imageColor","productDefaultValue","productVariation","forEach","attribute","change","selectDefaultPriceValue","targetElName","targetElValue","targetEl","formGroupEl","event","target","jQuery","g","a","t","background","backgroundClass","image","imageAnimation","imageAutoResize","imageResizeFactor","imageClass","imageOrder","fontawesome","fontawesomeAnimation","fontawesomeAutoResize","fontawesomeResizeFactor","fontawesomeColor","fontawesomeOrder","custom","customAnimation","customAutoResize","customResizeFactor","customOrder","textAnimation","textAutoResize","textResizeFactor","textColor","textClass","textOrder","progress","progressAutoResize","progressResizeFactor","progressColor","progressClass","progressOrder","progressFixedPosition","progressSpeed","progressMin","progressMax","size","maxSize","minSize","direction","fade","resizeInterval","zIndex","c","overlay","position","display","element","overflow","flex","element_svg","width","height","progress_fixed","left","progress_wrapper","top","progress_bar","n","count","container","settings","wholePage","resizeIntervalId","s","animations","progressPosition","d","time","o","w","p","u","extend","is","class","css","toLowerCase","isArray","fill","stroke","v","slice","append","children","global","done","appendTo","r","bar","fixed","margin","min","max","speed","i","split","y","units","fadeTo","f","setInterval","animate","opacity","clearInterval","removeData","l","m","getBoundingClientRect","offset","innerWidth","innerHeight","Math","body","contains","toggle","order","loadingoverlay_autoresize","loadingoverlay_resizefactor","x","h","isNaN","LoadingOverlaySetup","fn","join","confirm","option2","$this","warn","jcOption","buttons","jconfirm","pluginDefaults","defaultButtons","defaults","firstBtn","action","closeIcon","putDefaultButtons","dialog","confirmKeys","pluginOptions","instance","Jconfirm","instances","_init","prototype","that","lastFocused","_id","round","random","contentParsed","createElement","lazyOpen","open","_buildHTML","_parseAnimation","animation","closeAnimation","_parseBgDismissAnimation","backgroundDismissAnimation","_parseColumnClass","columnClass","_parseTheme","theme","_parseType","template","animationParsed","backgroundDismissAnimationParsed","typeParsed","typeAnimated","bootstrapClasses","row","columnClassParsed","containerFluid","boxWidth","titleClass","themeParsed","ariaLabel","bgOpacity","rtl","$jconfirmBoxContainer","$jconfirmBox","$body","$jconfirmBg","$title","$titleContainer","$content","$contentPane","$icon","$closeIcon","$holder","$btnc","$scrollPane","setStartingPoint","_contentReady","Deferred","_modalReady","offsetTop","offsetBottom","setTitle","setIcon","_setButtons","_parseContent","initDraggable","isAjax","showLoading","when","then","isAjaxLoading","setContent","hideLoading","_updateContentMaxHeight","onContentReady","autoClose","_startCountDown","_watchContent","animationSpeed","animationBounce","_getCSS","_typePrefix","setType","oldClass","_themePrefix","setTheme","previous","k","trim","_bgDismissPrefix","bgDismissAnimation","closeAnimationParsed","_animationPrefix","setAnimation","which","a_string","setCloseAnimation","setAnimationSpeed","setColumnClass","colClass","outerHeight","setBoxWidth","$t","resetDrag","draggable","mouseX","clientX","mouseY","clientY","isDrag","movingX","initialX","movingY","initialY","setDrag","alignMiddle","outerWidth","boxHeight","windowWidth","windowHeight","dragUpdate","dragWindowBorder","leftDistance","topDistance","dragWindowGap","_scrollTop","pageYOffset","B","D","documentElement","scrollTop","_timer","prevContentHeight","smoothContent","contentHeight","wh","watchInterval","_overflowClass","_hilightAnimating","highlight","hiLightModal","duration","_bindEvents","boxClicked","click","str","buttonName","shouldClose","backgroundDismiss","btnResponse","close","isKeyDown","reactOnKey","_cubic_bezier","bounce","total_buttons","button","btnClass","isHidden","isDisabled","button_element","prop","onAction","_stopCountDown","setText","className","disable","enable","closeIconClass","closeHtml","string","force","promise","response","updateTitleContainer","iconClass","icon","setContentPrepend","prepend","setContentAppend","loadingSpinner","disableButtons","enableButtons","ajaxResponse","always","status","xhr","resolve","contentLoaded","substr","substring","get","autoCloseInterval","$cd","opt","button_key","seconds","ceil","_getKey","initial","String","fromCharCode","test","eq","buttonKey","keyChar","escapeKey","setDialogCenter","info","_unwatchContent","onClosePayload","onClose","unbind","loadedClass","closeTimer","splice","scrollToPreviousElement","$lf","scrollToPreviousElementAnimate","st","ot","scrollTo","onDestroy","isOpen","_open","animateFromElement","lastClicked","iTop","iLeft","sourceTop","sourceLeft","ww","abs","onOpenBefore","onOpen","isClosed","ok","keyDown","pass","closest","Zepto","Mask","invalid","getCaret","sel","pos","ctrl","dSel","selection","cSelStart","selectionStart","navigator","appVersion","createRange","moveStart","setCaret","range","setSelectionRange","createTextRange","collapse","moveEnd","select","events","keyCode","maskDigitPosMapOld","maskDigitPosMap","jMaskGlobals","useInput","behaviour","keydown","keyup","oldValue","selectOnFocus","clearIfNotMatch","regexMask","getRegexMask","translation","pattern","optional","recursive","oRecursive","maskChunks","jMask","charAt","digit","RegExp","destroyEvents","off","calculateCaretPosition","oldVal","newVal","getMasked","caretPosNew","caretPosOld","newValL","oldValL","maskDigitsBeforeCaret","maskDigitsAfterCaret","maskDigitsBeforeCaretAll","maskDigitsBeforeCaretAllOld","caretPos","inArray","byPassKeys","keyStrokeCompensation","callbacks","skipMaskChars","lastMaskChar","check","lastUntranslatedMaskChar","buf","maskLen","valLen","addMethod","resetPos","maskDigitCount","maskDigitPosArr","reverse","maskDigit","valDigit","match","fallback","lastMaskCharDigit","mapMaskdigitPositions","maskDiff","changed","defaultArgs","callback","criteria","args","caret","placeholder","getCleanVal","getMaskedVal","init","onlyMask","maxlength","maskWatchers","HTMLAttributes","input","prefix","notSameMaskObject","maskObject","eventSupported","eventName","isSupported","setAttribute","selector","globals","interval","watchInputs","maskFunction","masked","unmask","dataMask","cleanVal","applyDataMask","maskElements","filter","dataMaskAttr","userAgent","watchDataMask","browser","mozilla","webkit","opera","msie","destroy","onpaste","b","last","toFixed","unmasked","map","suffix","affixesStay","precision","allowZero","selectionEnd","parentElement","moveToBookmark","getBookmark","compareEndPoints","start","end","Array","j","returnValue","charCode","pow","bind","call","factory","Error","noGlobal","arr","getProto","getPrototypeOf","flat","array","concat","class2type","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","nodeType","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","node","doc","script","getAttribute","head","appendChild","parentNode","removeChild","toType","version","context","isArrayLike","jquery","constructor","toArray","num","pushStack","elems","ret","merge","prevObject","elem","first","even","grep","_elem","odd","len","copy","copyIsArray","clone","deep","isPlainObject","expando","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","second","invert","matches","callbackExpect","arg","guid","Symbol","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pop","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","els","seed","nid","groups","newSelector","newContext","ownerDocument","exec","getElementById","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","addEventListener","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","activeElement","hasFocus","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","has","targets","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","reject","noValue","fail","Callbacks","object","_","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","lock","fireWith","func","tuples","state","deferred","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","message","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","acceptData","owner","Data","uid","defineProperty","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","parse","getData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","Event","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","beforeunload","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","insertBefore","before","after","replaceWith","replaceChild","prependTo","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","padding","border","expand","expanded","parts","propHooks","run","percent","eased","step","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speeds","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classes","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","classNames","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","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageXOffset","offsetParent","parentOffset","Height","Width","defaultExtra","funcName","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","autoWidth","slideMove","mode","useCSS","cssEasing","auto","pauseOnHover","slideEndAnimation","pause","keyPress","controls","prevHtml","nextHtml","adaptiveHeight","vertical","verticalHeight","vThumbWidth","pager","galleryMargin","thumbMargin","enableTouch","enableDrag","freeMove","swipeThreshold","responsive","onBeforeStart","onSliderLoad","onBeforeSlide","scene","onAfterSlide","onBeforeNextSlide","onBeforePrevSlide","plugin","settingsTemp","$children","windowW","resposiveObj","elSize","$slide","property","gutter","slideValue","pagerWidth","slideWidth","thumbWidth","isTouch","refresh","breakpoint","cln","ln","doCss","transition","goToPrevSlide","goToNextSlide","calWidth","initialStyle","chbreakpoint","calSW","tWr","tI","tItem","move","sSW","calL","setHeight","createPager","pagers","thumb","minPgr","$cSouter","$pager","slideThumb","cl","gMargin","ob","setCss","tH","tP","tHT","nl","sc","$thumb","slide","calSlide","resetSlide","_sV","thumbSlide","touchMove","endCoords","startCoords","swipeVal","swipeValT","touchEnd","distance","mxVal","_next","gC","ad","tW","isDraging","xMovement","yMovement","build","nextI","_touch","play","getCurrentSlideCount","getTotalSlideCount","goToSlide","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","Promise","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","__esModule","definition","installedChunks","773","deferredModules","checkDeferredModules","webpackJsonpCallback","parentChunkLoadingFunction","chunkId","chunkIds","moreModules","executeModules","resolves","chunkLoadingGlobal","checkDeferredModulesImpl","deferredModule","fulfilled","depId","startup"],"mappings":"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","file":"/js/app.js","sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","require(\"./bootstrap\");\n\nconst getBaseUrl = () => {\n return $('[name=\"base-url\"]').attr(\"content\");\n};\n\nconst getCrsfToken = () => {\n return $('meta[name=\"csrf-token\"]').attr(\"content\");\n};\n\n$(function () {\n\n $('#cep-input').on('change', async function() {\n let val = $(this).val();\n \n if(val.length < 10) {\n return;\n }\n\n val = val.replace(/\\D/g,'');\n\n const data = await $.getJSON(`https://brasilapi.com.br/api/cep/v1/${val}`);\n\n console.log(data);\n\n if(!data) {\n return;\n }\n\n $('#address-input').val(data.street);\n $('#neighborhood-input').val(data.neighborhood);\n $('#city-input').val(data.city);\n });\n\n $(\".back-button\").on(\"click\", function (e) {\n e.preventDefault();\n\n const referrer = document.referrer;\n const baseUrl = getBaseUrl();\n\n if (\n referrer !== \"\" && //check if referrer exists\n referrer.indexOf(baseUrl) !== -1 && //check if referrer is the store url\n referrer.indexOf(\"/finalizar-compra\") === -1\n ) {\n window.location.href = referrer;\n return;\n }\n\n window.location.href = baseUrl;\n });\n\n $(\".product-photos\").lightSlider({\n gallery: true,\n item: 1,\n loop: true,\n thumbItem: 4,\n //vertical: true,\n slideMargin: 0,\n currentPagerPosition: \"left\"\n });\n\n $(\".quantity-area .btn-quantity\").on(\"click\", function (e) {\n e.preventDefault();\n\n const thisEl = $(this);\n const quantityEl = $(this)\n .parent()\n .find('input[name=\"quantity\"]');\n const actualQuantity = parseInt(quantityEl.val());\n\n if (thisEl.hasClass(\"minus\") && actualQuantity > 1) {\n quantityEl.val(actualQuantity - 1).trigger(\"change\");\n }\n\n if (thisEl.hasClass(\"plus\")) {\n quantityEl.val(actualQuantity + 1).trigger(\"change\");\n }\n });\n\n function searchProducts(paramName, paramValue, preserveParams = false) {\n console.log(getBaseUrl());\n if (!preserveParams) {\n const url = getBaseUrl() +\n \"?\" +\n paramName +\n \"=\" +\n paramValue;\n\n window.location.href = url;\n return;\n }\n const urlParams = new URLSearchParams(window.location.search);\n urlParams.set(paramName, paramValue);\n\n const url = getBaseUrl() + \"?\" + urlParams.toString();\n window.location.href = url;\n }\n\n $(\"form.selectors\").on(\"submit\", function (e) {\n e.preventDefault();\n\n let search = $(this)\n .find('input[name=\"s\"]')\n .val();\n if (search == \"\" || !search) return;\n searchProducts(\"s\", search, false);\n });\n\n $(\".selectors .order-selector\").on(\"change\", function (e) {\n e.preventDefault();\n searchProducts(\"o\", $(this).val(), true);\n });\n\n $(\".categories-area-mobile button.item\").on(\"click\", function (e) {\n e.preventDefault();\n let categorySlug = $(this).attr(\"data-slug\");\n searchProducts(\"c\", categorySlug, false);\n });\n\n if (\n $(\".selectors .categories-area-mobile .wrapper .item.active\").length > 0\n ) {\n $(\n \".selectors .categories-area-mobile .wrapper .item.active\"\n )[0].scrollIntoViewIfNeeded();\n }\n\n $(\".product-page .buy-button\").on(\"click\", function (e) {\n e.preventDefault();\n\n let quantity = parseInt($('.product-page input[name=\"quantity\"]').val());\n let quantityAvailable = parseInt($('.in-stock-number').text());\n\n if (productManageStock && quantity > quantityAvailable) {\n\n $.alert({\n title: 'Estoque indisponível',\n content: 'A quantidade selecionada é maior que o estoque disponível',\n type: 'red',\n useBootstrap: false\n });\n return;\n }\n\n let attributes = [];\n let variationEls = $(\".product-page .attribute-selector\");\n if (variationEls.length > 0) {\n variationEls.each(function () {\n const name = $(this).attr('name');\n const value = $(this).val();\n\n attributes.push({name, value});\n });\n }\n const product_id = $(\".product-page #product_id\").val();\n const variation_id = $(\".product-page #variation_id\").val();\n\n const postData = {\n product_id,\n variation_id,\n quantity,\n attributes\n };\n\n $.ajax({\n method: \"POST\",\n datatype: \"JSON\",\n data: postData,\n url: `${getBaseUrl()}/api/cart`,\n beforeSend: () => {\n $(\".product-page .buy-button\")\n .addClass(\"disabled\")\n .text(\"Adicionando...\");\n },\n success: res => {\n $(\".product-page .buy-button\")\n .removeClass(\"disabled\")\n .text(\"Produto adicionado!\");\n setTimeout(() => {\n window.location.href = `${getBaseUrl()}/carrinho`;\n }, 250);\n },\n error: () => {\n $(\".product-page .buy-button\")\n .removeClass(\"disabled\")\n .text(\"Adicionar ao Carrinho\");\n $(\".product-page .error-alert\").remove();\n $(\n '
Ocorreu um erro ao adicionar o produto ao carrinho, por favor tente mais tarde.
'\n ).insertAfter(\".product-page .buy-button\");\n }\n });\n });\n\n $('.cart-page input[name=\"quantity\"]').on(\"change\", function (e) {\n e.preventDefault();\n\n const cart_item_id = $(this).data('itemId');\n const quantity = $(this).val();\n const quantityAvailable = parseInt($(this).parent().parent().find('.in-stock-number').text());\n\n if (quantity > quantityAvailable) {\n $.alert({\n title: 'Estoque indisponível',\n content: 'A quantidade selecionada é maior que o estoque disponível',\n type: 'red',\n useBootstrap: false\n });\n $(this).val(quantityAvailable);\n return;\n }\n\n const postData = {\n cart_item_id: cart_item_id,\n quantity\n };\n\n $.ajax({\n url: `${getBaseUrl()}/api/cart/update`,\n method: \"PUT\",\n datatype: \"JSON\",\n data: postData,\n success: () => {\n window.location.reload();\n }\n });\n });\n\n $(\".cart-page .remove-product\").on(\"click\", function (e) {\n e.preventDefault();\n\n const cart_item_id = $(this).data('item-id');\n\n const postData = {\n cart_item_id\n };\n\n $.ajax({\n url: `${getBaseUrl()}/api/cart/delete`,\n method: \"DELETE\",\n datatype: \"JSON\",\n data: postData,\n success: () => {\n window.location.reload();\n }\n });\n });\n\n if (\n $('#delivery_method option:selected').attr(\n \"data-is-delivery\"\n ) !== undefined\n ) {\n $(\".checkout-page .delivery-address-area\").show();\n $(\".checkout-page .delivery-price\").show();\n $(\".delivery-address-area input[data-required]\").attr(\"required\", \"required\");\n } else {\n $(\".checkout-page .delivery-address-area\").hide();\n $(\".checkout-page .delivery-price\").hide();\n $(\".delivery-address-area input\").removeAttr(\"required\");\n }\n\n $('#delivery_method').on(\"change\", function (e) {\n if ($(\n '#delivery_method option:selected'\n ).attr(\"data-is-delivery\") !== undefined) {\n $(\".checkout-page .delivery-address-area\").show();\n $(\n '.checkout-page .delivery-address-area input[name=\"address\"]'\n ).focus();\n $(\".checkout-page .delivery-price\").show();\n $(\".delivery-address-area input[data-required]\").attr(\"required\", \"required\");\n } else {\n $(\".checkout-page .delivery-address-area\").hide();\n $(\".checkout-page .delivery-price\").hide();\n $(\".delivery-address-area input\").removeAttr(\"required\");\n }\n });\n\n if (\n $('.checkout-page select[name=\"Pagamento\"] option:selected').attr(\n \"data-is-cash\"\n ) !== undefined\n ) {\n $('.checkout-page input[name=\"change\"]')\n .show()\n .focus();\n } else {\n $('.checkout-page input[name=\"change\"]').hide();\n }\n\n $('.checkout-page select[name=\"Pagamento\"]').on(\"change\", function (e) {\n if (\n $(\n '.checkout-page select[name=\"Pagamento\"] option:selected'\n ).attr(\"data-is-cash\") !== undefined\n ) {\n $('.checkout-page input[name=\"Troco\"]')\n .show()\n .focus()\n .attr(\"required\", \"required\");\n } else {\n $('.checkout-page input[name=\"Troco\"]')\n .hide()\n .removeAttr(\"required\");\n }\n });\n\n var SPMaskBehavior = function (val) {\n return val.replace(/\\D/g, \"\").length === 11\n ? \"(00) 00000-0000\"\n : \"(00) 0000-00009\";\n },\n spOptions = {\n onKeyPress: function (val, e, field, options) {\n field.mask(SPMaskBehavior.apply({}, arguments), options);\n }\n };\n\n $(\".phone-mask\").mask(SPMaskBehavior, spOptions);\n\n $(\".money-mask\").maskMoney({\n allowNegative: true,\n thousands: \".\",\n decimal: \",\",\n });\n\n $(\".checkout-page .checkout-form\").on(\"submit\", function (e) {\n e.preventDefault();\n\n let isCash =\n $(\n '.checkout-page select[name=\"payment_type\"] option:selected'\n ).attr(\"data-is-cash\") !== undefined;\n\n if (isCash) {\n let orderTotal = parseFloat($(\"#order_total_float\").val());\n let deliverTax = parseFloat($(\"#delivery_tax_float\").val());\n\n if ($('select[name=\"delivery_type\"]').val() == \"Entregar em Casa\") {\n orderTotal += deliverTax;\n }\n\n let change =\n parseFloat(\n $('input[name=\"order_change\"]')\n .val()\n .replace(/[^0-9]/, \"\")\n ) / 100;\n\n if (change < orderTotal) {\n alert(\n \"O valor para troco deve ser maior que o total do pedido que é R$ \" +\n orderTotal.toString().replace(\".\", \",\")\n );\n return;\n }\n }\n\n let formData = $(this).serialize();\n\n $.ajax({\n url: `${getBaseUrl()}/api/checkout`,\n method: \"POST\",\n dataType: \"JSON\",\n data: formData,\n beforeSend: function () {\n $(\".checkout-page .buy-button\").text(\"Gerando Pedido...\");\n },\n success: function () {\n $(\".checkout-page .buy-button\").text(\"Pedido Gerado!\");\n window.location.href = `${getBaseUrl()}/obrigado`;\n },\n error: function () {\n $(\n 'Ocorreu um erro ao gerar seu pedido, por favor tente novamente mais tarde.'\n ).insertAfter(\".checkout-page .buy-button\");\n $(\".checkout-page .buy-button\").text(\"Enviar Meu Pedido\");\n }\n });\n });\n\n if ($(\".thankyou-page .submit-wrapper .whatsapp-send-button\").length > 0) {\n let whatsLinkHref = $(\n \".thankyou-page .submit-wrapper .whatsapp-send-button\"\n ).attr(\"href\");\n if (whatsLinkHref != \"\") {\n setTimeout(() => {\n window.location.href = whatsLinkHref;\n }, 1500);\n }\n }\n\n $(window).on(\"beforeunload\", function () {\n $.LoadingOverlay(\"show\", {\n imageColor: \"var(--color2)\"\n });\n });\n\n function changeStock(hasStock = false) {\n if (!hasStock) {\n $('.product-page .buy-button').attr('disabled', 'disabled');\n $('.not-found-text').show();\n } else {\n $('.product-page .buy-button').removeAttr('disabled');\n $('.not-found-text').hide();\n }\n }\n\n function verifyForVariations() {\n if (typeof productVariations === 'undefined') {\n if (typeof productManageStock !== 'undefined' && !productManageStock) {\n changeStock(true);\n return;\n }\n\n if (typeof productHasStock !== 'undefined' && productHasStock) {\n changeStock(true);\n return;\n }\n\n changeStock(false);\n\n return;\n }\n ;\n\n const attributes = {};\n $('.product-page .variation select').each((index, el) => {\n const $el = $(el);\n let name = $el.attr('name').replace('attribute[', '').replace(']', '');\n attributes[name] = $el.val();\n });\n\n const selectedVariationIndex = productVariations.findIndex(variation => {\n function orderObject(objVar) { \n \n return Object.keys(objVar).sort().reduce(\n (obj, key) => { \n obj[key] = objVar[key]; \n return obj;\n }, \n {}\n );\n };\n \n let vAttrs = JSON.stringify(orderObject(variation.attributes));\n let aAttrs = JSON.stringify(orderObject(attributes));\n return vAttrs == aAttrs;\n });\n \n if (selectedVariationIndex === -1) {\n console.log('Erro ao buscar variação');\n return;\n }\n const selectedVariation = productVariations[selectedVariationIndex];\n\n $('#variation_id').val(selectedVariation.id);\n $('.in-stock-text .in-stock-number').text(selectedVariation.stock);\n\n if (Number(selectedVariation.stock) < 1 && productManageStock === true) {\n $('.product-page .buy-button').attr('disabled', 'disabled');\n $('.not-found-text').show();\n } else {\n $('.product-page .buy-button').removeAttr('disabled');\n $('.not-found-text').hide();\n }\n\n const brlNumber = Intl.NumberFormat('pt-br', {\n currency: 'BRL',\n maximumFractionDigits: 2,\n minimumFractionDigits: 2\n }).format(selectedVariation.price);\n $('.current-price').html(`Por: R$ ${brlNumber}`);\n }\n\n function selectDefaultPriceValue() {\n if (\n typeof productVariations === \"undefined\" ||\n typeof productDefaultValue === \"undefined\"\n ) {\n return;\n }\n\n const index = productVariations.findIndex(variation => variation.price === productDefaultValue);\n if (index === -1) {\n return;\n }\n\n const productVariation = productVariations[index];\n\n Object.keys(productVariation.attributes).forEach(attribute => {\n $(`[name=\"attribute[${attribute}]\"]`).val(productVariation.attributes[attribute]).change();\n });\n }\n\n selectDefaultPriceValue();\n $('.product-page .variation select').on('change', verifyForVariations);\n verifyForVariations();\n\n $('[data-show-if-enabled]').each(function () {\n let targetElName = $(this).attr('data-show-if-name');\n let targetElValue = $(this).attr('data-show-if-value');\n\n let targetEl = $(`[name=\"${targetElName}\"]`);\n let formGroupEl = $(this);\n\n if (targetEl.val() == targetElValue) {\n formGroupEl.show();\n formGroupEl.find('[data-required]').attr('required', 'required');\n } else {\n formGroupEl.hide();\n formGroupEl.find('[required]').removeAttr('required').attr('data-required', 'required');\n }\n\n targetEl.on('change', (event) => {\n if ($(event.target).val() == targetElValue) {\n formGroupEl.show();\n formGroupEl.find('[data-required]').attr('required', 'required');\n } else {\n formGroupEl.hide();\n formGroupEl.find('[required]').removeAttr('required').attr('data-required', 'required');\n }\n })\n })\n});\n","//window._ = require(\"lodash\");\nwindow.$ = require(\"jquery\");\nwindow.jQuery = require(\"jquery\");\nrequire('jquery-confirm');\nrequire(\"jquery-mask-plugin\");\nrequire(\"jquery-maskmoney/dist/jquery.maskMoney.min\");\nrequire(\"gasparesganga-jquery-loading-overlay\");\nrequire(\"lightslider\");\n","/***************************************************************************************************\r\nLoadingOverlay - A flexible loading overlay jQuery plugin\r\n Author : Gaspare Sganga\r\n Version : 2.1.7\r\n License : MIT\r\n Documentation : https://gasparesganga.com/labs/jquery-loading-overlay/\r\n***************************************************************************************************/\r\n!function(e){\"function\"==typeof define&&define.amd?define([\"jquery\"],e):\"object\"==typeof module&&module.exports?e(require(\"jquery\")):e(jQuery)}(function(g,a){\"use strict\";var t={background:\"rgba(255, 255, 255, 0.8)\",backgroundClass:\"\",image:\"\",imageAnimation:\"2000ms rotate_right\",imageAutoResize:!0,imageResizeFactor:1,imageColor:\"#202020\",imageClass:\"\",imageOrder:1,fontawesome:\"\",fontawesomeAnimation:\"\",fontawesomeAutoResize:!0,fontawesomeResizeFactor:1,fontawesomeColor:\"#202020\",fontawesomeOrder:2,custom:\"\",customAnimation:\"\",customAutoResize:!0,customResizeFactor:1,customOrder:3,text:\"\",textAnimation:\"\",textAutoResize:!0,textResizeFactor:.5,textColor:\"#202020\",textClass:\"\",textOrder:4,progress:!1,progressAutoResize:!0,progressResizeFactor:.25,progressColor:\"#a0a0a0\",progressClass:\"\",progressOrder:5,progressFixedPosition:\"\",progressSpeed:200,progressMin:0,progressMax:100,size:50,maxSize:120,minSize:20,direction:\"column\",fade:!0,resizeInterval:50,zIndex:2147483647},c={overlay:{\"box-sizing\":\"border-box\",position:\"relative\",display:\"flex\",\"flex-wrap\":\"nowrap\",\"align-items\":\"center\",\"justify-content\":\"space-around\"},element:{\"box-sizing\":\"border-box\",overflow:\"visible\",flex:\"0 0 auto\",display:\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\"},element_svg:{width:\"100%\",height:\"100%\"},progress_fixed:{position:\"absolute\",left:\"0\",width:\"100%\"},progress_wrapper:{position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"},progress_bar:{position:\"absolute\",left:\"0\"}},n={count:0,container:a,settings:a,wholePage:a,resizeIntervalId:a,text:a,progress:a},s={animations:[\"rotate_right\",\"rotate_left\",\"fadein\",\"pulse\"],progressPosition:[\"top\",\"bottom\"]},d={animations:{name:\"rotate_right\",time:\"2000ms\"},fade:[400,200]};function o(e,s){e=g(e),s.size=w(s.size),s.maxSize=parseInt(s.maxSize,10)||0,s.minSize=parseInt(s.minSize,10)||0,s.resizeInterval=parseInt(s.resizeInterval,10)||0;var t=p(e),a=u(e);if(!1===a){if((a=g.extend({},n)).container=e,a.wholePage=e.is(\"body\"),t=g(\"
\",{class:\"loadingoverlay\"}).css(c.overlay).css(\"flex-direction\",\"row\"===s.direction.toLowerCase()?\"row\":\"column\"),s.backgroundClass?t.addClass(s.backgroundClass):t.css(\"background\",s.background),a.wholePage&&t.css({position:\"fixed\",top:0,left:0,width:\"100%\",height:\"100%\"}),void 0!==s.zIndex&&t.css(\"z-index\",s.zIndex),s.image){g.isArray(s.imageColor)?0===s.imageColor.length?s.imageColor=!1:1===s.imageColor.length?s.imageColor={fill:s.imageColor[0]}:s.imageColor={fill:s.imageColor[0],stroke:s.imageColor[1]}:s.imageColor&&(s.imageColor={fill:s.imageColor});var o=v(t,s.imageOrder,s.imageAutoResize,s.imageResizeFactor,s.imageAnimation);\"\"===s.image.slice(-6).toLowerCase()?(o.append(s.image),o.children().css(c.element_svg),!s.imageClass&&s.imageColor&&o.find(\"*\").css(s.imageColor)):\".svg\"===s.image.slice(-4).toLowerCase()||\"data:image/svg\"===s.image.slice(0,14).toLowerCase()?g.ajax({url:s.image,type:\"GET\",dataType:\"html\",global:!1}).done(function(e){o.html(e),o.children().css(c.element_svg),!s.imageClass&&s.imageColor&&o.find(\"*\").css(s.imageColor)}):o.css({\"background-image\":\"url(\"+s.image+\")\",\"background-position\":\"center\",\"background-repeat\":\"no-repeat\",\"background-size\":\"cover\"}),s.imageClass&&o.addClass(s.imageClass)}if(s.fontawesome){o=v(t,s.fontawesomeOrder,s.fontawesomeAutoResize,s.fontawesomeResizeFactor,s.fontawesomeAnimation).addClass(\"loadingoverlay_fa\");g(\"
\",{class:s.fontawesome}).appendTo(o),s.fontawesomeColor&&o.css(\"color\",s.fontawesomeColor)}if(s.custom)o=v(t,s.customOrder,s.customAutoResize,s.customResizeFactor,s.customAnimation).append(s.custom);if(s.text&&(a.text=v(t,s.textOrder,s.textAutoResize,s.textResizeFactor,s.textAnimation).addClass(\"loadingoverlay_text\").text(s.text),s.textClass?a.text.addClass(s.textClass):s.textColor&&a.text.css(\"color\",s.textColor)),s.progress){o=v(t,s.progressOrder,s.progressAutoResize,s.progressResizeFactor,!1).addClass(\"loadingoverlay_progress\");var r=g(\"
\").css(c.progress_wrapper).appendTo(o);a.progress={bar:g(\"
\").css(c.progress_bar).appendTo(r),fixed:!1,margin:0,min:parseFloat(s.progressMin),max:parseFloat(s.progressMax),speed:parseInt(s.progressSpeed,10)};var i=(s.progressFixedPosition+\"\").replace(/\\s\\s+/g,\" \").toLowerCase().split(\" \");2===i.length&&y(i[0])?(a.progress.fixed=i[0],a.progress.margin=w(i[1])):2===i.length&&y(i[1])?(a.progress.fixed=i[1],a.progress.margin=w(i[0])):1===i.length&&y(i[0])&&(a.progress.fixed=i[0],a.progress.margin=0),\"top\"===a.progress.fixed?o.css(c.progress_fixed).css(\"top\",a.progress.margin?a.progress.margin.value+(a.progress.margin.fixed?a.progress.margin.units:\"%\"):0):\"bottom\"===a.progress.fixed&&o.css(c.progress_fixed).css(\"top\",\"auto\"),s.progressClass?a.progress.bar.addClass(s.progressClass):s.progressColor&&a.progress.bar.css(\"background\",s.progressColor)}s.fade?!0===s.fade?s.fade=d.fade:\"string\"==typeof s.fade||\"number\"==typeof s.fade?s.fade=[s.fade,s.fade]:g.isArray(s.fade)&&s.fade.length<2&&(s.fade=[s.fade[0],s.fade[0]]):s.fade=[0,0],s.fade=[parseInt(s.fade[0],10),parseInt(s.fade[1],10)],a.settings=s,t.data(\"loadingoverlay_data\",a),e.data(\"loadingoverlay\",t),t.fadeTo(0,.01).appendTo(\"body\"),f(e,!0),0a.settings.maxSize&&(n=a.settings.maxSize),a.settings.minSize&&n\",{class:\"loadingoverlay_element\",css:{order:s}}).css(c.element).data({loadingoverlay_autoresize:t,loadingoverlay_resizefactor:a}).appendTo(e);if(!0===o&&(o=d.animations.time+\" \"+d.animations.name),\"string\"==typeof o){var i,n,l=o.replace(/\\s\\s+/g,\" \").toLowerCase().split(\" \");2===l.length&&x(l[0])&&h(l[1])?(i=l[1],n=l[0]):2===l.length&&x(l[1])&&h(l[0])?(i=l[0],n=l[1]):1===l.length&&x(l[0])?(i=d.animations.name,n=l[0]):1===l.length&&h(l[0])&&(i=l[0],n=d.animations.time),r.css({\"animation-name\":\"loadingoverlay_animation__\"+i,\"animation-duration\":n,\"animation-timing-function\":\"linear\",\"animation-iteration-count\":\"infinite\"})}return r}function x(e){return!isNaN(parseFloat(e))&&(\"s\"===e.slice(-1)||\"ms\"===e.slice(-2))}function h(e){return-1\",\"@-webkit-keyframes loadingoverlay_animation__rotate_right {\",\"to {\",\"-webkit-transform : rotate(360deg);\",\"transform : rotate(360deg);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__rotate_right {\",\"to {\",\"-webkit-transform : rotate(360deg);\",\"transform : rotate(360deg);\",\"}\",\"}\",\"@-webkit-keyframes loadingoverlay_animation__rotate_left {\",\"to {\",\"-webkit-transform : rotate(-360deg);\",\"transform : rotate(-360deg);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__rotate_left {\",\"to {\",\"-webkit-transform : rotate(-360deg);\",\"transform : rotate(-360deg);\",\"}\",\"}\",\"@-webkit-keyframes loadingoverlay_animation__fadein {\",\"0% {\",\"opacity : 0;\",\"-webkit-transform : scale(0.1, 0.1);\",\"transform : scale(0.1, 0.1);\",\"}\",\"50% {\",\"opacity : 1;\",\"}\",\"100% {\",\"opacity : 0;\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__fadein {\",\"0% {\",\"opacity : 0;\",\"-webkit-transform : scale(0.1, 0.1);\",\"transform : scale(0.1, 0.1);\",\"}\",\"50% {\",\"opacity : 1;\",\"}\",\"100% {\",\"opacity : 0;\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"}\",\"@-webkit-keyframes loadingoverlay_animation__pulse {\",\"0% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"50% {\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"100% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"}\",\"@keyframes loadingoverlay_animation__pulse {\",\"0% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"50% {\",\"-webkit-transform : scale(1, 1);\",\"transform : scale(1, 1);\",\"}\",\"100% {\",\"-webkit-transform : scale(0, 0);\",\"transform : scale(0, 0);\",\"}\",\"}\",\"\"].join(\" \"))})});","/*!\r\n * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/)\r\n * Author: Boniface Pereira\r\n * Website: www.craftpip.com\r\n * Contact: hey@craftpip.com\r\n *\r\n * Copyright 2013-2019 jquery-confirm\r\n * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE)\r\n */\r\n(function(factory){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],factory);}else{if(typeof module===\"object\"&&module.exports){module.exports=function(root,jQuery){if(jQuery===undefined){if(typeof window!==\"undefined\"){jQuery=require(\"jquery\");}else{jQuery=require(\"jquery\")(root);}}factory(jQuery);return jQuery;};}else{factory(jQuery);}}}(function($){var w=window;$.fn.confirm=function(options,option2){if(typeof options===\"undefined\"){options={};}if(typeof options===\"string\"){options={content:options,title:(option2)?option2:false};}$(this).each(function(){var $this=$(this);if($this.attr(\"jc-attached\")){console.warn(\"jConfirm has already been attached to this element \",$this[0]);return;}$this.on(\"click\",function(e){e.preventDefault();var jcOption=$.extend({},options);if($this.attr(\"data-title\")){jcOption.title=$this.attr(\"data-title\");}if($this.attr(\"data-content\")){jcOption.content=$this.attr(\"data-content\");}if(typeof jcOption.buttons===\"undefined\"){jcOption.buttons={};}jcOption[\"$target\"]=$this;if($this.attr(\"href\")&&Object.keys(jcOption.buttons).length===0){var buttons=$.extend(true,{},w.jconfirm.pluginDefaults.defaultButtons,(w.jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];jcOption.buttons=buttons;jcOption.buttons[firstBtn].action=function(){location.href=$this.attr(\"href\");};}jcOption.closeIcon=false;var instance=$.confirm(jcOption);});$this.attr(\"jc-attached\",true);});return $(this);};$.confirm=function(options,option2){if(typeof options===\"undefined\"){options={};}if(typeof options===\"string\"){options={content:options,title:(option2)?option2:false};}var putDefaultButtons=!(options.buttons===false);if(typeof options.buttons!==\"object\"){options.buttons={};}if(Object.keys(options.buttons).length===0&&putDefaultButtons){var buttons=$.extend(true,{},w.jconfirm.pluginDefaults.defaultButtons,(w.jconfirm.defaults||{}).defaultButtons||{});options.buttons=buttons;}return w.jconfirm(options);};$.alert=function(options,option2){if(typeof options===\"undefined\"){options={};}if(typeof options===\"string\"){options={content:options,title:(option2)?option2:false};}var putDefaultButtons=!(options.buttons===false);if(typeof options.buttons!==\"object\"){options.buttons={};}if(Object.keys(options.buttons).length===0&&putDefaultButtons){var buttons=$.extend(true,{},w.jconfirm.pluginDefaults.defaultButtons,(w.jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];options.buttons[firstBtn]=buttons[firstBtn];}return w.jconfirm(options);};$.dialog=function(options,option2){if(typeof options===\"undefined\"){options={};}if(typeof options===\"string\"){options={content:options,title:(option2)?option2:false,closeIcon:function(){}};}options.buttons={};if(typeof options.closeIcon===\"undefined\"){options.closeIcon=function(){};}options.confirmKeys=[13];return w.jconfirm(options);};w.jconfirm=function(options){if(typeof options===\"undefined\"){options={};}var pluginOptions=$.extend(true,{},w.jconfirm.pluginDefaults);if(w.jconfirm.defaults){pluginOptions=$.extend(true,pluginOptions,w.jconfirm.defaults);}pluginOptions=$.extend(true,{},pluginOptions,options);var instance=new w.Jconfirm(pluginOptions);w.jconfirm.instances.push(instance);return instance;};w.Jconfirm=function(options){$.extend(this,options);this._init();};w.Jconfirm.prototype={_init:function(){var that=this;if(!w.jconfirm.instances.length){w.jconfirm.lastFocused=$(\"body\").find(\":focus\");}this._id=Math.round(Math.random()*99999);this.contentParsed=$(document.createElement(\"div\"));if(!this.lazyOpen){setTimeout(function(){that.open();},0);}},_buildHTML:function(){var that=this;this._parseAnimation(this.animation,\"o\");this._parseAnimation(this.closeAnimation,\"c\");this._parseBgDismissAnimation(this.backgroundDismissAnimation);this._parseColumnClass(this.columnClass);this._parseTheme(this.theme);this._parseType(this.type);var template=$(this.template);template.find(\".jconfirm-box\").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed);if(this.typeAnimated){template.find(\".jconfirm-box\").addClass(\"jconfirm-type-animated\");}if(this.useBootstrap){template.find(\".jc-bs3-row\").addClass(this.bootstrapClasses.row);template.find(\".jc-bs3-row\").addClass(\"justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center\");template.find(\".jconfirm-box-container\").addClass(this.columnClassParsed);if(this.containerFluid){template.find(\".jc-bs3-container\").addClass(this.bootstrapClasses.containerFluid);}else{template.find(\".jc-bs3-container\").addClass(this.bootstrapClasses.container);}}else{template.find(\".jconfirm-box\").css(\"width\",this.boxWidth);}if(this.titleClass){template.find(\".jconfirm-title-c\").addClass(this.titleClass);}template.addClass(this.themeParsed);var ariaLabel=\"jconfirm-box\"+this._id;template.find(\".jconfirm-box\").attr(\"aria-labelledby\",ariaLabel).attr(\"tabindex\",-1);template.find(\".jconfirm-content\").attr(\"id\",ariaLabel);if(this.bgOpacity!==null){template.find(\".jconfirm-bg\").css(\"opacity\",this.bgOpacity);}if(this.rtl){template.addClass(\"jconfirm-rtl\");}this.$el=template.appendTo(this.container);this.$jconfirmBoxContainer=this.$el.find(\".jconfirm-box-container\");this.$jconfirmBox=this.$body=this.$el.find(\".jconfirm-box\");this.$jconfirmBg=this.$el.find(\".jconfirm-bg\");this.$title=this.$el.find(\".jconfirm-title\");this.$titleContainer=this.$el.find(\".jconfirm-title-c\");this.$content=this.$el.find(\"div.jconfirm-content\");this.$contentPane=this.$el.find(\".jconfirm-content-pane\");this.$icon=this.$el.find(\".jconfirm-icon-c\");this.$closeIcon=this.$el.find(\".jconfirm-closeIcon\");this.$holder=this.$el.find(\".jconfirm-holder\");this.$btnc=this.$el.find(\".jconfirm-buttons\");this.$scrollPane=this.$el.find(\".jconfirm-scrollpane\");that.setStartingPoint();this._contentReady=$.Deferred();this._modalReady=$.Deferred();this.$holder.css({\"padding-top\":this.offsetTop,\"padding-bottom\":this.offsetBottom,});this.setTitle();this.setIcon();this._setButtons();this._parseContent();this.initDraggable();if(this.isAjax){this.showLoading(false);}$.when(this._contentReady,this._modalReady).then(function(){if(that.isAjaxLoading){setTimeout(function(){that.isAjaxLoading=false;that.setContent();that.setTitle();that.setIcon();setTimeout(function(){that.hideLoading(false);that._updateContentMaxHeight();},100);if(typeof that.onContentReady===\"function\"){that.onContentReady();}},50);}else{that._updateContentMaxHeight();that.setTitle();that.setIcon();if(typeof that.onContentReady===\"function\"){that.onContentReady();}}if(that.autoClose){that._startCountDown();}}).then(function(){that._watchContent();});if(this.animation===\"none\"){this.animationSpeed=1;this.animationBounce=1;}this.$body.css(this._getCSS(this.animationSpeed,this.animationBounce));this.$contentPane.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBg.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBoxContainer.css(this._getCSS(this.animationSpeed,1));},_typePrefix:\"jconfirm-type-\",typeParsed:\"\",_parseType:function(type){this.typeParsed=this._typePrefix+type;},setType:function(type){var oldClass=this.typeParsed;this._parseType(type);this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed);},themeParsed:\"\",_themePrefix:\"jconfirm-\",setTheme:function(theme){var previous=this.theme;this.theme=theme||this.theme;this._parseTheme(this.theme);if(previous){this.$el.removeClass(previous);}this.$el.addClass(this.themeParsed);this.theme=theme;},_parseTheme:function(theme){var that=this;theme=theme.split(\",\");$.each(theme,function(k,a){if(a.indexOf(that._themePrefix)===-1){theme[k]=that._themePrefix+$.trim(a);}});this.themeParsed=theme.join(\" \").toLowerCase();},backgroundDismissAnimationParsed:\"\",_bgDismissPrefix:\"jconfirm-hilight-\",_parseBgDismissAnimation:function(bgDismissAnimation){var animation=bgDismissAnimation.split(\",\");var that=this;$.each(animation,function(k,a){if(a.indexOf(that._bgDismissPrefix)===-1){animation[k]=that._bgDismissPrefix+$.trim(a);}});this.backgroundDismissAnimationParsed=animation.join(\" \").toLowerCase();},animationParsed:\"\",closeAnimationParsed:\"\",_animationPrefix:\"jconfirm-animation-\",setAnimation:function(animation){this.animation=animation||this.animation;this._parseAnimation(this.animation,\"o\");},_parseAnimation:function(animation,which){which=which||\"o\";var animations=animation.split(\",\");var that=this;$.each(animations,function(k,a){if(a.indexOf(that._animationPrefix)===-1){animations[k]=that._animationPrefix+$.trim(a);}});var a_string=animations.join(\" \").toLowerCase();if(which===\"o\"){this.animationParsed=a_string;}else{this.closeAnimationParsed=a_string;}return a_string;},setCloseAnimation:function(closeAnimation){this.closeAnimation=closeAnimation||this.closeAnimation;this._parseAnimation(this.closeAnimation,\"c\");},setAnimationSpeed:function(speed){this.animationSpeed=speed||this.animationSpeed;},columnClassParsed:\"\",setColumnClass:function(colClass){if(!this.useBootstrap){console.warn(\"cannot set columnClass, useBootstrap is set to false\");return;}this.columnClass=colClass||this.columnClass;this._parseColumnClass(this.columnClass);this.$jconfirmBoxContainer.addClass(this.columnClassParsed);},_updateContentMaxHeight:function(){var height=$(window).height()-(this.$jconfirmBox.outerHeight()-this.$contentPane.outerHeight())-(this.offsetTop+this.offsetBottom);this.$contentPane.css({\"max-height\":height+\"px\"});},setBoxWidth:function(width){if(this.useBootstrap){console.warn(\"cannot set boxWidth, useBootstrap is set to true\");return;}this.boxWidth=width;this.$jconfirmBox.css(\"width\",width);},_parseColumnClass:function(colClass){colClass=colClass.toLowerCase();var p;switch(colClass){case\"xl\":case\"xlarge\":p=\"col-md-12\";break;case\"l\":case\"large\":p=\"col-md-8 col-md-offset-2\";break;case\"m\":case\"medium\":p=\"col-md-6 col-md-offset-3\";break;case\"s\":case\"small\":p=\"col-md-4 col-md-offset-4\";break;case\"xs\":case\"xsmall\":p=\"col-md-2 col-md-offset-5\";break;default:p=colClass;}this.columnClassParsed=p;},initDraggable:function(){var that=this;var $t=this.$titleContainer;this.resetDrag();if(this.draggable){$t.on(\"mousedown\",function(e){$t.addClass(\"jconfirm-hand\");that.mouseX=e.clientX;that.mouseY=e.clientY;that.isDrag=true;});$(window).on(\"mousemove.\"+this._id,function(e){if(that.isDrag){that.movingX=e.clientX-that.mouseX+that.initialX;that.movingY=e.clientY-that.mouseY+that.initialY;that.setDrag();}});$(window).on(\"mouseup.\"+this._id,function(){$t.removeClass(\"jconfirm-hand\");if(that.isDrag){that.isDrag=false;that.initialX=that.movingX;that.initialY=that.movingY;}});}},resetDrag:function(){this.isDrag=false;this.initialX=0;this.initialY=0;this.movingX=0;this.movingY=0;this.mouseX=0;this.mouseY=0;this.$jconfirmBoxContainer.css(\"transform\",\"translate(\"+0+\"px, \"+0+\"px)\");},setDrag:function(){if(!this.draggable){return;}this.alignMiddle=false;var boxWidth=this.$jconfirmBox.outerWidth();var boxHeight=this.$jconfirmBox.outerHeight();var windowWidth=$(window).width();var windowHeight=$(window).height();var that=this;var dragUpdate=1;if(that.movingX%dragUpdate===0||that.movingY%dragUpdate===0){if(that.dragWindowBorder){var leftDistance=(windowWidth/2)-boxWidth/2;var topDistance=(windowHeight/2)-boxHeight/2;topDistance-=that.dragWindowGap;leftDistance-=that.dragWindowGap;if(leftDistance+that.movingX<0){that.movingX=-leftDistance;}else{if(leftDistance-that.movingX<0){that.movingX=leftDistance;}}if(topDistance+that.movingY<0){that.movingY=-topDistance;}else{if(topDistance-that.movingY<0){that.movingY=topDistance;}}}that.$jconfirmBoxContainer.css(\"transform\",\"translate(\"+that.movingX+\"px, \"+that.movingY+\"px)\");}},_scrollTop:function(){if(typeof pageYOffset!==\"undefined\"){return pageYOffset;}else{var B=document.body;var D=document.documentElement;D=(D.clientHeight)?D:B;return D.scrollTop;}},_watchContent:function(){var that=this;if(this._timer){clearInterval(this._timer);}var prevContentHeight=0;this._timer=setInterval(function(){if(that.smoothContent){var contentHeight=that.$content.outerHeight()||0;if(contentHeight!==prevContentHeight){prevContentHeight=contentHeight;}var wh=$(window).height();var total=that.offsetTop+that.offsetBottom+that.$jconfirmBox.height()-that.$contentPane.height()+that.$content.height();if(total').html(that.buttons[key].text).addClass(that.buttons[key].btnClass).prop(\"disabled\",that.buttons[key].isDisabled).css(\"display\",that.buttons[key].isHidden?\"none\":\"\").click(function(e){e.preventDefault();var res=that.buttons[key].action.apply(that,[that.buttons[key]]);that.onAction.apply(that,[key,that.buttons[key]]);that._stopCountDown();if(typeof res===\"undefined\"||res){that.close();}});that.buttons[key].el=button_element;that.buttons[key].setText=function(text){button_element.html(text);};that.buttons[key].addClass=function(className){button_element.addClass(className);};that.buttons[key].removeClass=function(className){button_element.removeClass(className);};that.buttons[key].disable=function(){that.buttons[key].isDisabled=true;button_element.prop(\"disabled\",true);};that.buttons[key].enable=function(){that.buttons[key].isDisabled=false;button_element.prop(\"disabled\",false);};that.buttons[key].show=function(){that.buttons[key].isHidden=false;button_element.css(\"display\",\"\");};that.buttons[key].hide=function(){that.buttons[key].isHidden=true;button_element.css(\"display\",\"none\");};that[\"$_\"+key]=that[\"$$\"+key]=button_element;that.$btnc.append(button_element);});if(total_buttons===0){this.$btnc.hide();}if(this.closeIcon===null&&total_buttons===0){this.closeIcon=true;}if(this.closeIcon){if(this.closeIconClass){var closeHtml='';this.$closeIcon.html(closeHtml);}this.$closeIcon.click(function(e){e.preventDefault();var buttonName=false;var shouldClose=false;var str;if(typeof that.closeIcon===\"function\"){str=that.closeIcon();}else{str=that.closeIcon;}if(typeof str===\"string\"&&typeof that.buttons[str]!==\"undefined\"){buttonName=str;shouldClose=false;}else{if(typeof str===\"undefined\"||!!(str)===true){shouldClose=true;}else{shouldClose=false;}}if(buttonName){var btnResponse=that.buttons[buttonName].action.apply(that);shouldClose=(typeof btnResponse===\"undefined\")||!!(btnResponse);}if(shouldClose){that.close();}});this.$closeIcon.show();}else{this.$closeIcon.hide();}},setTitle:function(string,force){force=force||false;if(typeof string!==\"undefined\"){if(typeof string===\"string\"){this.title=string;}else{if(typeof string===\"function\"){if(typeof string.promise===\"function\"){console.error(\"Promise was returned from title function, this is not supported.\");}var response=string();if(typeof response===\"string\"){this.title=response;}else{this.title=false;}}else{this.title=false;}}}if(this.isAjaxLoading&&!force){return;}this.$title.html(this.title||\"\");this.updateTitleContainer();},setIcon:function(iconClass,force){force=force||false;if(typeof iconClass!==\"undefined\"){if(typeof iconClass===\"string\"){this.icon=iconClass;}else{if(typeof iconClass===\"function\"){var response=iconClass();if(typeof response===\"string\"){this.icon=response;}else{this.icon=false;}}else{this.icon=false;}}}if(this.isAjaxLoading&&!force){return;}this.$icon.html(this.icon?'':\"\");this.updateTitleContainer();},updateTitleContainer:function(){if(!this.title&&!this.icon){this.$titleContainer.hide();}else{this.$titleContainer.show();}},setContentPrepend:function(content,force){if(!content){return;}this.contentParsed.prepend(content);},setContentAppend:function(content){if(!content){return;}this.contentParsed.append(content);},setContent:function(content,force){force=!!force;var that=this;if(content){this.contentParsed.html(\"\").append(content);}if(this.isAjaxLoading&&!force){return;}this.$content.html(\"\");this.$content.append(this.contentParsed);setTimeout(function(){that.$body.find(\"input[autofocus]:visible:first\").focus();},100);},loadingSpinner:false,showLoading:function(disableButtons){this.loadingSpinner=true;this.$jconfirmBox.addClass(\"loading\");if(disableButtons){this.$btnc.find(\"button\").prop(\"disabled\",true);}},hideLoading:function(enableButtons){this.loadingSpinner=false;this.$jconfirmBox.removeClass(\"loading\");if(enableButtons){this.$btnc.find(\"button\").prop(\"disabled\",false);}},ajaxResponse:false,contentParsed:\"\",isAjax:false,isAjaxLoading:false,_parseContent:function(){var that=this;var e=\" \";if(typeof this.content===\"function\"){var res=this.content.apply(this);if(typeof res===\"string\"){this.content=res;}else{if(typeof res===\"object\"&&typeof res.always===\"function\"){this.isAjax=true;this.isAjaxLoading=true;res.always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded===\"function\"){that.contentLoaded(data,status,xhr);}});this.content=e;}else{this.content=e;}}}if(typeof this.content===\"string\"&&this.content.substr(0,4).toLowerCase()===\"url:\"){this.isAjax=true;this.isAjaxLoading=true;var u=this.content.substring(4,this.content.length);$.get(u).done(function(html){that.contentParsed.html(html);}).always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded===\"function\"){that.contentLoaded(data,status,xhr);}});}if(!this.content){this.content=e;}if(!this.isAjax){this.contentParsed.html(this.content);this.setContent();that._contentReady.resolve();}},_stopCountDown:function(){clearInterval(this.autoCloseInterval);if(this.$cd){this.$cd.remove();}},_startCountDown:function(){var that=this;var opt=this.autoClose.split(\"|\");if(opt.length!==2){console.error(\"Invalid option for autoClose. example 'close|10000'\");return false;}var button_key=opt[0];var time=parseInt(opt[1]);if(typeof this.buttons[button_key]===\"undefined\"){console.error(\"Invalid button key '\"+button_key+\"' for autoClose\");return false;}var seconds=Math.ceil(time/1000);this.$cd=$(' ('+seconds+\")\").appendTo(this[\"$_\"+button_key]);this.autoCloseInterval=setInterval(function(){that.$cd.html(\" (\"+(seconds-=1)+\") \");if(seconds<=0){that[\"$$\"+button_key].trigger(\"click\");that._stopCountDown();}},1000);},_getKey:function(key){switch(key){case 192:return\"tilde\";case 13:return\"enter\";case 16:return\"shift\";case 9:return\"tab\";case 20:return\"capslock\";case 17:return\"ctrl\";case 91:return\"win\";case 18:return\"alt\";case 27:return\"esc\";case 32:return\"space\";}var initial=String.fromCharCode(key);if(/^[A-z0-9]+$/.test(initial)){return initial.toLowerCase();}else{return false;}},reactOnKey:function(e){var that=this;var a=$(\".jconfirm\");if(a.eq(a.length-1)[0]!==this.$el[0]){return false;}var key=e.which;if(this.$content.find(\":input\").is(\":focus\")&&/13|32/.test(key)){return false;}var keyChar=this._getKey(key);if(keyChar===\"esc\"&&this.escapeKey){if(this.escapeKey===true){this.$scrollPane.trigger(\"click\");}else{if(typeof this.escapeKey===\"string\"||typeof this.escapeKey===\"function\"){var buttonKey;if(typeof this.escapeKey===\"function\"){buttonKey=this.escapeKey();}else{buttonKey=this.escapeKey;}if(buttonKey){if(typeof this.buttons[buttonKey]===\"undefined\"){console.warn(\"Invalid escapeKey, no buttons found with key \"+buttonKey);}else{this[\"$_\"+buttonKey].trigger(\"click\");}}}}}$.each(this.buttons,function(key,button){if(button.keys.indexOf(keyChar)!==-1){that[\"$_\"+key].trigger(\"click\");}});},setDialogCenter:function(){console.info(\"setDialogCenter is deprecated, dialogs are centered with CSS3 tables\");},_unwatchContent:function(){clearInterval(this._timer);},close:function(onClosePayload){var that=this;if(typeof this.onClose===\"function\"){this.onClose(onClosePayload);}this._unwatchContent();$(window).unbind(\"resize.\"+this._id);$(window).unbind(\"keyup.\"+this._id);$(window).unbind(\"jcKeyDown.\"+this._id);if(this.draggable){$(window).unbind(\"mousemove.\"+this._id);$(window).unbind(\"mouseup.\"+this._id);this.$titleContainer.unbind(\"mousedown\");}that.$el.removeClass(that.loadedClass);$(\"body\").removeClass(\"jconfirm-no-scroll-\"+that._id);that.$jconfirmBoxContainer.removeClass(\"jconfirm-no-transition\");setTimeout(function(){that.$body.addClass(that.closeAnimationParsed);that.$jconfirmBg.addClass(\"jconfirm-bg-h\");var closeTimer=(that.closeAnimation===\"none\")?1:that.animationSpeed;setTimeout(function(){that.$el.remove();var l=w.jconfirm.instances;var i=w.jconfirm.instances.length-1;for(i;i>=0;i--){if(w.jconfirm.instances[i]._id===that._id){w.jconfirm.instances.splice(i,1);}}if(!w.jconfirm.instances.length){if(that.scrollToPreviousElement&&w.jconfirm.lastFocused&&w.jconfirm.lastFocused.length&&$.contains(document,w.jconfirm.lastFocused[0])){var $lf=w.jconfirm.lastFocused;if(that.scrollToPreviousElementAnimate){var st=$(window).scrollTop();var ot=w.jconfirm.lastFocused.offset().top;var wh=$(window).height();if(!(ot>st&&ot<(st+wh))){var scrollTo=(ot-Math.round((wh/3)));$(\"html, body\").animate({scrollTop:scrollTo},that.animationSpeed,\"swing\",function(){$lf.focus();});}else{$lf.focus();}}else{$lf.focus();}w.jconfirm.lastFocused=false;}}if(typeof that.onDestroy===\"function\"){that.onDestroy();}},closeTimer*0.4);},50);return true;},open:function(){if(this.isOpen()){return false;}this._buildHTML();this._bindEvents();this._open();return true;},setStartingPoint:function(){var el=false;if(this.animateFromElement!==true&&this.animateFromElement){el=this.animateFromElement;w.jconfirm.lastClicked=false;}else{if(w.jconfirm.lastClicked&&this.animateFromElement===true){el=w.jconfirm.lastClicked;w.jconfirm.lastClicked=false;}else{return false;}}if(!el){return false;}var offset=el.offset();var iTop=el.outerHeight()/2;var iLeft=el.outerWidth()/2;iTop-=this.$jconfirmBox.outerHeight()/2;iLeft-=this.$jconfirmBox.outerWidth()/2;var sourceTop=offset.top+iTop;sourceTop=sourceTop-this._scrollTop();var sourceLeft=offset.left+iLeft;var wh=$(window).height()/2;var ww=$(window).width()/2;var targetH=wh-this.$jconfirmBox.outerHeight()/2;var targetW=ww-this.$jconfirmBox.outerWidth()/2;sourceTop-=targetH;sourceLeft-=targetW;if(Math.abs(sourceTop)>wh||Math.abs(sourceLeft)>ww){return false;}this.$jconfirmBoxContainer.css(\"transform\",\"translate(\"+sourceLeft+\"px, \"+sourceTop+\"px)\");},_open:function(){var that=this;if(typeof that.onOpenBefore===\"function\"){that.onOpenBefore();}this.$body.removeClass(this.animationParsed);this.$jconfirmBg.removeClass(\"jconfirm-bg-h\");this.$body.focus();that.$jconfirmBoxContainer.css(\"transform\",\"translate(\"+0+\"px, \"+0+\"px)\");setTimeout(function(){that.$body.css(that._getCSS(that.animationSpeed,1));that.$body.css({\"transition-property\":that.$body.css(\"transition-property\")+\", margin\"});that.$jconfirmBoxContainer.addClass(\"jconfirm-no-transition\");that._modalReady.resolve();if(typeof that.onOpen===\"function\"){that.onOpen();}that.$el.addClass(that.loadedClass);},this.animationSpeed);},loadedClass:\"jconfirm-open\",isClosed:function(){return !this.$el||this.$el.parent().length===0;},isOpen:function(){return !this.isClosed();},toggle:function(){if(!this.isOpen()){this.open();}else{this.close();}}};w.jconfirm.instances=[];w.jconfirm.lastFocused=false;w.jconfirm.pluginDefaults={template:'
×
',title:\"Hello\",titleClass:\"\",type:\"default\",typeAnimated:true,draggable:true,dragWindowGap:15,dragWindowBorder:true,animateFromElement:true,alignMiddle:true,smoothContent:true,content:\"Are you sure to continue?\",buttons:{},defaultButtons:{ok:{action:function(){}},close:{action:function(){}}},contentLoaded:function(){},icon:\"\",lazyOpen:false,bgOpacity:null,theme:\"light\",animation:\"scale\",closeAnimation:\"scale\",animationSpeed:400,animationBounce:1,escapeKey:true,rtl:false,container:\"body\",containerFluid:false,backgroundDismiss:false,backgroundDismissAnimation:\"shake\",autoClose:false,closeIcon:null,closeIconClass:false,watchInterval:100,columnClass:\"col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1\",boxWidth:\"50%\",scrollToPreviousElement:true,scrollToPreviousElementAnimate:true,useBootstrap:true,offsetTop:40,offsetBottom:40,bootstrapClasses:{container:\"container\",containerFluid:\"container-fluid\",row:\"row\"},onContentReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}};var keyDown=false;$(window).on(\"keydown\",function(e){if(!keyDown){var $target=$(e.target);var pass=false;if($target.closest(\".jconfirm-box\").length){pass=true;}if(pass){$(window).trigger(\"jcKeyDown\");}keyDown=true;}});$(window).on(\"keyup\",function(){keyDown=false;});w.jconfirm.lastClicked=false;$(document).on(\"mousedown\",\"button, a, [jc-source]\",function(){w.jconfirm.lastClicked=$(this);});}));","/**\n * jquery.mask.js\n * @version: v1.14.16\n * @author: Igor Escobar\n *\n * Created by Igor Escobar on 2012-03-10. Please report any bug at github.com/igorescobar/jQuery-Mask-Plugin\n *\n * Copyright (c) 2012 Igor Escobar http://igorescobar.com\n *\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* jshint laxbreak: true */\n/* jshint maxcomplexity:17 */\n/* global define */\n\n// UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere.\n// https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js\n(function (factory, jQuery, Zepto) {\n\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object' && typeof Meteor === 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery || Zepto);\n }\n\n}(function ($) {\n 'use strict';\n\n var Mask = function (el, mask, options) {\n\n var p = {\n invalid: [],\n getCaret: function () {\n try {\n var sel,\n pos = 0,\n ctrl = el.get(0),\n dSel = document.selection,\n cSelStart = ctrl.selectionStart;\n\n // IE Support\n if (dSel && navigator.appVersion.indexOf('MSIE 10') === -1) {\n sel = dSel.createRange();\n sel.moveStart('character', -p.val().length);\n pos = sel.text.length;\n }\n // Firefox support\n else if (cSelStart || cSelStart === '0') {\n pos = cSelStart;\n }\n\n return pos;\n } catch (e) {}\n },\n setCaret: function(pos) {\n try {\n if (el.is(':focus')) {\n var range, ctrl = el.get(0);\n\n // Firefox, WebKit, etc..\n if (ctrl.setSelectionRange) {\n ctrl.setSelectionRange(pos, pos);\n } else { // IE\n range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n } catch (e) {}\n },\n events: function() {\n el\n .on('keydown.mask', function(e) {\n el.data('mask-keycode', e.keyCode || e.which);\n el.data('mask-previus-value', el.val());\n el.data('mask-previus-caret-pos', p.getCaret());\n p.maskDigitPosMapOld = p.maskDigitPosMap;\n })\n .on($.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask', p.behaviour)\n .on('paste.mask drop.mask', function() {\n setTimeout(function() {\n el.keydown().keyup();\n }, 100);\n })\n .on('change.mask', function(){\n el.data('changed', true);\n })\n .on('blur.mask', function(){\n if (oldValue !== p.val() && !el.data('changed')) {\n el.trigger('change');\n }\n el.data('changed', false);\n })\n // it's very important that this callback remains in this position\n // otherwhise oldValue it's going to work buggy\n .on('blur.mask', function() {\n oldValue = p.val();\n })\n // select all text on focus\n .on('focus.mask', function (e) {\n if (options.selectOnFocus === true) {\n $(e.target).select();\n }\n })\n // clear the value if it not complete the mask\n .on('focusout.mask', function() {\n if (options.clearIfNotMatch && !regexMask.test(p.val())) {\n p.val('');\n }\n });\n },\n getRegexMask: function() {\n var maskChunks = [], translation, pattern, optional, recursive, oRecursive, r;\n\n for (var i = 0; i < mask.length; i++) {\n translation = jMask.translation[mask.charAt(i)];\n\n if (translation) {\n\n pattern = translation.pattern.toString().replace(/.{1}$|^.{1}/g, '');\n optional = translation.optional;\n recursive = translation.recursive;\n\n if (recursive) {\n maskChunks.push(mask.charAt(i));\n oRecursive = {digit: mask.charAt(i), pattern: pattern};\n } else {\n maskChunks.push(!optional && !recursive ? pattern : (pattern + '?'));\n }\n\n } else {\n maskChunks.push(mask.charAt(i).replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n }\n }\n\n r = maskChunks.join('');\n\n if (oRecursive) {\n r = r.replace(new RegExp('(' + oRecursive.digit + '(.*' + oRecursive.digit + ')?)'), '($1)?')\n .replace(new RegExp(oRecursive.digit, 'g'), oRecursive.pattern);\n }\n\n return new RegExp(r);\n },\n destroyEvents: function() {\n el.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask '));\n },\n val: function(v) {\n var isInput = el.is('input'),\n method = isInput ? 'val' : 'text',\n r;\n\n if (arguments.length > 0) {\n if (el[method]() !== v) {\n el[method](v);\n }\n r = el;\n } else {\n r = el[method]();\n }\n\n return r;\n },\n calculateCaretPosition: function(oldVal) {\n var newVal = p.getMasked(),\n caretPosNew = p.getCaret();\n if (oldVal !== newVal) {\n var caretPosOld = el.data('mask-previus-caret-pos') || 0,\n newValL = newVal.length,\n oldValL = oldVal.length,\n maskDigitsBeforeCaret = 0,\n maskDigitsAfterCaret = 0,\n maskDigitsBeforeCaretAll = 0,\n maskDigitsBeforeCaretAllOld = 0,\n i = 0;\n\n for (i = caretPosNew; i < newValL; i++) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsAfterCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsBeforeCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (p.maskDigitPosMap[i]) {\n maskDigitsBeforeCaretAll++;\n }\n }\n\n for (i = caretPosOld - 1; i >= 0; i--) {\n if (p.maskDigitPosMapOld[i]) {\n maskDigitsBeforeCaretAllOld++;\n }\n }\n\n // if the cursor is at the end keep it there\n if (caretPosNew > oldValL) {\n caretPosNew = newValL * 10;\n } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) {\n if (!p.maskDigitPosMapOld[caretPosNew]) {\n var caretPos = caretPosNew;\n caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll;\n caretPosNew -= maskDigitsBeforeCaret;\n if (p.maskDigitPosMap[caretPosNew]) {\n caretPosNew = caretPos;\n }\n }\n }\n else if (caretPosNew > caretPosOld) {\n caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld;\n caretPosNew += maskDigitsAfterCaret;\n }\n }\n return caretPosNew;\n },\n behaviour: function(e) {\n e = e || window.event;\n p.invalid = [];\n\n var keyCode = el.data('mask-keycode');\n\n if ($.inArray(keyCode, jMask.byPassKeys) === -1) {\n var newVal = p.getMasked(),\n caretPos = p.getCaret(),\n oldVal = el.data('mask-previus-value') || '';\n\n // this is a compensation to devices/browsers that don't compensate\n // caret positioning the right way\n setTimeout(function() {\n p.setCaret(p.calculateCaretPosition(oldVal));\n }, $.jMaskGlobals.keyStrokeCompensation);\n\n p.val(newVal);\n p.setCaret(caretPos);\n return p.callbacks(e);\n }\n },\n getMasked: function(skipMaskChars, val) {\n var buf = [],\n value = val === undefined ? p.val() : val + '',\n m = 0, maskLen = mask.length,\n v = 0, valLen = value.length,\n offset = 1, addMethod = 'push',\n resetPos = -1,\n maskDigitCount = 0,\n maskDigitPosArr = [],\n lastMaskChar,\n check;\n\n if (options.reverse) {\n addMethod = 'unshift';\n offset = -1;\n lastMaskChar = 0;\n m = maskLen - 1;\n v = valLen - 1;\n check = function () {\n return m > -1 && v > -1;\n };\n } else {\n lastMaskChar = maskLen - 1;\n check = function () {\n return m < maskLen && v < valLen;\n };\n }\n\n var lastUntranslatedMaskChar;\n while (check()) {\n var maskDigit = mask.charAt(m),\n valDigit = value.charAt(v),\n translation = jMask.translation[maskDigit];\n\n if (translation) {\n if (valDigit.match(translation.pattern)) {\n buf[addMethod](valDigit);\n if (translation.recursive) {\n if (resetPos === -1) {\n resetPos = m;\n } else if (m === lastMaskChar && m !== resetPos) {\n m = resetPos - offset;\n }\n\n if (lastMaskChar === resetPos) {\n m -= offset;\n }\n }\n m += offset;\n } else if (valDigit === lastUntranslatedMaskChar) {\n // matched the last untranslated (raw) mask character that we encountered\n // likely an insert offset the mask character from the last entry; fall\n // through and only increment v\n maskDigitCount--;\n lastUntranslatedMaskChar = undefined;\n } else if (translation.optional) {\n m += offset;\n v -= offset;\n } else if (translation.fallback) {\n buf[addMethod](translation.fallback);\n m += offset;\n v -= offset;\n } else {\n p.invalid.push({p: v, v: valDigit, e: translation.pattern});\n }\n v += offset;\n } else {\n if (!skipMaskChars) {\n buf[addMethod](maskDigit);\n }\n\n if (valDigit === maskDigit) {\n maskDigitPosArr.push(v);\n v += offset;\n } else {\n lastUntranslatedMaskChar = maskDigit;\n maskDigitPosArr.push(v + maskDigitCount);\n maskDigitCount++;\n }\n\n m += offset;\n }\n }\n\n var lastMaskCharDigit = mask.charAt(lastMaskChar);\n if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {\n buf.push(lastMaskCharDigit);\n }\n\n var newVal = buf.join('');\n p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen);\n return newVal;\n },\n mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) {\n var maskDiff = options.reverse ? newVal.length - valLen : 0;\n p.maskDigitPosMap = {};\n for (var i = 0; i < maskDigitPosArr.length; i++) {\n p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1;\n }\n },\n callbacks: function (e) {\n var val = p.val(),\n changed = val !== oldValue,\n defaultArgs = [val, e, el, options],\n callback = function(name, criteria, args) {\n if (typeof options[name] === 'function' && criteria) {\n options[name].apply(this, args);\n }\n };\n\n callback('onChange', changed === true, defaultArgs);\n callback('onKeyPress', changed === true, defaultArgs);\n callback('onComplete', val.length === mask.length, defaultArgs);\n callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);\n }\n };\n\n el = $(el);\n var jMask = this, oldValue = p.val(), regexMask;\n\n mask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask;\n\n // public methods\n jMask.mask = mask;\n jMask.options = options;\n jMask.remove = function() {\n var caret = p.getCaret();\n if (jMask.options.placeholder) {\n el.removeAttr('placeholder');\n }\n if (el.data('mask-maxlength')) {\n el.removeAttr('maxlength');\n }\n p.destroyEvents();\n p.val(jMask.getCleanVal());\n p.setCaret(caret);\n return el;\n };\n\n // get value without mask\n jMask.getCleanVal = function() {\n return p.getMasked(true);\n };\n\n // get masked value without the value being in the input or element\n jMask.getMaskedVal = function(val) {\n return p.getMasked(false, val);\n };\n\n jMask.init = function(onlyMask) {\n onlyMask = onlyMask || false;\n options = options || {};\n\n jMask.clearIfNotMatch = $.jMaskGlobals.clearIfNotMatch;\n jMask.byPassKeys = $.jMaskGlobals.byPassKeys;\n jMask.translation = $.extend({}, $.jMaskGlobals.translation, options.translation);\n\n jMask = $.extend(true, {}, jMask, options);\n\n regexMask = p.getRegexMask();\n\n if (onlyMask) {\n p.events();\n p.val(p.getMasked());\n } else {\n if (options.placeholder) {\n el.attr('placeholder' , options.placeholder);\n }\n\n // this is necessary, otherwise if the user submit the form\n // and then press the \"back\" button, the autocomplete will erase\n // the data. Works fine on IE9+, FF, Opera, Safari.\n if (el.data('mask')) {\n el.attr('autocomplete', 'off');\n }\n\n // detect if is necessary let the user type freely.\n // for is a lot faster than forEach.\n for (var i = 0, maxlength = true; i < mask.length; i++) {\n var translation = jMask.translation[mask.charAt(i)];\n if (translation && translation.recursive) {\n maxlength = false;\n break;\n }\n }\n\n if (maxlength) {\n el.attr('maxlength', mask.length).data('mask-maxlength', true);\n }\n\n p.destroyEvents();\n p.events();\n\n var caret = p.getCaret();\n p.val(p.getMasked());\n p.setCaret(caret);\n }\n };\n\n jMask.init(!el.is('input'));\n };\n\n $.maskWatchers = {};\n var HTMLAttributes = function () {\n var input = $(this),\n options = {},\n prefix = 'data-mask-',\n mask = input.attr('data-mask');\n\n if (input.attr(prefix + 'reverse')) {\n options.reverse = true;\n }\n\n if (input.attr(prefix + 'clearifnotmatch')) {\n options.clearIfNotMatch = true;\n }\n\n if (input.attr(prefix + 'selectonfocus') === 'true') {\n options.selectOnFocus = true;\n }\n\n if (notSameMaskObject(input, mask, options)) {\n return input.data('mask', new Mask(this, mask, options));\n }\n },\n notSameMaskObject = function(field, mask, options) {\n options = options || {};\n var maskObject = $(field).data('mask'),\n stringify = JSON.stringify,\n value = $(field).val() || $(field).text();\n try {\n if (typeof mask === 'function') {\n mask = mask(value);\n }\n return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;\n } catch (e) {}\n },\n eventSupported = function(eventName) {\n var el = document.createElement('div'), isSupported;\n\n eventName = 'on' + eventName;\n isSupported = (eventName in el);\n\n if ( !isSupported ) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] === 'function';\n }\n el = null;\n\n return isSupported;\n };\n\n $.fn.mask = function(mask, options) {\n options = options || {};\n var selector = this.selector,\n globals = $.jMaskGlobals,\n interval = globals.watchInterval,\n watchInputs = options.watchInputs || globals.watchInputs,\n maskFunction = function() {\n if (notSameMaskObject(this, mask, options)) {\n return $(this).data('mask', new Mask(this, mask, options));\n }\n };\n\n $(this).each(maskFunction);\n\n if (selector && selector !== '' && watchInputs) {\n clearInterval($.maskWatchers[selector]);\n $.maskWatchers[selector] = setInterval(function(){\n $(document).find(selector).each(maskFunction);\n }, interval);\n }\n return this;\n };\n\n $.fn.masked = function(val) {\n return this.data('mask').getMaskedVal(val);\n };\n\n $.fn.unmask = function() {\n clearInterval($.maskWatchers[this.selector]);\n delete $.maskWatchers[this.selector];\n return this.each(function() {\n var dataMask = $(this).data('mask');\n if (dataMask) {\n dataMask.remove().removeData('mask');\n }\n });\n };\n\n $.fn.cleanVal = function() {\n return this.data('mask').getCleanVal();\n };\n\n $.applyDataMask = function(selector) {\n selector = selector || $.jMaskGlobals.maskElements;\n var $selector = (selector instanceof $) ? selector : $(selector);\n $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);\n };\n\n var globals = {\n maskElements: 'input,td,span,div',\n dataMaskAttr: '*[data-mask]',\n dataMask: true,\n watchInterval: 300,\n watchInputs: true,\n keyStrokeCompensation: 10,\n // old versions of chrome dont work great with input event\n useInput: !/Chrome\\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'),\n watchDataMask: false,\n byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],\n translation: {\n '0': {pattern: /\\d/},\n '9': {pattern: /\\d/, optional: true},\n '#': {pattern: /\\d/, recursive: true},\n 'A': {pattern: /[a-zA-Z0-9]/},\n 'S': {pattern: /[a-zA-Z]/}\n }\n };\n\n $.jMaskGlobals = $.jMaskGlobals || {};\n globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);\n\n // looking for inputs with data-mask attribute\n if (globals.dataMask) {\n $.applyDataMask();\n }\n\n setInterval(function() {\n if ($.jMaskGlobals.watchDataMask) {\n $.applyDataMask();\n }\n }, globals.watchInterval);\n}, window.jQuery, window.Zepto));\n","/*\n * jquery-maskmoney - v3.0.2\n * jQuery plugin to mask data entry in the input text in the form of money (currency)\n * https://github.com/plentz/jquery-maskmoney\n *\n * Made by Diego Plentz\n * Under MIT License (https://raw.github.com/plentz/jquery-maskmoney/master/LICENSE)\n */\n!function($){\"use strict\";$.browser||($.browser={},$.browser.mozilla=/mozilla/.test(navigator.userAgent.toLowerCase())&&!/webkit/.test(navigator.userAgent.toLowerCase()),$.browser.webkit=/webkit/.test(navigator.userAgent.toLowerCase()),$.browser.opera=/opera/.test(navigator.userAgent.toLowerCase()),$.browser.msie=/msie/.test(navigator.userAgent.toLowerCase()));var a={destroy:function(){return $(this).unbind(\".maskMoney\"),$.browser.msie&&(this.onpaste=null),this},mask:function(a){return this.each(function(){var b,c=$(this);return\"number\"==typeof a&&(c.trigger(\"mask\"),b=$(c.val().split(/\\D/)).last()[0].length,a=a.toFixed(b),c.val(a)),c.trigger(\"mask\")})},unmasked:function(){return this.map(function(){var a,b=$(this).val()||\"0\",c=-1!==b.indexOf(\"-\");return $(b.split(/\\D/).reverse()).each(function(b,c){return c?(a=c,!1):void 0}),b=b.replace(/\\D/g,\"\"),b=b.replace(new RegExp(a+\"$\"),\".\"+a),c&&(b=\"-\"+b),parseFloat(b)})},init:function(a){return a=$.extend({prefix:\"\",suffix:\"\",affixesStay:!0,thousands:\",\",decimal:\".\",precision:2,allowZero:!1,allowNegative:!1},a),this.each(function(){function b(){var a,b,c,d,e,f=s.get(0),g=0,h=0;return\"number\"==typeof f.selectionStart&&\"number\"==typeof f.selectionEnd?(g=f.selectionStart,h=f.selectionEnd):(b=document.selection.createRange(),b&&b.parentElement()===f&&(d=f.value.length,a=f.value.replace(/\\r\\n/g,\"\\n\"),c=f.createTextRange(),c.moveToBookmark(b.getBookmark()),e=f.createTextRange(),e.collapse(!1),c.compareEndPoints(\"StartToEnd\",e)>-1?g=h=d:(g=-c.moveStart(\"character\",-d),g+=a.slice(0,g).split(\"\\n\").length-1,c.compareEndPoints(\"EndToEnd\",e)>-1?h=d:(h=-c.moveEnd(\"character\",-d),h+=a.slice(0,h).split(\"\\n\").length-1)))),{start:g,end:h}}function c(){var a=!(s.val().length>=s.attr(\"maxlength\")&&s.attr(\"maxlength\")>=0),c=b(),d=c.start,e=c.end,f=c.start!==c.end&&s.val().substring(d,e).match(/\\d/)?!0:!1,g=\"0\"===s.val().substring(0,1);return a||f||g}function d(a){s.each(function(b,c){if(c.setSelectionRange)c.focus(),c.setSelectionRange(a,a);else if(c.createTextRange){var d=c.createTextRange();d.collapse(!0),d.moveEnd(\"character\",a),d.moveStart(\"character\",a),d.select()}})}function e(b){var c=\"\";return b.indexOf(\"-\")>-1&&(b=b.replace(\"-\",\"\"),c=\"-\"),c+a.prefix+b+a.suffix}function f(b){var c,d,f,g=b.indexOf(\"-\")>-1&&a.allowNegative?\"-\":\"\",h=b.replace(/[^0-9]/g,\"\"),i=h.slice(0,h.length-a.precision);return i=i.replace(/^0*/g,\"\"),i=i.replace(/\\B(?=(\\d{3})+(?!\\d))/g,a.thousands),\"\"===i&&(i=\"0\"),c=g+i,a.precision>0&&(d=h.slice(h.length-a.precision),f=new Array(a.precision+1-d.length).join(0),c+=a.decimal+f+d),e(c)}function g(a){var b,c=s.val().length;s.val(f(s.val())),b=s.val().length,a-=c-b,d(a)}function h(){var a=s.val();s.val(f(a))}function i(){var b=s.val();return a.allowNegative?\"\"!==b&&\"-\"===b.charAt(0)?b.replace(\"-\",\"\"):\"-\"+b:b}function j(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function k(a){a=a||window.event;var d,e,f,h,k,l=a.which||a.charCode||a.keyCode;return void 0===l?!1:48>l||l>57?45===l?(s.val(i()),!1):43===l?(s.val(s.val().replace(\"-\",\"\")),!1):13===l||9===l?!0:!$.browser.mozilla||37!==l&&39!==l||0!==a.charCode?(j(a),!0):!0:c()?(j(a),d=String.fromCharCode(l),e=b(),f=e.start,h=e.end,k=s.val(),s.val(k.substring(0,f)+d+k.substring(h,k.length)),g(f+1),!1):!1}function l(c){c=c||window.event;var d,e,f,h,i,k=c.which||c.charCode||c.keyCode;return void 0===k?!1:(d=b(),e=d.start,f=d.end,8===k||46===k||63272===k?(j(c),h=s.val(),e===f&&(8===k?\"\"===a.suffix?e-=1:(i=h.split(\"\").reverse().join(\"\").search(/\\d/),e=h.length-i-1,f=e+1):f+=1),s.val(h.substring(0,e)+h.substring(f,h.length)),g(e),!1):9===k?!0:!0)}function m(){r=s.val(),h();var a,b=s.get(0);b.createTextRange&&(a=b.createTextRange(),a.collapse(!1),a.select())}function n(){setTimeout(function(){h()},0)}function o(){var b=parseFloat(\"0\")/Math.pow(10,a.precision);return b.toFixed(a.precision).replace(new RegExp(\"\\\\.\",\"g\"),a.decimal)}function p(b){if($.browser.msie&&k(b),\"\"===s.val()||s.val()===e(o()))a.allowZero?a.affixesStay?s.val(e(o())):s.val(o()):s.val(\"\");else if(!a.affixesStay){var c=s.val().replace(a.prefix,\"\").replace(a.suffix,\"\");s.val(c)}s.val()!==r&&s.change()}function q(){var a,b=s.get(0);b.setSelectionRange?(a=s.val().length,b.setSelectionRange(a,a)):s.val(s.val())}var r,s=$(this);a=$.extend(a,s.data()),s.unbind(\".maskMoney\"),s.bind(\"keypress.maskMoney\",k),s.bind(\"keydown.maskMoney\",l),s.bind(\"blur.maskMoney\",p),s.bind(\"focus.maskMoney\",m),s.bind(\"click.maskMoney\",q),s.bind(\"cut.maskMoney\",n),s.bind(\"paste.maskMoney\",n),s.bind(\"mask.maskMoney\",h)})}};$.fn.maskMoney=function(b){return a[b]?a[b].apply(this,Array.prototype.slice.call(arguments,1)):\"object\"!=typeof b&&b?($.error(\"Method \"+b+\" does not exist on jQuery.maskMoney\"),void 0):a.init.apply(this,arguments)}}(window.jQuery||window.Zepto);","/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"